{
  "version": 3,
  "sources": ["../../../node_modules/base64-js/index.js", "../../../node_modules/ieee754/index.js", "../../../node_modules/node-stdlib-browser/node_modules/buffer/index.js", "../../../node_modules/process/browser.js", "../../../node_modules/node-stdlib-browser/helpers/esbuild/shim.js", "../../../node_modules/@decentralized-identity/ion-sdk/lib/ErrorCode.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/IonError.ts", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/vendor/base-x.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/bytes.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/bases/base.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/bases/base64.js", "../../../node_modules/@decentralized-identity/ion-sdk/lib/Encoder.ts", "../../../node_modules/uri-js/src/index.ts", "../../../node_modules/uri-js/src/schemes/urn-uuid.ts", "../../../node_modules/uri-js/src/schemes/urn.ts", "../../../node_modules/uri-js/src/schemes/mailto.ts", "../../../node_modules/uri-js/src/schemes/wss.ts", "../../../node_modules/uri-js/src/schemes/ws.ts", "../../../node_modules/uri-js/src/schemes/https.ts", "../../../node_modules/uri-js/src/schemes/http.ts", "../../../node_modules/uri-js/src/uri.ts", "../../../node_modules/uri-js/node_modules/punycode/punycode.es6.js", "../../../node_modules/uri-js/src/regexps-iri.ts", "../../../node_modules/uri-js/src/regexps-uri.ts", "../../../node_modules/uri-js/src/util.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/enums/OperationKeyType.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/InputValidator.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/IonSdkConfig.ts", "../../../node_modules/canonicalize/lib/canonicalize.js", "../../../node_modules/@decentralized-identity/ion-sdk/lib/JsonCanonicalizer.ts", "../../../node_modules/@multiformats/base-x/src/index.js", "../../../node_modules/multibase/src/util.js", "../../../node_modules/multibase/src/base.js", "../../../node_modules/multibase/src/rfc4648.js", "../../../node_modules/multibase/src/constants.js", "../../../node_modules/multibase/src/index.js", "../../../node_modules/multihashes/node_modules/varint/encode.js", "../../../node_modules/multihashes/node_modules/varint/decode.js", "../../../node_modules/multihashes/node_modules/varint/length.js", "../../../node_modules/multihashes/node_modules/varint/index.js", "../../../node_modules/multihashes/src/constants.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/vendor/base-x.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bytes.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/identity.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base2.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base8.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base10.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base16.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base32.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base36.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base58.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base64.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/bases/base256emoji.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/vendor/varint.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/varint.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/hashes/digest.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/hashes/hasher.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/hashes/sha2-browser.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/hashes/identity.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/codecs/raw.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/codecs/json.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/cid.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/index.js", "../../../node_modules/uint8arrays/node_modules/multiformats/esm/src/basics.js", "../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js", "../../../node_modules/uint8arrays/esm/src/alloc.js", "../../../node_modules/uint8arrays/esm/src/util/bases.js", "../../../node_modules/uint8arrays/esm/src/to-string.js", "../../../node_modules/uint8arrays/esm/src/from-string.js", "../../../node_modules/uint8arrays/esm/src/concat.js", "../../../node_modules/multihashes/src/index.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/vendor/varint.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/varint.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/hashes/digest.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/hashes/hasher.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats/esm/src/hashes/sha2-browser.js", "../../../node_modules/@decentralized-identity/ion-sdk/lib/Multihash.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/enums/OperationType.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/enums/PatchAction.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/IonRequest.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/IonDid.ts", "../../../node_modules/safe-buffer/index.js", "../../../node_modules/randombytes/browser.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/hash-base/node_modules/safe-buffer/index.js", "../../../node_modules/events/events.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/has-symbols/shams.js", "../../../node_modules/has-tostringtag/shams.js", "../../../node_modules/has-symbols/index.js", "../../../node_modules/function-bind/implementation.js", "../../../node_modules/function-bind/index.js", "../../../node_modules/has/src/index.js", "../../../node_modules/get-intrinsic/index.js", "../../../node_modules/call-bind/index.js", "../../../node_modules/call-bind/callBound.js", "../../../node_modules/is-arguments/index.js", "../../../node_modules/is-generator-function/index.js", "../../../node_modules/is-callable/index.js", "../../../node_modules/for-each/index.js", "../../../node_modules/available-typed-arrays/index.js", "../../../node_modules/gopd/index.js", "../../../node_modules/is-typed-array/index.js", "../../../node_modules/which-typed-array/index.js", "../../../node_modules/util/support/types.js", "../../../node_modules/util/support/isBufferBrowser.js", "../../../node_modules/util/util.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/hash-base/node_modules/readable-stream/errors-browser.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/util-deprecate/browser.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/string_decoder/node_modules/safe-buffer/index.js", "../../../node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/hash-base/node_modules/readable-stream/readable-browser.js", "../../../node_modules/hash-base/index.js", "../../../node_modules/md5.js/index.js", "../../../node_modules/ripemd160/index.js", "../../../node_modules/sha.js/hash.js", "../../../node_modules/sha.js/sha.js", "../../../node_modules/sha.js/sha1.js", "../../../node_modules/sha.js/sha256.js", "../../../node_modules/sha.js/sha224.js", "../../../node_modules/sha.js/sha512.js", "../../../node_modules/sha.js/sha384.js", "../../../node_modules/sha.js/index.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/stream-browserify/index.js", "../../../node_modules/cipher-base/index.js", "../../../node_modules/create-hash/browser.js", "../../../node_modules/create-hmac/legacy.js", "../../../node_modules/create-hash/md5.js", "../../../node_modules/create-hmac/browser.js", "../../../node_modules/browserify-sign/browser/algorithms.json", "../../../node_modules/browserify-sign/algos.js", "../../../node_modules/pbkdf2/lib/precondition.js", "../../../node_modules/pbkdf2/lib/default-encoding.js", "../../../node_modules/pbkdf2/lib/to-buffer.js", "../../../node_modules/pbkdf2/lib/sync-browser.js", "../../../node_modules/pbkdf2/lib/async.js", "../../../node_modules/pbkdf2/browser.js", "../../../node_modules/des.js/lib/des/utils.js", "../../../node_modules/minimalistic-assert/index.js", "../../../node_modules/des.js/lib/des/cipher.js", "../../../node_modules/des.js/lib/des/des.js", "../../../node_modules/des.js/lib/des/cbc.js", "../../../node_modules/des.js/lib/des/ede.js", "../../../node_modules/des.js/lib/des.js", "../../../node_modules/browserify-des/index.js", "../../../node_modules/browserify-aes/modes/ecb.js", "../../../node_modules/buffer-xor/index.js", "../../../node_modules/browserify-aes/modes/cbc.js", "../../../node_modules/browserify-aes/modes/cfb.js", "../../../node_modules/browserify-aes/modes/cfb8.js", "../../../node_modules/browserify-aes/modes/cfb1.js", "../../../node_modules/browserify-aes/modes/ofb.js", "../../../node_modules/browserify-aes/incr32.js", "../../../node_modules/browserify-aes/modes/ctr.js", "../../../node_modules/browserify-aes/modes/list.json", "../../../node_modules/browserify-aes/modes/index.js", "../../../node_modules/browserify-aes/aes.js", "../../../node_modules/browserify-aes/ghash.js", "../../../node_modules/browserify-aes/authCipher.js", "../../../node_modules/browserify-aes/streamCipher.js", "../../../node_modules/evp_bytestokey/index.js", "../../../node_modules/browserify-aes/encrypter.js", "../../../node_modules/browserify-aes/decrypter.js", "../../../node_modules/browserify-aes/browser.js", "../../../node_modules/browserify-des/modes.js", "../../../node_modules/browserify-cipher/browser.js", "../../../node_modules/bn.js/lib/bn.js", "../../../node_modules/brorand/index.js", "../../../node_modules/miller-rabin/lib/mr.js", "../../../node_modules/diffie-hellman/lib/generatePrime.js", "../../../node_modules/diffie-hellman/lib/primes.json", "../../../node_modules/diffie-hellman/lib/dh.js", "../../../node_modules/diffie-hellman/browser.js", "../../../node_modules/browserify-sign/node_modules/safe-buffer/index.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js", "../../../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js", "../../../node_modules/browserify-rsa/index.js", "../../../node_modules/elliptic/package.json", "../../../node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../node_modules/elliptic/lib/elliptic/utils.js", "../../../node_modules/elliptic/lib/elliptic/curve/base.js", "../../../node_modules/elliptic/lib/elliptic/curve/short.js", "../../../node_modules/elliptic/lib/elliptic/curve/mont.js", "../../../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../../../node_modules/elliptic/lib/elliptic/curve/index.js", "../../../node_modules/hash.js/lib/hash/utils.js", "../../../node_modules/hash.js/lib/hash/common.js", "../../../node_modules/hash.js/lib/hash/sha/common.js", "../../../node_modules/hash.js/lib/hash/sha/1.js", "../../../node_modules/hash.js/lib/hash/sha/256.js", "../../../node_modules/hash.js/lib/hash/sha/224.js", "../../../node_modules/hash.js/lib/hash/sha/512.js", "../../../node_modules/hash.js/lib/hash/sha/384.js", "../../../node_modules/hash.js/lib/hash/sha.js", "../../../node_modules/hash.js/lib/hash/ripemd.js", "../../../node_modules/hash.js/lib/hash/hmac.js", "../../../node_modules/hash.js/lib/hash.js", "../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../../../node_modules/elliptic/lib/elliptic/curves.js", "../../../node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../node_modules/elliptic/lib/elliptic/ec/key.js", "../../../node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../node_modules/elliptic/lib/elliptic/ec/index.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../../../node_modules/elliptic/lib/elliptic.js", "../../../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", "../../../node_modules/safer-buffer/safer.js", "../../../node_modules/asn1.js/lib/asn1/base/reporter.js", "../../../node_modules/asn1.js/lib/asn1/base/buffer.js", "../../../node_modules/asn1.js/lib/asn1/base/node.js", "../../../node_modules/asn1.js/lib/asn1/constants/der.js", "../../../node_modules/asn1.js/lib/asn1/encoders/der.js", "../../../node_modules/asn1.js/lib/asn1/encoders/pem.js", "../../../node_modules/asn1.js/lib/asn1/encoders/index.js", "../../../node_modules/asn1.js/lib/asn1/decoders/der.js", "../../../node_modules/asn1.js/lib/asn1/decoders/pem.js", "../../../node_modules/asn1.js/lib/asn1/decoders/index.js", "../../../node_modules/asn1.js/lib/asn1/api.js", "../../../node_modules/asn1.js/lib/asn1/base/index.js", "../../../node_modules/asn1.js/lib/asn1/constants/index.js", "../../../node_modules/asn1.js/lib/asn1.js", "../../../node_modules/parse-asn1/certificate.js", "../../../node_modules/parse-asn1/asn1.js", "../../../node_modules/parse-asn1/aesid.json", "../../../node_modules/parse-asn1/fixProc.js", "../../../node_modules/parse-asn1/index.js", "../../../node_modules/browserify-sign/browser/curves.json", "../../../node_modules/browserify-sign/browser/sign.js", "../../../node_modules/browserify-sign/browser/verify.js", "../../../node_modules/browserify-sign/browser/index.js", "../../../node_modules/create-ecdh/browser.js", "../../../node_modules/public-encrypt/mgf.js", "../../../node_modules/public-encrypt/xor.js", "../../../node_modules/public-encrypt/withPublic.js", "../../../node_modules/public-encrypt/publicEncrypt.js", "../../../node_modules/public-encrypt/privateDecrypt.js", "../../../node_modules/public-encrypt/browser.js", "../../../node_modules/randomfill/browser.js", "../../../node_modules/crypto-browserify/index.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/@noble/ed25519/lib/index.js", "../../../node_modules/@decentralized-identity/ion-sdk/node_modules/@noble/secp256k1/lib/index.js", "../../../node_modules/@decentralized-identity/ion-sdk/lib/IonKey.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/enums/IonNetwork.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/enums/IonPublicKeyPurpose.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/LocalSigner.ts", "../../../node_modules/@decentralized-identity/ion-sdk/lib/index.ts", "../../../node_modules/cross-fetch/dist/browser-ponyfill.js", "../../../node_modules/hash-wasm/dist/index.umd.js", "../../../node_modules/buffer/index.js", "../../../node_modules/@decentralized-identity/ion-pow-sdk/src/index.js", "../../../node_modules/tweetnacl/nacl-fast.js", "../../../node_modules/ed2curve/ed2curve.js", "../../../node_modules/err-code/index.js", "../../../node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@protobufjs/base64/index.js", "../../../node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@protobufjs/float/index.js", "../../../node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@protobufjs/pool/index.js", "../../../node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/protobufjs/src/reader.js", "../../../node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/protobufjs/src/writer.js", "../../../node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/sparse-array/index.js", "../../../node_modules/murmurhash3js-revisited/lib/murmurHash3js.js", "../../../node_modules/murmurhash3js-revisited/index.js", "../../../node_modules/jsbi/tsc-out/jsbi.mjs", "../../../node_modules/level-supports/index.js", "../../../node_modules/module-error/index.js", "../../../node_modules/level-transcoder/lib/text-endec.js", "../../../node_modules/level-transcoder/lib/encoding.js", "../../../node_modules/level-transcoder/lib/formats.js", "../../../node_modules/level-transcoder/lib/encodings.js", "../../../node_modules/level-transcoder/index.js", "../../../node_modules/catering/next-tick-browser.js", "../../../node_modules/catering/index.js", "../../../node_modules/abstract-level/lib/common.js", "../../../node_modules/abstract-level/abstract-iterator.js", "../../../node_modules/abstract-level/lib/default-kv-iterator.js", "../../../node_modules/abstract-level/lib/deferred-iterator.js", "../../../node_modules/abstract-level/abstract-chained-batch.js", "../../../node_modules/abstract-level/lib/default-chained-batch.js", "../../../node_modules/abstract-level/lib/range-options.js", "../../../node_modules/queue-microtask/index.js", "../../../node_modules/abstract-level/lib/next-tick-browser.js", "../../../node_modules/abstract-level/lib/abstract-sublevel-iterator.js", "../../../node_modules/abstract-level/lib/abstract-sublevel.js", "../../../node_modules/abstract-level/abstract-level.js", "../../../node_modules/abstract-level/index.js", "../../../node_modules/run-parallel-limit/index.js", "../../../node_modules/browser-level/util/key-range.js", "../../../node_modules/browser-level/util/deserialize.js", "../../../node_modules/browser-level/iterator.js", "../../../node_modules/browser-level/util/clear.js", "../../../node_modules/browser-level/index.js", "../../../node_modules/level/browser.js", "../../../node_modules/eventemitter3/index.js", "../../../node_modules/readable-stream/lib/ours/primordials.js", "../../../node_modules/readable-stream/lib/ours/util.js", "../../../node_modules/abort-controller/browser.js", "../../../node_modules/readable-stream/lib/ours/errors.js", "../../../node_modules/readable-stream/lib/internal/validators.js", "../../../node_modules/readable-stream/lib/internal/streams/utils.js", "../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/readable-stream/lib/internal/streams/operators.js", "../../../node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/readable-stream/lib/internal/streams/legacy.js", "../../../node_modules/readable-stream/lib/internal/streams/add-abort-signal.js", "../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/readable-stream/lib/internal/streams/from.js", "../../../node_modules/readable-stream/lib/internal/streams/readable.js", "../../../node_modules/readable-stream/lib/internal/streams/writable.js", "../../../node_modules/readable-stream/lib/internal/streams/duplexify.js", "../../../node_modules/readable-stream/lib/internal/streams/duplex.js", "../../../node_modules/readable-stream/lib/internal/streams/transform.js", "../../../node_modules/readable-stream/lib/internal/streams/passthrough.js", "../../../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/readable-stream/lib/internal/streams/compose.js", "../../../node_modules/readable-stream/lib/stream/promises.js", "../../../node_modules/readable-stream/lib/stream.js", "../../../node_modules/readable-stream/lib/ours/browser.js", "../../../node_modules/secp256k1/lib/index.js", "../../../node_modules/secp256k1/lib/elliptic.js", "../../../node_modules/secp256k1/elliptic.js", "../../../node_modules/lodash/_freeGlobal.js", "../../../node_modules/lodash/_root.js", "../../../node_modules/lodash/_Symbol.js", "../../../node_modules/lodash/_getRawTag.js", "../../../node_modules/lodash/_objectToString.js", "../../../node_modules/lodash/_baseGetTag.js", "../../../node_modules/lodash/_overArg.js", "../../../node_modules/lodash/_getPrototype.js", "../../../node_modules/lodash/isObjectLike.js", "../../../node_modules/lodash/isPlainObject.js", "../../../node_modules/flat/index.js", "../../../node_modules/lru-cache/index.js", "../../../node_modules/varint/encode.js", "../../../node_modules/varint/decode.js", "../../../node_modules/varint/length.js", "../../../node_modules/varint/index.js", "../../../node_modules/eccrypto/browser.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/errors-browser.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/readable-web-to-node-stream/node_modules/readable-stream/readable-browser.js", "../../../node_modules/readable-web-to-node-stream/lib/index.js", "../src/main.ts", "../src/web5.ts", "../../../node_modules/@decentralized-identity/ion-tools/dist/esm/src/index.js", "../../../node_modules/@decentralized-identity/ion-tools/dist/esm/src/did.js", "../../../node_modules/@decentralized-identity/ion-tools/dist/esm/src/utils.js", "../../../node_modules/@noble/ed25519/lib/esm/index.js", "../../../node_modules/@noble/secp256k1/lib/esm/index.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/bases/base64.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/bases/base.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/vendor/base-x.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/bytes.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/hashes/sha2-browser.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/hashes/hasher.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/hashes/digest.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/src/varint.js", "../../../node_modules/@decentralized-identity/ion-tools/node_modules/multiformats/esm/vendor/varint.js", "../../crypto/src/ed25519.ts", "../../crypto/src/utils.ts", "../../../node_modules/multiformats/src/bases/base64.js", "../../../node_modules/multiformats/src/bases/base.js", "../../../node_modules/multiformats/vendor/base-x.js", "../../../node_modules/multiformats/src/bytes.js", "../../../node_modules/multiformats/src/bases/interface.js", "../../../node_modules/multiformats/src/bases/base58.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/tenant-gate.ts", "../../../node_modules/@ipld/dag-cbor/src/index.js", "../../../node_modules/cborg/esm/cborg.js", "../../../node_modules/cborg/esm/lib/encode.js", "../../../node_modules/cborg/esm/lib/is.js", "../../../node_modules/cborg/esm/lib/token.js", "../../../node_modules/cborg/esm/lib/bl.js", "../../../node_modules/cborg/esm/lib/byte-utils.js", "../../../node_modules/cborg/esm/lib/common.js", "../../../node_modules/cborg/esm/lib/jump.js", "../../../node_modules/cborg/esm/lib/0uint.js", "../../../node_modules/cborg/esm/lib/1negint.js", "../../../node_modules/cborg/esm/lib/2bytes.js", "../../../node_modules/cborg/esm/lib/3string.js", "../../../node_modules/cborg/esm/lib/4array.js", "../../../node_modules/cborg/esm/lib/5map.js", "../../../node_modules/cborg/esm/lib/6tag.js", "../../../node_modules/cborg/esm/lib/7float.js", "../../../node_modules/cborg/esm/lib/decode.js", "../../../node_modules/multiformats/src/cid.js", "../../../node_modules/multiformats/src/varint.js", "../../../node_modules/multiformats/vendor/varint.js", "../../../node_modules/multiformats/src/hashes/digest.js", "../../../node_modules/multiformats/src/bases/base32.js", "../../../node_modules/multiformats/src/link/interface.js", "../../../node_modules/ipfs-unixfs-importer/src/index.ts", "../../../node_modules/it-parallel-batch/src/index.ts", "../../../node_modules/it-batch/src/index.ts", "../../../node_modules/ipfs-unixfs-importer/src/dag-builder/index.ts", "../../../node_modules/ipfs-unixfs-importer/src/dag-builder/dir.ts", "../../../node_modules/ipfs-unixfs/src/index.ts", "../../../node_modules/ipfs-unixfs/src/unixfs.ts", "../../../node_modules/protons-runtime/src/index.ts", "../../../node_modules/protons-runtime/src/decode.ts", "../../../node_modules/protons-runtime/src/utils.ts", "../../../node_modules/protons-runtime/src/encode.ts", "../../../node_modules/protons-runtime/src/codecs/enum.ts", "../../../node_modules/protons-runtime/src/codec.ts", "../../../node_modules/protons-runtime/src/codecs/message.ts", "../../../node_modules/ipfs-unixfs-importer/src/utils/persist.ts", "../../../node_modules/@ipld/dag-pb/src/index.js", "../../../node_modules/@ipld/dag-pb/src/pb-decode.js", "../../../node_modules/@ipld/dag-pb/src/pb-encode.js", "../../../node_modules/@ipld/dag-pb/src/util.js", "../../../node_modules/multiformats/src/hashes/sha2-browser.js", "../../../node_modules/multiformats/src/hashes/hasher.js", "../../../node_modules/ipfs-unixfs-importer/src/dag-builder/file.ts", "../../../node_modules/multiformats/src/codecs/raw.js", "../../../node_modules/progress-events/src/index.ts", "../../../node_modules/ipfs-unixfs-importer/src/tree-builder.ts", "../../../node_modules/ipfs-unixfs-importer/src/dir-flat.ts", "../../../node_modules/ipfs-unixfs-importer/src/dir.ts", "../../../node_modules/ipfs-unixfs-importer/src/flat-to-shard.ts", "../../../node_modules/ipfs-unixfs-importer/src/dir-sharded.ts", "../../../node_modules/hamt-sharding/src/index.ts", "../../../node_modules/hamt-sharding/src/bucket.ts", "../../../node_modules/hamt-sharding/node_modules/uint8arrays/src/from-string.ts", "../../../node_modules/hamt-sharding/node_modules/uint8arrays/src/util/bases.ts", "../../../node_modules/multiformats/src/basics.js", "../../../node_modules/multiformats/src/bases/identity.js", "../../../node_modules/multiformats/src/bases/base2.js", "../../../node_modules/multiformats/src/bases/base8.js", "../../../node_modules/multiformats/src/bases/base10.js", "../../../node_modules/multiformats/src/bases/base16.js", "../../../node_modules/multiformats/src/bases/base36.js", "../../../node_modules/multiformats/src/bases/base256emoji.js", "../../../node_modules/multiformats/src/hashes/identity.js", "../../../node_modules/multiformats/src/codecs/json.js", "../../../node_modules/multiformats/src/index.js", "../../../node_modules/multiformats/src/interface.js", "../../../node_modules/hamt-sharding/node_modules/uint8arrays/src/alloc.ts", "../../../node_modules/hamt-sharding/node_modules/uint8arrays/src/util/as-uint8array.ts", "../../../node_modules/hamt-sharding/src/consumable-hash.ts", "../../../node_modules/hamt-sharding/src/consumable-buffer.ts", "../../../node_modules/hamt-sharding/node_modules/uint8arrays/src/concat.ts", "../../../node_modules/@multiformats/murmur3/src/index.js", "../../../node_modules/ipfs-unixfs-importer/src/utils/to-path-components.ts", "../../../node_modules/ipfs-unixfs-importer/src/dag-builder/validate-chunks.ts", "../../../node_modules/ipfs-unixfs-importer/node_modules/uint8arrays/src/from-string.ts", "../../../node_modules/ipfs-unixfs-importer/node_modules/uint8arrays/src/util/bases.ts", "../../../node_modules/ipfs-unixfs-importer/node_modules/uint8arrays/src/alloc.ts", "../../../node_modules/ipfs-unixfs-importer/node_modules/uint8arrays/src/util/as-uint8array.ts", "../../../node_modules/ipfs-unixfs-importer/src/chunker/fixed-size.ts", "../../../node_modules/uint8arraylist/src/index.ts", "../../../node_modules/uint8arraylist/node_modules/uint8arrays/src/concat.ts", "../../../node_modules/uint8arraylist/node_modules/uint8arrays/src/alloc.ts", "../../../node_modules/uint8arraylist/node_modules/uint8arrays/src/util/as-uint8array.ts", "../../../node_modules/uint8arraylist/node_modules/uint8arrays/src/equals.ts", "../../../node_modules/ipfs-unixfs-importer/src/layout/index.ts", "../../../node_modules/ipfs-unixfs-importer/src/layout/balanced.ts", "../../../node_modules/ipfs-unixfs-importer/src/layout/flat.ts", "../../../node_modules/it-all/src/index.ts", "../../../node_modules/ipfs-unixfs-importer/src/layout/trickle.ts", "../../../node_modules/ipfs-unixfs-importer/src/dag-builder/buffer-importer.ts", "../../../node_modules/it-first/src/index.ts", "../../../node_modules/blockstore-core/src/index.ts", "../../../node_modules/blockstore-core/src/errors.ts", "../../../node_modules/blockstore-core/src/base.ts", "../../../node_modules/blockstore-core/src/memory.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/cid.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/abort.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/time.ts", "../../../node_modules/@js-temporal/polyfill/tsc-out/intrinsicclass.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/slots.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/regex.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/ecmascript.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/intl.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/instant.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/calendar.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/plaindate.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/plaindatetime.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/duration.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/plainmonthday.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/now.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/plaintime.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/timezone.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/plainyearmonth.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/zoneddatetime.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/legacydate.js", "../../../node_modules/@js-temporal/polyfill/tsc-out/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/level-wrapper.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/blockstore-level.ts", "../../../node_modules/ipfs-unixfs-exporter/src/index.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/index.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/index.ts", "../../../node_modules/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/file.ts", "../../../node_modules/ipfs-unixfs-exporter/src/utils/extract-data-from-block.ts", "../../../node_modules/ipfs-unixfs-exporter/src/utils/validate-offset-and-length.ts", "../../../node_modules/it-pushable/src/index.ts", "../../../node_modules/it-pushable/src/fifo.ts", "../../../node_modules/it-parallel/src/index.ts", "../../../node_modules/p-defer/index.js", "../../../node_modules/it-pipe/src/index.ts", "../../../node_modules/it-merge/src/index.ts", "../../../node_modules/it-map/src/index.ts", "../../../node_modules/it-peekable/src/index.ts", "../../../node_modules/p-queue/dist/index.js", "../../../node_modules/p-timeout/index.js", "../../../node_modules/p-queue/dist/priority-queue.js", "../../../node_modules/p-queue/dist/lower-bound.js", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/directory.ts", "../../../node_modules/it-filter/src/index.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/hamt-sharded-directory.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/raw.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/dag-cbor.ts", "../../../node_modules/ipfs-unixfs-exporter/src/resolvers/identity.ts", "../../../node_modules/it-last/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/data-store-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/encoder.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/algorithms/signing/signers.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@noble/ed25519/lib/esm/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/algorithms/signing/ed25519.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@noble/secp256k1/lib/esm/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/secp256k1.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/dwn-error.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/jws/general/signer.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/jws.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/string.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/schema-validator.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/generated/precompiled-validators.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/message.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/object.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/memory-cache.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/jws/general/verifier.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/auth.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/url.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/data-stream.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/hd-key.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did-key-resolver.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did-ion-resolver.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did-resolver.ts", "../../../node_modules/ulid/dist/index.esm.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/event-log/event-log-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/events/messages/events-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/message-reply.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/events/handlers/events-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/dwn-constant.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/messages/messages/messages-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/messages/handlers/messages-get.ts", "../../../node_modules/multiformats/src/block.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/index-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/message-store-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/messages/protocols-configure.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/base64-js/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ieee754/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/node-stdlib-browser/node_modules/buffer/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/process/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/node-stdlib-browser/helpers/esbuild/shim.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/err-code/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/base64/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/float/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@protobufjs/pool/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protobufjs/src/reader.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protobufjs/src/writer.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sparse-array/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/murmurhash3js-revisited/lib/murmurHash3js.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/murmurhash3js-revisited/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/jsbi/tsc-out/jsbi.mjs", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level-supports/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/module-error/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level-transcoder/lib/text-endec.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level-transcoder/lib/encoding.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level-transcoder/lib/formats.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level-transcoder/lib/encodings.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level-transcoder/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/events/events.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/catering/next-tick-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/catering/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/common.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/abstract-iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/default-kv-iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/deferred-iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/abstract-chained-batch.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/default-chained-batch.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/range-options.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/queue-microtask/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/next-tick-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/abstract-sublevel-iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/lib/abstract-sublevel.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/abstract-level.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abstract-level/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/run-parallel-limit/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browser-level/util/key-range.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browser-level/util/deserialize.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browser-level/iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browser-level/util/clear.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browser-level/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/level/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/eventemitter3/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/ours/primordials.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/ours/util.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/abort-controller/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/ours/errors.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/validators.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/utils.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/operators.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/legacy.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/string_decoder/node_modules/safe-buffer/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/from.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/readable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/writable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/duplexify.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/duplex.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/transform.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/passthrough.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/internal/streams/compose.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/stream/promises.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/stream.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/readable-stream/lib/ours/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/safe-buffer/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/randombytes/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/inherits/inherits_browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/safe-buffer/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/has-symbols/shams.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/has-tostringtag/shams.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/has-symbols/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/function-bind/implementation.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/function-bind/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/has/src/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/get-intrinsic/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/call-bind/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/call-bind/callBound.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/is-arguments/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/is-generator-function/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/is-callable/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/for-each/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/available-typed-arrays/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/gopd/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/is-typed-array/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/which-typed-array/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/util/support/types.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/util/support/isBufferBrowser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/util/util.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/errors-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/util-deprecate/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/node_modules/readable-stream/readable-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash-base/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/md5.js/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ripemd160/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/hash.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/sha.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/sha1.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/sha256.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/sha224.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/sha512.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/sha384.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/sha.js/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/stream-browserify/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cipher-base/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/create-hash/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/create-hmac/legacy.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/create-hash/md5.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/create-hmac/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/browser/algorithms.json", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/algos.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/pbkdf2/lib/precondition.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/pbkdf2/lib/default-encoding.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/pbkdf2/lib/to-buffer.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/pbkdf2/lib/sync-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/pbkdf2/lib/async.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/pbkdf2/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/des.js/lib/des/utils.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/minimalistic-assert/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/des.js/lib/des/cipher.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/des.js/lib/des/des.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/des.js/lib/des/cbc.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/des.js/lib/des/ede.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/des.js/lib/des.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-des/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/ecb.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/buffer-xor/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/cbc.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/cfb.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/cfb8.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/cfb1.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/ofb.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/incr32.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/ctr.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/list.json", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/modes/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/aes.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/ghash.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/authCipher.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/streamCipher.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/evp_bytestokey/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/encrypter.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/decrypter.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-aes/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-des/modes.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-cipher/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/bn.js/lib/bn.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/brorand/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/miller-rabin/lib/mr.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/diffie-hellman/lib/generatePrime.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/diffie-hellman/lib/primes.json", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/diffie-hellman/lib/dh.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/diffie-hellman/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/safe-buffer/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-rsa/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/package.json", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/utils.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/curve/base.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/curve/short.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/curve/mont.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/curve/edwards.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/curve/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/utils.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/common.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha/common.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha/1.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha/256.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha/224.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha/512.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha/384.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/sha.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/ripemd.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash/hmac.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hash.js/lib/hash.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/curves.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/ec/key.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/ec/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/eddsa/key.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic/eddsa/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/elliptic/lib/elliptic.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/safer-buffer/safer.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/base/reporter.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/base/buffer.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/base/node.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/constants/der.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/encoders/der.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/encoders/pem.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/encoders/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/decoders/der.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/decoders/pem.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/decoders/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/api.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/base/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1/constants/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/asn1.js/lib/asn1.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/parse-asn1/certificate.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/parse-asn1/asn1.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/parse-asn1/aesid.json", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/parse-asn1/fixProc.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/parse-asn1/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/browser/curves.json", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/browser/sign.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/browser/verify.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/browserify-sign/browser/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/create-ecdh/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/public-encrypt/mgf.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/public-encrypt/xor.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/public-encrypt/withPublic.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/public-encrypt/publicEncrypt.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/public-encrypt/privateDecrypt.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/public-encrypt/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/randomfill/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/crypto-browserify/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/secp256k1/lib/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/secp256k1/lib/elliptic.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/secp256k1/elliptic.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_freeGlobal.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_root.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_Symbol.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_getRawTag.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_objectToString.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_baseGetTag.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_overArg.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/_getPrototype.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/isObjectLike.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lodash/isPlainObject.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/flat/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/lru-cache/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/varint/encode.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/varint/decode.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/varint/length.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/varint/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cross-fetch/dist/browser-ponyfill.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/eccrypto/browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/tenant-gate.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/cid.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@ipld/dag-cbor/src/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/cborg.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/encode.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/is.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/token.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/bl.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/byte-utils.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/common.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/jump.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/0uint.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/1negint.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/2bytes.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/3string.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/4array.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/5map.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/6tag.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/7float.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/cborg/esm/lib/decode.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/cid.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/varint.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/vendor/varint.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/hashes/digest.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bytes.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base58.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/vendor/base-x.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/interface.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base32.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/link/interface.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-parallel-batch/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-batch/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dag-builder/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dag-builder/dir.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs/src/unixfs.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/decode.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/utils.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/encode.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/codecs/enum.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/codec.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/protons-runtime/src/codecs/message.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/utils/persist.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@ipld/dag-pb/src/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@ipld/dag-pb/src/pb-decode.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@ipld/dag-pb/src/pb-encode.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@ipld/dag-pb/src/util.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/hashes/sha2-browser.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/hashes/hasher.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dag-builder/file.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/codecs/raw.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/progress-events/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/tree-builder.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dir-flat.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dir.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/flat-to-shard.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dir-sharded.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hamt-sharding/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hamt-sharding/src/bucket.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arrays/src/from-string.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arrays/src/util/bases.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/basics.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/identity.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base2.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base8.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base10.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base16.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base36.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base64.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/bases/base256emoji.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/hashes/identity.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/codecs/json.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/interface.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arrays/src/alloc.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arrays/src/util/as-uint8array.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hamt-sharding/src/consumable-hash.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/hamt-sharding/src/consumable-buffer.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arrays/src/concat.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@multiformats/murmur3/src/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/utils/to-path-components.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dag-builder/validate-chunks.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/chunker/fixed-size.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arraylist/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/uint8arrays/src/equals.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/layout/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/layout/balanced.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/layout/flat.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-all/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/layout/trickle.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-importer/src/dag-builder/buffer-importer.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-first/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/blockstore-core/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/blockstore-core/src/errors.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/blockstore-core/src/base.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/blockstore-core/src/memory.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/data-store.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/data-store-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/blockstore-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/level-wrapper.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/abort.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/time.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/intrinsicclass.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/slots.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/regex.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/ecmascript.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/intl.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/instant.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/calendar.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/plaindate.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/plaindatetime.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/duration.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/plainmonthday.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/now.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/plaintime.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/timezone.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/plainyearmonth.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/zoneddatetime.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/legacydate.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@js-temporal/polyfill/tsc-out/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/file.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/utils/extract-data-from-block.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/utils/validate-offset-and-length.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-pushable/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-pushable/src/fifo.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-parallel/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/p-defer/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-pipe/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-merge/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-map/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-peekable/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/p-queue/dist/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/p-timeout/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/p-queue/dist/priority-queue.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/p-queue/dist/lower-bound.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/directory.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-filter/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/hamt-sharded-directory.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/raw.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/dag-cbor.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ipfs-unixfs-exporter/src/resolvers/identity.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/it-last/src/index.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/message.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/jws/general/signer.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/encoder.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/algorithms/signing/signers.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/algorithms/signing/ed25519.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@noble/ed25519/lib/esm/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/secp256k1.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/@noble/secp256k1/lib/esm/index.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/dwn-error.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/jws.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/string.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/schema-validator.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/generated/precompiled-validators.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/object.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/auth.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/jws/general/verifier.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/memory-cache.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/url.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/data-stream.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/hd-key.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did-key-resolver.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did-ion-resolver.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/did/did-resolver.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/dwn.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/event-log/event-log-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/ulid/dist/index.esm.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/events/handlers/events-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/events/messages/events-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/message-reply.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/messages/handlers/messages-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/dwn-constant.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/messages/messages/messages-get.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/message-store-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/node_modules/multiformats/src/block.js", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/index-level.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/handlers/protocols-configure.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/messages/protocols-configure.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/storage-controller.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/handlers/protocols-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/messages/protocols-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/pruned-initial-records-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/records-interface.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/encryption.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/protocol-authorization.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/types.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/records.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-delete.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-delete.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-read.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-read.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/hooks/messages/hooks-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/types.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/message-store.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/jose/jws/general/types.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/store/storage-controller.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/handlers/protocols-configure.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/messages/protocols-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/handlers/protocols-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/encryption.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/protocols/types.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/core/protocol-authorization.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/utils/records.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/records-interface.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/pruned-initial-records-write.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-delete.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-delete.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-query.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/messages/records-read.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/interfaces/records/handlers/records-read.ts", "../../../node_modules/@tbd54566975/dwn-sdk-js/src/dwn.ts", "../../dids/src/did-ion.ts", "../../dids/src/did-key.ts", "../../dids/src/utils.ts", "../../dids/src/nop-cache.ts", "../../dids/src/did-resolver.ts", "../../web5-user-agent/src/web5-user-agent.ts", "../../web5-user-agent/src/profile-store.ts", "../../web5-user-agent/src/profile-index.ts", "../../web5-user-agent/src/profile-api.ts", "../../web5-user-agent/src/dwn-rpc-client.ts", "../../web5-user-agent/src/utils.ts", "../../../node_modules/uuid/dist/esm-browser/index.js", "../../../node_modules/uuid/dist/esm-browser/rng.js", "../../../node_modules/uuid/dist/esm-browser/stringify.js", "../../../node_modules/uuid/dist/esm-browser/v4.js", "../../../node_modules/uuid/dist/esm-browser/native.js", "../../web5-agent/src/json-rpc.ts", "../src/dwn-api.ts", "../src/record.ts", "../src/utils.ts", "../src/protocol.ts", "../src/did-api.ts", "../src/app-storage.ts"],
  "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\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 '<Buffer ' + str + '>'\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", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "var _globalThis = function (Object) {\n  function get() {\n    var _global = this || self;\n\n    delete Object.prototype.__magic__;\n    return _global;\n  }\n\n  if (typeof globalThis === \"object\") {\n    return globalThis;\n  }\n\n  if (this) {\n    return get();\n  } else {\n    Object.defineProperty(Object.prototype, \"__magic__\", {\n      configurable: true,\n      get: get\n    });\n    var _global = __magic__;\n    return _global;\n  }\n}(Object);\n\nimport { Buffer } from 'buffer';\nimport process from 'process';\nvar _global = _globalThis;\nexport { Buffer, process, _global as global };\n", "/**\n * ION SDK error codes.\n */\nexport default {\n  DeltaExceedsMaximumSize: 'DeltaExceedsMaximumSize',\n  DidDocumentPublicKeyIdDuplicated: 'DidDocumentPublicKeyIdDuplicated',\n  DidDocumentPublicKeyMissingOrIncorrectType: 'DidDocumentPublicKeyMissingOrIncorrectType',\n  DidDocumentServiceIdDuplicated: 'DidDocumentServiceIdDuplicated',\n  DidSuffixIncorrectLength: 'DidSuffixIncorrectLength',\n  EncodedStringIncorrectEncoding: 'EncodedStringIncorrectEncoding',\n  IdNotUsingBase64UrlCharacterSet: 'IdNotUsingBase64UrlCharacterSet',\n  IdTooLong: 'IdTooLong',\n  JwkEs256kMissingOrInvalidCrv: 'JwkEs256kMissingOrInvalidCrv',\n  JwkEs256kMissingOrInvalidKty: 'JwkEs256kMissingOrInvalidKty',\n  JwkEs256kHasIncorrectLengthOfX: 'JwkEs256kHasIncorrectLengthOfX',\n  JwkEs256kHasIncorrectLengthOfY: 'JwkEs256kHasIncorrectLengthOfY',\n  JwkEs256kHasIncorrectLengthOfD: 'JwkEs256kHasIncorrectLengthOfD',\n  MultihashStringNotAMultihash: 'MultihashStringNotAMultihash',\n  MultihashUnsupportedHashAlgorithm: 'MultihashUnsupportedHashAlgorithm',\n  PublicKeyJwkEs256kHasUnexpectedProperty: 'PublicKeyJwkEs256kHasUnexpectedProperty',\n  PublicKeyPurposeDuplicated: 'PublicKeyPurposeDuplicated',\n  ServiceEndpointCannotBeAnArray: 'ServiceEndpointCannotBeAnArray',\n  ServiceEndpointStringNotValidUri: 'ServiceEndpointStringNotValidUri',\n  ServiceTypeTooLong: 'ServiceTypeTooLong'\n};\n", "/**\n * A class that represents an ION error.\n */\nexport default class IonError extends Error {\n  constructor (public code: string, message: string) {\n    super(`${code}: ${message}`);\n\n    // NOTE: Extending 'Error' breaks prototype chain since TypeScript 2.1.\n    // The following line restores prototype chain.\n    Object.setPrototypeOf(this, new.target.prototype);\n  }\n}\n", "function base(ALPHABET, name) {\n  if (ALPHABET.length >= 255) {\n    throw new TypeError('Alphabet too long');\n  }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) {\n      throw new TypeError(x + ' is ambiguous');\n    }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256);\n  var iFACTOR = Math.log(256) / Math.log(BASE);\n  function encode(source) {\n    if (source instanceof Uint8Array);\n    else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) {\n      throw new TypeError('Expected Uint8Array');\n    }\n    if (source.length === 0) {\n      return '';\n    }\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n    var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n    var b58 = new Uint8Array(size);\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n        carry += 256 * b58[it1] >>> 0;\n        b58[it1] = carry % BASE >>> 0;\n        carry = carry / BASE >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      pbegin++;\n    }\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) {\n      str += ALPHABET.charAt(b58[it2]);\n    }\n    return str;\n  }\n  function decodeUnsafe(source) {\n    if (typeof source !== 'string') {\n      throw new TypeError('Expected String');\n    }\n    if (source.length === 0) {\n      return new Uint8Array();\n    }\n    var psz = 0;\n    if (source[psz] === ' ') {\n      return;\n    }\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n    var size = (source.length - psz) * FACTOR + 1 >>> 0;\n    var b256 = new Uint8Array(size);\n    while (source[psz]) {\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n      if (carry === 255) {\n        return;\n      }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n        carry += BASE * b256[it3] >>> 0;\n        b256[it3] = carry % 256 >>> 0;\n        carry = carry / 256 >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      psz++;\n    }\n    if (source[psz] === ' ') {\n      return;\n    }\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch;\n  }\n  function decode(string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) {\n      return buffer;\n    }\n    throw new Error(`Non-${ name } character`);\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;", "const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n  const hexes = hex.match(/../g);\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n  if (aa === bb)\n    return true;\n  if (aa.byteLength !== bb.byteLength) {\n    return false;\n  }\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false;\n    }\n  }\n  return true;\n};\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n    return o;\n  if (o instanceof ArrayBuffer)\n    return new Uint8Array(o);\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n  equals,\n  coerce,\n  isBinary,\n  fromHex,\n  toHex,\n  fromString,\n  toString,\n  empty\n};", "import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n  constructor(name, prefix, baseEncode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n  }\n  encode(bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${ this.prefix }${ this.baseEncode(bytes) }`;\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}\nclass Decoder {\n  constructor(name, prefix, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    if (prefix.codePointAt(0) === undefined) {\n      throw new Error('Invalid prefix character');\n    }\n    this.prefixCodePoint = prefix.codePointAt(0);\n    this.baseDecode = baseDecode;\n  }\n  decode(text) {\n    if (typeof text === 'string') {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n      }\n      return this.baseDecode(text.slice(this.prefix.length));\n    } else {\n      throw Error('Can only multibase decode strings');\n    }\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n}\nclass ComposedDecoder {\n  constructor(decoders) {\n    this.decoders = decoders;\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n  decode(input) {\n    const prefix = input[0];\n    const decoder = this.decoders[prefix];\n    if (decoder) {\n      return decoder.decode(input);\n    } else {\n      throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n    }\n  }\n}\nexport const or = (left, right) => new ComposedDecoder({\n  ...left.decoders || { [left.prefix]: left },\n  ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n  constructor(name, prefix, baseEncode, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n    this.baseDecode = baseDecode;\n    this.encoder = new Encoder(name, prefix, baseEncode);\n    this.decoder = new Decoder(name, prefix, baseDecode);\n  }\n  encode(input) {\n    return this.encoder.encode(input);\n  }\n  decode(input) {\n    return this.decoder.decode(input);\n  }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n  const {encode, decode} = basex(alphabet, name);\n  return from({\n    prefix,\n    name,\n    encode,\n    decode: text => coerce(decode(text))\n  });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  const codes = {};\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i;\n  }\n  let end = string.length;\n  while (string[end - 1] === '=') {\n    --end;\n  }\n  const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n  let bits = 0;\n  let buffer = 0;\n  let written = 0;\n  for (let i = 0; i < end; ++i) {\n    const value = codes[string[i]];\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${ name } character`);\n    }\n    buffer = buffer << bitsPerChar | value;\n    bits += bitsPerChar;\n    if (bits >= 8) {\n      bits -= 8;\n      out[written++] = 255 & buffer >> bits;\n    }\n  }\n  if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n    throw new SyntaxError('Unexpected end of data');\n  }\n  return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '=';\n  const mask = (1 << bitsPerChar) - 1;\n  let out = '';\n  let bits = 0;\n  let buffer = 0;\n  for (let i = 0; i < data.length; ++i) {\n    buffer = buffer << 8 | data[i];\n    bits += 8;\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar;\n      out += alphabet[mask & buffer >> bits];\n    }\n  }\n  if (bits) {\n    out += alphabet[mask & buffer << bitsPerChar - bits];\n  }\n  if (pad) {\n    while (out.length * bitsPerChar & 7) {\n      out += '=';\n    }\n  }\n  return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n  return from({\n    prefix,\n    name,\n    encode(input) {\n      return encode(input, alphabet, bitsPerChar);\n    },\n    decode(input) {\n      return decode(input, alphabet, bitsPerChar, name);\n    }\n  });\n};", "import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n});", "import ErrorCode from './ErrorCode';\nimport IonError from './IonError';\nimport { base64url } from 'multiformats/bases/base64';\n\n/**\n * Class that encodes binary blobs into strings.\n * Note that the encode/decode methods may change underlying encoding scheme.\n */\nexport default class Encoder {\n  /**\n   * Encodes given bytes into a Base64URL string.\n   */\n  public static encode (content: Uint8Array): string {\n    const encodedContent = base64url.baseEncode(content);\n    return encodedContent;\n  }\n\n  /**\n   * Decodes the given Base64URL string into bytes.\n   */\n  public static decodeAsBytes (encodedContent: string, inputContextForErrorLogging: string): Uint8Array {\n    if (!Encoder.isBase64UrlString(encodedContent)) {\n      throw new IonError(ErrorCode.EncodedStringIncorrectEncoding, `Given ${inputContextForErrorLogging} must be base64url string.`);\n    }\n\n    return base64url.baseDecode(encodedContent);\n  }\n\n  /**\n   * Decodes the given Base64URL string into the original string.\n   */\n  public static decodeAsString (encodedContent: string, inputContextForErrorLogging: string): string {\n    const rawBytes = Encoder.decodeAsBytes(encodedContent, inputContextForErrorLogging);\n\n    return Encoder.bytesToString(rawBytes);\n  }\n\n  /**\n   * Tests if the given string is a Base64URL string.\n   */\n  public static isBase64UrlString (input: string): boolean {\n    // NOTE:\n    // /<expression>/ denotes regex.\n    // ^ denotes beginning of string.\n    // $ denotes end of string.\n    // + denotes one or more characters.\n    const isBase64UrlString = /^[A-Za-z0-9_-]+$/.test(input);\n    return isBase64UrlString;\n  }\n\n  /**\n   * Converts input string to bytes.\n   */\n  public static stringToBytes (input: string): Uint8Array {\n    const bytes = new TextEncoder().encode(input);\n    return bytes;\n  }\n\n  /**\n   * Converts bytes to string.\n   */\n  public static bytesToString (input: Uint8Array): string {\n    const output = new TextDecoder().decode(input);\n    return output;\n  }\n}\n", "import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\";  //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$));  //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\";  //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$);  //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$));  //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\";  //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> =  {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;", "/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice, this list of\n *       conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above copyright notice, this list\n *       of conditions and the following disclaimer in the documentation and/or other materials\n *       provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else {  //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\");  //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\");  //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options);  //normalize base components\n\t\trelative = parse(serialize(relative, options), options);  //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n", "import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n", "import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),  //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),  //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",  //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",  //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),  //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp(                                                            subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), //                           6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp(                                                 \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), //                      \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp(                                 H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[               h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" +        H16$ + \"\\\\:\"          + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\"    h16 \":\"   ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\"                                + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\"              ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\"                                + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\"              h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"                                       ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),  //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),  //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),  //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),  //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),  //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),  //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),  //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\")  //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n", "export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}", "/**\n * Operation key type, indicates if a key is a public or private key.\n */\nenum OperationKeyType {\n    Public = 'public',\n    Private = 'private'\n  }\n\nexport default OperationKeyType;\n", "import Encoder from './Encoder';\nimport ErrorCode from './ErrorCode';\nimport IonError from './IonError';\nimport IonPublicKeyPurpose from './enums/IonPublicKeyPurpose';\nimport JwkEs256k from './models/JwkEs256k';\nimport OperationKeyType from './enums/OperationKeyType';\n\n/**\n * Class containing input validation methods.\n */\nexport default class InputValidator {\n  /**\n   * Validates the schema of a ES256K JWK key.\n   */\n  public static validateEs256kOperationKey (operationKeyJwk: JwkEs256k, operationKeyType: OperationKeyType) {\n    const allowedProperties = new Set(['kty', 'crv', 'x', 'y']);\n    if (operationKeyType === OperationKeyType.Private) {\n      allowedProperties.add('d');\n    }\n    for (const property in operationKeyJwk) {\n      if (!allowedProperties.has(property)) {\n        throw new IonError(ErrorCode.PublicKeyJwkEs256kHasUnexpectedProperty, `SECP256K1 JWK key has unexpected property '${property}'.`);\n      }\n    }\n\n    if (operationKeyJwk.crv !== 'secp256k1') {\n      throw new IonError(ErrorCode.JwkEs256kMissingOrInvalidCrv, `SECP256K1 JWK 'crv' property must be 'secp256k1' but got '${operationKeyJwk.crv}.'`);\n    }\n\n    if (operationKeyJwk.kty !== 'EC') {\n      throw new IonError(ErrorCode.JwkEs256kMissingOrInvalidKty, `SECP256K1 JWK 'kty' property must be 'EC' but got '${operationKeyJwk.kty}.'`);\n    }\n\n    // `x` and `y` need 43 Base64URL encoded bytes to contain 256 bits.\n    if (operationKeyJwk.x.length !== 43) {\n      throw new IonError(ErrorCode.JwkEs256kHasIncorrectLengthOfX, `SECP256K1 JWK 'x' property must be 43 bytes.`);\n    }\n\n    if (operationKeyJwk.y.length !== 43) {\n      throw new IonError(ErrorCode.JwkEs256kHasIncorrectLengthOfY, `SECP256K1 JWK 'y' property must be 43 bytes.`);\n    }\n\n    if (operationKeyType === OperationKeyType.Private && (operationKeyJwk.d === undefined || operationKeyJwk.d.length !== 43)) {\n      throw new IonError(ErrorCode.JwkEs256kHasIncorrectLengthOfD, `SECP256K1 JWK 'd' property must be 43 bytes.`);\n    }\n  }\n\n  /**\n   * Validates an `id` property (in `IonPublicKeyModel` and `IonServiceModel`).\n   */\n  public static validateId (id: string) {\n    const maxIdLength = 50;\n    if (id.length > maxIdLength) {\n      throw new IonError(ErrorCode.IdTooLong, `Key ID length ${id.length} exceed max allowed length of ${maxIdLength}.`);\n    }\n\n    if (!Encoder.isBase64UrlString(id)) {\n      throw new IonError(ErrorCode.IdNotUsingBase64UrlCharacterSet, `Key ID '${id}' is not a Base64URL string.`);\n    }\n  }\n\n  /**\n   * Validates the given public key purposes.\n   */\n  public static validatePublicKeyPurposes (purposes?: IonPublicKeyPurpose[]) {\n    // Nothing to validate if `purposes` is undefined.\n    if (purposes === undefined) {\n      return;\n    }\n\n    // Validate that all purposes are be unique.\n    const processedPurposes: Set<IonPublicKeyPurpose> = new Set();\n    for (const purpose of purposes) {\n      if (processedPurposes.has(purpose)) {\n        throw new IonError(ErrorCode.PublicKeyPurposeDuplicated, `Public key purpose '${purpose}' already specified.`);\n      }\n      processedPurposes.add(purpose);\n    }\n  }\n}\n", "import IonNetwork from './enums/IonNetwork';\n\n/**\n * Global configuration of the SDK.\n */\nexport default class IonSdkConfig {\n  /**\n   * Default hash algorithm used when hashing is performed.\n   */\n  public static hashAlgorithmInMultihashCode = 18; // SHA256\n\n  /**\n   * Maximum bytes for canonicalized delta.\n   */\n  public static maxCanonicalizedDeltaSizeInBytes: number = 1000;\n\n  /**\n   * Network name in ION DID, okay to leave as `undefined` if mainnet.\n   */\n  public static network: IonNetwork | undefined;\n}\n", "/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function (object) {\n  return serialize(object);\n\n  function serialize (object) {\n    if (object === null || typeof object !== 'object' || object.toJSON != null) {\n      return JSON.stringify(object);\n    }\n    if (Array.isArray(object) && object.length === 0) {\n      return '[]';\n    }\n    if (Array.isArray(object) && object.length === 1) {\n      return '[' + serialize(object[0]) + ']';\n    }\n    if (Array.isArray(object)) {\n      return '[' + object.reduce((t, cv, ci) => {\n        t = (ci === 1 ? serialize(t) : t);\n        return t + ',' + serialize(cv);\n      }) + ']';\n    }\n    const keys = Object.keys(object);\n    if (keys.length === 0) {\n      return '{}';\n    }\n    if (keys.length === 1) {\n      return '{' + serialize(keys[0]) + ':' + serialize(object[keys[0]]) + '}';\n    }\n    return '{' + keys.sort().reduce((t, cv, ci) => {\n      t = (ci === 1 ? serialize(t) + ':' + serialize(object[t]) : t);\n      return t + ',' + serialize(cv) + ':' + serialize(object[cv]);\n    }) + '}';\n  }\n};\n", "import Encoder from './Encoder';\n\nconst canonicalize = require('canonicalize');\n\n/**\n * Class containing reusable JSON canonicalization operations using JSON Canonicalization Scheme (JCS).\n */\nexport default class JsonCanonicalizer {\n  /**\n   * Canonicalizes the given content as bytes.\n   */\n  public static canonicalizeAsBytes (content: object): Uint8Array {\n    // We need to remove all properties with `undefined` as value so that JCS canonicalization will not produce invalid JSON.\n    const contentWithoutUndefinedProperties = JsonCanonicalizer.removeAllUndefinedProperties(content);\n    const canonicalizedString: string = canonicalize(contentWithoutUndefinedProperties);\n    const contentBytes = Encoder.stringToBytes(canonicalizedString);\n    return contentBytes;\n  }\n\n  /**\n   * Removes all properties within the given object with `undefined` as value.\n   */\n  private static removeAllUndefinedProperties (content: any): any {\n    for (const key in content) {\n      if (typeof content[key] === 'object') {\n        JsonCanonicalizer.removeAllUndefinedProperties(content[key]);\n      } else if (content[key] === undefined) {\n        delete content[key];\n      }\n    }\n\n    return content;\n  }\n}\n", "'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n  if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n  var BASE_MAP = new Uint8Array(256)\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i)\n    var xc = x.charCodeAt(0)\n    if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n    BASE_MAP[xc] = i\n  }\n  var BASE = ALPHABET.length\n  var LEADER = ALPHABET.charAt(0)\n  var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n  var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n  function encode (source) {\n    if (source instanceof Uint8Array) {\n    } else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source)\n    }\n    if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n    if (source.length === 0) { return '' }\n        // Skip & count leading zeroes.\n    var zeroes = 0\n    var length = 0\n    var pbegin = 0\n    var pend = source.length\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++\n      zeroes++\n    }\n        // Allocate enough space in big-endian base58 representation.\n    var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n    var b58 = new Uint8Array(size)\n        // Process the bytes.\n    while (pbegin !== pend) {\n      var carry = source[pbegin]\n            // Apply \"b58 = b58 * 256 + ch\".\n      var i = 0\n      for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n        carry += (256 * b58[it1]) >>> 0\n        b58[it1] = (carry % BASE) >>> 0\n        carry = (carry / BASE) >>> 0\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i\n      pbegin++\n    }\n        // Skip leading zeroes in base58 result.\n    var it2 = size - length\n    while (it2 !== size && b58[it2] === 0) {\n      it2++\n    }\n        // Translate the result into a string.\n    var str = LEADER.repeat(zeroes)\n    for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n    return str\n  }\n  function decodeUnsafe (source) {\n    if (typeof source !== 'string') { throw new TypeError('Expected String') }\n    if (source.length === 0) { return new Uint8Array() }\n    var psz = 0\n        // Skip leading spaces.\n    if (source[psz] === ' ') { return }\n        // Skip and count leading '1's.\n    var zeroes = 0\n    var length = 0\n    while (source[psz] === LEADER) {\n      zeroes++\n      psz++\n    }\n        // Allocate enough space in big-endian base256 representation.\n    var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n    var b256 = new Uint8Array(size)\n        // Process the characters.\n    while (source[psz]) {\n            // Decode character\n      var carry = BASE_MAP[source.charCodeAt(psz)]\n            // Invalid character\n      if (carry === 255) { return }\n      var i = 0\n      for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n        carry += (BASE * b256[it3]) >>> 0\n        b256[it3] = (carry % 256) >>> 0\n        carry = (carry / 256) >>> 0\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i\n      psz++\n    }\n        // Skip trailing spaces.\n    if (source[psz] === ' ') { return }\n        // Skip leading zeroes in b256.\n    var it4 = size - length\n    while (it4 !== size && b256[it4] === 0) {\n      it4++\n    }\n    var vch = new Uint8Array(zeroes + (size - it4))\n    var j = zeroes\n    while (it4 !== size) {\n      vch[j++] = b256[it4++]\n    }\n    return vch\n  }\n  function decode (string) {\n    var buffer = decodeUnsafe(string)\n    if (buffer) { return buffer }\n    throw new Error('Non-base' + BASE + ' character')\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  }\n}\nmodule.exports = base\n", "'use strict'\n\nconst textDecoder = new TextDecoder()\n/**\n * @param {ArrayBufferView|ArrayBuffer} bytes\n * @returns {string}\n */\nconst decodeText = (bytes) => textDecoder.decode(bytes)\n\nconst textEncoder = new TextEncoder()\n/**\n * @param {string} text\n * @returns {Uint8Array}\n */\nconst encodeText = (text) => textEncoder.encode(text)\n\n/**\n * Returns a new Uint8Array created by concatenating the passed Arrays\n *\n * @param {Array<ArrayLike<number>>} arrs\n * @param {number} length\n * @returns {Uint8Array}\n */\nfunction concat (arrs, length) {\n  const output = new Uint8Array(length)\n  let offset = 0\n\n  for (const arr of arrs) {\n    output.set(arr, offset)\n    offset += arr.length\n  }\n\n  return output\n}\n\nmodule.exports = { decodeText, encodeText, concat }\n", "'use strict'\n\nconst { encodeText } = require('./util')\n\n/** @typedef {import('./types').CodecFactory} CodecFactory */\n/** @typedef {import(\"./types\").BaseName} BaseName */\n/** @typedef {import(\"./types\").BaseCode} BaseCode */\n\n/**\n * Class to encode/decode in the supported Bases\n *\n */\nclass Base {\n  /**\n   * @param {BaseName} name\n   * @param {BaseCode} code\n   * @param {CodecFactory} factory\n   * @param {string} alphabet\n   */\n  constructor (name, code, factory, alphabet) {\n    this.name = name\n    this.code = code\n    this.codeBuf = encodeText(this.code)\n    this.alphabet = alphabet\n    this.codec = factory(alphabet)\n  }\n\n  /**\n   * @param {Uint8Array} buf\n   * @returns {string}\n   */\n  encode (buf) {\n    return this.codec.encode(buf)\n  }\n\n  /**\n   * @param {string} string\n   * @returns {Uint8Array}\n   */\n  decode (string) {\n    for (const char of string) {\n      if (this.alphabet && this.alphabet.indexOf(char) < 0) {\n        throw new Error(`invalid character '${char}' in '${string}'`)\n      }\n    }\n    return this.codec.decode(string)\n  }\n}\n\nmodule.exports = Base\n", "'use strict'\n\n/** @typedef {import('./types').CodecFactory} CodecFactory */\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar) => {\n  // Build the character lookup table:\n  /** @type {Record<string, number>} */\n  const codes = {}\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i\n  }\n\n  // Count the padding bytes:\n  let end = string.length\n  while (string[end - 1] === '=') {\n    --end\n  }\n\n  // Allocate the output:\n  const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n  // Parse the data:\n  let bits = 0 // Number of bits currently in the buffer\n  let buffer = 0 // Bits waiting to be written out, MSB first\n  let written = 0 // Next byte to write\n  for (let i = 0; i < end; ++i) {\n    // Read one character from the string:\n    const value = codes[string[i]]\n    if (value === undefined) {\n      throw new SyntaxError('Invalid character ' + string[i])\n    }\n\n    // Append the bits to the buffer:\n    buffer = (buffer << bitsPerChar) | value\n    bits += bitsPerChar\n\n    // Write out some bits if the buffer has a byte's worth:\n    if (bits >= 8) {\n      bits -= 8\n      out[written++] = 0xff & (buffer >> bits)\n    }\n  }\n\n  // Verify that we have received just enough bits:\n  if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n    throw new SyntaxError('Unexpected end of data')\n  }\n\n  return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '='\n  const mask = (1 << bitsPerChar) - 1\n  let out = ''\n\n  let bits = 0 // Number of bits currently in the buffer\n  let buffer = 0 // Bits waiting to be written out, MSB first\n  for (let i = 0; i < data.length; ++i) {\n    // Slurp data into the buffer:\n    buffer = (buffer << 8) | data[i]\n    bits += 8\n\n    // Write out as much as we can:\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar\n      out += alphabet[mask & (buffer >> bits)]\n    }\n  }\n\n  // Partial character:\n  if (bits) {\n    out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n  }\n\n  // Add padding characters until we hit a byte boundary:\n  if (pad) {\n    while ((out.length * bitsPerChar) & 7) {\n      out += '='\n    }\n  }\n\n  return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @param {number} bitsPerChar\n * @returns {CodecFactory}\n */\nconst rfc4648 = (bitsPerChar) => (alphabet) => {\n  return {\n    /**\n     * @param {Uint8Array} input\n     * @returns {string}\n     */\n    encode (input) {\n      return encode(input, alphabet, bitsPerChar)\n    },\n    /**\n     * @param {string} input\n     * @returns {Uint8Array}\n     */\n    decode (input) {\n      return decode(input, alphabet, bitsPerChar)\n    }\n  }\n}\n\nmodule.exports = { rfc4648 }\n", "'use strict'\n\nconst baseX = require('@multiformats/base-x')\nconst Base = require('./base.js')\nconst { rfc4648 } = require('./rfc4648')\nconst { decodeText, encodeText } = require('./util')\n\n/** @typedef {import('./types').CodecFactory} CodecFactory */\n/** @typedef {import('./types').Codec} Codec */\n/** @typedef {import('./types').BaseName} BaseName */\n/** @typedef {import('./types').BaseCode} BaseCode */\n\n/** @type {CodecFactory} */\nconst identity = () => {\n  return {\n    encode: decodeText,\n    decode: encodeText\n  }\n}\n\n/**\n *\n * name, code, implementation, alphabet\n *\n * @type {Array<[BaseName, BaseCode, CodecFactory, string]>}\n */\nconst constants = [\n  ['identity', '\\x00', identity, ''],\n  ['base2', '0', rfc4648(1), '01'],\n  ['base8', '7', rfc4648(3), '01234567'],\n  ['base10', '9', baseX, '0123456789'],\n  ['base16', 'f', rfc4648(4), '0123456789abcdef'],\n  ['base16upper', 'F', rfc4648(4), '0123456789ABCDEF'],\n  ['base32hex', 'v', rfc4648(5), '0123456789abcdefghijklmnopqrstuv'],\n  ['base32hexupper', 'V', rfc4648(5), '0123456789ABCDEFGHIJKLMNOPQRSTUV'],\n  ['base32hexpad', 't', rfc4648(5), '0123456789abcdefghijklmnopqrstuv='],\n  ['base32hexpadupper', 'T', rfc4648(5), '0123456789ABCDEFGHIJKLMNOPQRSTUV='],\n  ['base32', 'b', rfc4648(5), 'abcdefghijklmnopqrstuvwxyz234567'],\n  ['base32upper', 'B', rfc4648(5), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'],\n  ['base32pad', 'c', rfc4648(5), 'abcdefghijklmnopqrstuvwxyz234567='],\n  ['base32padupper', 'C', rfc4648(5), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567='],\n  ['base32z', 'h', rfc4648(5), 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n  ['base36', 'k', baseX, '0123456789abcdefghijklmnopqrstuvwxyz'],\n  ['base36upper', 'K', baseX, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'],\n  ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n  ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n  ['base64', 'm', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n  ['base64pad', 'M', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n  ['base64url', 'u', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n  ['base64urlpad', 'U', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\n/** @type {Record<BaseName,Base>} */\nconst names = constants.reduce((prev, tupple) => {\n  prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n  return prev\n}, /** @type {Record<BaseName,Base>} */({}))\n\n/** @type {Record<BaseCode,Base>} */\nconst codes = constants.reduce((prev, tupple) => {\n  prev[tupple[1]] = names[tupple[0]]\n  return prev\n}, /** @type {Record<BaseCode,Base>} */({}))\n\nmodule.exports = {\n  names,\n  codes\n}\n", "/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n *\n */\n'use strict'\n\nconst constants = require('./constants')\nconst { encodeText, decodeText, concat } = require('./util')\n\n/** @typedef {import('./base')} Base */\n/** @typedef {import(\"./types\").BaseNameOrCode} BaseNameOrCode */\n/** @typedef {import(\"./types\").BaseCode} BaseCode */\n/** @typedef {import(\"./types\").BaseName} BaseName */\n\n/**\n * Create a new Uint8Array with the multibase varint+code.\n *\n * @param {BaseNameOrCode} nameOrCode - The multibase name or code number.\n * @param {Uint8Array} buf - The data to be prefixed with multibase.\n * @returns {Uint8Array}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction multibase (nameOrCode, buf) {\n  if (!buf) {\n    throw new Error('requires an encoded Uint8Array')\n  }\n  const { name, codeBuf } = encoding(nameOrCode)\n  validEncode(name, buf)\n\n  return concat([codeBuf, buf], codeBuf.length + buf.length)\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {BaseNameOrCode} nameOrCode - The multibase name or code number.\n * @param {Uint8Array} buf - The data to be encoded.\n * @returns {Uint8Array}\n * @throws {Error} Will throw if the encoding is not supported\n *\n */\nfunction encode (nameOrCode, buf) {\n  const enc = encoding(nameOrCode)\n  const data = encodeText(enc.encode(buf))\n\n  return concat([enc.codeBuf, data], enc.codeBuf.length + data.length)\n}\n\n/**\n * Takes a Uint8Array or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Uint8Array|string} data\n * @returns {Uint8Array}\n * @throws {Error} Will throw if the encoding is not supported\n *\n */\nfunction decode (data) {\n  if (data instanceof Uint8Array) {\n    data = decodeText(data)\n  }\n  const prefix = data[0]\n\n  // Make all encodings case-insensitive except the ones that include upper and lower chars in the alphabet\n  if (['f', 'F', 'v', 'V', 't', 'T', 'b', 'B', 'c', 'C', 'h', 'k', 'K'].includes(prefix)) {\n    data = data.toLowerCase()\n  }\n  const enc = encoding(/** @type {BaseCode} */(data[0]))\n  return enc.decode(data.substring(1))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Uint8Array|string} data\n */\nfunction isEncoded (data) {\n  if (data instanceof Uint8Array) {\n    data = decodeText(data)\n  }\n\n  // Ensure bufOrString is a string\n  if (Object.prototype.toString.call(data) !== '[object String]') {\n    return false\n  }\n\n  try {\n    const enc = encoding(/** @type {BaseCode} */(data[0]))\n    return enc.name\n  } catch (err) {\n    return false\n  }\n}\n\n/**\n * Validate encoded data\n *\n * @param {BaseNameOrCode} name\n * @param {Uint8Array} buf\n * @returns {void}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction validEncode (name, buf) {\n  const enc = encoding(name)\n  enc.decode(decodeText(buf))\n}\n\n/**\n * Get the encoding by name or code\n *\n * @param {BaseNameOrCode} nameOrCode\n * @returns {Base}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction encoding (nameOrCode) {\n  if (Object.prototype.hasOwnProperty.call(constants.names, /** @type {BaseName} */(nameOrCode))) {\n    return constants.names[/** @type {BaseName} */(nameOrCode)]\n  } else if (Object.prototype.hasOwnProperty.call(constants.codes, /** @type {BaseCode} */(nameOrCode))) {\n    return constants.codes[/** @type {BaseCode} */(nameOrCode)]\n  } else {\n    throw new Error(`Unsupported encoding: ${nameOrCode}`)\n  }\n}\n\n/**\n * Get encoding from data\n *\n * @param {string|Uint8Array} data\n * @returns {Base}\n * @throws {Error} Will throw if the encoding is not supported\n */\nfunction encodingFromData (data) {\n  if (data instanceof Uint8Array) {\n    data = decodeText(data)\n  }\n\n  return encoding(/** @type {BaseCode} */(data[0]))\n}\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.encoding = encoding\nexports.encodingFromData = encodingFromData\nconst names = Object.freeze(constants.names)\nconst codes = Object.freeze(constants.codes)\nexports.names = names\nexports.codes = codes\n", "module.exports = encode\n\nvar MSB = 0x80\n  , REST = 0x7F\n  , MSBALL = ~REST\n  , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n  out = out || []\n  offset = offset || 0\n  var oldOffset = offset\n\n  while(num >= INT) {\n    out[offset++] = (num & 0xFF) | MSB\n    num /= 128\n  }\n  while(num & MSBALL) {\n    out[offset++] = (num & 0xFF) | MSB\n    num >>>= 7\n  }\n  out[offset] = num | 0\n  \n  encode.bytes = offset - oldOffset + 1\n  \n  return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n  , REST = 0x7F\n\nfunction read(buf, offset) {\n  var res    = 0\n    , offset = offset || 0\n    , shift  = 0\n    , counter = offset\n    , b\n    , l = buf.length\n\n  do {\n    if (counter >= l) {\n      read.bytes = 0\n      throw new RangeError('Could not decode varint')\n    }\n    b = buf[counter++]\n    res += shift < 28\n      ? (b & REST) << shift\n      : (b & REST) * Math.pow(2, shift)\n    shift += 7\n  } while (b >= MSB)\n\n  read.bytes = counter - offset\n\n  return res\n}\n", "\nvar N1 = Math.pow(2,  7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n  return (\n    value < N1 ? 1\n  : value < N2 ? 2\n  : value < N3 ? 3\n  : value < N4 ? 4\n  : value < N5 ? 5\n  : value < N6 ? 6\n  : value < N7 ? 7\n  : value < N8 ? 8\n  : value < N9 ? 9\n  :              10\n  )\n}\n", "module.exports = {\n    encode: require('./encode.js')\n  , decode: require('./decode.js')\n  , encodingLength: require('./length.js')\n}\n", "/* eslint quote-props: off */\n'use strict'\n\n/**\n * Names for all available hashes\n *\n * @typedef { \"identity\" | \"sha1\" | \"sha2-256\" | \"sha2-512\" | \"sha3-512\" | \"sha3-384\" | \"sha3-256\" | \"sha3-224\" | \"shake-128\" | \"shake-256\" | \"keccak-224\" | \"keccak-256\" | \"keccak-384\" | \"keccak-512\" | \"blake3\" | \"murmur3-128\" | \"murmur3-32\" | \"dbl-sha2-256\" | \"md4\" | \"md5\" | \"bmt\" | \"sha2-256-trunc254-padded\" | \"ripemd-128\" | \"ripemd-160\" | \"ripemd-256\" | \"ripemd-320\" | \"x11\" | \"kangarootwelve\" | \"sm3-256\" | \"blake2b-8\" | \"blake2b-16\" | \"blake2b-24\" | \"blake2b-32\" | \"blake2b-40\" | \"blake2b-48\" | \"blake2b-56\" | \"blake2b-64\" | \"blake2b-72\" | \"blake2b-80\" | \"blake2b-88\" | \"blake2b-96\" | \"blake2b-104\" | \"blake2b-112\" | \"blake2b-120\" | \"blake2b-128\" | \"blake2b-136\" | \"blake2b-144\" | \"blake2b-152\" | \"blake2b-160\" | \"blake2b-168\" | \"blake2b-176\" | \"blake2b-184\" | \"blake2b-192\" | \"blake2b-200\" | \"blake2b-208\" | \"blake2b-216\" | \"blake2b-224\" | \"blake2b-232\" | \"blake2b-240\" | \"blake2b-248\" | \"blake2b-256\" | \"blake2b-264\" | \"blake2b-272\" | \"blake2b-280\" | \"blake2b-288\" | \"blake2b-296\" | \"blake2b-304\" | \"blake2b-312\" | \"blake2b-320\" | \"blake2b-328\" | \"blake2b-336\" | \"blake2b-344\" | \"blake2b-352\" | \"blake2b-360\" | \"blake2b-368\" | \"blake2b-376\" | \"blake2b-384\" | \"blake2b-392\" | \"blake2b-400\" | \"blake2b-408\" | \"blake2b-416\" | \"blake2b-424\" | \"blake2b-432\" | \"blake2b-440\" | \"blake2b-448\" | \"blake2b-456\" | \"blake2b-464\" | \"blake2b-472\" | \"blake2b-480\" | \"blake2b-488\" | \"blake2b-496\" | \"blake2b-504\" | \"blake2b-512\" | \"blake2s-8\" | \"blake2s-16\" | \"blake2s-24\" | \"blake2s-32\" | \"blake2s-40\" | \"blake2s-48\" | \"blake2s-56\" | \"blake2s-64\" | \"blake2s-72\" | \"blake2s-80\" | \"blake2s-88\" | \"blake2s-96\" | \"blake2s-104\" | \"blake2s-112\" | \"blake2s-120\" | \"blake2s-128\" | \"blake2s-136\" | \"blake2s-144\" | \"blake2s-152\" | \"blake2s-160\" | \"blake2s-168\" | \"blake2s-176\" | \"blake2s-184\" | \"blake2s-192\" | \"blake2s-200\" | \"blake2s-208\" | \"blake2s-216\" | \"blake2s-224\" | \"blake2s-232\" | \"blake2s-240\" | \"blake2s-248\" | \"blake2s-256\" | \"skein256-8\" | \"skein256-16\" | \"skein256-24\" | \"skein256-32\" | \"skein256-40\" | \"skein256-48\" | \"skein256-56\" | \"skein256-64\" | \"skein256-72\" | \"skein256-80\" | \"skein256-88\" | \"skein256-96\" | \"skein256-104\" | \"skein256-112\" | \"skein256-120\" | \"skein256-128\" | \"skein256-136\" | \"skein256-144\" | \"skein256-152\" | \"skein256-160\" | \"skein256-168\" | \"skein256-176\" | \"skein256-184\" | \"skein256-192\" | \"skein256-200\" | \"skein256-208\" | \"skein256-216\" | \"skein256-224\" | \"skein256-232\" | \"skein256-240\" | \"skein256-248\" | \"skein256-256\" | \"skein512-8\" | \"skein512-16\" | \"skein512-24\" | \"skein512-32\" | \"skein512-40\" | \"skein512-48\" | \"skein512-56\" | \"skein512-64\" | \"skein512-72\" | \"skein512-80\" | \"skein512-88\" | \"skein512-96\" | \"skein512-104\" | \"skein512-112\" | \"skein512-120\" | \"skein512-128\" | \"skein512-136\" | \"skein512-144\" | \"skein512-152\" | \"skein512-160\" | \"skein512-168\" | \"skein512-176\" | \"skein512-184\" | \"skein512-192\" | \"skein512-200\" | \"skein512-208\" | \"skein512-216\" | \"skein512-224\" | \"skein512-232\" | \"skein512-240\" | \"skein512-248\" | \"skein512-256\" | \"skein512-264\" | \"skein512-272\" | \"skein512-280\" | \"skein512-288\" | \"skein512-296\" | \"skein512-304\" | \"skein512-312\" | \"skein512-320\" | \"skein512-328\" | \"skein512-336\" | \"skein512-344\" | \"skein512-352\" | \"skein512-360\" | \"skein512-368\" | \"skein512-376\" | \"skein512-384\" | \"skein512-392\" | \"skein512-400\" | \"skein512-408\" | \"skein512-416\" | \"skein512-424\" | \"skein512-432\" | \"skein512-440\" | \"skein512-448\" | \"skein512-456\" | \"skein512-464\" | \"skein512-472\" | \"skein512-480\" | \"skein512-488\" | \"skein512-496\" | \"skein512-504\" | \"skein512-512\" | \"skein1024-8\" | \"skein1024-16\" | \"skein1024-24\" | \"skein1024-32\" | \"skein1024-40\" | \"skein1024-48\" | \"skein1024-56\" | \"skein1024-64\" | \"skein1024-72\" | \"skein1024-80\" | \"skein1024-88\" | \"skein1024-96\" | \"skein1024-104\" | \"skein1024-112\" | \"skein1024-120\" | \"skein1024-128\" | \"skein1024-136\" | \"skein1024-144\" | \"skein1024-152\" | \"skein1024-160\" | \"skein1024-168\" | \"skein1024-176\" | \"skein1024-184\" | \"skein1024-192\" | \"skein1024-200\" | \"skein1024-208\" | \"skein1024-216\" | \"skein1024-224\" | \"skein1024-232\" | \"skein1024-240\" | \"skein1024-248\" | \"skein1024-256\" | \"skein1024-264\" | \"skein1024-272\" | \"skein1024-280\" | \"skein1024-288\" | \"skein1024-296\" | \"skein1024-304\" | \"skein1024-312\" | \"skein1024-320\" | \"skein1024-328\" | \"skein1024-336\" | \"skein1024-344\" | \"skein1024-352\" | \"skein1024-360\" | \"skein1024-368\" | \"skein1024-376\" | \"skein1024-384\" | \"skein1024-392\" | \"skein1024-400\" | \"skein1024-408\" | \"skein1024-416\" | \"skein1024-424\" | \"skein1024-432\" | \"skein1024-440\" | \"skein1024-448\" | \"skein1024-456\" | \"skein1024-464\" | \"skein1024-472\" | \"skein1024-480\" | \"skein1024-488\" | \"skein1024-496\" | \"skein1024-504\" | \"skein1024-512\" | \"skein1024-520\" | \"skein1024-528\" | \"skein1024-536\" | \"skein1024-544\" | \"skein1024-552\" | \"skein1024-560\" | \"skein1024-568\" | \"skein1024-576\" | \"skein1024-584\" | \"skein1024-592\" | \"skein1024-600\" | \"skein1024-608\" | \"skein1024-616\" | \"skein1024-624\" | \"skein1024-632\" | \"skein1024-640\" | \"skein1024-648\" | \"skein1024-656\" | \"skein1024-664\" | \"skein1024-672\" | \"skein1024-680\" | \"skein1024-688\" | \"skein1024-696\" | \"skein1024-704\" | \"skein1024-712\" | \"skein1024-720\" | \"skein1024-728\" | \"skein1024-736\" | \"skein1024-744\" | \"skein1024-752\" | \"skein1024-760\" | \"skein1024-768\" | \"skein1024-776\" | \"skein1024-784\" | \"skein1024-792\" | \"skein1024-800\" | \"skein1024-808\" | \"skein1024-816\" | \"skein1024-824\" | \"skein1024-832\" | \"skein1024-840\" | \"skein1024-848\" | \"skein1024-856\" | \"skein1024-864\" | \"skein1024-872\" | \"skein1024-880\" | \"skein1024-888\" | \"skein1024-896\" | \"skein1024-904\" | \"skein1024-912\" | \"skein1024-920\" | \"skein1024-928\" | \"skein1024-936\" | \"skein1024-944\" | \"skein1024-952\" | \"skein1024-960\" | \"skein1024-968\" | \"skein1024-976\" | \"skein1024-984\" | \"skein1024-992\" | \"skein1024-1000\" | \"skein1024-1008\" | \"skein1024-1016\" | \"skein1024-1024\" | \"poseidon-bls12_381-a2-fc1\" | \"poseidon-bls12_381-a2-fc1-sc\" } HashName\n */\n/**\n * Codes for all available hashes\n *\n * @typedef { 0x00 | 0x11 | 0x12 | 0x13 | 0x14 | 0x15 | 0x16 | 0x17 | 0x18 | 0x19 | 0x1a | 0x1b | 0x1c | 0x1d | 0x1e | 0x22 | 0x23 | 0x56 | 0xd4 | 0xd5 | 0xd6 | 0x1012 | 0x1052 | 0x1053 | 0x1054 | 0x1055 | 0x1100 | 0x1d01 | 0x534d | 0xb201 | 0xb202 | 0xb203 | 0xb204 | 0xb205 | 0xb206 | 0xb207 | 0xb208 | 0xb209 | 0xb20a | 0xb20b | 0xb20c | 0xb20d | 0xb20e | 0xb20f | 0xb210 | 0xb211 | 0xb212 | 0xb213 | 0xb214 | 0xb215 | 0xb216 | 0xb217 | 0xb218 | 0xb219 | 0xb21a | 0xb21b | 0xb21c | 0xb21d | 0xb21e | 0xb21f | 0xb220 | 0xb221 | 0xb222 | 0xb223 | 0xb224 | 0xb225 | 0xb226 | 0xb227 | 0xb228 | 0xb229 | 0xb22a | 0xb22b | 0xb22c | 0xb22d | 0xb22e | 0xb22f | 0xb230 | 0xb231 | 0xb232 | 0xb233 | 0xb234 | 0xb235 | 0xb236 | 0xb237 | 0xb238 | 0xb239 | 0xb23a | 0xb23b | 0xb23c | 0xb23d | 0xb23e | 0xb23f | 0xb240 | 0xb241 | 0xb242 | 0xb243 | 0xb244 | 0xb245 | 0xb246 | 0xb247 | 0xb248 | 0xb249 | 0xb24a | 0xb24b | 0xb24c | 0xb24d | 0xb24e | 0xb24f | 0xb250 | 0xb251 | 0xb252 | 0xb253 | 0xb254 | 0xb255 | 0xb256 | 0xb257 | 0xb258 | 0xb259 | 0xb25a | 0xb25b | 0xb25c | 0xb25d | 0xb25e | 0xb25f | 0xb260 | 0xb301 | 0xb302 | 0xb303 | 0xb304 | 0xb305 | 0xb306 | 0xb307 | 0xb308 | 0xb309 | 0xb30a | 0xb30b | 0xb30c | 0xb30d | 0xb30e | 0xb30f | 0xb310 | 0xb311 | 0xb312 | 0xb313 | 0xb314 | 0xb315 | 0xb316 | 0xb317 | 0xb318 | 0xb319 | 0xb31a | 0xb31b | 0xb31c | 0xb31d | 0xb31e | 0xb31f | 0xb320 | 0xb321 | 0xb322 | 0xb323 | 0xb324 | 0xb325 | 0xb326 | 0xb327 | 0xb328 | 0xb329 | 0xb32a | 0xb32b | 0xb32c | 0xb32d | 0xb32e | 0xb32f | 0xb330 | 0xb331 | 0xb332 | 0xb333 | 0xb334 | 0xb335 | 0xb336 | 0xb337 | 0xb338 | 0xb339 | 0xb33a | 0xb33b | 0xb33c | 0xb33d | 0xb33e | 0xb33f | 0xb340 | 0xb341 | 0xb342 | 0xb343 | 0xb344 | 0xb345 | 0xb346 | 0xb347 | 0xb348 | 0xb349 | 0xb34a | 0xb34b | 0xb34c | 0xb34d | 0xb34e | 0xb34f | 0xb350 | 0xb351 | 0xb352 | 0xb353 | 0xb354 | 0xb355 | 0xb356 | 0xb357 | 0xb358 | 0xb359 | 0xb35a | 0xb35b | 0xb35c | 0xb35d | 0xb35e | 0xb35f | 0xb360 | 0xb361 | 0xb362 | 0xb363 | 0xb364 | 0xb365 | 0xb366 | 0xb367 | 0xb368 | 0xb369 | 0xb36a | 0xb36b | 0xb36c | 0xb36d | 0xb36e | 0xb36f | 0xb370 | 0xb371 | 0xb372 | 0xb373 | 0xb374 | 0xb375 | 0xb376 | 0xb377 | 0xb378 | 0xb379 | 0xb37a | 0xb37b | 0xb37c | 0xb37d | 0xb37e | 0xb37f | 0xb380 | 0xb381 | 0xb382 | 0xb383 | 0xb384 | 0xb385 | 0xb386 | 0xb387 | 0xb388 | 0xb389 | 0xb38a | 0xb38b | 0xb38c | 0xb38d | 0xb38e | 0xb38f | 0xb390 | 0xb391 | 0xb392 | 0xb393 | 0xb394 | 0xb395 | 0xb396 | 0xb397 | 0xb398 | 0xb399 | 0xb39a | 0xb39b | 0xb39c | 0xb39d | 0xb39e | 0xb39f | 0xb3a0 | 0xb3a1 | 0xb3a2 | 0xb3a3 | 0xb3a4 | 0xb3a5 | 0xb3a6 | 0xb3a7 | 0xb3a8 | 0xb3a9 | 0xb3aa | 0xb3ab | 0xb3ac | 0xb3ad | 0xb3ae | 0xb3af | 0xb3b0 | 0xb3b1 | 0xb3b2 | 0xb3b3 | 0xb3b4 | 0xb3b5 | 0xb3b6 | 0xb3b7 | 0xb3b8 | 0xb3b9 | 0xb3ba | 0xb3bb | 0xb3bc | 0xb3bd | 0xb3be | 0xb3bf | 0xb3c0 | 0xb3c1 | 0xb3c2 | 0xb3c3 | 0xb3c4 | 0xb3c5 | 0xb3c6 | 0xb3c7 | 0xb3c8 | 0xb3c9 | 0xb3ca | 0xb3cb | 0xb3cc | 0xb3cd | 0xb3ce | 0xb3cf | 0xb3d0 | 0xb3d1 | 0xb3d2 | 0xb3d3 | 0xb3d4 | 0xb3d5 | 0xb3d6 | 0xb3d7 | 0xb3d8 | 0xb3d9 | 0xb3da | 0xb3db | 0xb3dc | 0xb3dd | 0xb3de | 0xb3df | 0xb3e0 | 0xb401 | 0xb402 } HashCode\n */\n\n/**\n * @type { Record<HashName,HashCode> }\n */\nconst names = Object.freeze({\n  'identity': 0x00,\n  'sha1': 0x11,\n  'sha2-256': 0x12,\n  'sha2-512': 0x13,\n  'sha3-512': 0x14,\n  'sha3-384': 0x15,\n  'sha3-256': 0x16,\n  'sha3-224': 0x17,\n  'shake-128': 0x18,\n  'shake-256': 0x19,\n  'keccak-224': 0x1a,\n  'keccak-256': 0x1b,\n  'keccak-384': 0x1c,\n  'keccak-512': 0x1d,\n  'blake3': 0x1e,\n  'murmur3-128': 0x22,\n  'murmur3-32': 0x23,\n  'dbl-sha2-256': 0x56,\n  'md4': 0xd4,\n  'md5': 0xd5,\n  'bmt': 0xd6,\n  'sha2-256-trunc254-padded': 0x1012,\n  'ripemd-128': 0x1052,\n  'ripemd-160': 0x1053,\n  'ripemd-256': 0x1054,\n  'ripemd-320': 0x1055,\n  'x11': 0x1100,\n  'kangarootwelve': 0x1d01,\n  'sm3-256': 0x534d,\n  'blake2b-8': 0xb201,\n  'blake2b-16': 0xb202,\n  'blake2b-24': 0xb203,\n  'blake2b-32': 0xb204,\n  'blake2b-40': 0xb205,\n  'blake2b-48': 0xb206,\n  'blake2b-56': 0xb207,\n  'blake2b-64': 0xb208,\n  'blake2b-72': 0xb209,\n  'blake2b-80': 0xb20a,\n  'blake2b-88': 0xb20b,\n  'blake2b-96': 0xb20c,\n  'blake2b-104': 0xb20d,\n  'blake2b-112': 0xb20e,\n  'blake2b-120': 0xb20f,\n  'blake2b-128': 0xb210,\n  'blake2b-136': 0xb211,\n  'blake2b-144': 0xb212,\n  'blake2b-152': 0xb213,\n  'blake2b-160': 0xb214,\n  'blake2b-168': 0xb215,\n  'blake2b-176': 0xb216,\n  'blake2b-184': 0xb217,\n  'blake2b-192': 0xb218,\n  'blake2b-200': 0xb219,\n  'blake2b-208': 0xb21a,\n  'blake2b-216': 0xb21b,\n  'blake2b-224': 0xb21c,\n  'blake2b-232': 0xb21d,\n  'blake2b-240': 0xb21e,\n  'blake2b-248': 0xb21f,\n  'blake2b-256': 0xb220,\n  'blake2b-264': 0xb221,\n  'blake2b-272': 0xb222,\n  'blake2b-280': 0xb223,\n  'blake2b-288': 0xb224,\n  'blake2b-296': 0xb225,\n  'blake2b-304': 0xb226,\n  'blake2b-312': 0xb227,\n  'blake2b-320': 0xb228,\n  'blake2b-328': 0xb229,\n  'blake2b-336': 0xb22a,\n  'blake2b-344': 0xb22b,\n  'blake2b-352': 0xb22c,\n  'blake2b-360': 0xb22d,\n  'blake2b-368': 0xb22e,\n  'blake2b-376': 0xb22f,\n  'blake2b-384': 0xb230,\n  'blake2b-392': 0xb231,\n  'blake2b-400': 0xb232,\n  'blake2b-408': 0xb233,\n  'blake2b-416': 0xb234,\n  'blake2b-424': 0xb235,\n  'blake2b-432': 0xb236,\n  'blake2b-440': 0xb237,\n  'blake2b-448': 0xb238,\n  'blake2b-456': 0xb239,\n  'blake2b-464': 0xb23a,\n  'blake2b-472': 0xb23b,\n  'blake2b-480': 0xb23c,\n  'blake2b-488': 0xb23d,\n  'blake2b-496': 0xb23e,\n  'blake2b-504': 0xb23f,\n  'blake2b-512': 0xb240,\n  'blake2s-8': 0xb241,\n  'blake2s-16': 0xb242,\n  'blake2s-24': 0xb243,\n  'blake2s-32': 0xb244,\n  'blake2s-40': 0xb245,\n  'blake2s-48': 0xb246,\n  'blake2s-56': 0xb247,\n  'blake2s-64': 0xb248,\n  'blake2s-72': 0xb249,\n  'blake2s-80': 0xb24a,\n  'blake2s-88': 0xb24b,\n  'blake2s-96': 0xb24c,\n  'blake2s-104': 0xb24d,\n  'blake2s-112': 0xb24e,\n  'blake2s-120': 0xb24f,\n  'blake2s-128': 0xb250,\n  'blake2s-136': 0xb251,\n  'blake2s-144': 0xb252,\n  'blake2s-152': 0xb253,\n  'blake2s-160': 0xb254,\n  'blake2s-168': 0xb255,\n  'blake2s-176': 0xb256,\n  'blake2s-184': 0xb257,\n  'blake2s-192': 0xb258,\n  'blake2s-200': 0xb259,\n  'blake2s-208': 0xb25a,\n  'blake2s-216': 0xb25b,\n  'blake2s-224': 0xb25c,\n  'blake2s-232': 0xb25d,\n  'blake2s-240': 0xb25e,\n  'blake2s-248': 0xb25f,\n  'blake2s-256': 0xb260,\n  'skein256-8': 0xb301,\n  'skein256-16': 0xb302,\n  'skein256-24': 0xb303,\n  'skein256-32': 0xb304,\n  'skein256-40': 0xb305,\n  'skein256-48': 0xb306,\n  'skein256-56': 0xb307,\n  'skein256-64': 0xb308,\n  'skein256-72': 0xb309,\n  'skein256-80': 0xb30a,\n  'skein256-88': 0xb30b,\n  'skein256-96': 0xb30c,\n  'skein256-104': 0xb30d,\n  'skein256-112': 0xb30e,\n  'skein256-120': 0xb30f,\n  'skein256-128': 0xb310,\n  'skein256-136': 0xb311,\n  'skein256-144': 0xb312,\n  'skein256-152': 0xb313,\n  'skein256-160': 0xb314,\n  'skein256-168': 0xb315,\n  'skein256-176': 0xb316,\n  'skein256-184': 0xb317,\n  'skein256-192': 0xb318,\n  'skein256-200': 0xb319,\n  'skein256-208': 0xb31a,\n  'skein256-216': 0xb31b,\n  'skein256-224': 0xb31c,\n  'skein256-232': 0xb31d,\n  'skein256-240': 0xb31e,\n  'skein256-248': 0xb31f,\n  'skein256-256': 0xb320,\n  'skein512-8': 0xb321,\n  'skein512-16': 0xb322,\n  'skein512-24': 0xb323,\n  'skein512-32': 0xb324,\n  'skein512-40': 0xb325,\n  'skein512-48': 0xb326,\n  'skein512-56': 0xb327,\n  'skein512-64': 0xb328,\n  'skein512-72': 0xb329,\n  'skein512-80': 0xb32a,\n  'skein512-88': 0xb32b,\n  'skein512-96': 0xb32c,\n  'skein512-104': 0xb32d,\n  'skein512-112': 0xb32e,\n  'skein512-120': 0xb32f,\n  'skein512-128': 0xb330,\n  'skein512-136': 0xb331,\n  'skein512-144': 0xb332,\n  'skein512-152': 0xb333,\n  'skein512-160': 0xb334,\n  'skein512-168': 0xb335,\n  'skein512-176': 0xb336,\n  'skein512-184': 0xb337,\n  'skein512-192': 0xb338,\n  'skein512-200': 0xb339,\n  'skein512-208': 0xb33a,\n  'skein512-216': 0xb33b,\n  'skein512-224': 0xb33c,\n  'skein512-232': 0xb33d,\n  'skein512-240': 0xb33e,\n  'skein512-248': 0xb33f,\n  'skein512-256': 0xb340,\n  'skein512-264': 0xb341,\n  'skein512-272': 0xb342,\n  'skein512-280': 0xb343,\n  'skein512-288': 0xb344,\n  'skein512-296': 0xb345,\n  'skein512-304': 0xb346,\n  'skein512-312': 0xb347,\n  'skein512-320': 0xb348,\n  'skein512-328': 0xb349,\n  'skein512-336': 0xb34a,\n  'skein512-344': 0xb34b,\n  'skein512-352': 0xb34c,\n  'skein512-360': 0xb34d,\n  'skein512-368': 0xb34e,\n  'skein512-376': 0xb34f,\n  'skein512-384': 0xb350,\n  'skein512-392': 0xb351,\n  'skein512-400': 0xb352,\n  'skein512-408': 0xb353,\n  'skein512-416': 0xb354,\n  'skein512-424': 0xb355,\n  'skein512-432': 0xb356,\n  'skein512-440': 0xb357,\n  'skein512-448': 0xb358,\n  'skein512-456': 0xb359,\n  'skein512-464': 0xb35a,\n  'skein512-472': 0xb35b,\n  'skein512-480': 0xb35c,\n  'skein512-488': 0xb35d,\n  'skein512-496': 0xb35e,\n  'skein512-504': 0xb35f,\n  'skein512-512': 0xb360,\n  'skein1024-8': 0xb361,\n  'skein1024-16': 0xb362,\n  'skein1024-24': 0xb363,\n  'skein1024-32': 0xb364,\n  'skein1024-40': 0xb365,\n  'skein1024-48': 0xb366,\n  'skein1024-56': 0xb367,\n  'skein1024-64': 0xb368,\n  'skein1024-72': 0xb369,\n  'skein1024-80': 0xb36a,\n  'skein1024-88': 0xb36b,\n  'skein1024-96': 0xb36c,\n  'skein1024-104': 0xb36d,\n  'skein1024-112': 0xb36e,\n  'skein1024-120': 0xb36f,\n  'skein1024-128': 0xb370,\n  'skein1024-136': 0xb371,\n  'skein1024-144': 0xb372,\n  'skein1024-152': 0xb373,\n  'skein1024-160': 0xb374,\n  'skein1024-168': 0xb375,\n  'skein1024-176': 0xb376,\n  'skein1024-184': 0xb377,\n  'skein1024-192': 0xb378,\n  'skein1024-200': 0xb379,\n  'skein1024-208': 0xb37a,\n  'skein1024-216': 0xb37b,\n  'skein1024-224': 0xb37c,\n  'skein1024-232': 0xb37d,\n  'skein1024-240': 0xb37e,\n  'skein1024-248': 0xb37f,\n  'skein1024-256': 0xb380,\n  'skein1024-264': 0xb381,\n  'skein1024-272': 0xb382,\n  'skein1024-280': 0xb383,\n  'skein1024-288': 0xb384,\n  'skein1024-296': 0xb385,\n  'skein1024-304': 0xb386,\n  'skein1024-312': 0xb387,\n  'skein1024-320': 0xb388,\n  'skein1024-328': 0xb389,\n  'skein1024-336': 0xb38a,\n  'skein1024-344': 0xb38b,\n  'skein1024-352': 0xb38c,\n  'skein1024-360': 0xb38d,\n  'skein1024-368': 0xb38e,\n  'skein1024-376': 0xb38f,\n  'skein1024-384': 0xb390,\n  'skein1024-392': 0xb391,\n  'skein1024-400': 0xb392,\n  'skein1024-408': 0xb393,\n  'skein1024-416': 0xb394,\n  'skein1024-424': 0xb395,\n  'skein1024-432': 0xb396,\n  'skein1024-440': 0xb397,\n  'skein1024-448': 0xb398,\n  'skein1024-456': 0xb399,\n  'skein1024-464': 0xb39a,\n  'skein1024-472': 0xb39b,\n  'skein1024-480': 0xb39c,\n  'skein1024-488': 0xb39d,\n  'skein1024-496': 0xb39e,\n  'skein1024-504': 0xb39f,\n  'skein1024-512': 0xb3a0,\n  'skein1024-520': 0xb3a1,\n  'skein1024-528': 0xb3a2,\n  'skein1024-536': 0xb3a3,\n  'skein1024-544': 0xb3a4,\n  'skein1024-552': 0xb3a5,\n  'skein1024-560': 0xb3a6,\n  'skein1024-568': 0xb3a7,\n  'skein1024-576': 0xb3a8,\n  'skein1024-584': 0xb3a9,\n  'skein1024-592': 0xb3aa,\n  'skein1024-600': 0xb3ab,\n  'skein1024-608': 0xb3ac,\n  'skein1024-616': 0xb3ad,\n  'skein1024-624': 0xb3ae,\n  'skein1024-632': 0xb3af,\n  'skein1024-640': 0xb3b0,\n  'skein1024-648': 0xb3b1,\n  'skein1024-656': 0xb3b2,\n  'skein1024-664': 0xb3b3,\n  'skein1024-672': 0xb3b4,\n  'skein1024-680': 0xb3b5,\n  'skein1024-688': 0xb3b6,\n  'skein1024-696': 0xb3b7,\n  'skein1024-704': 0xb3b8,\n  'skein1024-712': 0xb3b9,\n  'skein1024-720': 0xb3ba,\n  'skein1024-728': 0xb3bb,\n  'skein1024-736': 0xb3bc,\n  'skein1024-744': 0xb3bd,\n  'skein1024-752': 0xb3be,\n  'skein1024-760': 0xb3bf,\n  'skein1024-768': 0xb3c0,\n  'skein1024-776': 0xb3c1,\n  'skein1024-784': 0xb3c2,\n  'skein1024-792': 0xb3c3,\n  'skein1024-800': 0xb3c4,\n  'skein1024-808': 0xb3c5,\n  'skein1024-816': 0xb3c6,\n  'skein1024-824': 0xb3c7,\n  'skein1024-832': 0xb3c8,\n  'skein1024-840': 0xb3c9,\n  'skein1024-848': 0xb3ca,\n  'skein1024-856': 0xb3cb,\n  'skein1024-864': 0xb3cc,\n  'skein1024-872': 0xb3cd,\n  'skein1024-880': 0xb3ce,\n  'skein1024-888': 0xb3cf,\n  'skein1024-896': 0xb3d0,\n  'skein1024-904': 0xb3d1,\n  'skein1024-912': 0xb3d2,\n  'skein1024-920': 0xb3d3,\n  'skein1024-928': 0xb3d4,\n  'skein1024-936': 0xb3d5,\n  'skein1024-944': 0xb3d6,\n  'skein1024-952': 0xb3d7,\n  'skein1024-960': 0xb3d8,\n  'skein1024-968': 0xb3d9,\n  'skein1024-976': 0xb3da,\n  'skein1024-984': 0xb3db,\n  'skein1024-992': 0xb3dc,\n  'skein1024-1000': 0xb3dd,\n  'skein1024-1008': 0xb3de,\n  'skein1024-1016': 0xb3df,\n  'skein1024-1024': 0xb3e0,\n  'poseidon-bls12_381-a2-fc1': 0xb401,\n  'poseidon-bls12_381-a2-fc1-sc': 0xb402\n})\n\nmodule.exports = { names }\n", "function base(ALPHABET, name) {\n  if (ALPHABET.length >= 255) {\n    throw new TypeError('Alphabet too long');\n  }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) {\n      throw new TypeError(x + ' is ambiguous');\n    }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256);\n  var iFACTOR = Math.log(256) / Math.log(BASE);\n  function encode(source) {\n    if (source instanceof Uint8Array);\n    else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) {\n      throw new TypeError('Expected Uint8Array');\n    }\n    if (source.length === 0) {\n      return '';\n    }\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n    var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n    var b58 = new Uint8Array(size);\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n        carry += 256 * b58[it1] >>> 0;\n        b58[it1] = carry % BASE >>> 0;\n        carry = carry / BASE >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      pbegin++;\n    }\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) {\n      str += ALPHABET.charAt(b58[it2]);\n    }\n    return str;\n  }\n  function decodeUnsafe(source) {\n    if (typeof source !== 'string') {\n      throw new TypeError('Expected String');\n    }\n    if (source.length === 0) {\n      return new Uint8Array();\n    }\n    var psz = 0;\n    if (source[psz] === ' ') {\n      return;\n    }\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n    var size = (source.length - psz) * FACTOR + 1 >>> 0;\n    var b256 = new Uint8Array(size);\n    while (source[psz]) {\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n      if (carry === 255) {\n        return;\n      }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n        carry += BASE * b256[it3] >>> 0;\n        b256[it3] = carry % 256 >>> 0;\n        carry = carry / 256 >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      psz++;\n    }\n    if (source[psz] === ' ') {\n      return;\n    }\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch;\n  }\n  function decode(string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) {\n      return buffer;\n    }\n    throw new Error(`Non-${ name } character`);\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;", "const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n  const hexes = hex.match(/../g);\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n  if (aa === bb)\n    return true;\n  if (aa.byteLength !== bb.byteLength) {\n    return false;\n  }\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false;\n    }\n  }\n  return true;\n};\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n    return o;\n  if (o instanceof ArrayBuffer)\n    return new Uint8Array(o);\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n  equals,\n  coerce,\n  isBinary,\n  fromHex,\n  toHex,\n  fromString,\n  toString,\n  empty\n};", "import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n  constructor(name, prefix, baseEncode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n  }\n  encode(bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${ this.prefix }${ this.baseEncode(bytes) }`;\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}\nclass Decoder {\n  constructor(name, prefix, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    if (prefix.codePointAt(0) === undefined) {\n      throw new Error('Invalid prefix character');\n    }\n    this.prefixCodePoint = prefix.codePointAt(0);\n    this.baseDecode = baseDecode;\n  }\n  decode(text) {\n    if (typeof text === 'string') {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n      }\n      return this.baseDecode(text.slice(this.prefix.length));\n    } else {\n      throw Error('Can only multibase decode strings');\n    }\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n}\nclass ComposedDecoder {\n  constructor(decoders) {\n    this.decoders = decoders;\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n  decode(input) {\n    const prefix = input[0];\n    const decoder = this.decoders[prefix];\n    if (decoder) {\n      return decoder.decode(input);\n    } else {\n      throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n    }\n  }\n}\nexport const or = (left, right) => new ComposedDecoder({\n  ...left.decoders || { [left.prefix]: left },\n  ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n  constructor(name, prefix, baseEncode, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n    this.baseDecode = baseDecode;\n    this.encoder = new Encoder(name, prefix, baseEncode);\n    this.decoder = new Decoder(name, prefix, baseDecode);\n  }\n  encode(input) {\n    return this.encoder.encode(input);\n  }\n  decode(input) {\n    return this.decoder.decode(input);\n  }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n  const {encode, decode} = basex(alphabet, name);\n  return from({\n    prefix,\n    name,\n    encode,\n    decode: text => coerce(decode(text))\n  });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  const codes = {};\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i;\n  }\n  let end = string.length;\n  while (string[end - 1] === '=') {\n    --end;\n  }\n  const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n  let bits = 0;\n  let buffer = 0;\n  let written = 0;\n  for (let i = 0; i < end; ++i) {\n    const value = codes[string[i]];\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${ name } character`);\n    }\n    buffer = buffer << bitsPerChar | value;\n    bits += bitsPerChar;\n    if (bits >= 8) {\n      bits -= 8;\n      out[written++] = 255 & buffer >> bits;\n    }\n  }\n  if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n    throw new SyntaxError('Unexpected end of data');\n  }\n  return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '=';\n  const mask = (1 << bitsPerChar) - 1;\n  let out = '';\n  let bits = 0;\n  let buffer = 0;\n  for (let i = 0; i < data.length; ++i) {\n    buffer = buffer << 8 | data[i];\n    bits += 8;\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar;\n      out += alphabet[mask & buffer >> bits];\n    }\n  }\n  if (bits) {\n    out += alphabet[mask & buffer << bitsPerChar - bits];\n  }\n  if (pad) {\n    while (out.length * bitsPerChar & 7) {\n      out += '=';\n    }\n  }\n  return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n  return from({\n    prefix,\n    name,\n    encode(input) {\n      return encode(input, alphabet, bitsPerChar);\n    },\n    decode(input) {\n      return decode(input, alphabet, bitsPerChar, name);\n    }\n  });\n};", "import { from } from './base.js';\nimport {\n  fromString,\n  toString\n} from '../bytes.js';\nexport const identity = from({\n  prefix: '\\0',\n  name: 'identity',\n  encode: buf => toString(buf),\n  decode: str => fromString(str)\n});", "import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n  prefix: '0',\n  name: 'base2',\n  alphabet: '01',\n  bitsPerChar: 1\n});", "import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n  prefix: '7',\n  name: 'base8',\n  alphabet: '01234567',\n  bitsPerChar: 3\n});", "import { baseX } from './base.js';\nexport const base10 = baseX({\n  prefix: '9',\n  name: 'base10',\n  alphabet: '0123456789'\n});", "import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n  prefix: 'f',\n  name: 'base16',\n  alphabet: '0123456789abcdef',\n  bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n  prefix: 'F',\n  name: 'base16upper',\n  alphabet: '0123456789ABCDEF',\n  bitsPerChar: 4\n});", "import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n  prefix: 'b',\n  name: 'base32',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n  bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n  prefix: 'B',\n  name: 'base32upper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n  bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n  prefix: 'c',\n  name: 'base32pad',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n  bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n  prefix: 'C',\n  name: 'base32padupper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n  bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n  prefix: 'v',\n  name: 'base32hex',\n  alphabet: '0123456789abcdefghijklmnopqrstuv',\n  bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n  prefix: 'V',\n  name: 'base32hexupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n  bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n  prefix: 't',\n  name: 'base32hexpad',\n  alphabet: '0123456789abcdefghijklmnopqrstuv=',\n  bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n  prefix: 'T',\n  name: 'base32hexpadupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n  bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n  prefix: 'h',\n  name: 'base32z',\n  alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n  bitsPerChar: 5\n});", "import { baseX } from './base.js';\nexport const base36 = baseX({\n  prefix: 'k',\n  name: 'base36',\n  alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n  prefix: 'K',\n  name: 'base36upper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});", "import { baseX } from './base.js';\nexport const base58btc = baseX({\n  name: 'base58btc',\n  prefix: 'z',\n  alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n  name: 'base58flickr',\n  prefix: 'Z',\n  alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});", "import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n});", "import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n  p[i] = c;\n  return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n  p[c.codePointAt(0)] = i;\n  return p;\n}, []);\nfunction encode(data) {\n  return data.reduce((p, c) => {\n    p += alphabetBytesToChars[c];\n    return p;\n  }, '');\n}\nfunction decode(str) {\n  const byts = [];\n  for (const char of str) {\n    const byt = alphabetCharsToBytes[char.codePointAt(0)];\n    if (byt === undefined) {\n      throw new Error(`Non-base256emoji character: ${ char }`);\n    }\n    byts.push(byt);\n  }\n  return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n  prefix: '\\uD83D\\uDE80',\n  name: 'base256emoji',\n  encode,\n  decode\n});", "var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n  while (num >= INT) {\n    out[offset++] = num & 255 | MSB;\n    num /= 128;\n  }\n  while (num & MSBALL) {\n    out[offset++] = num & 255 | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  encode.bytes = offset - oldOffset + 1;\n  return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n  var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n  do {\n    if (counter >= l) {\n      read.bytes = 0;\n      throw new RangeError('Could not decode varint');\n    }\n    b = buf[counter++];\n    res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b >= MSB$1);\n  read.bytes = counter - offset;\n  return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n  return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n  encode: encode_1,\n  decode: decode,\n  encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;", "import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n  const code = varint.decode(data, offset);\n  return [\n    code,\n    varint.decode.bytes\n  ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n  varint.encode(int, target, offset);\n  return target;\n};\nexport const encodingLength = int => {\n  return varint.encodingLength(int);\n};", "import {\n  coerce,\n  equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n  const size = digest.byteLength;\n  const sizeOffset = varint.encodingLength(code);\n  const digestOffset = sizeOffset + varint.encodingLength(size);\n  const bytes = new Uint8Array(digestOffset + size);\n  varint.encodeTo(code, bytes, 0);\n  varint.encodeTo(size, bytes, sizeOffset);\n  bytes.set(digest, digestOffset);\n  return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n  const bytes = coerce(multihash);\n  const [code, sizeOffset] = varint.decode(bytes);\n  const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n  const digest = bytes.subarray(sizeOffset + digestOffset);\n  if (digest.byteLength !== size) {\n    throw new Error('Incorrect length');\n  }\n  return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n  if (a === b) {\n    return true;\n  } else {\n    return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n  }\n};\nexport class Digest {\n  constructor(code, size, digest, bytes) {\n    this.code = code;\n    this.size = size;\n    this.digest = digest;\n    this.bytes = bytes;\n  }\n}", "import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n  constructor(name, code, encode) {\n    this.name = name;\n    this.code = code;\n    this.encode = encode;\n  }\n  digest(input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input);\n      return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}", "import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n  name: 'sha2-256',\n  code: 18,\n  encode: sha('SHA-256')\n});\nexport const sha512 = from({\n  name: 'sha2-512',\n  code: 19,\n  encode: sha('SHA-512')\n});", "import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n  code,\n  name,\n  encode,\n  digest\n};", "import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 85;\nexport const encode = node => coerce(node);\nexport const decode = data => coerce(data);", "const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));", "import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n  constructor(version, code, multihash, bytes) {\n    this.code = code;\n    this.version = version;\n    this.multihash = multihash;\n    this.bytes = bytes;\n    this.byteOffset = bytes.byteOffset;\n    this.byteLength = bytes.byteLength;\n    this.asCID = this;\n    this._baseCache = new Map();\n    Object.defineProperties(this, {\n      byteOffset: hidden,\n      byteLength: hidden,\n      code: readonly,\n      version: readonly,\n      multihash: readonly,\n      bytes: readonly,\n      _baseCache: hidden,\n      asCID: hidden\n    });\n  }\n  toV0() {\n    switch (this.version) {\n    case 0: {\n        return this;\n      }\n    default: {\n        const {code, multihash} = this;\n        if (code !== DAG_PB_CODE) {\n          throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n        }\n        if (multihash.code !== SHA_256_CODE) {\n          throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n        }\n        return CID.createV0(multihash);\n      }\n    }\n  }\n  toV1() {\n    switch (this.version) {\n    case 0: {\n        const {code, digest} = this.multihash;\n        const multihash = Digest.create(code, digest);\n        return CID.createV1(this.code, multihash);\n      }\n    case 1: {\n        return this;\n      }\n    default: {\n        throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n      }\n    }\n  }\n  equals(other) {\n    return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n  }\n  toString(base) {\n    const {bytes, version, _baseCache} = this;\n    switch (version) {\n    case 0:\n      return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n    default:\n      return toStringV1(bytes, _baseCache, base || base32.encoder);\n    }\n  }\n  toJSON() {\n    return {\n      code: this.code,\n      version: this.version,\n      hash: this.multihash.bytes\n    };\n  }\n  get [Symbol.toStringTag]() {\n    return 'CID';\n  }\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return 'CID(' + this.toString() + ')';\n  }\n  static isCID(value) {\n    deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n    return !!(value && (value[cidSymbol] || value.asCID === value));\n  }\n  get toBaseEncodedString() {\n    throw new Error('Deprecated, use .toString()');\n  }\n  get codec() {\n    throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n  }\n  get buffer() {\n    throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n  }\n  get multibaseName() {\n    throw new Error('\"multibaseName\" property is deprecated');\n  }\n  get prefix() {\n    throw new Error('\"prefix\" property is deprecated');\n  }\n  static asCID(value) {\n    if (value instanceof CID) {\n      return value;\n    } else if (value != null && value.asCID === value) {\n      const {version, code, multihash, bytes} = value;\n      return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n    } else if (value != null && value[cidSymbol] === true) {\n      const {version, multihash, code} = value;\n      const digest = Digest.decode(multihash);\n      return CID.create(version, code, digest);\n    } else {\n      return null;\n    }\n  }\n  static create(version, code, digest) {\n    if (typeof code !== 'number') {\n      throw new Error('String codecs are no longer supported');\n    }\n    switch (version) {\n    case 0: {\n        if (code !== DAG_PB_CODE) {\n          throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n        } else {\n          return new CID(version, code, digest, digest.bytes);\n        }\n      }\n    case 1: {\n        const bytes = encodeCID(version, code, digest.bytes);\n        return new CID(version, code, digest, bytes);\n      }\n    default: {\n        throw new Error('Invalid version');\n      }\n    }\n  }\n  static createV0(digest) {\n    return CID.create(0, DAG_PB_CODE, digest);\n  }\n  static createV1(code, digest) {\n    return CID.create(1, code, digest);\n  }\n  static decode(bytes) {\n    const [cid, remainder] = CID.decodeFirst(bytes);\n    if (remainder.length) {\n      throw new Error('Incorrect length');\n    }\n    return cid;\n  }\n  static decodeFirst(bytes) {\n    const specs = CID.inspectBytes(bytes);\n    const prefixSize = specs.size - specs.multihashSize;\n    const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n    if (multihashBytes.byteLength !== specs.multihashSize) {\n      throw new Error('Incorrect length');\n    }\n    const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n    const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n    const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n    return [\n      cid,\n      bytes.subarray(specs.size)\n    ];\n  }\n  static inspectBytes(initialBytes) {\n    let offset = 0;\n    const next = () => {\n      const [i, length] = varint.decode(initialBytes.subarray(offset));\n      offset += length;\n      return i;\n    };\n    let version = next();\n    let codec = DAG_PB_CODE;\n    if (version === 18) {\n      version = 0;\n      offset = 0;\n    } else if (version === 1) {\n      codec = next();\n    }\n    if (version !== 0 && version !== 1) {\n      throw new RangeError(`Invalid CID version ${ version }`);\n    }\n    const prefixSize = offset;\n    const multihashCode = next();\n    const digestSize = next();\n    const size = offset + digestSize;\n    const multihashSize = size - prefixSize;\n    return {\n      version,\n      codec,\n      multihashCode,\n      digestSize,\n      multihashSize,\n      size\n    };\n  }\n  static parse(source, base) {\n    const [prefix, bytes] = parseCIDtoBytes(source, base);\n    const cid = CID.decode(bytes);\n    cid._baseCache.set(prefix, source);\n    return cid;\n  }\n}\nconst parseCIDtoBytes = (source, base) => {\n  switch (source[0]) {\n  case 'Q': {\n      const decoder = base || base58btc;\n      return [\n        base58btc.prefix,\n        decoder.decode(`${ base58btc.prefix }${ source }`)\n      ];\n    }\n  case base58btc.prefix: {\n      const decoder = base || base58btc;\n      return [\n        base58btc.prefix,\n        decoder.decode(source)\n      ];\n    }\n  case base32.prefix: {\n      const decoder = base || base32;\n      return [\n        base32.prefix,\n        decoder.decode(source)\n      ];\n    }\n  default: {\n      if (base == null) {\n        throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n      }\n      return [\n        source[0],\n        base.decode(source)\n      ];\n    }\n  }\n};\nconst toStringV0 = (bytes, cache, base) => {\n  const {prefix} = base;\n  if (prefix !== base58btc.prefix) {\n    throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n  }\n  const cid = cache.get(prefix);\n  if (cid == null) {\n    const cid = base.encode(bytes).slice(1);\n    cache.set(prefix, cid);\n    return cid;\n  } else {\n    return cid;\n  }\n};\nconst toStringV1 = (bytes, cache, base) => {\n  const {prefix} = base;\n  const cid = cache.get(prefix);\n  if (cid == null) {\n    const cid = base.encode(bytes);\n    cache.set(prefix, cid);\n    return cid;\n  } else {\n    return cid;\n  }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n  const codeOffset = varint.encodingLength(version);\n  const hashOffset = codeOffset + varint.encodingLength(code);\n  const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n  varint.encodeTo(version, bytes, 0);\n  varint.encodeTo(code, bytes, codeOffset);\n  bytes.set(multihash, hashOffset);\n  return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n  writable: false,\n  configurable: false,\n  enumerable: true\n};\nconst hidden = {\n  writable: false,\n  enumerable: false,\n  configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n  if (range.test(version)) {\n    console.warn(message);\n  } else {\n    throw new Error(message);\n  }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n  doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n  // Make sure to use cid instead of value\n  doSomethingWithCID(cid)\n}\n`;", "import { CID } from './cid.js';\nimport * as varint from './varint.js';\nimport * as bytes from './bytes.js';\nimport * as hasher from './hashes/hasher.js';\nimport * as digest from './hashes/digest.js';\nexport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes\n};", "import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes\n} from './index.js';\nconst bases = {\n  ...identityBase,\n  ...base2,\n  ...base8,\n  ...base10,\n  ...base16,\n  ...base32,\n  ...base36,\n  ...base58,\n  ...base64,\n  ...base256emoji\n};\nconst hashes = {\n  ...sha2,\n  ...identity\n};\nconst codecs = {\n  raw,\n  json\n};\nexport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes,\n  hashes,\n  bases,\n  codecs\n};", "export function asUint8Array(buf) {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n  }\n  return buf;\n}", "import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size));\n  }\n  return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n  }\n  return new Uint8Array(size);\n}", "import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n  return {\n    name,\n    prefix,\n    encoder: {\n      name,\n      prefix,\n      encode\n    },\n    decoder: { decode }\n  };\n}\nconst string = createCodec('utf8', 'u', buf => {\n  const decoder = new TextDecoder('utf8');\n  return 'u' + decoder.decode(buf);\n}, str => {\n  const encoder = new TextEncoder();\n  return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n  let string = 'a';\n  for (let i = 0; i < buf.length; i++) {\n    string += String.fromCharCode(buf[i]);\n  }\n  return string;\n}, str => {\n  str = str.substring(1);\n  const buf = allocUnsafe(str.length);\n  for (let i = 0; i < str.length; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n});\nconst BASES = {\n  utf8: string,\n  'utf-8': string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii: ascii,\n  binary: ascii,\n  ...bases\n};\nexport default BASES;", "import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n  const base = bases[encoding];\n  if (!base) {\n    throw new Error(`Unsupported encoding \"${ encoding }\"`);\n  }\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n  }\n  return base.encoder.encode(array).substring(1);\n}", "import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n  const base = bases[encoding];\n  if (!base) {\n    throw new Error(`Unsupported encoding \"${ encoding }\"`);\n  }\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n  }\n  return base.decoder.decode(`${ base.prefix }${ string }`);\n}", "import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function concat(arrays, length) {\n  if (!length) {\n    length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n  }\n  const output = allocUnsafe(length);\n  let offset = 0;\n  for (const arr of arrays) {\n    output.set(arr, offset);\n    offset += arr.length;\n  }\n  return asUint8Array(output);\n}", "/**\n * Multihash implementation in JavaScript.\n */\n'use strict'\n\nconst multibase = require('multibase')\nconst varint = require('varint')\nconst { names } = require('./constants')\nconst { toString: uint8ArrayToString } = require('uint8arrays/to-string')\nconst { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')\nconst { concat: uint8ArrayConcat } = require('uint8arrays/concat')\n\nconst codes = /** @type {import('./types').CodeNameMap} */({})\n\n// eslint-disable-next-line guard-for-in\nfor (const key in names) {\n  const name = /** @type {HashName} */(key)\n  codes[names[name]] = name\n}\nObject.freeze(codes)\n\n/**\n * Convert the given multihash to a hex encoded string.\n *\n * @param {Uint8Array} hash\n * @returns {string}\n */\nfunction toHexString (hash) {\n  if (!(hash instanceof Uint8Array)) {\n    throw new Error('must be passed a Uint8Array')\n  }\n\n  return uint8ArrayToString(hash, 'base16')\n}\n\n/**\n * Convert the given hex encoded string to a multihash.\n *\n * @param {string} hash\n * @returns {Uint8Array}\n */\nfunction fromHexString (hash) {\n  return uint8ArrayFromString(hash, 'base16')\n}\n\n/**\n * Convert the given multihash to a base58 encoded string.\n *\n * @param {Uint8Array} hash\n * @returns {string}\n */\nfunction toB58String (hash) {\n  if (!(hash instanceof Uint8Array)) {\n    throw new Error('must be passed a Uint8Array')\n  }\n\n  return uint8ArrayToString(multibase.encode('base58btc', hash)).slice(1)\n}\n\n/**\n * Convert the given base58 encoded string to a multihash.\n *\n * @param {string|Uint8Array} hash\n * @returns {Uint8Array}\n */\nfunction fromB58String (hash) {\n  const encoded = hash instanceof Uint8Array\n    ? uint8ArrayToString(hash)\n    : hash\n\n  return multibase.decode('z' + encoded)\n}\n\n/**\n * Decode a hash from the given multihash.\n *\n * @param {Uint8Array} bytes\n * @returns {{code: HashCode, name: HashName, length: number, digest: Uint8Array}} result\n */\nfunction decode (bytes) {\n  if (!(bytes instanceof Uint8Array)) {\n    throw new Error('multihash must be a Uint8Array')\n  }\n\n  if (bytes.length < 2) {\n    throw new Error('multihash too short. must be > 2 bytes.')\n  }\n\n  const code = /** @type {HashCode} */(varint.decode(bytes))\n  if (!isValidCode(code)) {\n    throw new Error(`multihash unknown function code: 0x${code.toString(16)}`)\n  }\n  bytes = bytes.slice(varint.decode.bytes)\n\n  const len = varint.decode(bytes)\n  if (len < 0) {\n    throw new Error(`multihash invalid length: ${len}`)\n  }\n  bytes = bytes.slice(varint.decode.bytes)\n\n  if (bytes.length !== len) {\n    throw new Error(`multihash length inconsistent: 0x${uint8ArrayToString(bytes, 'base16')}`)\n  }\n\n  return {\n    code,\n    name: codes[code],\n    length: len,\n    digest: bytes\n  }\n}\n\n/**\n * Encode a hash digest along with the specified function code.\n *\n * > **Note:** the length is derived from the length of the digest itself.\n *\n * @param {Uint8Array} digest\n * @param {HashName | HashCode} code\n * @param {number} [length]\n * @returns {Uint8Array}\n */\nfunction encode (digest, code, length) {\n  if (!digest || code === undefined) {\n    throw new Error('multihash encode requires at least two args: digest, code')\n  }\n\n  // ensure it's a hashfunction code.\n  const hashfn = coerceCode(code)\n\n  if (!(digest instanceof Uint8Array)) {\n    throw new Error('digest should be a Uint8Array')\n  }\n\n  if (length == null) {\n    length = digest.length\n  }\n\n  if (length && digest.length !== length) {\n    throw new Error('digest length should be equal to specified length.')\n  }\n\n  const hash = varint.encode(hashfn)\n  const len = varint.encode(length)\n  return uint8ArrayConcat([hash, len, digest], hash.length + len.length + digest.length)\n}\n\n/**\n * Converts a hash function name into the matching code.\n * If passed a number it will return the number if it's a valid code.\n *\n * @param {HashName | number} name\n * @returns {number}\n */\nfunction coerceCode (name) {\n  let code = name\n\n  if (typeof name === 'string') {\n    if (names[name] === undefined) {\n      throw new Error(`Unrecognized hash function named: ${name}`)\n    }\n    code = names[name]\n  }\n\n  if (typeof code !== 'number') {\n    throw new Error(`Hash function code should be a number. Got: ${code}`)\n  }\n\n  // @ts-ignore\n  if (codes[code] === undefined && !isAppCode(code)) {\n    throw new Error(`Unrecognized function code: ${code}`)\n  }\n\n  return code\n}\n\n/**\n * Checks if a code is part of the app range\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction isAppCode (code) {\n  return code > 0 && code < 0x10\n}\n\n/**\n * Checks whether a multihash code is valid.\n *\n * @param {HashCode} code\n * @returns {boolean}\n */\nfunction isValidCode (code) {\n  if (isAppCode(code)) {\n    return true\n  }\n\n  if (codes[code]) {\n    return true\n  }\n\n  return false\n}\n\n/**\n * Check if the given buffer is a valid multihash. Throws an error if it is not valid.\n *\n * @param {Uint8Array} multihash\n * @returns {void}\n * @throws {Error}\n */\nfunction validate (multihash) {\n  decode(multihash) // throws if bad.\n}\n\n/**\n * Returns a prefix from a valid multihash. Throws an error if it is not valid.\n *\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n * @throws {Error}\n */\nfunction prefix (multihash) {\n  validate(multihash)\n\n  return multihash.subarray(0, 2)\n}\n\nmodule.exports = {\n  names,\n  codes,\n  toHexString,\n  fromHexString,\n  toB58String,\n  fromB58String,\n  decode,\n  encode,\n  coerceCode,\n  isAppCode,\n  validate,\n  prefix,\n  isValidCode\n}\n\n/**\n * @typedef { import(\"./constants\").HashCode } HashCode\n * @typedef { import(\"./constants\").HashName } HashName\n */\n", "var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n  while (num >= INT) {\n    out[offset++] = num & 255 | MSB;\n    num /= 128;\n  }\n  while (num & MSBALL) {\n    out[offset++] = num & 255 | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  encode.bytes = offset - oldOffset + 1;\n  return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n  var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n  do {\n    if (counter >= l) {\n      read.bytes = 0;\n      throw new RangeError('Could not decode varint');\n    }\n    b = buf[counter++];\n    res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b >= MSB$1);\n  read.bytes = counter - offset;\n  return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n  return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n  encode: encode_1,\n  decode: decode,\n  encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;", "import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n  const code = varint.decode(data, offset);\n  return [\n    code,\n    varint.decode.bytes\n  ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n  varint.encode(int, target, offset);\n  return target;\n};\nexport const encodingLength = int => {\n  return varint.encodingLength(int);\n};", "import {\n  coerce,\n  equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n  const size = digest.byteLength;\n  const sizeOffset = varint.encodingLength(code);\n  const digestOffset = sizeOffset + varint.encodingLength(size);\n  const bytes = new Uint8Array(digestOffset + size);\n  varint.encodeTo(code, bytes, 0);\n  varint.encodeTo(size, bytes, sizeOffset);\n  bytes.set(digest, digestOffset);\n  return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n  const bytes = coerce(multihash);\n  const [code, sizeOffset] = varint.decode(bytes);\n  const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n  const digest = bytes.subarray(sizeOffset + digestOffset);\n  if (digest.byteLength !== size) {\n    throw new Error('Incorrect length');\n  }\n  return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n  if (a === b) {\n    return true;\n  } else {\n    return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n  }\n};\nexport class Digest {\n  constructor(code, size, digest, bytes) {\n    this.code = code;\n    this.size = size;\n    this.digest = digest;\n    this.bytes = bytes;\n  }\n}", "import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n  constructor(name, code, encode) {\n    this.name = name;\n    this.code = code;\n    this.encode = encode;\n  }\n  digest(input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input);\n      return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}", "import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n  name: 'sha2-256',\n  code: 18,\n  encode: sha('SHA-256')\n});\nexport const sha512 = from({\n  name: 'sha2-512',\n  code: 19,\n  encode: sha('SHA-512')\n});", "import * as multihashes from 'multihashes';\nimport Encoder from './Encoder';\nimport ErrorCode from './ErrorCode';\nimport { HashCode } from 'multihashes';\nimport IonError from './IonError';\nimport IonSdkConfig from './IonSdkConfig';\nimport JsonCanonicalizer from './JsonCanonicalizer';\nimport { sha256 } from 'multiformats/hashes/sha2';\n\n/**\n * Class that performs hashing operations using the multihash format.\n */\nexport default class Multihash {\n  /**\n   * Hashes the content using the hashing algorithm specified.\n   * @param hashAlgorithmInMultihashCode The hashing algorithm to use.\n   */\n  public static async hash (content: Uint8Array, hashAlgorithmInMultihashCode: number): Promise<Uint8Array> {\n    const conventionalHash = await this.hashAsNonMultihashBytes(content, hashAlgorithmInMultihashCode);\n    const multihash = multihashes.encode(conventionalHash, hashAlgorithmInMultihashCode as HashCode);\n\n    return multihash;\n  }\n\n  /**\n   * Hashes the content using the hashing algorithm specified as a generic (non-multihash) hash.\n   * @param hashAlgorithmInMultihashCode The hashing algorithm to use.\n   * @returns A multihash bytes.\n   */\n  public static async hashAsNonMultihashBytes (content: Uint8Array, hashAlgorithmInMultihashCode: number): Promise<Uint8Array> {\n    let hash;\n    switch (hashAlgorithmInMultihashCode) {\n      case 18: // SHA256\n        hash = await sha256.encode(content);\n        break;\n      default:\n        throw new IonError(\n          ErrorCode.MultihashUnsupportedHashAlgorithm,\n          `Hash algorithm defined in multihash code ${hashAlgorithmInMultihashCode} is not supported.`\n        );\n    }\n\n    return hash;\n  }\n\n  /**\n   * Canonicalize the given content, then double hashes the result using the latest supported hash algorithm, then encodes the multihash.\n   * Mainly used for testing purposes.\n   */\n  public static async canonicalizeThenHashThenEncode (content: object, hashAlgorithmInMultihashCode: number): Promise<string> {\n    const canonicalizedStringBytes = JsonCanonicalizer.canonicalizeAsBytes(content);\n\n    const multihashEncodedString = await Multihash.hashThenEncode(canonicalizedStringBytes, hashAlgorithmInMultihashCode);\n    return multihashEncodedString;\n  }\n\n  /**\n   * Canonicalize the given content, then double hashes the result using the latest supported hash algorithm, then encodes the multihash.\n   * Mainly used for testing purposes.\n   */\n  public static async canonicalizeThenDoubleHashThenEncode (content: object, hashAlgorithmInMultihashCode: number): Promise<string> {\n    const contentBytes = JsonCanonicalizer.canonicalizeAsBytes(content);\n\n    // Double hash.\n    const intermediateHashBytes = await Multihash.hashAsNonMultihashBytes(contentBytes, hashAlgorithmInMultihashCode);\n    const multihashEncodedString = await Multihash.hashThenEncode(intermediateHashBytes, hashAlgorithmInMultihashCode);\n    return multihashEncodedString;\n  }\n\n  /**\n   * Hashes the content using the hashing algorithm specified then encodes the multihash bytes as string.\n   * @param hashAlgorithmInMultihashCode The hashing algorithm to use.\n   */\n  public static async hashThenEncode (content: Uint8Array, hashAlgorithmInMultihashCode: number): Promise<string> {\n    const multihashBytes = await Multihash.hash(content, hashAlgorithmInMultihashCode);\n    const multihashEncodedString = Encoder.encode(multihashBytes);\n    return multihashEncodedString;\n  }\n\n  /**\n   * Checks if the given encoded hash is a multihash computed using the configured hashing algorithm.\n   */\n  public static validateEncodedHashComputedUsingSupportedHashAlgorithm (\n    encodedMultihash: string,\n    inputContextForErrorLogging: string\n  ) {\n    let multihash;\n    const multihashBytes = Encoder.decodeAsBytes(encodedMultihash, inputContextForErrorLogging);\n    try {\n      multihash = multihashes.decode(multihashBytes);\n    } catch {\n      throw new IonError(\n        ErrorCode.MultihashStringNotAMultihash,\n        `Given ${inputContextForErrorLogging} string '${encodedMultihash}' is not a multihash after decoding.`);\n    }\n\n    const hashAlgorithmInMultihashCode = IonSdkConfig.hashAlgorithmInMultihashCode;\n\n    if (hashAlgorithmInMultihashCode !== multihash.code) {\n      throw new IonError(\n        ErrorCode.MultihashUnsupportedHashAlgorithm,\n        `Given ${inputContextForErrorLogging} uses unsupported multihash algorithm with code ${multihash.code}, ` +\n        `should use ${hashAlgorithmInMultihashCode} or change IonSdkConfig to desired hashing algorithm.`\n      );\n    }\n  }\n}\n", "/**\n * ION operation types.\n */\nenum OperationType {\n  Create = 'create',\n  Update = 'update',\n  Deactivate = 'deactivate',\n  Recover = 'recover'\n}\n\nexport default OperationType;\n", "/**\n * Sidetree patch actions. These are the valid values in the action property of a patch.\n */\nenum PatchAction {\n    Replace = 'replace',\n    AddPublicKeys = 'add-public-keys',\n    RemovePublicKeys = 'remove-public-keys',\n    AddServices = 'add-services',\n    RemoveServices = 'remove-services'\n}\n\nexport default PatchAction;\n", "import * as URI from 'uri-js';\nimport ErrorCode from './ErrorCode';\nimport ISigner from './interfaces/ISigner';\nimport InputValidator from './InputValidator';\nimport IonCreateRequestModel from './models/IonCreateRequestModel';\nimport IonDeactivateRequestModel from './models/IonDeactivateRequestModel';\nimport IonDocumentModel from './models/IonDocumentModel';\nimport IonError from './IonError';\nimport IonPublicKeyModel from './models/IonPublicKeyModel';\nimport IonRecoverRequestModel from './models/IonRecoverRequestModel';\nimport IonSdkConfig from './IonSdkConfig';\nimport IonServiceModel from './models/IonServiceModel';\nimport IonUpdateRequestModel from './models/IonUpdateRequestModel';\nimport JsonCanonicalizer from './JsonCanonicalizer';\nimport JwkEs256k from './models/JwkEs256k';\nimport Multihash from './Multihash';\nimport OperationKeyType from './enums/OperationKeyType';\nimport OperationType from './enums/OperationType';\nimport PatchAction from './enums/PatchAction';\n\n/**\n * Class containing operations related to ION requests.\n */\nexport default class IonRequest {\n  /**\n   * Creates an ION DID create request.\n   * @param input.document The initial state to be associate with the ION DID to be created using a `replace` document patch action.\n   */\n  public static async createCreateRequest (input: {\n    recoveryKey: JwkEs256k;\n    updateKey: JwkEs256k;\n    document: IonDocumentModel;\n  }): Promise<IonCreateRequestModel> {\n    const recoveryKey = input.recoveryKey;\n    const updateKey = input.updateKey;\n    const didDocumentKeys = input.document.publicKeys;\n    const services = input.document.services;\n\n    // Validate recovery and update public keys.\n    InputValidator.validateEs256kOperationKey(recoveryKey, OperationKeyType.Public);\n    InputValidator.validateEs256kOperationKey(updateKey, OperationKeyType.Public);\n\n    // Validate all given DID Document keys.\n    IonRequest.validateDidDocumentKeys(didDocumentKeys);\n\n    // Validate all given service.\n    IonRequest.validateServices(services);\n\n    const hashAlgorithmInMultihashCode = IonSdkConfig.hashAlgorithmInMultihashCode;\n\n    const patches = [{\n      action: PatchAction.Replace,\n      document: input.document\n    }];\n\n    const delta = {\n      updateCommitment: await Multihash.canonicalizeThenDoubleHashThenEncode(updateKey, hashAlgorithmInMultihashCode),\n      patches\n    };\n\n    IonRequest.validateDeltaSize(delta);\n\n    const deltaHash = await Multihash.canonicalizeThenHashThenEncode(delta, hashAlgorithmInMultihashCode);\n\n    const suffixData = {\n      deltaHash,\n      recoveryCommitment: await Multihash.canonicalizeThenDoubleHashThenEncode(recoveryKey, hashAlgorithmInMultihashCode)\n    };\n\n    const operationRequest = {\n      type: OperationType.Create,\n      suffixData: suffixData,\n      delta: delta\n    };\n\n    return operationRequest;\n  }\n\n  public static async createDeactivateRequest (input: {\n    didSuffix: string,\n    recoveryPublicKey: JwkEs256k,\n    signer: ISigner\n  }): Promise<IonDeactivateRequestModel> {\n    // Validate DID suffix\n    IonRequest.validateDidSuffix(input.didSuffix);\n\n    // Validates recovery public key\n    InputValidator.validateEs256kOperationKey(input.recoveryPublicKey, OperationKeyType.Public);\n\n    const hashAlgorithmInMultihashCode = IonSdkConfig.hashAlgorithmInMultihashCode;\n    const revealValue = await Multihash.canonicalizeThenHashThenEncode(input.recoveryPublicKey, hashAlgorithmInMultihashCode);\n\n    const dataToBeSigned = {\n      didSuffix: input.didSuffix,\n      recoveryKey: input.recoveryPublicKey\n    };\n\n    const compactJws = await input.signer.sign({ alg: 'ES256K' }, dataToBeSigned);\n\n    return {\n      type: OperationType.Deactivate,\n      didSuffix: input.didSuffix,\n      revealValue: revealValue,\n      signedData: compactJws\n    };\n  }\n\n  public static async createRecoverRequest (input: {\n    didSuffix: string,\n    recoveryPublicKey: JwkEs256k,\n    nextRecoveryPublicKey: JwkEs256k,\n    nextUpdatePublicKey: JwkEs256k,\n    document: IonDocumentModel,\n    signer: ISigner\n  }): Promise<IonRecoverRequestModel> {\n    // Validate DID suffix\n    IonRequest.validateDidSuffix(input.didSuffix);\n\n    // Validate recovery public key\n    InputValidator.validateEs256kOperationKey(input.recoveryPublicKey, OperationKeyType.Public);\n\n    // Validate next recovery public key\n    InputValidator.validateEs256kOperationKey(input.nextRecoveryPublicKey, OperationKeyType.Public);\n\n    // Validate next update public key\n    InputValidator.validateEs256kOperationKey(input.nextUpdatePublicKey, OperationKeyType.Public);\n\n    // Validate all given DID Document keys.\n    IonRequest.validateDidDocumentKeys(input.document.publicKeys);\n\n    // Validate all given service.\n    IonRequest.validateServices(input.document.services);\n\n    const hashAlgorithmInMultihashCode = IonSdkConfig.hashAlgorithmInMultihashCode;\n    const revealValue = await Multihash.canonicalizeThenHashThenEncode(input.recoveryPublicKey, hashAlgorithmInMultihashCode);\n\n    const patches = [{\n      action: PatchAction.Replace,\n      document: input.document\n    }];\n\n    const nextUpdateCommitmentHash = await Multihash.canonicalizeThenDoubleHashThenEncode(input.nextUpdatePublicKey, hashAlgorithmInMultihashCode);\n    const delta = {\n      patches,\n      updateCommitment: nextUpdateCommitmentHash\n    };\n\n    const deltaHash = await Multihash.canonicalizeThenHashThenEncode(delta, hashAlgorithmInMultihashCode);\n    const nextRecoveryCommitmentHash = await Multihash.canonicalizeThenDoubleHashThenEncode(input.nextRecoveryPublicKey, hashAlgorithmInMultihashCode);\n\n    const dataToBeSigned = {\n      recoveryCommitment: nextRecoveryCommitmentHash,\n      recoveryKey: input.recoveryPublicKey,\n      deltaHash: deltaHash\n    };\n\n    const compactJws = await input.signer.sign({ alg: 'ES256K' }, dataToBeSigned);\n\n    return {\n      type: OperationType.Recover,\n      didSuffix: input.didSuffix,\n      revealValue: revealValue,\n      delta: delta,\n      signedData: compactJws\n    };\n  }\n\n  public static async createUpdateRequest (input: {\n    didSuffix: string;\n    updatePublicKey: JwkEs256k;\n    nextUpdatePublicKey: JwkEs256k;\n    signer: ISigner;\n    servicesToAdd?: IonServiceModel[];\n    idsOfServicesToRemove?: string[];\n    publicKeysToAdd?: IonPublicKeyModel[];\n    idsOfPublicKeysToRemove?: string[];\n  }): Promise<IonUpdateRequestModel> {\n    // Validate DID suffix\n    IonRequest.validateDidSuffix(input.didSuffix);\n\n    // Validate update public key\n    InputValidator.validateEs256kOperationKey(input.updatePublicKey, OperationKeyType.Public);\n\n    // Validate next update public key\n    InputValidator.validateEs256kOperationKey(input.nextUpdatePublicKey, OperationKeyType.Public);\n\n    // Validate all given service.\n    IonRequest.validateServices(input.servicesToAdd);\n\n    // Validate all given DID Document keys.\n    IonRequest.validateDidDocumentKeys(input.publicKeysToAdd);\n\n    // Validate all given service id to remove.\n    if (input.idsOfServicesToRemove !== undefined) {\n      for (const id of input.idsOfServicesToRemove) {\n        InputValidator.validateId(id);\n      }\n    }\n\n    // Validate all given public key id to remove.\n    if (input.idsOfPublicKeysToRemove !== undefined) {\n      for (const id of input.idsOfPublicKeysToRemove) {\n        InputValidator.validateId(id);\n      }\n    }\n\n    const patches = [];\n    // Create patches for add services\n    const servicesToAdd = input.servicesToAdd;\n    if (servicesToAdd !== undefined && servicesToAdd.length > 0) {\n      const patch = {\n        action: PatchAction.AddServices,\n        services: servicesToAdd\n      };\n\n      patches.push(patch);\n    }\n\n    // Create patches for remove services\n    const idsOfServicesToRemove = input.idsOfServicesToRemove;\n    if (idsOfServicesToRemove !== undefined && idsOfServicesToRemove.length > 0) {\n      const patch = {\n        action: PatchAction.RemoveServices,\n        ids: idsOfServicesToRemove\n      };\n\n      patches.push(patch);\n    }\n\n    // Create patches for adding public keys\n    const publicKeysToAdd = input.publicKeysToAdd;\n    if (publicKeysToAdd !== undefined && publicKeysToAdd.length > 0) {\n      const patch = {\n        action: PatchAction.AddPublicKeys,\n        publicKeys: publicKeysToAdd\n      };\n\n      patches.push(patch);\n    }\n\n    // Create patch for removing public keys\n    const idsOfPublicKeysToRemove = input.idsOfPublicKeysToRemove;\n    if (idsOfPublicKeysToRemove !== undefined && idsOfPublicKeysToRemove.length > 0) {\n      const patch = {\n        action: PatchAction.RemovePublicKeys,\n        ids: idsOfPublicKeysToRemove\n      };\n\n      patches.push(patch);\n    }\n\n    const hashAlgorithmInMultihashCode = IonSdkConfig.hashAlgorithmInMultihashCode;\n    const revealValue = await Multihash.canonicalizeThenHashThenEncode(input.updatePublicKey, hashAlgorithmInMultihashCode);\n\n    const nextUpdateCommitmentHash = await Multihash.canonicalizeThenDoubleHashThenEncode(input.nextUpdatePublicKey, hashAlgorithmInMultihashCode);\n    const delta = {\n      patches,\n      updateCommitment: nextUpdateCommitmentHash\n    };\n    const deltaHash = await Multihash.canonicalizeThenHashThenEncode(delta, hashAlgorithmInMultihashCode);\n\n    const dataToBeSigned = {\n      updateKey: input.updatePublicKey,\n      deltaHash\n    };\n\n    const compactJws = await input.signer.sign({ alg: 'ES256K' }, dataToBeSigned);\n\n    return {\n      type: OperationType.Update,\n      didSuffix: input.didSuffix,\n      revealValue,\n      delta,\n      signedData: compactJws\n    };\n  }\n\n  private static validateDidSuffix (didSuffix: string) {\n    Multihash.validateEncodedHashComputedUsingSupportedHashAlgorithm(didSuffix, 'didSuffix');\n  }\n\n  private static validateDidDocumentKeys (publicKeys?: IonPublicKeyModel[]) {\n    if (publicKeys === undefined) {\n      return;\n    }\n\n    // Validate each public key.\n    const publicKeyIdSet: Set<string> = new Set();\n    for (const publicKey of publicKeys) {\n      if (Array.isArray(publicKey.publicKeyJwk)) {\n        throw new IonError(ErrorCode.DidDocumentPublicKeyMissingOrIncorrectType, `DID Document key 'publicKeyJwk' property is not a non-array object.`);\n      }\n\n      InputValidator.validateId(publicKey.id);\n\n      // 'id' must be unique across all given keys.\n      if (publicKeyIdSet.has(publicKey.id)) {\n        throw new IonError(ErrorCode.DidDocumentPublicKeyIdDuplicated, `DID Document key with ID '${publicKey.id}' already exists.`);\n      }\n      publicKeyIdSet.add(publicKey.id);\n\n      InputValidator.validatePublicKeyPurposes(publicKey.purposes);\n    }\n  }\n\n  private static validateServices (services?: IonServiceModel[]) {\n    if (services !== undefined && services.length !== 0) {\n      const serviceIdSet: Set<string> = new Set();\n      for (const service of services) {\n        IonRequest.validateService(service);\n        if (serviceIdSet.has(service.id)) {\n          throw new IonError(ErrorCode.DidDocumentServiceIdDuplicated, 'Service id has to be unique');\n        }\n        serviceIdSet.add(service.id);\n      }\n    }\n  }\n\n  private static validateService (service: IonServiceModel) {\n    InputValidator.validateId(service.id);\n\n    const maxTypeLength = 30;\n    if (service.type.length > maxTypeLength) {\n      const errorMessage = `Service endpoint type length ${service.type.length} exceeds max allowed length of ${maxTypeLength}.`;\n      throw new IonError(ErrorCode.ServiceTypeTooLong, errorMessage);\n    }\n\n    // Throw error if `serviceEndpoint` is an array.\n    if (Array.isArray(service.serviceEndpoint)) {\n      const errorMessage = 'Service endpoint value cannot be an array.';\n      throw new IonError(ErrorCode.ServiceEndpointCannotBeAnArray, errorMessage);\n    }\n\n    if (typeof service.serviceEndpoint === 'string') {\n      const uri = URI.parse(service.serviceEndpoint);\n      if (uri.error !== undefined) {\n        throw new IonError(ErrorCode.ServiceEndpointStringNotValidUri, `Service endpoint string '${service.serviceEndpoint}' is not a URI.`);\n      }\n    }\n  }\n\n  private static validateDeltaSize (delta: object) {\n    const deltaBytes = JsonCanonicalizer.canonicalizeAsBytes(delta);\n    if (deltaBytes.length > IonSdkConfig.maxCanonicalizedDeltaSizeInBytes) {\n      const errorMessage = `Delta of ${deltaBytes.length} bytes exceeded limit of ${IonSdkConfig.maxCanonicalizedDeltaSizeInBytes} bytes.`;\n      throw new IonError(ErrorCode.DeltaExceedsMaximumSize, errorMessage);\n    }\n  }\n}\n", "import Encoder from './Encoder';\nimport IonDocumentModel from './models/IonDocumentModel';\nimport IonRequest from './IonRequest';\nimport IonSdkConfig from './IonSdkConfig';\nimport JsonCanonicalizer from './JsonCanonicalizer';\nimport JwkEs256k from './models/JwkEs256k';\nimport Multihash from './Multihash';\n\n/**\n * Class containing DID related operations.\n */\nexport default class IonDid {\n  /**\n   * Creates a long-form DID.\n   * @param input.document The initial state to be associate with the ION DID to be created using a `replace` document patch action.\n   */\n  public static async createLongFormDid (input: {\n    recoveryKey: JwkEs256k;\n    updateKey: JwkEs256k;\n    document: IonDocumentModel;\n  }): Promise<string> {\n    const createRequest = await IonRequest.createCreateRequest(input);\n\n    const didUniqueSuffix = await IonDid.computeDidUniqueSuffix(createRequest.suffixData);\n\n    // Add the network portion if not configured for mainnet.\n    let shortFormDid;\n    if (IonSdkConfig.network === undefined || IonSdkConfig.network === 'mainnet') {\n      shortFormDid = `did:ion:${didUniqueSuffix}`;\n    } else {\n      shortFormDid = `did:ion:${IonSdkConfig.network}:${didUniqueSuffix}`;\n    }\n\n    const initialState = {\n      suffixData: createRequest.suffixData,\n      delta: createRequest.delta\n    };\n\n    // Initial state must be canonicalized as per spec.\n    const canonicalizedInitialStateBytes = JsonCanonicalizer.canonicalizeAsBytes(initialState);\n    const encodedCanonicalizedInitialStateString = Encoder.encode(canonicalizedInitialStateBytes);\n\n    const longFormDid = `${shortFormDid}:${encodedCanonicalizedInitialStateString}`;\n    return longFormDid;\n  }\n\n  /**\n   * Computes the DID unique suffix given the encoded suffix data string.\n   */\n  private static async computeDidUniqueSuffix (suffixData: object): Promise<string> {\n    const canonicalizedStringBytes = JsonCanonicalizer.canonicalizeAsBytes(suffixData);\n    const multihash = await Multihash.hash(canonicalizedStringBytes, IonSdkConfig.hashAlgorithmInMultihashCode);\n    const encodedMultihash = Encoder.encode(multihash);\n    return encodedMultihash;\n  }\n}\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\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", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n  var bytes = Buffer.allocUnsafe(size)\n\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (var generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n      }\n    } else {\n      crypto.getRandomValues(bytes)\n    }\n  }\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\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", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (toStr.call(list) === '[object Array]') {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n\nmodule.exports = forEach;\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", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar gOPD = require('gopd');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\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\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\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", "// 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", "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}", "// 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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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", "// 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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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", "// 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/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\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}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "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", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n  var M = ARRAY16\n  for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n  var a = this._a\n  var b = this._b\n  var c = this._c\n  var d = this._d\n\n  a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n  d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n  c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n  b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n  a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n  d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n  c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n  b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n  a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n  d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n  c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n  b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n  a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n  d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n  c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n  b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n  a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n  d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n  c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n  b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n  a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n  d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n  c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n  b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n  a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n  d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n  c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n  b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n  a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n  d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n  c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n  b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n  a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n  d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n  c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n  b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n  a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n  d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n  c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n  b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n  a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n  d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n  c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n  b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n  a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n  d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n  c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n  b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n  a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n  d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n  c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n  b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n  a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n  d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n  c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n  b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n  a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n  d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n  c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n  b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n  a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n  d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n  c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n  b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n  this._a = (this._a + a) | 0\n  this._b = (this._b + b) | 0\n  this._c = (this._c + c) | 0\n  this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.allocUnsafe(16)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n  return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n  var words = ARRAY16\n  for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n  var al = this._a | 0\n  var bl = this._b | 0\n  var cl = this._c | 0\n  var dl = this._d | 0\n  var el = this._e | 0\n\n  var ar = this._a | 0\n  var br = this._b | 0\n  var cr = this._c | 0\n  var dr = this._d | 0\n  var er = this._e | 0\n\n  // computation\n  for (var i = 0; i < 80; i += 1) {\n    var tl\n    var tr\n    if (i < 16) {\n      tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n      tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n    } else if (i < 32) {\n      tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n      tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n    } else if (i < 48) {\n      tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n      tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n    } else if (i < 64) {\n      tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n      tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n    } else { // if (i<80) {\n      tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n      tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n    }\n\n    al = el\n    el = dl\n    dl = rotl(cl, 10)\n    cl = bl\n    bl = tl\n\n    ar = er\n    er = dr\n    dr = rotl(cr, 10)\n    cr = br\n    br = tr\n  }\n\n  // update state\n  var t = (this._b + cl + dr) | 0\n  this._b = (this._c + dl + er) | 0\n  this._c = (this._d + el + ar) | 0\n  this._d = (this._e + al + br) | 0\n  this._e = (this._a + bl + cr) | 0\n  this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  buffer.writeInt32LE(this._e, 16)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\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", "/*\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 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", "/**\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", "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", "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 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", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "// 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\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n  Transform.call(this)\n  this.hashMode = typeof hashMode === 'string'\n  if (this.hashMode) {\n    this[hashMode] = this._finalOrDigest\n  } else {\n    this.final = this._finalOrDigest\n  }\n  if (this._final) {\n    this.__final = this._final\n    this._final = null\n  }\n  this._decoder = null\n  this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n  if (typeof data === 'string') {\n    data = Buffer.from(data, inputEnc)\n  }\n\n  var outData = this._update(data)\n  if (this.hashMode) return this\n\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc)\n  }\n\n  return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n  throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n  throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n  throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n  var err\n  try {\n    if (this.hashMode) {\n      this._update(data)\n    } else {\n      this.push(this._update(data))\n    }\n  } catch (e) {\n    err = e\n  } finally {\n    next(err)\n  }\n}\nCipherBase.prototype._flush = function (done) {\n  var err\n  try {\n    this.push(this.__final())\n  } catch (e) {\n    err = e\n  }\n\n  done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n  var outData = this.__final() || Buffer.alloc(0)\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc, true)\n  }\n  return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n  if (!this._decoder) {\n    this._decoder = new StringDecoder(enc)\n    this._encoding = enc\n  }\n\n  if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n  var out = this._decoder.write(value)\n  if (fin) {\n    out += this._decoder.end()\n  }\n\n  return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n  Base.call(this, 'digest')\n\n  this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n  return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n  alg = alg.toLowerCase()\n  if (alg === 'md5') return new MD5()\n  if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n  return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  this._alg = alg\n  this._key = key\n\n  if (key.length > blocksize) {\n    key = alg(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._alg(Buffer.concat(this._hash))\n  return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n  return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  this._alg = alg\n  this._key = key\n  if (key.length > blocksize) {\n    var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n    key = hash.update(key).digest()\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n  this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n  this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._hash.digest()\n  var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n  return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n  alg = alg.toLowerCase()\n  if (alg === 'rmd160' || alg === 'ripemd160') {\n    return new Hmac('rmd160', key)\n  }\n  if (alg === 'md5') {\n    return new Legacy(md5, key)\n  }\n  return new Hmac(alg, key)\n}\n", "{\n  \"sha224WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"RSA-SHA224\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"sha256WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"RSA-SHA256\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"sha384WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"RSA-SHA384\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"sha512WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA512\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA1\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"3021300906052b0e03021a05000414\"\n  },\n  \"ecdsa-with-SHA1\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"sha256\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"sha224\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"sha384\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"sha512\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA1\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-RIPEMD160\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"\"\n  },\n  \"ripemd160WithRSA\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"RSA-RIPEMD160\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"md5WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  },\n  \"RSA-MD5\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  }\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n  if (typeof iterations !== 'number') {\n    throw new TypeError('Iterations not a number')\n  }\n\n  if (iterations < 0) {\n    throw new TypeError('Bad iterations')\n  }\n\n  if (typeof keylen !== 'number') {\n    throw new TypeError('Key length not a number')\n  }\n\n  if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n    throw new TypeError('Bad key length')\n  }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n  defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n  var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n  defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n  defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n  if (Buffer.isBuffer(thing)) {\n    return thing\n  } else if (typeof thing === 'string') {\n    return Buffer.from(thing, encoding)\n  } else if (ArrayBuffer.isView(thing)) {\n    return Buffer.from(thing.buffer)\n  } else {\n    throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n  }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n  md5: 16,\n  sha1: 20,\n  sha224: 28,\n  sha256: 32,\n  sha384: 48,\n  sha512: 64,\n  rmd160: 20,\n  ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n  var hash = getDigest(alg)\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  if (key.length > blocksize) {\n    key = hash(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n  ipad.copy(ipad1, 0, 0, blocksize)\n  this.ipad1 = ipad1\n  this.ipad2 = ipad\n  this.opad = opad\n  this.alg = alg\n  this.blocksize = blocksize\n  this.hash = hash\n  this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n  data.copy(ipad, this.blocksize)\n  var h = this.hash(ipad)\n  h.copy(this.opad, this.blocksize)\n  return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n  function shaFunc (data) {\n    return sha(alg).update(data).digest()\n  }\n  function rmd160Func (data) {\n    return new RIPEMD160().update(data).digest()\n  }\n\n  if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n  if (alg === 'md5') return md5\n  return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n  checkParameters(iterations, keylen)\n  password = toBuffer(password, defaultEncoding, 'Password')\n  salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n  digest = digest || 'sha1'\n\n  var hmac = new Hmac(digest, password, salt.length)\n\n  var DK = Buffer.allocUnsafe(keylen)\n  var block1 = Buffer.allocUnsafe(salt.length + 4)\n  salt.copy(block1, 0, 0, salt.length)\n\n  var destPos = 0\n  var hLen = sizes[digest]\n  var l = Math.ceil(keylen / hLen)\n\n  for (var i = 1; i <= l; i++) {\n    block1.writeUInt32BE(i, salt.length)\n\n    var T = hmac.run(block1, hmac.ipad1)\n    var U = T\n\n    for (var j = 1; j < iterations; j++) {\n      U = hmac.run(U, hmac.ipad2)\n      for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n    }\n\n    T.copy(DK, destPos)\n    destPos += hLen\n  }\n\n  return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n  sha: 'SHA-1',\n  'sha-1': 'SHA-1',\n  sha1: 'SHA-1',\n  sha256: 'SHA-256',\n  'sha-256': 'SHA-256',\n  sha384: 'SHA-384',\n  'sha-384': 'SHA-384',\n  'sha-512': 'SHA-512',\n  sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n  if (global.process && !global.process.browser) {\n    return Promise.resolve(false)\n  }\n  if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n    return Promise.resolve(false)\n  }\n  if (checks[algo] !== undefined) {\n    return checks[algo]\n  }\n  ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n  var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n    .then(function () {\n      return true\n    }).catch(function () {\n      return false\n    })\n  checks[algo] = prom\n  return prom\n}\nvar nextTick\nfunction getNextTick () {\n  if (nextTick) {\n    return nextTick\n  }\n  if (global.process && global.process.nextTick) {\n    nextTick = global.process.nextTick\n  } else if (global.queueMicrotask) {\n    nextTick = global.queueMicrotask\n  } else if (global.setImmediate) {\n    nextTick = global.setImmediate\n  } else {\n    nextTick = global.setTimeout\n  }\n  return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n  return subtle.importKey(\n    'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n  ).then(function (key) {\n    return subtle.deriveBits({\n      name: 'PBKDF2',\n      salt: salt,\n      iterations: iterations,\n      hash: {\n        name: algo\n      }\n    }, key, length << 3)\n  }).then(function (res) {\n    return Buffer.from(res)\n  })\n}\n\nfunction resolvePromise (promise, callback) {\n  promise.then(function (out) {\n    getNextTick()(function () {\n      callback(null, out)\n    })\n  }, function (e) {\n    getNextTick()(function () {\n      callback(e)\n    })\n  })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n  if (typeof digest === 'function') {\n    callback = digest\n    digest = undefined\n  }\n\n  digest = digest || 'sha1'\n  var algo = toBrowser[digest.toLowerCase()]\n\n  if (!algo || typeof global.Promise !== 'function') {\n    getNextTick()(function () {\n      var out\n      try {\n        out = sync(password, salt, iterations, keylen, digest)\n      } catch (e) {\n        return callback(e)\n      }\n      callback(null, out)\n    })\n    return\n  }\n\n  checkParameters(iterations, keylen)\n  password = toBuffer(password, defaultEncoding, 'Password')\n  salt = toBuffer(salt, defaultEncoding, 'Salt')\n  if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n  resolvePromise(checkNative(algo).then(function (resp) {\n    if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n    return sync(password, salt, iterations, keylen, digest)\n  }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n  var res =  (bytes[0 + off] << 24) |\n             (bytes[1 + off] << 16) |\n             (bytes[2 + off] << 8) |\n             bytes[3 + off];\n  return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n  bytes[0 + off] = value >>> 24;\n  bytes[1 + off] = (value >>> 16) & 0xff;\n  bytes[2 + off] = (value >>> 8) & 0xff;\n  bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 0; i < 4; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n  for (var i = 4; i < 8; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  // 7, 15, 23, 31, 39, 47, 55, 63\n  // 6, 14, 22, 30, 39, 47, 55, 63\n  // 5, 13, 21, 29, 39, 47, 55, 63\n  // 4, 12, 20, 28\n  for (var i = 7; i >= 5; i--) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outL <<= 1;\n    outL |= (inR >> (j + i)) & 1;\n  }\n\n  // 1, 9, 17, 25, 33, 41, 49, 57\n  // 2, 10, 18, 26, 34, 42, 50, 58\n  // 3, 11, 19, 27, 35, 43, 51, 59\n  // 36, 44, 52, 60\n  for (var i = 1; i <= 3; i++) {\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outR <<= 1;\n    outR |= (inL >> (j + i)) & 1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n  return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n  // inL => outL\n  14, 11, 17, 4, 27, 23, 25, 0,\n  13, 22, 7, 18, 5, 9, 16, 24,\n  2, 20, 12, 21, 1, 8, 15, 26,\n\n  // inR => outR\n  15, 4, 25, 19, 9, 1, 26, 16,\n  5, 11, 23, 8, 12, 7, 17, 0,\n  22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  var len = pc2table.length >>> 1;\n  for (var i = 0; i < len; i++) {\n    outL <<= 1;\n    outL |= (inL >>> pc2table[i]) & 0x1;\n  }\n  for (var i = len; i < pc2table.length; i++) {\n    outR <<= 1;\n    outR |= (inR >>> pc2table[i]) & 0x1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  outL = ((r & 1) << 5) | (r >>> 27);\n  for (var i = 23; i >= 15; i -= 4) {\n    outL <<= 6;\n    outL |= (r >>> i) & 0x3f;\n  }\n  for (var i = 11; i >= 3; i -= 4) {\n    outR |= (r >>> i) & 0x3f;\n    outR <<= 6;\n  }\n  outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n  var out = 0;\n  for (var i = 0; i < 4; i++) {\n    var b = (inL >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  for (var i = 0; i < 4; i++) {\n    var b = (inR >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  return out >>> 0;\n};\n\nvar permuteTable = [\n  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n  var out = 0;\n  for (var i = 0; i < permuteTable.length; i++) {\n    out <<= 1;\n    out |= (num >>> permuteTable[i]) & 0x1;\n  }\n  return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n  var str = num.toString(2);\n  while (str.length < size)\n    str = '0' + str;\n\n  var out = [];\n  for (var i = 0; i < size; i += group)\n    out.push(str.slice(i, i + group));\n  return out.join(' ');\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 assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n  this.tmp = new Array(2);\n  this.keys = null;\n}\n\nfunction DES(options) {\n  Cipher.call(this, options);\n\n  var state = new DESState();\n  this._desState = state;\n\n  this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n  return new DES(options);\n};\n\nvar shiftTable = [\n  1, 1, 2, 2, 2, 2, 2, 2,\n  1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n  state.keys = new Array(16 * 2);\n\n  assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n  var kL = utils.readUInt32BE(key, 0);\n  var kR = utils.readUInt32BE(key, 4);\n\n  utils.pc1(kL, kR, state.tmp, 0);\n  kL = state.tmp[0];\n  kR = state.tmp[1];\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var shift = shiftTable[i >>> 1];\n    kL = utils.r28shl(kL, shift);\n    kR = utils.r28shl(kR, shift);\n    utils.pc2(kL, kR, state.keys, i);\n  }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._desState;\n\n  var l = utils.readUInt32BE(inp, inOff);\n  var r = utils.readUInt32BE(inp, inOff + 4);\n\n  // Initial Permutation\n  utils.ip(l, r, state.tmp, 0);\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  if (this.type === 'encrypt')\n    this._encrypt(state, l, r, state.tmp, 0);\n  else\n    this._decrypt(state, l, r, state.tmp, 0);\n\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  utils.writeUInt32BE(out, l, outOff);\n  utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n  var value = buffer.length - off;\n  for (var i = off; i < buffer.length; i++)\n    buffer[i] = value;\n\n  return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n  var pad = buffer[buffer.length - 1];\n  for (var i = buffer.length - pad; i < buffer.length; i++)\n    assert.equal(buffer[i], pad);\n\n  return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n  var l = lStart;\n  var r = rStart;\n\n  // Apply f() x16 times\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(r, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = r;\n    r = (l ^ f) >>> 0;\n    l = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n  var l = rStart;\n  var r = lStart;\n\n  // Apply f() x16 times\n  for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(l, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = l;\n    l = (r ^ f) >>> 0;\n    r = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n  assert.equal(iv.length, 8, 'Invalid IV length');\n\n  this.iv = new Array(8);\n  for (var i = 0; i < this.iv.length; i++)\n    this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n  function CBC(options) {\n    Base.call(this, options);\n    this._cbcInit();\n  }\n  inherits(CBC, Base);\n\n  var keys = Object.keys(proto);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    CBC.prototype[key] = proto[key];\n  }\n\n  CBC.create = function create(options) {\n    return new CBC(options);\n  };\n\n  return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n  var state = new CBCState(this.options.iv);\n  this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n  var state = this._cbcState;\n  var superProto = this.constructor.super_.prototype;\n\n  var iv = state.iv;\n  if (this.type === 'encrypt') {\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] ^= inp[inOff + i];\n\n    superProto._update.call(this, iv, 0, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = out[outOff + i];\n  } else {\n    superProto._update.call(this, inp, inOff, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      out[outOff + i] ^= iv[i];\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = inp[inOff + i];\n  }\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n  assert.equal(key.length, 24, 'Invalid key length');\n\n  var k1 = key.slice(0, 8);\n  var k2 = key.slice(8, 16);\n  var k3 = key.slice(16, 24);\n\n  if (type === 'encrypt') {\n    this.ciphers = [\n      DES.create({ type: 'encrypt', key: k1 }),\n      DES.create({ type: 'decrypt', key: k2 }),\n      DES.create({ type: 'encrypt', key: k3 })\n    ];\n  } else {\n    this.ciphers = [\n      DES.create({ type: 'decrypt', key: k3 }),\n      DES.create({ type: 'encrypt', key: k2 }),\n      DES.create({ type: 'decrypt', key: k1 })\n    ];\n  }\n}\n\nfunction EDE(options) {\n  Cipher.call(this, options);\n\n  var state = new EDEState(this.type, this.options.key);\n  this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n  return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._edeState;\n\n  state.ciphers[0]._update(inp, inOff, out, outOff);\n  state.ciphers[1]._update(out, outOff, out, outOff);\n  state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n", "'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n  'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede3': des.EDE,\n  'des-ede-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede': des.EDE,\n  'des-cbc': des.CBC.instantiate(des.DES),\n  'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n  CipherBase.call(this)\n  var modeName = opts.mode.toLowerCase()\n  var mode = modes[modeName]\n  var type\n  if (opts.decrypt) {\n    type = 'decrypt'\n  } else {\n    type = 'encrypt'\n  }\n  var key = opts.key\n  if (!Buffer.isBuffer(key)) {\n    key = Buffer.from(key)\n  }\n  if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n    key = Buffer.concat([key, key.slice(0, 8)])\n  }\n  var iv = opts.iv\n  if (!Buffer.isBuffer(iv)) {\n    iv = Buffer.from(iv)\n  }\n  this._des = mode.create({\n    key: key,\n    iv: iv,\n    type: type\n  })\n}\nDES.prototype._update = function (data) {\n  return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n  return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n  return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n  return self._cipher.decryptBlock(block)\n}\n", "module.exports = function xor (a, b) {\n  var length = Math.min(a.length, b.length)\n  var buffer = new Buffer(length)\n\n  for (var i = 0; i < length; ++i) {\n    buffer[i] = a[i] ^ b[i]\n  }\n\n  return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n  var data = xor(block, self._prev)\n\n  self._prev = self._cipher.encryptBlock(data)\n  return self._prev\n}\n\nexports.decrypt = function (self, block) {\n  var pad = self._prev\n\n  self._prev = block\n  var out = self._cipher.decryptBlock(block)\n\n  return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n  var len = data.length\n  var out = xor(data, self._cache)\n  self._cache = self._cache.slice(len)\n  self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n  return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n  var out = Buffer.allocUnsafe(0)\n  var len\n\n  while (data.length) {\n    if (self._cache.length === 0) {\n      self._cache = self._cipher.encryptBlock(self._prev)\n      self._prev = Buffer.allocUnsafe(0)\n    }\n\n    if (self._cache.length <= data.length) {\n      len = self._cache.length\n      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n      data = data.slice(len)\n    } else {\n      out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n      break\n    }\n  }\n\n  return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad = self._cipher.encryptBlock(self._prev)\n  var out = pad[0] ^ byteParam\n\n  self._prev = Buffer.concat([\n    self._prev.slice(1),\n    Buffer.from([decrypt ? byteParam : out])\n  ])\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad\n  var i = -1\n  var len = 8\n  var out = 0\n  var bit, value\n  while (++i < len) {\n    pad = self._cipher.encryptBlock(self._prev)\n    bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n    value = pad[0] ^ bit\n    out += ((value & 0x80) >> (i % 8))\n    self._prev = shiftIn(self._prev, decrypt ? bit : value)\n  }\n  return out\n}\n\nfunction shiftIn (buffer, value) {\n  var len = buffer.length\n  var i = -1\n  var out = Buffer.allocUnsafe(buffer.length)\n  buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n  while (++i < len) {\n    out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n  }\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n  self._prev = self._cipher.encryptBlock(self._prev)\n  return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n  while (self._cache.length < chunk.length) {\n    self._cache = Buffer.concat([self._cache, getBlock(self)])\n  }\n\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n  var len = iv.length\n  var item\n  while (len--) {\n    item = iv.readUInt8(len)\n    if (item === 255) {\n      iv.writeUInt8(0, len)\n    } else {\n      item++\n      iv.writeUInt8(item, len)\n      break\n    }\n  }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n  var out = self._cipher.encryptBlockRaw(self._prev)\n  incr32(self._prev)\n  return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n  var chunkNum = Math.ceil(chunk.length / blockSize)\n  var start = self._cache.length\n  self._cache = Buffer.concat([\n    self._cache,\n    Buffer.allocUnsafe(chunkNum * blockSize)\n  ])\n  for (var i = 0; i < chunkNum; i++) {\n    var out = getBlock(self)\n    var offset = start + i * blockSize\n    self._cache.writeUInt32BE(out[0], offset + 0)\n    self._cache.writeUInt32BE(out[1], offset + 4)\n    self._cache.writeUInt32BE(out[2], offset + 8)\n    self._cache.writeUInt32BE(out[3], offset + 12)\n  }\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n", "{\n  \"aes-128-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-192-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-256-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-192-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-256-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes128\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes192\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes256\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-192-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-256-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  }\n}\n", "var modeModules = {\n  ECB: require('./ecb'),\n  CBC: require('./cbc'),\n  CFB: require('./cfb'),\n  CFB8: require('./cfb8'),\n  CFB1: require('./cfb1'),\n  OFB: require('./ofb'),\n  CTR: require('./ctr'),\n  GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n  modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n  if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n  var len = (buf.length / 4) | 0\n  var out = new Array(len)\n\n  for (var i = 0; i < len; i++) {\n    out[i] = buf.readUInt32BE(i * 4)\n  }\n\n  return out\n}\n\nfunction scrubVec (v) {\n  for (var i = 0; i < v.length; v++) {\n    v[i] = 0\n  }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n  var SUB_MIX0 = SUB_MIX[0]\n  var SUB_MIX1 = SUB_MIX[1]\n  var SUB_MIX2 = SUB_MIX[2]\n  var SUB_MIX3 = SUB_MIX[3]\n\n  var s0 = M[0] ^ keySchedule[0]\n  var s1 = M[1] ^ keySchedule[1]\n  var s2 = M[2] ^ keySchedule[2]\n  var s3 = M[3] ^ keySchedule[3]\n  var t0, t1, t2, t3\n  var ksRow = 4\n\n  for (var round = 1; round < nRounds; round++) {\n    t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n    t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n    t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n    t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n    s0 = t0\n    s1 = t1\n    s2 = t2\n    s3 = t3\n  }\n\n  t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n  t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n  t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n  t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n  t0 = t0 >>> 0\n  t1 = t1 >>> 0\n  t2 = t2 >>> 0\n  t3 = t3 >>> 0\n\n  return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n  // Compute double table\n  var d = new Array(256)\n  for (var j = 0; j < 256; j++) {\n    if (j < 128) {\n      d[j] = j << 1\n    } else {\n      d[j] = (j << 1) ^ 0x11b\n    }\n  }\n\n  var SBOX = []\n  var INV_SBOX = []\n  var SUB_MIX = [[], [], [], []]\n  var INV_SUB_MIX = [[], [], [], []]\n\n  // Walk GF(2^8)\n  var x = 0\n  var xi = 0\n  for (var i = 0; i < 256; ++i) {\n    // Compute sbox\n    var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n    sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n    SBOX[x] = sx\n    INV_SBOX[sx] = x\n\n    // Compute multiplication\n    var x2 = d[x]\n    var x4 = d[x2]\n    var x8 = d[x4]\n\n    // Compute sub bytes, mix columns tables\n    var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n    SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n    SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n    SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n    SUB_MIX[3][x] = t\n\n    // Compute inv sub bytes, inv mix columns tables\n    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n    INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n    INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n    INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n    INV_SUB_MIX[3][sx] = t\n\n    if (x === 0) {\n      x = xi = 1\n    } else {\n      x = x2 ^ d[d[d[x8 ^ x2]]]\n      xi ^= d[d[xi]]\n    }\n  }\n\n  return {\n    SBOX: SBOX,\n    INV_SBOX: INV_SBOX,\n    SUB_MIX: SUB_MIX,\n    INV_SUB_MIX: INV_SUB_MIX\n  }\n})()\n\nfunction AES (key) {\n  this._key = asUInt32Array(key)\n  this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n  var keyWords = this._key\n  var keySize = keyWords.length\n  var nRounds = keySize + 6\n  var ksRows = (nRounds + 1) * 4\n\n  var keySchedule = []\n  for (var k = 0; k < keySize; k++) {\n    keySchedule[k] = keyWords[k]\n  }\n\n  for (k = keySize; k < ksRows; k++) {\n    var t = keySchedule[k - 1]\n\n    if (k % keySize === 0) {\n      t = (t << 8) | (t >>> 24)\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n\n      t ^= RCON[(k / keySize) | 0] << 24\n    } else if (keySize > 6 && k % keySize === 4) {\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n    }\n\n    keySchedule[k] = keySchedule[k - keySize] ^ t\n  }\n\n  var invKeySchedule = []\n  for (var ik = 0; ik < ksRows; ik++) {\n    var ksR = ksRows - ik\n    var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n    if (ik < 4 || ksR <= 4) {\n      invKeySchedule[ik] = tt\n    } else {\n      invKeySchedule[ik] =\n        G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n        G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n        G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n        G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n    }\n  }\n\n  this._nRounds = nRounds\n  this._keySchedule = keySchedule\n  this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n  M = asUInt32Array(M)\n  return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n  var out = this.encryptBlockRaw(M)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[1], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[3], 12)\n  return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n  M = asUInt32Array(M)\n\n  // swap\n  var m1 = M[1]\n  M[1] = M[3]\n  M[3] = m1\n\n  var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[3], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[1], 12)\n  return buf\n}\n\nAES.prototype.scrub = function () {\n  scrubVec(this._keySchedule)\n  scrubVec(this._invKeySchedule)\n  scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n  return [\n    buf.readUInt32BE(0),\n    buf.readUInt32BE(4),\n    buf.readUInt32BE(8),\n    buf.readUInt32BE(12)\n  ]\n}\n\nfunction fromArray (out) {\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0] >>> 0, 0)\n  buf.writeUInt32BE(out[1] >>> 0, 4)\n  buf.writeUInt32BE(out[2] >>> 0, 8)\n  buf.writeUInt32BE(out[3] >>> 0, 12)\n  return buf\n}\n\nfunction GHASH (key) {\n  this.h = key\n  this.state = Buffer.alloc(16, 0)\n  this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n  var i = -1\n  while (++i < block.length) {\n    this.state[i] ^= block[i]\n  }\n  this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n  var Vi = toArray(this.h)\n  var Zi = [0, 0, 0, 0]\n  var j, xi, lsbVi\n  var i = -1\n  while (++i < 128) {\n    xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n    if (xi) {\n      // Z_i+1 = Z_i ^ V_i\n      Zi[0] ^= Vi[0]\n      Zi[1] ^= Vi[1]\n      Zi[2] ^= Vi[2]\n      Zi[3] ^= Vi[3]\n    }\n\n    // Store the value of LSB(V_i)\n    lsbVi = (Vi[3] & 1) !== 0\n\n    // V_i+1 = V_i >> 1\n    for (j = 3; j > 0; j--) {\n      Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n    }\n    Vi[0] = Vi[0] >>> 1\n\n    // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n    if (lsbVi) {\n      Vi[0] = Vi[0] ^ (0xe1 << 24)\n    }\n  }\n  this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n  this.cache = Buffer.concat([this.cache, buf])\n  var chunk\n  while (this.cache.length >= 16) {\n    chunk = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    this.ghash(chunk)\n  }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n  if (this.cache.length) {\n    this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n  }\n\n  this.ghash(fromArray([0, abl, 0, bl]))\n  return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n  var out = 0\n  if (a.length !== b.length) out++\n\n  var len = Math.min(a.length, b.length)\n  for (var i = 0; i < len; ++i) {\n    out += (a[i] ^ b[i])\n  }\n\n  return out\n}\n\nfunction calcIv (self, iv, ck) {\n  if (iv.length === 12) {\n    self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n    return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n  }\n  var ghash = new GHASH(ck)\n  var len = iv.length\n  var toPad = len % 16\n  ghash.update(iv)\n  if (toPad) {\n    toPad = 16 - toPad\n    ghash.update(Buffer.alloc(toPad, 0))\n  }\n  ghash.update(Buffer.alloc(8, 0))\n  var ivBits = len * 8\n  var tail = Buffer.alloc(8)\n  tail.writeUIntBE(ivBits, 0, 8)\n  ghash.update(tail)\n  self._finID = ghash.state\n  var out = Buffer.from(self._finID)\n  incr32(out)\n  return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  var h = Buffer.alloc(4, 0)\n\n  this._cipher = new aes.AES(key)\n  var ck = this._cipher.encryptBlock(h)\n  this._ghash = new GHASH(ck)\n  iv = calcIv(this, iv, ck)\n\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._alen = 0\n  this._len = 0\n  this._mode = mode\n\n  this._authTag = null\n  this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  if (!this._called && this._alen) {\n    var rump = 16 - (this._alen % 16)\n    if (rump < 16) {\n      rump = Buffer.alloc(rump, 0)\n      this._ghash.update(rump)\n    }\n  }\n\n  this._called = true\n  var out = this._mode.encrypt(this, chunk)\n  if (this._decrypt) {\n    this._ghash.update(chunk)\n  } else {\n    this._ghash.update(out)\n  }\n  this._len += chunk.length\n  return out\n}\n\nStreamCipher.prototype._final = function () {\n  if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n  if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n  this._authTag = tag\n  this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n  if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n  return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n  if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n  this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n  if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n  this._ghash.update(buf)\n  this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n  this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n", "var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n  if (salt) {\n    if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n    if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n  }\n\n  var keyLen = keyBits / 8\n  var key = Buffer.alloc(keyLen)\n  var iv = Buffer.alloc(ivLen || 0)\n  var tmp = Buffer.alloc(0)\n\n  while (keyLen > 0 || ivLen > 0) {\n    var hash = new MD5()\n    hash.update(tmp)\n    hash.update(password)\n    if (salt) hash.update(salt)\n    tmp = hash.digest()\n\n    var used = 0\n\n    if (keyLen > 0) {\n      var keyStart = key.length - keyLen\n      used = Math.min(keyLen, tmp.length)\n      tmp.copy(key, keyStart, 0, used)\n      keyLen -= used\n    }\n\n    if (used < tmp.length && ivLen > 0) {\n      var ivStart = iv.length - ivLen\n      var length = Math.min(ivLen, tmp.length - used)\n      tmp.copy(iv, ivStart, used, used + length)\n      ivLen -= length\n    }\n  }\n\n  tmp.fill(0)\n  return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n\n  while ((chunk = this._cache.get())) {\n    thing = this._mode.encrypt(this, chunk)\n    out.push(thing)\n  }\n\n  return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    chunk = this._mode.encrypt(this, chunk)\n    this._cipher.scrub()\n    return chunk\n  }\n\n  if (!chunk.equals(PADDING)) {\n    this._cipher.scrub()\n    throw new Error('data not multiple of block length')\n  }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n  if (this.cache.length > 15) {\n    var out = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    return out\n  }\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  var len = 16 - this.cache.length\n  var padBuff = Buffer.allocUnsafe(len)\n\n  var i = -1\n  while (++i < len) {\n    padBuff.writeUInt8(len, i)\n  }\n\n  return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv)\n  }\n\n  return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._last = void 0\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n  while ((chunk = this._cache.get(this._autopadding))) {\n    thing = this._mode.decrypt(this, chunk)\n    out.push(thing)\n  }\n  return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    return unpad(this._mode.decrypt(this, chunk))\n  } else if (chunk) {\n    throw new Error('data not multiple of block length')\n  }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n  var out\n  if (autoPadding) {\n    if (this.cache.length > 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  } else {\n    if (this.cache.length >= 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  }\n\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n  var padded = last[15]\n  if (padded < 1 || padded > 16) {\n    throw new Error('unable to decrypt data')\n  }\n  var i = -1\n  while (++i < padded) {\n    if (last[(i + (16 - padded))] !== padded) {\n      throw new Error('unable to decrypt data')\n    }\n  }\n  if (padded === 16) return\n\n  return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv, true)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv, true)\n  }\n\n  return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n  return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n  key: 8,\n  iv: 0\n}\nexports['des-cbc'] = exports.des = {\n  key: 8,\n  iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n  key: 24,\n  iv: 8\n}\nexports['des-ede3'] = {\n  key: 24,\n  iv: 0\n}\nexports['des-ede-cbc'] = {\n  key: 16,\n  iv: 8\n}\nexports['des-ede'] = {\n  key: 16,\n  iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n  return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n", "var r;\n\nmodule.exports = function rand(len) {\n  if (!r)\n    r = new Rand(null);\n\n  return r.generate(len);\n};\n\nfunction Rand(rand) {\n  this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n  return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n  if (this.rand.getBytes)\n    return this.rand.getBytes(n);\n\n  var res = new Uint8Array(n);\n  for (var i = 0; i < res.length; i++)\n    res[i] = this.rand.getByte();\n  return res;\n};\n\nif (typeof self === 'object') {\n  if (self.crypto && self.crypto.getRandomValues) {\n    // Modern browsers\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.crypto.getRandomValues(arr);\n      return arr;\n    };\n  } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n    // IE\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.msCrypto.getRandomValues(arr);\n      return arr;\n    };\n\n  // Safari's WebWorkers do not have `crypto`\n  } else if (typeof window === 'object') {\n    // Old junk\n    Rand.prototype._rand = function() {\n      throw new Error('Not implemented yet');\n    };\n  }\n} else {\n  // Node.js or Web worker with no crypto support\n  try {\n    var crypto = require('crypto');\n    if (typeof crypto.randomBytes !== 'function')\n      throw new Error('Not supported');\n\n    Rand.prototype._rand = function _rand(n) {\n      return crypto.randomBytes(n);\n    };\n  } catch (e) {\n  }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n  this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n  return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n  var len = n.bitLength();\n  var min_bytes = Math.ceil(len / 8);\n\n  // Generage random bytes until a number less than n is found.\n  // This ensures that 0..n-1 have an equal probability of being selected.\n  do\n    var a = new bn(this.rand.generate(min_bytes));\n  while (a.cmp(n) >= 0);\n\n  return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n  // Generate a random number greater than or equal to start and less than stop.\n  var size = stop.sub(start);\n  return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  var prime = true;\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n    if (cb)\n      cb(a);\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return false;\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s)\n      return false;\n  }\n\n  return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n\n    var g = n.gcd(a);\n    if (g.cmpn(1) !== 0)\n      return g;\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return x.fromRed().subn(1).gcd(n);\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s) {\n      x = x.redSqr();\n      return x.fromRed().subn(1).gcd(n);\n    }\n  }\n\n  return false;\n};\n", "var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n  if (primes !== null)\n    return primes;\n\n  var limit = 0x100000;\n  var res = [];\n  res[0] = 2;\n  for (var i = 1, k = 3; k < limit; k += 2) {\n    var sqrt = Math.ceil(Math.sqrt(k));\n    for (var j = 0; j < i && res[j] <= sqrt; j++)\n      if (k % res[j] === 0)\n        break;\n\n    if (i !== j && res[j] <= sqrt)\n      continue;\n\n    res[i++] = k;\n  }\n  primes = res;\n  return res;\n}\n\nfunction simpleSieve(p) {\n  var primes = _getPrimes();\n\n  for (var i = 0; i < primes.length; i++)\n    if (p.modn(primes[i]) === 0) {\n      if (p.cmpn(primes[i]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n\n  return true;\n}\n\nfunction fermatTest(p) {\n  var red = BN.mont(p);\n  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n  if (bits < 16) {\n    // this is what openssl does\n    if (gen === 2 || gen === 5) {\n      return new BN([0x8c, 0x7b]);\n    } else {\n      return new BN([0x8c, 0x27]);\n    }\n  }\n  gen = new BN(gen);\n\n  var num, n2;\n\n  while (true) {\n    num = new BN(randomBytes(Math.ceil(bits / 8)));\n    while (num.bitLength() > bits) {\n      num.ishrn(1);\n    }\n    if (num.isEven()) {\n      num.iadd(ONE);\n    }\n    if (!num.testn(1)) {\n      num.iadd(TWO);\n    }\n    if (!gen.cmp(TWO)) {\n      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        num.iadd(FOUR);\n      }\n    } else if (!gen.cmp(FIVE)) {\n      while (num.mod(TEN).cmp(THREE)) {\n        num.iadd(FOUR);\n      }\n    }\n    n2 = num.shrn(1);\n    if (simpleSieve(n2) && simpleSieve(num) &&\n      fermatTest(n2) && fermatTest(num) &&\n      millerRabin.test(n2) && millerRabin.test(num)) {\n      return num;\n    }\n  }\n\n}\n", "{\n    \"modp1\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n    },\n    \"modp2\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n    },\n    \"modp5\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n    },\n    \"modp14\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n    },\n    \"modp15\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n    },\n    \"modp16\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n    },\n    \"modp17\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n    },\n    \"modp18\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n    }\n}", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc);\n  }\n  this._pub = new BN(pub);\n  return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc);\n  }\n  this._priv = new BN(priv);\n  return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n  var gen = generator.toString('hex');\n  var hex = [gen, prime.toString(16)].join('_');\n  if (hex in primeCache) {\n    return primeCache[hex];\n  }\n  var error = 0;\n\n  if (prime.isEven() ||\n    !primes.simpleSieve ||\n    !primes.fermatTest(prime) ||\n    !millerRabin.test(prime)) {\n    //not a prime so +1\n    error += 1;\n\n    if (gen === '02' || gen === '05') {\n      // we'd be able to check the generator\n      // it would fail so +8\n      error += 8;\n    } else {\n      //we wouldn't be able to test the generator\n      // so +4\n      error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  if (!millerRabin.test(prime.shrn(1))) {\n    //not a safe prime\n    error += 2;\n  }\n  var rem;\n  switch (gen) {\n    case '02':\n      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        // unsuidable generator\n        error += 8;\n      }\n      break;\n    case '05':\n      rem = prime.mod(TEN);\n      if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n        // prime mod 10 needs to equal 3 or 7\n        error += 8;\n      }\n      break;\n    default:\n      error += 4;\n  }\n  primeCache[hex] = error;\n  return error;\n}\n\nfunction DH(prime, generator, malleable) {\n  this.setGenerator(generator);\n  this.__prime = new BN(prime);\n  this._prime = BN.mont(this.__prime);\n  this._primeLen = prime.length;\n  this._pub = undefined;\n  this._priv = undefined;\n  this._primeCode = undefined;\n  if (malleable) {\n    this.setPublicKey = setPublicKey;\n    this.setPrivateKey = setPrivateKey;\n  } else {\n    this._primeCode = 8;\n  }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n  enumerable: true,\n  get: function () {\n    if (typeof this._primeCode !== 'number') {\n      this._primeCode = checkPrime(this.__prime, this.__gen);\n    }\n    return this._primeCode;\n  }\n});\nDH.prototype.generateKeys = function () {\n  if (!this._priv) {\n    this._priv = new BN(randomBytes(this._primeLen));\n  }\n  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n  return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n  other = new BN(other);\n  other = other.toRed(this._prime);\n  var secret = other.redPow(this._priv).fromRed();\n  var out = new Buffer(secret.toArray());\n  var prime = this.getPrime();\n  if (out.length < prime.length) {\n    var front = new Buffer(prime.length - out.length);\n    front.fill(0);\n    out = Buffer.concat([front, out]);\n  }\n  return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n  return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n  return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n  return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n  return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(gen)) {\n    gen = new Buffer(gen, enc);\n  }\n  this.__gen = gen;\n  this._gen = new BN(gen);\n  return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n  var buf = new Buffer(bn.toArray());\n  if (!enc) {\n    return buf;\n  } else {\n    return buf.toString(enc);\n  }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n  var prime = new Buffer(primes[mod].prime, 'hex')\n  var gen = new Buffer(primes[mod].gen, 'hex')\n\n  return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n  'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n    return createDiffieHellman(prime, 'binary', enc, generator)\n  }\n\n  enc = enc || 'binary'\n  genc = genc || 'binary'\n  generator = generator || new Buffer([2])\n\n  if (!Buffer.isBuffer(generator)) {\n    generator = new Buffer(generator, genc)\n  }\n\n  if (typeof prime === 'number') {\n    return new DH(generatePrime(prime, generator), generator, true)\n  }\n\n  if (!Buffer.isBuffer(prime)) {\n    prime = new Buffer(prime, enc)\n  }\n\n  return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "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", "(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n  var r = getr(priv)\n  var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n  return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n  var len = priv.modulus.byteLength()\n  var r\n  do {\n    r = new BN(randomBytes(len))\n  } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n  return r\n}\n\nfunction crt (msg, priv) {\n  var blinds = blind(priv)\n  var len = priv.modulus.byteLength()\n  var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n  var c1 = blinded.toRed(BN.mont(priv.prime1))\n  var c2 = blinded.toRed(BN.mont(priv.prime2))\n  var qinv = priv.coefficient\n  var p = priv.prime1\n  var q = priv.prime2\n  var m1 = c1.redPow(priv.exponent1).fromRed()\n  var m2 = c2.redPow(priv.exponent2).fromRed()\n  var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n  return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "{\n  \"name\": \"elliptic\",\n  \"version\": \"6.5.4\",\n  \"description\": \"EC cryptography\",\n  \"main\": \"lib/elliptic.js\",\n  \"files\": [\n    \"lib\"\n  ],\n  \"scripts\": {\n    \"lint\": \"eslint lib test\",\n    \"lint:fix\": \"npm run lint -- --fix\",\n    \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n    \"test\": \"npm run lint && npm run unit\",\n    \"version\": \"grunt dist && git add dist/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git@github.com:indutny/elliptic\"\n  },\n  \"keywords\": [\n    \"EC\",\n    \"Elliptic\",\n    \"curve\",\n    \"Cryptography\"\n  ],\n  \"author\": \"Fedor Indutny <fedor@indutny.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/indutny/elliptic/issues\"\n  },\n  \"homepage\": \"https://github.com/indutny/elliptic\",\n  \"devDependencies\": {\n    \"brfs\": \"^2.0.2\",\n    \"coveralls\": \"^3.1.0\",\n    \"eslint\": \"^7.6.0\",\n    \"grunt\": \"^1.2.1\",\n    \"grunt-browserify\": \"^5.3.0\",\n    \"grunt-cli\": \"^1.3.2\",\n    \"grunt-contrib-connect\": \"^3.0.0\",\n    \"grunt-contrib-copy\": \"^1.0.0\",\n    \"grunt-contrib-uglify\": \"^5.0.0\",\n    \"grunt-mocha-istanbul\": \"^5.0.2\",\n    \"grunt-saucelabs\": \"^9.0.1\",\n    \"istanbul\": \"^0.4.5\",\n    \"mocha\": \"^8.0.1\"\n  },\n  \"dependencies\": {\n    \"bn.js\": \"^4.11.9\",\n    \"brorand\": \"^1.1.0\",\n    \"hash.js\": \"^1.0.0\",\n    \"hmac-drbg\": \"^1.0.1\",\n    \"inherits\": \"^2.0.4\",\n    \"minimalistic-assert\": \"^1.0.1\",\n    \"minimalistic-crypto-utils\": \"^1.0.1\"\n  }\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", "'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 '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\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 '<EC JPoint Infinity>';\n  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n      ' y: ' + this.y.toString(16, 2) +\n      ' z: ' + this.z.toString(16, 2) + '>';\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 BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n  Base.call(this, 'mont', 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.i4 = new BN(4).toRed(this.red).redInvm();\n  this.two = new BN(2).toRed(this.red);\n  this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n  var x = point.normalize().x;\n  var x2 = x.redSqr();\n  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n  var y = rhs.redSqrt();\n\n  return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && z === null) {\n    this.x = this.curve.one;\n    this.z = this.curve.zero;\n  } else {\n    this.x = new BN(x, 16);\n    this.z = new BN(z, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n  }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n  return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n  // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n  return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.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\nPoint.prototype.dbl = function dbl() {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n  // 2M + 2S + 4A\n\n  // A = X1 + Z1\n  var a = this.x.redAdd(this.z);\n  // AA = A^2\n  var aa = a.redSqr();\n  // B = X1 - Z1\n  var b = this.x.redSub(this.z);\n  // BB = B^2\n  var bb = b.redSqr();\n  // C = AA - BB\n  var c = aa.redSub(bb);\n  // X3 = AA * BB\n  var nx = aa.redMul(bb);\n  // Z3 = C * (BB + A24 * C)\n  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n  // 4M + 2S + 6A\n\n  // A = X2 + Z2\n  var a = this.x.redAdd(this.z);\n  // B = X2 - Z2\n  var b = this.x.redSub(this.z);\n  // C = X3 + Z3\n  var c = p.x.redAdd(p.z);\n  // D = X3 - Z3\n  var d = p.x.redSub(p.z);\n  // DA = D * A\n  var da = d.redMul(a);\n  // CB = C * B\n  var cb = c.redMul(b);\n  // X5 = Z1 * (DA + CB)^2\n  var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n  // Z5 = X1 * (DA - CB)^2\n  var nz = diff.x.redMul(da.redISub(cb).redSqr());\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n  var t = k.clone();\n  var a = this; // (N / 2) * Q + Q\n  var b = this.curve.point(null, null); // (N / 2) * Q\n  var c = this; // Q\n\n  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n    bits.push(t.andln(1));\n\n  for (var i = bits.length - 1; i >= 0; i--) {\n    if (bits[i] === 0) {\n      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n      a = a.diffAdd(b, c);\n      // N * Q = 2 * ((N / 2) * Q + Q))\n      b = b.dbl();\n    } else {\n      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n      b = a.diffAdd(b, c);\n      // N * Q + Q = 2 * ((N / 2) * Q + Q)\n      a = a.dbl();\n    }\n  }\n  return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n  this.x = this.x.redMul(this.z.redInvm());\n  this.z = this.curve.one;\n  return this;\n};\n\nPoint.prototype.getX = function getX() {\n  // Normalize coordinates\n  this.normalize();\n\n  return this.x.fromRed();\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 EdwardsCurve(conf) {\n  // NOTE: Important as we are creating point in Base.call()\n  this.twisted = (conf.a | 0) !== 1;\n  this.mOneA = this.twisted && (conf.a | 0) === -1;\n  this.extended = this.mOneA;\n\n  Base.call(this, 'edwards', conf);\n\n  this.a = new BN(conf.a, 16).umod(this.red.m);\n  this.a = this.a.toRed(this.red);\n  this.c = new BN(conf.c, 16).toRed(this.red);\n  this.c2 = this.c.redSqr();\n  this.d = new BN(conf.d, 16).toRed(this.red);\n  this.dd = this.d.redAdd(this.d);\n\n  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n  this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n  if (this.mOneA)\n    return num.redNeg();\n  else\n    return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n  if (this.oneC)\n    return num;\n  else\n    return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n  return this.point(x, y, z, t);\n};\n\nEdwardsCurve.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 x2 = x.redSqr();\n  var rhs = this.c2.redSub(this.a.redMul(x2));\n  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n  var y2 = rhs.redMul(lhs.redInvm());\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\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\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n  y = new BN(y, 16);\n  if (!y.red)\n    y = y.toRed(this.red);\n\n  // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n  var y2 = y.redSqr();\n  var lhs = y2.redSub(this.c2);\n  var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n  var x2 = lhs.redMul(rhs.redInvm());\n\n  if (x2.cmp(this.zero) === 0) {\n    if (odd)\n      throw new Error('invalid point');\n    else\n      return this.point(this.zero, y);\n  }\n\n  var x = x2.redSqrt();\n  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  if (x.fromRed().isOdd() !== odd)\n    x = x.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n  if (point.isInfinity())\n    return true;\n\n  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n  point.normalize();\n\n  var x2 = point.x.redSqr();\n  var y2 = point.y.redSqr();\n  var lhs = x2.redMul(this.a).redAdd(y2);\n  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n  return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.zero;\n    this.y = this.curve.one;\n    this.z = this.curve.one;\n    this.t = this.curve.zero;\n    this.zOne = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = z ? new BN(z, 16) : this.curve.one;\n    this.t = t && new BN(t, 16);\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    if (this.t && !this.t.red)\n      this.t = this.t.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n\n    // Use extended coordinates\n    if (this.curve.extended && !this.t) {\n      this.t = this.x.redMul(this.y);\n      if (!this.zOne)\n        this.t = this.t.redMul(this.z.redInvm());\n    }\n  }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n  return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.x.cmpn(0) === 0 &&\n    (this.y.cmp(this.z) === 0 ||\n    (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #doubling-dbl-2008-hwcd\n  // 4M + 4S\n\n  // A = X1^2\n  var a = this.x.redSqr();\n  // B = Y1^2\n  var b = this.y.redSqr();\n  // C = 2 * Z1^2\n  var c = this.z.redSqr();\n  c = c.redIAdd(c);\n  // D = a * A\n  var d = this.curve._mulA(a);\n  // E = (X1 + Y1)^2 - A - B\n  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n  // G = D + B\n  var g = d.redAdd(b);\n  // F = G - C\n  var f = g.redSub(c);\n  // H = D - B\n  var h = d.redSub(b);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #doubling-dbl-2008-bbjlp\n  //     #doubling-dbl-2007-bl\n  // and others\n  // Generally 3M + 4S or 2M + 4S\n\n  // B = (X1 + Y1)^2\n  var b = this.x.redAdd(this.y).redSqr();\n  // C = X1^2\n  var c = this.x.redSqr();\n  // D = Y1^2\n  var d = this.y.redSqr();\n\n  var nx;\n  var ny;\n  var nz;\n  var e;\n  var h;\n  var j;\n  if (this.curve.twisted) {\n    // E = a * C\n    e = this.curve._mulA(c);\n    // F = E + D\n    var f = e.redAdd(d);\n    if (this.zOne) {\n      // X3 = (B - C - D) * (F - 2)\n      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F^2 - 2 * F\n      nz = f.redSqr().redSub(f).redSub(f);\n    } else {\n      // H = Z1^2\n      h = this.z.redSqr();\n      // J = F - 2 * H\n      j = f.redSub(h).redISub(h);\n      // X3 = (B-C-D)*J\n      nx = b.redSub(c).redISub(d).redMul(j);\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F * J\n      nz = f.redMul(j);\n    }\n  } else {\n    // E = C + D\n    e = c.redAdd(d);\n    // H = (c * Z1)^2\n    h = this.curve._mulC(this.z).redSqr();\n    // J = E - 2 * H\n    j = e.redSub(h).redSub(h);\n    // X3 = c * (B - E) * J\n    nx = this.curve._mulC(b.redISub(e)).redMul(j);\n    // Y3 = c * E * (C - D)\n    ny = this.curve._mulC(e).redMul(c.redISub(d));\n    // Z3 = E * J\n    nz = e.redMul(j);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  // Double in extended coordinates\n  if (this.curve.extended)\n    return this._extDbl();\n  else\n    return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #addition-add-2008-hwcd-3\n  // 8M\n\n  // A = (Y1 - X1) * (Y2 - X2)\n  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n  // B = (Y1 + X1) * (Y2 + X2)\n  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n  // C = T1 * k * T2\n  var c = this.t.redMul(this.curve.dd).redMul(p.t);\n  // D = Z1 * 2 * Z2\n  var d = this.z.redMul(p.z.redAdd(p.z));\n  // E = B - A\n  var e = b.redSub(a);\n  // F = D - C\n  var f = d.redSub(c);\n  // G = D + C\n  var g = d.redAdd(c);\n  // H = B + A\n  var h = b.redAdd(a);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #addition-add-2008-bbjlp\n  //     #addition-add-2007-bl\n  // 10M + 1S\n\n  // A = Z1 * Z2\n  var a = this.z.redMul(p.z);\n  // B = A^2\n  var b = a.redSqr();\n  // C = X1 * X2\n  var c = this.x.redMul(p.x);\n  // D = Y1 * Y2\n  var d = this.y.redMul(p.y);\n  // E = d * C * D\n  var e = this.curve.d.redMul(c).redMul(d);\n  // F = B - E\n  var f = b.redSub(e);\n  // G = B + E\n  var g = b.redAdd(e);\n  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n  var nx = a.redMul(f).redMul(tmp);\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // Y3 = A * G * (D - a * C)\n    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n    // Z3 = F * G\n    nz = f.redMul(g);\n  } else {\n    // Y3 = A * G * (D - C)\n    ny = a.redMul(g).redMul(d.redSub(c));\n    // Z3 = c * F * G\n    nz = this.curve._mulC(f).redMul(g);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n  if (this.isInfinity())\n    return p;\n  if (p.isInfinity())\n    return this;\n\n  if (this.curve.extended)\n    return this._extAdd(p);\n  else\n    return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n  if (this.zOne)\n    return this;\n\n  // Normalize coordinates\n  var zi = this.z.redInvm();\n  this.x = this.x.redMul(zi);\n  this.y = this.y.redMul(zi);\n  if (this.t)\n    this.t = this.t.redMul(zi);\n  this.z = this.curve.one;\n  this.zOne = true;\n  return this;\n};\n\nPoint.prototype.neg = function neg() {\n  return this.curve.point(this.x.redNeg(),\n    this.y,\n    this.z,\n    this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n  this.normalize();\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  this.normalize();\n  return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this === other ||\n         this.getX().cmp(other.getX()) === 0 &&\n         this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n  var rx = x.toRed(this.curve.red).redMul(this.z);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(this.z);\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\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\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 assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n  if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n    return false;\n  }\n  if (i < 0 || i + 1 >= msg.length) {\n    return false;\n  }\n  return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\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    if (!enc) {\n      // Inspired by stringToUtf8ByteArray() in closure-library by Google\n      // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n      // Apache License 2.0\n      // https://github.com/google/closure-library/blob/master/LICENSE\n      var p = 0;\n      for (var i = 0; i < msg.length; i++) {\n        var c = msg.charCodeAt(i);\n        if (c < 128) {\n          res[p++] = c;\n        } else if (c < 2048) {\n          res[p++] = (c >> 6) | 192;\n          res[p++] = (c & 63) | 128;\n        } else if (isSurrogatePair(msg, i)) {\n          c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n          res[p++] = (c >> 18) | 240;\n          res[p++] = ((c >> 12) & 63) | 128;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        } else {\n          res[p++] = (c >> 12) | 224;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        }\n      }\n    } else if (enc === 'hex') {\n      msg = msg.replace(/[^a-z0-9]+/ig, '');\n      if (msg.length % 2 !== 0)\n        msg = '0' + msg;\n      for (i = 0; i < msg.length; i += 2)\n        res.push(parseInt(msg[i] + msg[i + 1], 16));\n    }\n  } else {\n    for (i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n  }\n  return res;\n}\nexports.toArray = toArray;\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}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n  var res = (w >>> 24) |\n            ((w >>> 8) & 0xff00) |\n            ((w << 8) & 0xff0000) |\n            ((w & 0xff) << 24);\n  return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++) {\n    var w = msg[i];\n    if (endian === 'little')\n      w = htonl(w);\n    res += zero8(w.toString(16));\n  }\n  return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n  if (word.length === 7)\n    return '0' + word;\n  else if (word.length === 6)\n    return '00' + word;\n  else if (word.length === 5)\n    return '000' + word;\n  else if (word.length === 4)\n    return '0000' + word;\n  else if (word.length === 3)\n    return '00000' + word;\n  else if (word.length === 2)\n    return '000000' + word;\n  else if (word.length === 1)\n    return '0000000' + word;\n  else\n    return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n  var len = end - start;\n  assert(len % 4 === 0);\n  var res = new Array(len / 4);\n  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n    var w;\n    if (endian === 'big')\n      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n    else\n      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n    res[i] = w >>> 0;\n  }\n  return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n  var res = new Array(msg.length * 4);\n  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n    var m = msg[i];\n    if (endian === 'big') {\n      res[k] = m >>> 24;\n      res[k + 1] = (m >>> 16) & 0xff;\n      res[k + 2] = (m >>> 8) & 0xff;\n      res[k + 3] = m & 0xff;\n    } else {\n      res[k + 3] = m >>> 24;\n      res[k + 2] = (m >>> 16) & 0xff;\n      res[k + 1] = (m >>> 8) & 0xff;\n      res[k] = m & 0xff;\n    }\n  }\n  return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n  return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n  return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n  return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n  return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n  return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n  return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n  var bh = buf[pos];\n  var bl = buf[pos + 1];\n\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  buf[pos] = hi >>> 0;\n  buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n  var lo = al + bl;\n  return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + carry;\n  return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n  var lo = al + bl + cl + dl;\n  return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n  lo = (lo + el) >>> 0;\n  carry += lo < el ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + eh + carry;\n  return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var lo = al + bl + cl + dl + el;\n\n  return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n  var r = (al << (32 - num)) | (ah >>> num);\n  return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n  return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n  this.pending = null;\n  this.pendingTotal = 0;\n  this.blockSize = this.constructor.blockSize;\n  this.outSize = this.constructor.outSize;\n  this.hmacStrength = this.constructor.hmacStrength;\n  this.padLength = this.constructor.padLength / 8;\n  this.endian = 'big';\n\n  this._delta8 = this.blockSize / 8;\n  this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n  // Convert message to array, pad it, and join into 32bit blocks\n  msg = utils.toArray(msg, enc);\n  if (!this.pending)\n    this.pending = msg;\n  else\n    this.pending = this.pending.concat(msg);\n  this.pendingTotal += msg.length;\n\n  // Enough data, try updating\n  if (this.pending.length >= this._delta8) {\n    msg = this.pending;\n\n    // Process pending data in blocks\n    var r = msg.length % this._delta8;\n    this.pending = msg.slice(msg.length - r, msg.length);\n    if (this.pending.length === 0)\n      this.pending = null;\n\n    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n    for (var i = 0; i < msg.length; i += this._delta32)\n      this._update(msg, i, i + this._delta32);\n  }\n\n  return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n  this.update(this._pad());\n  assert(this.pending === null);\n\n  return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n  var len = this.pendingTotal;\n  var bytes = this._delta8;\n  var k = bytes - ((len + this.padLength) % bytes);\n  var res = new Array(k + this.padLength);\n  res[0] = 0x80;\n  for (var i = 1; i < k; i++)\n    res[i] = 0;\n\n  // Append length\n  len <<= 3;\n  if (this.endian === 'big') {\n    for (var t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = len & 0xff;\n  } else {\n    res[i++] = len & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n\n    for (t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n  }\n\n  return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n  if (s === 0)\n    return ch32(x, y, z);\n  if (s === 1 || s === 3)\n    return p32(x, y, z);\n  if (s === 2)\n    return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n  return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n  return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n  return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n  0x5A827999, 0x6ED9EBA1,\n  0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n  if (!(this instanceof SHA1))\n    return new SHA1();\n\n  BlockHash.call(this);\n  this.h = [\n    0x67452301, 0xefcdab89, 0x98badcfe,\n    0x10325476, 0xc3d2e1f0 ];\n  this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n\n  for(; i < W.length; i++)\n    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n\n  for (i = 0; i < W.length; i++) {\n    var s = ~~(i / 20);\n    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n    e = d;\n    d = c;\n    c = rotl32(b, 30);\n    b = a;\n    a = t;\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_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\nfunction SHA256() {\n  if (!(this instanceof SHA256))\n    return new SHA256();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n    0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n  ];\n  this.k = sha256_K;\n  this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i++)\n    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n  var f = this.h[5];\n  var g = this.h[6];\n  var h = this.h[7];\n\n  assert(this.k.length === W.length);\n  for (i = 0; i < W.length; i++) {\n    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n    var T2 = sum32(s0_256(a), maj32(a, b, c));\n    h = g;\n    g = f;\n    f = e;\n    e = sum32(d, T1);\n    d = c;\n    c = b;\n    b = a;\n    a = sum32(T1, T2);\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n  this.h[5] = sum32(this.h[5], f);\n  this.h[6] = sum32(this.h[6], g);\n  this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n  if (!(this instanceof SHA224))\n    return new SHA224();\n\n  SHA256.call(this);\n  this.h = [\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n    0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n  // Just truncate output\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 7), 'big');\n  else\n    return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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\nfunction SHA512() {\n  if (!(this instanceof SHA512))\n    return new SHA512();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xf3bcc908,\n    0xbb67ae85, 0x84caa73b,\n    0x3c6ef372, 0xfe94f82b,\n    0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1,\n    0x9b05688c, 0x2b3e6c1f,\n    0x1f83d9ab, 0xfb41bd6b,\n    0x5be0cd19, 0x137e2179 ];\n  this.k = sha512_K;\n  this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n  var W = this.W;\n\n  // 32 x 32bit words\n  for (var i = 0; i < 32; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i += 2) {\n    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n    var c1_hi = W[i - 14];  // i - 7\n    var c1_lo = W[i - 13];\n    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n    var c3_hi = W[i - 32];  // i - 16\n    var c3_lo = W[i - 31];\n\n    W[i] = sum64_4_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n    W[i + 1] = sum64_4_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n  }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n  this._prepareBlock(msg, start);\n\n  var W = this.W;\n\n  var ah = this.h[0];\n  var al = this.h[1];\n  var bh = this.h[2];\n  var bl = this.h[3];\n  var ch = this.h[4];\n  var cl = this.h[5];\n  var dh = this.h[6];\n  var dl = this.h[7];\n  var eh = this.h[8];\n  var el = this.h[9];\n  var fh = this.h[10];\n  var fl = this.h[11];\n  var gh = this.h[12];\n  var gl = this.h[13];\n  var hh = this.h[14];\n  var hl = this.h[15];\n\n  assert(this.k.length === W.length);\n  for (var i = 0; i < W.length; i += 2) {\n    var c0_hi = hh;\n    var c0_lo = hl;\n    var c1_hi = s1_512_hi(eh, el);\n    var c1_lo = s1_512_lo(eh, el);\n    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n    var c3_hi = this.k[i];\n    var c3_lo = this.k[i + 1];\n    var c4_hi = W[i];\n    var c4_lo = W[i + 1];\n\n    var T1_hi = sum64_5_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n    var T1_lo = sum64_5_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n\n    c0_hi = s0_512_hi(ah, al);\n    c0_lo = s0_512_lo(ah, al);\n    c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n    c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n    hh = gh;\n    hl = gl;\n\n    gh = fh;\n    gl = fl;\n\n    fh = eh;\n    fl = el;\n\n    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n    dh = ch;\n    dl = cl;\n\n    ch = bh;\n    cl = bl;\n\n    bh = ah;\n    bl = al;\n\n    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n  }\n\n  sum64(this.h, 0, ah, al);\n  sum64(this.h, 2, bh, bl);\n  sum64(this.h, 4, ch, cl);\n  sum64(this.h, 6, dh, dl);\n  sum64(this.h, 8, eh, el);\n  sum64(this.h, 10, fh, fl);\n  sum64(this.h, 12, gh, gl);\n  sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ ((~xh) & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ ((~xl) & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 28);\n  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 28);\n  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 14);\n  var c1_hi = rotr64_hi(xh, xl, 18);\n  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 14);\n  var c1_lo = rotr64_lo(xh, xl, 18);\n  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 1);\n  var c1_hi = rotr64_hi(xh, xl, 8);\n  var c2_hi = shr64_hi(xh, xl, 7);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 1);\n  var c1_lo = rotr64_lo(xh, xl, 8);\n  var c2_lo = shr64_lo(xh, xl, 7);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 19);\n  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n  var c2_hi = shr64_hi(xh, xl, 6);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 19);\n  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n  var c2_lo = shr64_lo(xh, xl, 6);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n  if (!(this instanceof SHA384))\n    return new SHA384();\n\n  SHA512.call(this);\n  this.h = [\n    0xcbbb9d5d, 0xc1059ed8,\n    0x629a292a, 0x367cd507,\n    0x9159015a, 0x3070dd17,\n    0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31,\n    0x8eb44a87, 0x68581511,\n    0xdb0c2e0d, 0x64f98fa7,\n    0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 12), 'big');\n  else\n    return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n  if (!(this instanceof RIPEMD160))\n    return new RIPEMD160();\n\n  BlockHash.call(this);\n\n  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n  this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n  var A = this.h[0];\n  var B = this.h[1];\n  var C = this.h[2];\n  var D = this.h[3];\n  var E = this.h[4];\n  var Ah = A;\n  var Bh = B;\n  var Ch = C;\n  var Dh = D;\n  var Eh = E;\n  for (var j = 0; j < 80; j++) {\n    var T = sum32(\n      rotl32(\n        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n        s[j]),\n      E);\n    A = E;\n    E = D;\n    D = rotl32(C, 10);\n    C = B;\n    B = T;\n    T = sum32(\n      rotl32(\n        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n        sh[j]),\n      Eh);\n    Ah = Eh;\n    Eh = Dh;\n    Dh = rotl32(Ch, 10);\n    Ch = Bh;\n    Bh = T;\n  }\n  T = sum32_3(this.h[1], C, Dh);\n  this.h[1] = sum32_3(this.h[2], D, Eh);\n  this.h[2] = sum32_3(this.h[3], E, Ah);\n  this.h[3] = sum32_3(this.h[4], A, Bh);\n  this.h[4] = sum32_3(this.h[0], B, Ch);\n  this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'little');\n  else\n    return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n  if (j <= 15)\n    return x ^ y ^ z;\n  else if (j <= 31)\n    return (x & y) | ((~x) & z);\n  else if (j <= 47)\n    return (x | (~y)) ^ z;\n  else if (j <= 63)\n    return (x & z) | (y & (~z));\n  else\n    return x ^ (y | (~z));\n}\n\nfunction K(j) {\n  if (j <= 15)\n    return 0x00000000;\n  else if (j <= 31)\n    return 0x5a827999;\n  else if (j <= 47)\n    return 0x6ed9eba1;\n  else if (j <= 63)\n    return 0x8f1bbcdc;\n  else\n    return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n  if (j <= 15)\n    return 0x50a28be6;\n  else if (j <= 31)\n    return 0x5c4dd124;\n  else if (j <= 47)\n    return 0x6d703ef3;\n  else if (j <= 63)\n    return 0x7a6d76e9;\n  else\n    return 0x00000000;\n}\n\nvar r = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n  if (!(this instanceof Hmac))\n    return new Hmac(hash, key, enc);\n  this.Hash = hash;\n  this.blockSize = hash.blockSize / 8;\n  this.outSize = hash.outSize / 8;\n  this.inner = null;\n  this.outer = null;\n\n  this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n  // Shorten key, if needed\n  if (key.length > this.blockSize)\n    key = new this.Hash().update(key).digest();\n  assert(key.length <= this.blockSize);\n\n  // Add padding to key\n  for (var i = key.length; i < this.blockSize; i++)\n    key.push(0);\n\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x36;\n  this.inner = new this.Hash().update(key);\n\n  // 0x36 ^ 0x5c = 0x6a\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x6a;\n  this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n  this.inner.update(msg, enc);\n  return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n  this.outer.update(this.inner.digest());\n  return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n  doubles: {\n    step: 4,\n    points: [\n      [\n        'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n        'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n      ],\n      [\n        '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n        '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n      ],\n      [\n        '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n        'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n      ],\n      [\n        '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n        '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n      ],\n      [\n        '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n        '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n      ],\n      [\n        '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n        '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n      ],\n      [\n        'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n        '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n      ],\n      [\n        '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n        'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n      ],\n      [\n        'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n        '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n      ],\n      [\n        'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n        'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n      ],\n      [\n        'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n        '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n      ],\n      [\n        '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n        '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n      ],\n      [\n        '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n        '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n      ],\n      [\n        '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n        '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n      ],\n      [\n        '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n        '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n      ],\n      [\n        '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n        '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n      ],\n      [\n        '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n        '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n      ],\n      [\n        '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n        '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n      ],\n      [\n        '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n        'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n      ],\n      [\n        'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n        '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n      ],\n      [\n        'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n        '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n      ],\n      [\n        '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n        '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n      ],\n      [\n        '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n        '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n      ],\n      [\n        'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n        '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n      ],\n      [\n        '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n        'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n      ],\n      [\n        'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n        '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n      ],\n      [\n        'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n        'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n      ],\n      [\n        'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n        '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n      ],\n      [\n        'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n        'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n      ],\n      [\n        'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n        '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n      ],\n      [\n        '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n        'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n      ],\n      [\n        '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n        '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n      ],\n      [\n        'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n        '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n      ],\n      [\n        '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n        'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n      ],\n      [\n        'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n        '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n      ],\n      [\n        'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n        '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n      ],\n      [\n        'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n        'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n      ],\n      [\n        '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n        '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n      ],\n      [\n        '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n        '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n      ],\n      [\n        '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n        'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n      ],\n      [\n        '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n        '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n      ],\n      [\n        'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n        '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n      ],\n      [\n        '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n        '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n      ],\n      [\n        '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n        'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n      ],\n      [\n        '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n        '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n      ],\n      [\n        'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n        '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n      ],\n      [\n        '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n        'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n      ],\n      [\n        'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n        'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n      ],\n      [\n        'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n        '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n      ],\n      [\n        '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n        'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n      ],\n      [\n        '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n        'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n      ],\n      [\n        'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n        '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n      ],\n      [\n        'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n        '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n      ],\n      [\n        'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n        '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n      ],\n      [\n        '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n        'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n      ],\n      [\n        '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n        '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n      ],\n      [\n        'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n        'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n      ],\n      [\n        '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n        'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n      ],\n      [\n        '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n        '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n      ],\n      [\n        '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n        '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n      ],\n      [\n        'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n        'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n      ],\n      [\n        '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n        '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n      ],\n      [\n        '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n        '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n      ],\n      [\n        'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n        '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n      ],\n      [\n        'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n        'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n      ],\n    ],\n  },\n  naf: {\n    wnd: 7,\n    points: [\n      [\n        'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n        '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n      ],\n      [\n        '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n        'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n      ],\n      [\n        '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n        '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n      ],\n      [\n        'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n        'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n      ],\n      [\n        '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n        'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n      ],\n      [\n        'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n        'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n      ],\n      [\n        'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n        '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n      ],\n      [\n        'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n        '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n      ],\n      [\n        '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n        '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n      ],\n      [\n        '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n        '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n      ],\n      [\n        '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n        '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n      ],\n      [\n        '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n        '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n      ],\n      [\n        'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n        'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n      ],\n      [\n        'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n        '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n      ],\n      [\n        '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n        'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n      ],\n      [\n        '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n        'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n      ],\n      [\n        '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n        '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n      ],\n      [\n        '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n        '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n      ],\n      [\n        '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n        '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n      ],\n      [\n        '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n        'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n      ],\n      [\n        'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n        'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n      ],\n      [\n        '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n        '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n      ],\n      [\n        '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n        '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n      ],\n      [\n        'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n        'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n      ],\n      [\n        '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n        '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n      ],\n      [\n        'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n        'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n      ],\n      [\n        'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n        'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n      ],\n      [\n        '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n        '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n      ],\n      [\n        '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n        '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n      ],\n      [\n        '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n        '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n      ],\n      [\n        'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n        '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n      ],\n      [\n        '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n        '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n      ],\n      [\n        'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n        '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n      ],\n      [\n        '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n        'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n      ],\n      [\n        '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n        'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n      ],\n      [\n        'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n        'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n      ],\n      [\n        '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n        '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n      ],\n      [\n        '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n        'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n      ],\n      [\n        'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n        'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n      ],\n      [\n        '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n        '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n      ],\n      [\n        '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n        'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n      ],\n      [\n        '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n        '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n      ],\n      [\n        '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n        'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n      ],\n      [\n        'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n        '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n      ],\n      [\n        '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n        '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n      ],\n      [\n        '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n        'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n      ],\n      [\n        '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n        'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n      ],\n      [\n        'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n        'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n      ],\n      [\n        'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n        'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n      ],\n      [\n        '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n        '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n      ],\n      [\n        '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n        '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n      ],\n      [\n        'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n        '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n      ],\n      [\n        'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n        'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n      ],\n      [\n        '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n        '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n      ],\n      [\n        '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n        '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n      ],\n      [\n        'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n        '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n      ],\n      [\n        '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n        '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n      ],\n      [\n        'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n        'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n      ],\n      [\n        '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n        'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n      ],\n      [\n        '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n        '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n      ],\n      [\n        'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n        '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n      ],\n      [\n        'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n        '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n      ],\n      [\n        '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n        '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n      ],\n      [\n        '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n        '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n      ],\n      [\n        '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n        'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n      ],\n      [\n        '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n        'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n      ],\n      [\n        '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n        '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n      ],\n      [\n        '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n        '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n      ],\n      [\n        '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n        '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n      ],\n      [\n        '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n        'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n      ],\n      [\n        'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n        'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n      ],\n      [\n        '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n        'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n      ],\n      [\n        'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n        '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n      ],\n      [\n        'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n        '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n      ],\n      [\n        'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n        '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n      ],\n      [\n        'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n        '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n      ],\n      [\n        '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n        'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n      ],\n      [\n        '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n        '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n      ],\n      [\n        '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n        'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n      ],\n      [\n        'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n        'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n      ],\n      [\n        'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n        '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n      ],\n      [\n        'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n        'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n      ],\n      [\n        'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n        '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n      ],\n      [\n        '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n        '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n      ],\n      [\n        'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n        '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n      ],\n      [\n        'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n        '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n      ],\n      [\n        '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n        '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n      ],\n      [\n        '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n        'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n      ],\n      [\n        'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n        '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n      ],\n      [\n        'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n        '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n      ],\n      [\n        'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n        '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n      ],\n      [\n        '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n        '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n      ],\n      [\n        'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n        'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n      ],\n      [\n        '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n        'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n      ],\n      [\n        'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n        'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n      ],\n      [\n        'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n        '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n      ],\n      [\n        '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n        'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n      ],\n      [\n        'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n        '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n      ],\n      [\n        'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n        '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n      ],\n      [\n        'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n        '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n      ],\n      [\n        '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n        'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n      ],\n      [\n        '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n        'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n      ],\n      [\n        'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n        '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n      ],\n      [\n        '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n        'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n      ],\n      [\n        '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n        '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n      ],\n      [\n        '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n        'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n      ],\n      [\n        'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n        'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n      ],\n      [\n        '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n        'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n      ],\n      [\n        '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n        '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n      ],\n      [\n        '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n        'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n      ],\n      [\n        '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n        '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n      ],\n      [\n        'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n        'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n      ],\n      [\n        '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n        '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n      ],\n      [\n        'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n        '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n      ],\n      [\n        '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n        '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n      ],\n      [\n        'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n        'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n      ],\n      [\n        'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n        '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n      ],\n      [\n        'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n        'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n      ],\n      [\n        '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n        'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n      ],\n      [\n        '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n        '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n      ],\n      [\n        '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n        'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n      ],\n      [\n        '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n        '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n      ],\n      [\n        '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n        '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n      ],\n      [\n        '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n        'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n      ],\n      [\n        '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n        '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n      ],\n      [\n        '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n        '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n      ],\n      [\n        '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n        '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n      ],\n    ],\n  },\n};\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 '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n  this.eddsa = eddsa;\n  this._secret = parseBytes(params.secret);\n  if (eddsa.isPoint(params.pub))\n    this._pub = params.pub;\n  else\n    this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n  if (pub instanceof KeyPair)\n    return pub;\n  return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n  if (secret instanceof KeyPair)\n    return secret;\n  return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n  return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n  return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n  if (this._pubBytes)\n    return this.eddsa.decodePoint(this._pubBytes);\n  return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n  var eddsa = this.eddsa;\n  var hash = this.hash();\n  var lastIx = eddsa.encodingLength - 1;\n\n  var a = hash.slice(0, eddsa.encodingLength);\n  a[0] &= 248;\n  a[lastIx] &= 127;\n  a[lastIx] |= 64;\n\n  return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n  return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n  return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n  return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n  assert(this._secret, 'KeyPair can only verify');\n  return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n  return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n  assert(this._secret, 'KeyPair is public only');\n  return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n  return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n  this.eddsa = eddsa;\n\n  if (typeof sig !== 'object')\n    sig = parseBytes(sig);\n\n  if (Array.isArray(sig)) {\n    sig = {\n      R: sig.slice(0, eddsa.encodingLength),\n      S: sig.slice(eddsa.encodingLength),\n    };\n  }\n\n  assert(sig.R && sig.S, 'Signature without R or S');\n\n  if (eddsa.isPoint(sig.R))\n    this._R = sig.R;\n  if (sig.S instanceof BN)\n    this._S = sig.S;\n\n  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n  return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n  return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n  return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n  return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n  return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n  return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n  assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n  if (!(this instanceof EDDSA))\n    return new EDDSA(curve);\n\n  curve = curves[curve].curve;\n  this.curve = curve;\n  this.g = curve.g;\n  this.g.precompute(curve.n.bitLength() + 1);\n\n  this.pointClass = curve.point().constructor;\n  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n  this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n  message = parseBytes(message);\n  var key = this.keyFromSecret(secret);\n  var r = this.hashInt(key.messagePrefix(), message);\n  var R = this.g.mul(r);\n  var Rencoded = this.encodePoint(R);\n  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n    .mul(key.priv());\n  var S = r.add(s_).umod(this.curve.n);\n  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n  message = parseBytes(message);\n  sig = this.makeSignature(sig);\n  var key = this.keyFromPublic(pub);\n  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n  var SG = this.g.mul(sig.S());\n  var RplusAh = sig.R().add(key.pub().mul(h));\n  return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n  var hash = this.hash();\n  for (var i = 0; i < arguments.length; i++)\n    hash.update(arguments[i]);\n  return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n  return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n  return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n  if (sig instanceof Signature)\n    return sig;\n  return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n  var enc = point.getY().toArray('le', this.encodingLength);\n  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n  return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n  bytes = utils.parseBytes(bytes);\n\n  var lastIx = bytes.length - 1;\n  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n  var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n  var y = utils.intFromLE(normed);\n  return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n  return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n  return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n  return val instanceof this.pointClass;\n};\n", "'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", "(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n  this._reporterState = {\n    obj: null,\n    path: [],\n    options: options || {},\n    errors: []\n  };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n  return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n  const state = this._reporterState;\n\n  return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n  const state = this._reporterState;\n\n  state.obj = data.obj;\n  state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n  return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n  const state = this._reporterState;\n\n  state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n  const state = this._reporterState;\n\n  this.exitKey(index);\n  if (state.obj !== null)\n    state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n  return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n  const state = this._reporterState;\n\n  const prev = state.obj;\n  state.obj = {};\n  return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n  const state = this._reporterState;\n\n  const now = state.obj;\n  state.obj = prev;\n  return now;\n};\n\nReporter.prototype.error = function error(msg) {\n  let err;\n  const state = this._reporterState;\n\n  const inherited = msg instanceof ReporterError;\n  if (inherited) {\n    err = msg;\n  } else {\n    err = new ReporterError(state.path.map(function(elem) {\n      return '[' + JSON.stringify(elem) + ']';\n    }).join(''), msg.message || msg, msg.stack);\n  }\n\n  if (!state.options.partial)\n    throw err;\n\n  if (!inherited)\n    state.errors.push(err);\n\n  return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n  const state = this._reporterState;\n  if (!state.options.partial)\n    return result;\n\n  return {\n    result: this.isError(result) ? null : result,\n    errors: state.errors\n  };\n};\n\nfunction ReporterError(path, msg) {\n  this.path = path;\n  this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n  this.message = msg + ' at: ' + (this.path || '(shallow)');\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(this, ReporterError);\n\n  if (!this.stack) {\n    try {\n      // IE only adds stack when thrown\n      throw new Error(this.message);\n    } catch (e) {\n      this.stack = e.stack;\n    }\n  }\n  return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n  Reporter.call(this, options);\n  if (!Buffer.isBuffer(base)) {\n    this.error('Input not Buffer');\n    return;\n  }\n\n  this.base = base;\n  this.offset = 0;\n  this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n  if (data instanceof DecoderBuffer) {\n    return true;\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    Buffer.isBuffer(data.base) &&\n    data.constructor.name === 'DecoderBuffer' &&\n    typeof data.offset === 'number' &&\n    typeof data.length === 'number' &&\n    typeof data.save === 'function' &&\n    typeof data.restore === 'function' &&\n    typeof data.isEmpty === 'function' &&\n    typeof data.readUInt8 === 'function' &&\n    typeof data.skip === 'function' &&\n    typeof data.raw === 'function';\n\n  return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n  // Return skipped data\n  const res = new DecoderBuffer(this.base);\n  res.offset = save.offset;\n  res.length = this.offset;\n\n  this.offset = save.offset;\n  Reporter.prototype.restore.call(this, save.reporter);\n\n  return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n  return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n  if (this.offset + 1 <= this.length)\n    return this.base.readUInt8(this.offset++, true);\n  else\n    return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n  if (!(this.offset + bytes <= this.length))\n    return this.error(fail || 'DecoderBuffer overrun');\n\n  const res = new DecoderBuffer(this.base);\n\n  // Share reporter state\n  res._reporterState = this._reporterState;\n\n  res.offset = this.offset;\n  res.length = this.offset + bytes;\n  this.offset += bytes;\n  return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n  return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n  if (Array.isArray(value)) {\n    this.length = 0;\n    this.value = value.map(function(item) {\n      if (!EncoderBuffer.isEncoderBuffer(item))\n        item = new EncoderBuffer(item, reporter);\n      this.length += item.length;\n      return item;\n    }, this);\n  } else if (typeof value === 'number') {\n    if (!(0 <= value && value <= 0xff))\n      return reporter.error('non-byte EncoderBuffer value');\n    this.value = value;\n    this.length = 1;\n  } else if (typeof value === 'string') {\n    this.value = value;\n    this.length = Buffer.byteLength(value);\n  } else if (Buffer.isBuffer(value)) {\n    this.value = value;\n    this.length = value.length;\n  } else {\n    return reporter.error('Unsupported type: ' + typeof value);\n  }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n  if (data instanceof EncoderBuffer) {\n    return true;\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    data.constructor.name === 'EncoderBuffer' &&\n    typeof data.length === 'number' &&\n    typeof data.join === 'function';\n\n  return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n  if (!out)\n    out = Buffer.alloc(this.length);\n  if (!offset)\n    offset = 0;\n\n  if (this.length === 0)\n    return out;\n\n  if (Array.isArray(this.value)) {\n    this.value.forEach(function(item) {\n      item.join(out, offset);\n      offset += item.length;\n    });\n  } else {\n    if (typeof this.value === 'number')\n      out[offset] = this.value;\n    else if (typeof this.value === 'string')\n      out.write(this.value, offset);\n    else if (Buffer.isBuffer(this.value))\n      this.value.copy(out, offset);\n    offset += this.length;\n  }\n\n  return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n  'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n  'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n  '_peekTag', '_decodeTag', '_use',\n  '_decodeStr', '_decodeObjid', '_decodeTime',\n  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n  '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n  const state = {};\n  this._baseState = state;\n\n  state.name = name;\n  state.enc = enc;\n\n  state.parent = parent || null;\n  state.children = null;\n\n  // State\n  state.tag = null;\n  state.args = null;\n  state.reverseArgs = null;\n  state.choice = null;\n  state.optional = false;\n  state.any = false;\n  state.obj = false;\n  state.use = null;\n  state.useDecoder = null;\n  state.key = null;\n  state['default'] = null;\n  state.explicit = null;\n  state.implicit = null;\n  state.contains = null;\n\n  // Should create new instance on each method\n  if (!state.parent) {\n    state.children = [];\n    this._wrap();\n  }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n  'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n  const state = this._baseState;\n  const cstate = {};\n  stateProps.forEach(function(prop) {\n    cstate[prop] = state[prop];\n  });\n  const res = new this.constructor(cstate.parent);\n  res._baseState = cstate;\n  return res;\n};\n\nNode.prototype._wrap = function wrap() {\n  const state = this._baseState;\n  methods.forEach(function(method) {\n    this[method] = function _wrappedMethod() {\n      const clone = new this.constructor(this);\n      state.children.push(clone);\n      return clone[method].apply(clone, arguments);\n    };\n  }, this);\n};\n\nNode.prototype._init = function init(body) {\n  const state = this._baseState;\n\n  assert(state.parent === null);\n  body.call(this);\n\n  // Filter children\n  state.children = state.children.filter(function(child) {\n    return child._baseState.parent === this;\n  }, this);\n  assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n  const state = this._baseState;\n\n  // Filter children and args\n  const children = args.filter(function(arg) {\n    return arg instanceof this.constructor;\n  }, this);\n  args = args.filter(function(arg) {\n    return !(arg instanceof this.constructor);\n  }, this);\n\n  if (children.length !== 0) {\n    assert(state.children === null);\n    state.children = children;\n\n    // Replace parent to maintain backward link\n    children.forEach(function(child) {\n      child._baseState.parent = this;\n    }, this);\n  }\n  if (args.length !== 0) {\n    assert(state.args === null);\n    state.args = args;\n    state.reverseArgs = args.map(function(arg) {\n      if (typeof arg !== 'object' || arg.constructor !== Object)\n        return arg;\n\n      const res = {};\n      Object.keys(arg).forEach(function(key) {\n        if (key == (key | 0))\n          key |= 0;\n        const value = arg[key];\n        res[value] = key;\n      });\n      return res;\n    });\n  }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n  Node.prototype[method] = function _overrided() {\n    const state = this._baseState;\n    throw new Error(method + ' not implemented for encoding: ' + state.enc);\n  };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n  Node.prototype[tag] = function _tagMethod() {\n    const state = this._baseState;\n    const args = Array.prototype.slice.call(arguments);\n\n    assert(state.tag === null);\n    state.tag = tag;\n\n    this._useArgs(args);\n\n    return this;\n  };\n});\n\nNode.prototype.use = function use(item) {\n  assert(item);\n  const state = this._baseState;\n\n  assert(state.use === null);\n  state.use = item;\n\n  return this;\n};\n\nNode.prototype.optional = function optional() {\n  const state = this._baseState;\n\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.def = function def(val) {\n  const state = this._baseState;\n\n  assert(state['default'] === null);\n  state['default'] = val;\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n  const state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.explicit = num;\n\n  return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n  const state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.implicit = num;\n\n  return this;\n};\n\nNode.prototype.obj = function obj() {\n  const state = this._baseState;\n  const args = Array.prototype.slice.call(arguments);\n\n  state.obj = true;\n\n  if (args.length !== 0)\n    this._useArgs(args);\n\n  return this;\n};\n\nNode.prototype.key = function key(newKey) {\n  const state = this._baseState;\n\n  assert(state.key === null);\n  state.key = newKey;\n\n  return this;\n};\n\nNode.prototype.any = function any() {\n  const state = this._baseState;\n\n  state.any = true;\n\n  return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n  const state = this._baseState;\n\n  assert(state.choice === null);\n  state.choice = obj;\n  this._useArgs(Object.keys(obj).map(function(key) {\n    return obj[key];\n  }));\n\n  return this;\n};\n\nNode.prototype.contains = function contains(item) {\n  const state = this._baseState;\n\n  assert(state.use === null);\n  state.contains = item;\n\n  return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n  const state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return input.wrapResult(state.children[0]._decode(input, options));\n\n  let result = state['default'];\n  let present = true;\n\n  let prevKey = null;\n  if (state.key !== null)\n    prevKey = input.enterKey(state.key);\n\n  // Check if tag is there\n  if (state.optional) {\n    let tag = null;\n    if (state.explicit !== null)\n      tag = state.explicit;\n    else if (state.implicit !== null)\n      tag = state.implicit;\n    else if (state.tag !== null)\n      tag = state.tag;\n\n    if (tag === null && !state.any) {\n      // Trial and Error\n      const save = input.save();\n      try {\n        if (state.choice === null)\n          this._decodeGeneric(state.tag, input, options);\n        else\n          this._decodeChoice(input, options);\n        present = true;\n      } catch (e) {\n        present = false;\n      }\n      input.restore(save);\n    } else {\n      present = this._peekTag(input, tag, state.any);\n\n      if (input.isError(present))\n        return present;\n    }\n  }\n\n  // Push object on stack\n  let prevObj;\n  if (state.obj && present)\n    prevObj = input.enterObject();\n\n  if (present) {\n    // Unwrap explicit values\n    if (state.explicit !== null) {\n      const explicit = this._decodeTag(input, state.explicit);\n      if (input.isError(explicit))\n        return explicit;\n      input = explicit;\n    }\n\n    const start = input.offset;\n\n    // Unwrap implicit and normal values\n    if (state.use === null && state.choice === null) {\n      let save;\n      if (state.any)\n        save = input.save();\n      const body = this._decodeTag(\n        input,\n        state.implicit !== null ? state.implicit : state.tag,\n        state.any\n      );\n      if (input.isError(body))\n        return body;\n\n      if (state.any)\n        result = input.raw(save);\n      else\n        input = body;\n    }\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), start, input.length, 'tagged');\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), input.offset, input.length, 'content');\n\n    // Select proper method for tag\n    if (state.any) {\n      // no-op\n    } else if (state.choice === null) {\n      result = this._decodeGeneric(state.tag, input, options);\n    } else {\n      result = this._decodeChoice(input, options);\n    }\n\n    if (input.isError(result))\n      return result;\n\n    // Decode children\n    if (!state.any && state.choice === null && state.children !== null) {\n      state.children.forEach(function decodeChildren(child) {\n        // NOTE: We are ignoring errors here, to let parser continue with other\n        // parts of encoded data\n        child._decode(input, options);\n      });\n    }\n\n    // Decode contained/encoded by schema, only in bit or octet strings\n    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n      const data = new DecoderBuffer(result);\n      result = this._getUse(state.contains, input._reporterState.obj)\n        ._decode(data, options);\n    }\n  }\n\n  // Pop object\n  if (state.obj && present)\n    result = input.leaveObject(prevObj);\n\n  // Set key\n  if (state.key !== null && (result !== null || present === true))\n    input.leaveKey(prevKey, state.key, result);\n  else if (prevKey !== null)\n    input.exitKey(prevKey);\n\n  return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n  const state = this._baseState;\n\n  if (tag === 'seq' || tag === 'set')\n    return null;\n  if (tag === 'seqof' || tag === 'setof')\n    return this._decodeList(input, tag, state.args[0], options);\n  else if (/str$/.test(tag))\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'objid' && state.args)\n    return this._decodeObjid(input, state.args[0], state.args[1], options);\n  else if (tag === 'objid')\n    return this._decodeObjid(input, null, null, options);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._decodeTime(input, tag, options);\n  else if (tag === 'null_')\n    return this._decodeNull(input, options);\n  else if (tag === 'bool')\n    return this._decodeBool(input, options);\n  else if (tag === 'objDesc')\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'int' || tag === 'enum')\n    return this._decodeInt(input, state.args && state.args[0], options);\n\n  if (state.use !== null) {\n    return this._getUse(state.use, input._reporterState.obj)\n      ._decode(input, options);\n  } else {\n    return input.error('unknown tag: ' + tag);\n  }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n  const state = this._baseState;\n  // Create altered use decoder if implicit is set\n  state.useDecoder = this._use(entity, obj);\n  assert(state.useDecoder._baseState.parent === null);\n  state.useDecoder = state.useDecoder._baseState.children[0];\n  if (state.implicit !== state.useDecoder._baseState.implicit) {\n    state.useDecoder = state.useDecoder.clone();\n    state.useDecoder._baseState.implicit = state.implicit;\n  }\n  return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n  const state = this._baseState;\n  let result = null;\n  let match = false;\n\n  Object.keys(state.choice).some(function(key) {\n    const save = input.save();\n    const node = state.choice[key];\n    try {\n      const value = node._decode(input, options);\n      if (input.isError(value))\n        return false;\n\n      result = { type: key, value: value };\n      match = true;\n    } catch (e) {\n      input.restore(save);\n      return false;\n    }\n    return true;\n  }, this);\n\n  if (!match)\n    return input.error('Choice not matched');\n\n  return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n  return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n  const state = this._baseState;\n  if (state['default'] !== null && state['default'] === data)\n    return;\n\n  const result = this._encodeValue(data, reporter, parent);\n  if (result === undefined)\n    return;\n\n  if (this._skipDefault(result, reporter, parent))\n    return;\n\n  return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n  const state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return state.children[0]._encode(data, reporter || new Reporter());\n\n  let result = null;\n\n  // Set reporter to share it with a child class\n  this.reporter = reporter;\n\n  // Check if data is there\n  if (state.optional && data === undefined) {\n    if (state['default'] !== null)\n      data = state['default'];\n    else\n      return;\n  }\n\n  // Encode children first\n  let content = null;\n  let primitive = false;\n  if (state.any) {\n    // Anything that was given is translated to buffer\n    result = this._createEncoderBuffer(data);\n  } else if (state.choice) {\n    result = this._encodeChoice(data, reporter);\n  } else if (state.contains) {\n    content = this._getUse(state.contains, parent)._encode(data, reporter);\n    primitive = true;\n  } else if (state.children) {\n    content = state.children.map(function(child) {\n      if (child._baseState.tag === 'null_')\n        return child._encode(null, reporter, data);\n\n      if (child._baseState.key === null)\n        return reporter.error('Child should have a key');\n      const prevKey = reporter.enterKey(child._baseState.key);\n\n      if (typeof data !== 'object')\n        return reporter.error('Child expected, but input is not object');\n\n      const res = child._encode(data[child._baseState.key], reporter, data);\n      reporter.leaveKey(prevKey);\n\n      return res;\n    }, this).filter(function(child) {\n      return child;\n    });\n    content = this._createEncoderBuffer(content);\n  } else {\n    if (state.tag === 'seqof' || state.tag === 'setof') {\n      // TODO(indutny): this should be thrown on DSL level\n      if (!(state.args && state.args.length === 1))\n        return reporter.error('Too many args for : ' + state.tag);\n\n      if (!Array.isArray(data))\n        return reporter.error('seqof/setof, but data is not Array');\n\n      const child = this.clone();\n      child._baseState.implicit = null;\n      content = this._createEncoderBuffer(data.map(function(item) {\n        const state = this._baseState;\n\n        return this._getUse(state.args[0], data)._encode(item, reporter);\n      }, child));\n    } else if (state.use !== null) {\n      result = this._getUse(state.use, parent)._encode(data, reporter);\n    } else {\n      content = this._encodePrimitive(state.tag, data);\n      primitive = true;\n    }\n  }\n\n  // Encode data itself\n  if (!state.any && state.choice === null) {\n    const tag = state.implicit !== null ? state.implicit : state.tag;\n    const cls = state.implicit === null ? 'universal' : 'context';\n\n    if (tag === null) {\n      if (state.use === null)\n        reporter.error('Tag could be omitted only for .use()');\n    } else {\n      if (state.use === null)\n        result = this._encodeComposite(tag, primitive, cls, content);\n    }\n  }\n\n  // Wrap in explicit\n  if (state.explicit !== null)\n    result = this._encodeComposite(state.explicit, false, 'context', result);\n\n  return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n  const state = this._baseState;\n\n  const node = state.choice[data.type];\n  if (!node) {\n    assert(\n      false,\n      data.type + ' not found in ' +\n            JSON.stringify(Object.keys(state.choice)));\n  }\n  return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n  const state = this._baseState;\n\n  if (/str$/.test(tag))\n    return this._encodeStr(data, tag);\n  else if (tag === 'objid' && state.args)\n    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n  else if (tag === 'objid')\n    return this._encodeObjid(data, null, null);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._encodeTime(data, tag);\n  else if (tag === 'null_')\n    return this._encodeNull();\n  else if (tag === 'int' || tag === 'enum')\n    return this._encodeInt(data, state.args && state.reverseArgs[0]);\n  else if (tag === 'bool')\n    return this._encodeBool(data);\n  else if (tag === 'objDesc')\n    return this._encodeStr(data, tag);\n  else\n    throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n  return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n  return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n  const res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    const value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n}\n\nexports.tagClass = {\n  0: 'universal',\n  1: 'application',\n  2: 'context',\n  3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n  0x00: 'end',\n  0x01: 'bool',\n  0x02: 'int',\n  0x03: 'bitstr',\n  0x04: 'octstr',\n  0x05: 'null_',\n  0x06: 'objid',\n  0x07: 'objDesc',\n  0x08: 'external',\n  0x09: 'real',\n  0x0a: 'enum',\n  0x0b: 'embed',\n  0x0c: 'utf8str',\n  0x0d: 'relativeOid',\n  0x10: 'seq',\n  0x11: 'set',\n  0x12: 'numstr',\n  0x13: 'printstr',\n  0x14: 't61str',\n  0x15: 'videostr',\n  0x16: 'ia5str',\n  0x17: 'utctime',\n  0x18: 'gentime',\n  0x19: 'graphstr',\n  0x1a: 'iso646str',\n  0x1b: 'genstr',\n  0x1c: 'unistr',\n  0x1d: 'charstr',\n  0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n  return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n  primitive,\n  cls,\n  content) {\n  const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n  // Short form\n  if (content.length < 0x80) {\n    const header = Buffer.alloc(2);\n    header[0] = encodedTag;\n    header[1] = content.length;\n    return this._createEncoderBuffer([ header, content ]);\n  }\n\n  // Long form\n  // Count octets required to store length\n  let lenOctets = 1;\n  for (let i = content.length; i >= 0x100; i >>= 8)\n    lenOctets++;\n\n  const header = Buffer.alloc(1 + 1 + lenOctets);\n  header[0] = encodedTag;\n  header[1] = 0x80 | lenOctets;\n\n  for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n    header[i] = j & 0xff;\n\n  return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n  if (tag === 'bitstr') {\n    return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n  } else if (tag === 'bmpstr') {\n    const buf = Buffer.alloc(str.length * 2);\n    for (let i = 0; i < str.length; i++) {\n      buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n    }\n    return this._createEncoderBuffer(buf);\n  } else if (tag === 'numstr') {\n    if (!this._isNumstr(str)) {\n      return this.reporter.error('Encoding of string type: numstr supports ' +\n                                 'only digits and space');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'printstr') {\n    if (!this._isPrintstr(str)) {\n      return this.reporter.error('Encoding of string type: printstr supports ' +\n                                 'only latin upper and lower case letters, ' +\n                                 'digits, space, apostrophe, left and rigth ' +\n                                 'parenthesis, plus sign, comma, hyphen, ' +\n                                 'dot, slash, colon, equal sign, ' +\n                                 'question mark');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (/str$/.test(tag)) {\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'objDesc') {\n    return this._createEncoderBuffer(str);\n  } else {\n    return this.reporter.error('Encoding of string type: ' + tag +\n                               ' unsupported');\n  }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n  if (typeof id === 'string') {\n    if (!values)\n      return this.reporter.error('string objid given, but no values map found');\n    if (!values.hasOwnProperty(id))\n      return this.reporter.error('objid not found in values map');\n    id = values[id].split(/[\\s.]+/g);\n    for (let i = 0; i < id.length; i++)\n      id[i] |= 0;\n  } else if (Array.isArray(id)) {\n    id = id.slice();\n    for (let i = 0; i < id.length; i++)\n      id[i] |= 0;\n  }\n\n  if (!Array.isArray(id)) {\n    return this.reporter.error('objid() should be either array or string, ' +\n                               'got: ' + JSON.stringify(id));\n  }\n\n  if (!relative) {\n    if (id[1] >= 40)\n      return this.reporter.error('Second objid identifier OOB');\n    id.splice(0, 2, id[0] * 40 + id[1]);\n  }\n\n  // Count number of octets\n  let size = 0;\n  for (let i = 0; i < id.length; i++) {\n    let ident = id[i];\n    for (size++; ident >= 0x80; ident >>= 7)\n      size++;\n  }\n\n  const objid = Buffer.alloc(size);\n  let offset = objid.length - 1;\n  for (let i = id.length - 1; i >= 0; i--) {\n    let ident = id[i];\n    objid[offset--] = ident & 0x7f;\n    while ((ident >>= 7) > 0)\n      objid[offset--] = 0x80 | (ident & 0x7f);\n  }\n\n  return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n  if (num < 10)\n    return '0' + num;\n  else\n    return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n  let str;\n  const date = new Date(time);\n\n  if (tag === 'gentime') {\n    str = [\n      two(date.getUTCFullYear()),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else if (tag === 'utctime') {\n    str = [\n      two(date.getUTCFullYear() % 100),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else {\n    this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n  }\n\n  return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n  return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n  if (typeof num === 'string') {\n    if (!values)\n      return this.reporter.error('String int or enum given, but no values map');\n    if (!values.hasOwnProperty(num)) {\n      return this.reporter.error('Values map doesn\\'t contain: ' +\n                                 JSON.stringify(num));\n    }\n    num = values[num];\n  }\n\n  // Bignum, assume big endian\n  if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n    const numArray = num.toArray();\n    if (!num.sign && numArray[0] & 0x80) {\n      numArray.unshift(0);\n    }\n    num = Buffer.from(numArray);\n  }\n\n  if (Buffer.isBuffer(num)) {\n    let size = num.length;\n    if (num.length === 0)\n      size++;\n\n    const out = Buffer.alloc(size);\n    num.copy(out);\n    if (num.length === 0)\n      out[0] = 0;\n    return this._createEncoderBuffer(out);\n  }\n\n  if (num < 0x80)\n    return this._createEncoderBuffer(num);\n\n  if (num < 0x100)\n    return this._createEncoderBuffer([0, num]);\n\n  let size = 1;\n  for (let i = num; i >= 0x100; i >>= 8)\n    size++;\n\n  const out = new Array(size);\n  for (let i = out.length - 1; i >= 0; i--) {\n    out[i] = num & 0xff;\n    num >>= 8;\n  }\n  if(out[0] & 0x80) {\n    out.unshift(0);\n  }\n\n  return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n  return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n  const state = this._baseState;\n  let i;\n  if (state['default'] === null)\n    return false;\n\n  const data = dataBuffer.join();\n  if (state.defaultBuffer === undefined)\n    state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n  if (data.length !== state.defaultBuffer.length)\n    return false;\n\n  for (i=0; i < data.length; i++)\n    if (data[i] !== state.defaultBuffer[i])\n      return false;\n\n  return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n  let res;\n\n  if (tag === 'seqof')\n    tag = 'seq';\n  else if (tag === 'setof')\n    tag = 'set';\n\n  if (der.tagByName.hasOwnProperty(tag))\n    res = der.tagByName[tag];\n  else if (typeof tag === 'number' && (tag | 0) === tag)\n    res = tag;\n  else\n    return reporter.error('Unknown tag: ' + tag);\n\n  if (res >= 0x1f)\n    return reporter.error('Multi-octet tag encoding unsupported');\n\n  if (!primitive)\n    res |= 0x20;\n\n  res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n  return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n  DEREncoder.call(this, entity);\n  this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n  const buf = DEREncoder.prototype.encode.call(this, data);\n\n  const p = buf.toString('base64');\n  const out = [ '-----BEGIN ' + options.label + '-----' ];\n  for (let i = 0; i < p.length; i += 64)\n    out.push(p.slice(i, i + 64));\n  out.push('-----END ' + options.label + '-----');\n  return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n  if (!DecoderBuffer.isDecoderBuffer(data)) {\n    data = new DecoderBuffer(data, options);\n  }\n\n  return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n  if (buffer.isEmpty())\n    return false;\n\n  const state = buffer.save();\n  const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  buffer.restore(state);\n\n  return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n    (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n  const decodedTag = derDecodeTag(buffer,\n    'Failed to decode tag of \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  let len = derDecodeLen(buffer,\n    decodedTag.primitive,\n    'Failed to get length of \"' + tag + '\"');\n\n  // Failure\n  if (buffer.isError(len))\n    return len;\n\n  if (!any &&\n      decodedTag.tag !== tag &&\n      decodedTag.tagStr !== tag &&\n      decodedTag.tagStr + 'of' !== tag) {\n    return buffer.error('Failed to match tag: \"' + tag + '\"');\n  }\n\n  if (decodedTag.primitive || len !== null)\n    return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n  // Indefinite length... find END tag\n  const state = buffer.save();\n  const res = this._skipUntilEnd(\n    buffer,\n    'Failed to skip indefinite length body: \"' + this.tag + '\"');\n  if (buffer.isError(res))\n    return res;\n\n  len = buffer.offset - state.offset;\n  buffer.restore(state);\n  return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n  for (;;) {\n    const tag = derDecodeTag(buffer, fail);\n    if (buffer.isError(tag))\n      return tag;\n    const len = derDecodeLen(buffer, tag.primitive, fail);\n    if (buffer.isError(len))\n      return len;\n\n    let res;\n    if (tag.primitive || len !== null)\n      res = buffer.skip(len);\n    else\n      res = this._skipUntilEnd(buffer, fail);\n\n    // Failure\n    if (buffer.isError(res))\n      return res;\n\n    if (tag.tagStr === 'end')\n      break;\n  }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n  options) {\n  const result = [];\n  while (!buffer.isEmpty()) {\n    const possibleEnd = this._peekTag(buffer, 'end');\n    if (buffer.isError(possibleEnd))\n      return possibleEnd;\n\n    const res = decoder.decode(buffer, 'der', options);\n    if (buffer.isError(res) && possibleEnd)\n      break;\n    result.push(res);\n  }\n  return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n  if (tag === 'bitstr') {\n    const unused = buffer.readUInt8();\n    if (buffer.isError(unused))\n      return unused;\n    return { unused: unused, data: buffer.raw() };\n  } else if (tag === 'bmpstr') {\n    const raw = buffer.raw();\n    if (raw.length % 2 === 1)\n      return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n    let str = '';\n    for (let i = 0; i < raw.length / 2; i++) {\n      str += String.fromCharCode(raw.readUInt16BE(i * 2));\n    }\n    return str;\n  } else if (tag === 'numstr') {\n    const numstr = buffer.raw().toString('ascii');\n    if (!this._isNumstr(numstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'numstr unsupported characters');\n    }\n    return numstr;\n  } else if (tag === 'octstr') {\n    return buffer.raw();\n  } else if (tag === 'objDesc') {\n    return buffer.raw();\n  } else if (tag === 'printstr') {\n    const printstr = buffer.raw().toString('ascii');\n    if (!this._isPrintstr(printstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'printstr unsupported characters');\n    }\n    return printstr;\n  } else if (/str$/.test(tag)) {\n    return buffer.raw().toString();\n  } else {\n    return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n  }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n  let result;\n  const identifiers = [];\n  let ident = 0;\n  let subident = 0;\n  while (!buffer.isEmpty()) {\n    subident = buffer.readUInt8();\n    ident <<= 7;\n    ident |= subident & 0x7f;\n    if ((subident & 0x80) === 0) {\n      identifiers.push(ident);\n      ident = 0;\n    }\n  }\n  if (subident & 0x80)\n    identifiers.push(ident);\n\n  const first = (identifiers[0] / 40) | 0;\n  const second = identifiers[0] % 40;\n\n  if (relative)\n    result = identifiers;\n  else\n    result = [first, second].concat(identifiers.slice(1));\n\n  if (values) {\n    let tmp = values[result.join(' ')];\n    if (tmp === undefined)\n      tmp = values[result.join('.')];\n    if (tmp !== undefined)\n      result = tmp;\n  }\n\n  return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n  const str = buffer.raw().toString();\n\n  let year;\n  let mon;\n  let day;\n  let hour;\n  let min;\n  let sec;\n  if (tag === 'gentime') {\n    year = str.slice(0, 4) | 0;\n    mon = str.slice(4, 6) | 0;\n    day = str.slice(6, 8) | 0;\n    hour = str.slice(8, 10) | 0;\n    min = str.slice(10, 12) | 0;\n    sec = str.slice(12, 14) | 0;\n  } else if (tag === 'utctime') {\n    year = str.slice(0, 2) | 0;\n    mon = str.slice(2, 4) | 0;\n    day = str.slice(4, 6) | 0;\n    hour = str.slice(6, 8) | 0;\n    min = str.slice(8, 10) | 0;\n    sec = str.slice(10, 12) | 0;\n    if (year < 70)\n      year = 2000 + year;\n    else\n      year = 1900 + year;\n  } else {\n    return buffer.error('Decoding ' + tag + ' time is not supported yet');\n  }\n\n  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n  return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n  const res = buffer.readUInt8();\n  if (buffer.isError(res))\n    return res;\n  else\n    return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n  // Bigint, return as it is (assume big endian)\n  const raw = buffer.raw();\n  let res = new bignum(raw);\n\n  if (values)\n    res = values[res.toString(10)] || res;\n\n  return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n  let tag = buf.readUInt8(fail);\n  if (buf.isError(tag))\n    return tag;\n\n  const cls = der.tagClass[tag >> 6];\n  const primitive = (tag & 0x20) === 0;\n\n  // Multi-octet tag - load\n  if ((tag & 0x1f) === 0x1f) {\n    let oct = tag;\n    tag = 0;\n    while ((oct & 0x80) === 0x80) {\n      oct = buf.readUInt8(fail);\n      if (buf.isError(oct))\n        return oct;\n\n      tag <<= 7;\n      tag |= oct & 0x7f;\n    }\n  } else {\n    tag &= 0x1f;\n  }\n  const tagStr = der.tag[tag];\n\n  return {\n    cls: cls,\n    primitive: primitive,\n    tag: tag,\n    tagStr: tagStr\n  };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n  let len = buf.readUInt8(fail);\n  if (buf.isError(len))\n    return len;\n\n  // Indefinite form\n  if (!primitive && len === 0x80)\n    return null;\n\n  // Definite form\n  if ((len & 0x80) === 0) {\n    // Short form\n    return len;\n  }\n\n  // Long form\n  const num = len & 0x7f;\n  if (num > 4)\n    return buf.error('length octect is too long');\n\n  len = 0;\n  for (let i = 0; i < num; i++) {\n    len <<= 8;\n    const j = buf.readUInt8(fail);\n    if (buf.isError(j))\n      return j;\n    len |= j;\n  }\n\n  return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n  DERDecoder.call(this, entity);\n  this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n  const lines = data.toString().split(/[\\r\\n]+/g);\n\n  const label = options.label.toUpperCase();\n\n  const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n  let start = -1;\n  let end = -1;\n  for (let i = 0; i < lines.length; i++) {\n    const match = lines[i].match(re);\n    if (match === null)\n      continue;\n\n    if (match[2] !== label)\n      continue;\n\n    if (start === -1) {\n      if (match[1] !== 'BEGIN')\n        break;\n      start = i;\n    } else {\n      if (match[1] !== 'END')\n        break;\n      end = i;\n      break;\n    }\n  }\n  if (start === -1 || end === -1)\n    throw new Error('PEM section not found for: ' + label);\n\n  const base64 = lines.slice(start + 1, end).join('');\n  // Remove excessive symbols\n  base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n  const input = Buffer.from(base64, 'base64');\n  return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n  return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n  this.name = name;\n  this.body = body;\n\n  this.decoders = {};\n  this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n  const name = this.name;\n\n  function Generated(entity) {\n    this._initNamed(entity, name);\n  }\n  inherits(Generated, Base);\n  Generated.prototype._initNamed = function _initNamed(entity, name) {\n    Base.call(this, entity, name);\n  };\n\n  return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n  enc = enc || 'der';\n  // Lazily create decoder\n  if (!this.decoders.hasOwnProperty(enc))\n    this.decoders[enc] = this._createNamed(decoders[enc]);\n  return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n  return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n  enc = enc || 'der';\n  // Lazily create encoder\n  if (!this.encoders.hasOwnProperty(enc))\n    this.encoders[enc] = this._createNamed(encoders[enc]);\n  return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n  return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n  const res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    const value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n  this.choice({\n    utcTime: this.utctime(),\n    generalTime: this.gentime()\n  })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n  this.seq().obj(\n    this.key('type').objid(),\n    this.key('value').any()\n  )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('parameters').optional(),\n    this.key('curve').objid().optional()\n  )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n  this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n  this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n  this.choice({\n    rdnSequence: this.use(RDNSequence)\n  })\n})\n\nvar Validity = asn.define('Validity', function () {\n  this.seq().obj(\n    this.key('notBefore').use(Time),\n    this.key('notAfter').use(Time)\n  )\n})\n\nvar Extension = asn.define('Extension', function () {\n  this.seq().obj(\n    this.key('extnID').objid(),\n    this.key('critical').bool().def(false),\n    this.key('extnValue').octstr()\n  )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n  this.seq().obj(\n    this.key('version').explicit(0).int().optional(),\n    this.key('serialNumber').int(),\n    this.key('signature').use(AlgorithmIdentifier),\n    this.key('issuer').use(Name),\n    this.key('validity').use(Validity),\n    this.key('subject').use(Name),\n    this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n    this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n    this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n    this.key('extensions').explicit(3).seqof(Extension).optional()\n  )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n  this.seq().obj(\n    this.key('tbsCertificate').use(TBSCertificate),\n    this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n    this.key('signatureValue').bitstr()\n  )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('modulus').int(),\n    this.key('publicExponent').int(),\n    this.key('privateExponent').int(),\n    this.key('prime1').int(),\n    this.key('prime2').int(),\n    this.key('exponent1').int(),\n    this.key('exponent2').int(),\n    this.key('coefficient').int()\n  )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n  this.seq().obj(\n    this.key('modulus').int(),\n    this.key('publicExponent').int()\n  )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('none').null_().optional(),\n    this.key('curve').objid().optional(),\n    this.key('params').seq().obj(\n      this.key('p').int(),\n      this.key('q').int(),\n      this.key('g').int()\n    ).optional()\n  )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').seq().obj(\n      this.key('id').objid(),\n      this.key('decrypt').seq().obj(\n        this.key('kde').seq().obj(\n          this.key('id').objid(),\n          this.key('kdeparams').seq().obj(\n            this.key('salt').octstr(),\n            this.key('iters').int()\n          )\n        ),\n        this.key('cipher').seq().obj(\n          this.key('algo').objid(),\n          this.key('iv').octstr()\n        )\n      )\n    ),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('p').int(),\n    this.key('q').int(),\n    this.key('g').int(),\n    this.key('pub_key').int(),\n    this.key('priv_key').int()\n  )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n  this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('privateKey').octstr(),\n    this.key('parameters').optional().explicit(0).use(ECParameters),\n    this.key('publicKey').optional().explicit(1).bitstr()\n  )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n  this.choice({\n    namedCurve: this.objid()\n  })\n})\n\nexports.signature = asn1.define('signature', function () {\n  this.seq().obj(\n    this.key('r').int(),\n    this.key('s').int()\n  )\n})\n", "{\"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n\"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n\"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n\"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n\"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n\"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n\"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n\"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n\"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n\"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n\"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n\"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n}", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n  var key = okey.toString()\n  var match = key.match(findProc)\n  var decrypted\n  if (!match) {\n    var match2 = key.match(fullRegex)\n    decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n  } else {\n    var suite = 'aes' + match[1]\n    var iv = Buffer.from(match[2], 'hex')\n    var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n    var out = []\n    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n    out.push(cipher.update(cipherText))\n    out.push(cipher.final())\n    decrypted = Buffer.concat(out)\n  }\n  var tag = key.match(startRegex)[1]\n  return {\n    tag: tag,\n    data: decrypted\n  }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = Buffer.from(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      // throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      // throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n", "{\n  \"1.3.132.0.10\": \"secp256k1\",\n  \"1.3.132.0.33\": \"p224\",\n  \"1.2.840.10045.3.1.1\": \"p192\",\n  \"1.2.840.10045.3.1.7\": \"p256\",\n  \"1.3.132.0.34\": \"p384\",\n  \"1.3.132.0.35\": \"p521\"\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n  var priv = parseKeys(key)\n  if (priv.curve) {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n    return ecSign(hash, priv)\n  } else if (priv.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong private key type')\n    return dsaSign(hash, priv, hashType)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = priv.modulus.byteLength()\n  var pad = [0, 1]\n  while (hash.length + pad.length + 1 < len) pad.push(0xff)\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) pad.push(hash[i])\n\n  var out = crt(pad, priv)\n  return out\n}\n\nfunction ecSign (hash, priv) {\n  var curveId = curves[priv.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var key = curve.keyFromPrivate(priv.privateKey)\n  var out = key.sign(hash)\n\n  return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n  var x = priv.params.priv_key\n  var p = priv.params.p\n  var q = priv.params.q\n  var g = priv.params.g\n  var r = new BN(0)\n  var k\n  var H = bits2int(hash, q).mod(q)\n  var s = false\n  var kv = getKey(x, q, hash, algo)\n  while (s === false) {\n    k = makeKey(q, kv, algo)\n    r = makeR(g, k, p, q)\n    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n    if (s.cmpn(0) === 0) {\n      s = false\n      r = new BN(0)\n    }\n  }\n  return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n  r = r.toArray()\n  s = s.toArray()\n\n  // Pad values\n  if (r[0] & 0x80) r = [0].concat(r)\n  if (s[0] & 0x80) s = [0].concat(s)\n\n  var total = r.length + s.length + 4\n  var res = [0x30, total, 0x02, r.length]\n  res = res.concat(r, [0x02, s.length], s)\n  return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n  x = Buffer.from(x.toArray())\n  if (x.length < q.byteLength()) {\n    var zeros = Buffer.alloc(q.byteLength() - x.length)\n    x = Buffer.concat([zeros, x])\n  }\n  var hlen = hash.length\n  var hbits = bits2octets(hash, q)\n  var v = Buffer.alloc(hlen)\n  v.fill(1)\n  var k = Buffer.alloc(hlen)\n  k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n  var bits = new BN(obits)\n  var shift = (obits.length << 3) - q.bitLength()\n  if (shift > 0) bits.ishrn(shift)\n  return bits\n}\n\nfunction bits2octets (bits, q) {\n  bits = bits2int(bits, q)\n  bits = bits.mod(q)\n  var out = Buffer.from(bits.toArray())\n  if (out.length < q.byteLength()) {\n    var zeros = Buffer.alloc(q.byteLength() - out.length)\n    out = Buffer.concat([zeros, out])\n  }\n  return out\n}\n\nfunction makeKey (q, kv, algo) {\n  var t\n  var k\n\n  do {\n    t = Buffer.alloc(0)\n\n    while (t.length * 8 < q.bitLength()) {\n      kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n      t = Buffer.concat([t, kv.v])\n    }\n\n    k = bits2int(t, q)\n    kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n    kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n  } while (k.cmp(q) !== -1)\n\n  return k\n}\n\nfunction makeR (g, k, p, q) {\n  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n  var pub = parseKeys(key)\n  if (pub.type === 'ec') {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n    return ecVerify(sig, hash, pub)\n  } else if (pub.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong public key type')\n    return dsaVerify(sig, hash, pub)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = pub.modulus.byteLength()\n  var pad = [1]\n  var padNum = 0\n  while (hash.length + pad.length + 2 < len) {\n    pad.push(0xff)\n    padNum++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = Buffer.from(pad)\n  var red = BN.mont(pub.modulus)\n  sig = new BN(sig).toRed(red)\n\n  sig = sig.redPow(new BN(pub.publicExponent))\n  sig = Buffer.from(sig.fromRed().toArray())\n  var out = padNum < 8 ? 1 : 0\n  len = Math.min(sig.length, pad.length)\n  if (sig.length !== pad.length) out = 1\n\n  i = -1\n  while (++i < len) out |= sig[i] ^ pad[i]\n  return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n  var curveId = curves[pub.data.algorithm.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var pubkey = pub.data.subjectPrivateKey.data\n\n  return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n  var p = pub.data.p\n  var q = pub.data.q\n  var g = pub.data.g\n  var y = pub.data.pub_key\n  var unpacked = parseKeys.signature.decode(sig, 'der')\n  var s = unpacked.s\n  var r = unpacked.r\n  checkValue(s, q)\n  checkValue(r, q)\n  var montp = BN.mont(p)\n  var w = s.invm(q)\n  var v = g.toRed(montp)\n    .redPow(new BN(hash).mul(w).mod(q))\n    .fromRed()\n    .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n    .mod(p)\n    .mod(q)\n  return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n  if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n  if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n  algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n  algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hashType = data.hash\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nSign.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = Buffer.from(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n  this.end()\n  var hash = this._hash.digest()\n  var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n  return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = Buffer.from(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n  if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n  this.end()\n  var hash = this._hash.digest()\n  return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n  return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n  return new Verify(algorithm)\n}\n\nmodule.exports = {\n  Sign: createSign,\n  Verify: createVerify,\n  createSign: createSign,\n  createVerify: createVerify\n}\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n  return new ECDH(curve)\n}\n\nvar aliases = {\n  secp256k1: {\n    name: 'secp256k1',\n    byteLength: 32\n  },\n  secp224r1: {\n    name: 'p224',\n    byteLength: 28\n  },\n  prime256v1: {\n    name: 'p256',\n    byteLength: 32\n  },\n  prime192v1: {\n    name: 'p192',\n    byteLength: 24\n  },\n  ed25519: {\n    name: 'ed25519',\n    byteLength: 32\n  },\n  secp384r1: {\n    name: 'p384',\n    byteLength: 48\n  },\n  secp521r1: {\n    name: 'p521',\n    byteLength: 66\n  }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n  this.curveType = aliases[curve]\n  if (!this.curveType) {\n    this.curveType = {\n      name: curve\n    }\n  }\n  this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n  this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n  this.keys = this.curve.genKeyPair()\n  return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n  inenc = inenc || 'utf8'\n  if (!Buffer.isBuffer(other)) {\n    other = new Buffer(other, inenc)\n  }\n  var otherPub = this.curve.keyFromPublic(other).getPublic()\n  var out = otherPub.mul(this.keys.getPrivate()).getX()\n  return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n  var key = this.keys.getPublic(format === 'compressed', true)\n  if (format === 'hybrid') {\n    if (key[key.length - 1] % 2) {\n      key[0] = 7\n    } else {\n      key[0] = 6\n    }\n  }\n  return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n  return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc)\n  }\n  this.keys._importPublic(pub)\n  return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc)\n  }\n\n  var _priv = new BN(priv)\n  _priv = _priv.toString(16)\n  this.keys = this.curve.genKeyPair()\n  this.keys._importPrivate(_priv)\n  return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n  if (!Array.isArray(bn)) {\n    bn = bn.toArray()\n  }\n  var buf = new Buffer(bn)\n  if (len && buf.length < len) {\n    var zeros = new Buffer(len - buf.length)\n    zeros.fill(0)\n    buf = Buffer.concat([zeros, buf])\n  }\n  if (!enc) {\n    return buf\n  } else {\n    return buf.toString(enc)\n  }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n  var t = Buffer.alloc(0)\n  var i = 0\n  var c\n  while (t.length < len) {\n    c = i2ops(i++)\n    t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n  }\n  return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n  var out = Buffer.allocUnsafe(4)\n  out.writeUInt32BE(c, 0)\n  return out\n}\n", "module.exports = function xor (a, b) {\n  var len = a.length\n  var i = -1\n  while (++i < len) {\n    a[i] ^= b[i]\n  }\n  return a\n}\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n  return Buffer.from(paddedMsg\n    .toRed(BN.mont(key.modulus))\n    .redPow(new BN(key.publicExponent))\n    .fromRed()\n    .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n  var padding\n  if (publicKey.padding) {\n    padding = publicKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n  var key = parseKeys(publicKey)\n  var paddedMsg\n  if (padding === 4) {\n    paddedMsg = oaep(key, msg)\n  } else if (padding === 1) {\n    paddedMsg = pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    paddedMsg = new BN(msg)\n    if (paddedMsg.cmp(key.modulus) >= 0) {\n      throw new Error('data too long for modulus')\n    }\n  } else {\n    throw new Error('unknown padding')\n  }\n  if (reverse) {\n    return crt(paddedMsg, key)\n  } else {\n    return withPublic(paddedMsg, key)\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var mLen = msg.length\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  var hLen2 = 2 * hLen\n  if (mLen > k - hLen2 - 2) {\n    throw new Error('message too long')\n  }\n  var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n  var dblen = k - hLen - 1\n  var seed = randomBytes(hLen)\n  var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n  var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n  return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n  var mLen = msg.length\n  var k = key.modulus.byteLength()\n  if (mLen > k - 11) {\n    throw new Error('message too long')\n  }\n  var ps\n  if (reverse) {\n    ps = Buffer.alloc(k - mLen - 3, 0xff)\n  } else {\n    ps = nonZero(k - mLen - 3)\n  }\n  return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n  var out = Buffer.allocUnsafe(len)\n  var i = 0\n  var cache = randomBytes(len * 2)\n  var cur = 0\n  var num\n  while (i < len) {\n    if (cur === cache.length) {\n      cache = randomBytes(len * 2)\n      cur = 0\n    }\n    num = cache[cur++]\n    if (num) {\n      out[i++] = num\n    }\n  }\n  return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n  var padding\n  if (privateKey.padding) {\n    padding = privateKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n\n  var key = parseKeys(privateKey)\n  var k = key.modulus.byteLength()\n  if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n    throw new Error('decryption error')\n  }\n  var msg\n  if (reverse) {\n    msg = withPublic(new BN(enc), key)\n  } else {\n    msg = crt(enc, key)\n  }\n  var zBuffer = Buffer.alloc(k - msg.length)\n  msg = Buffer.concat([zBuffer, msg], k)\n  if (padding === 4) {\n    return oaep(key, msg)\n  } else if (padding === 1) {\n    return pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    return msg\n  } else {\n    throw new Error('unknown padding')\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  if (msg[0] !== 0) {\n    throw new Error('decryption error')\n  }\n  var maskedSeed = msg.slice(1, hLen + 1)\n  var maskedDb = msg.slice(hLen + 1)\n  var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n  var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n  if (compare(iHash, db.slice(0, hLen))) {\n    throw new Error('decryption error')\n  }\n  var i = hLen\n  while (db[i] === 0) {\n    i++\n  }\n  if (db[i++] !== 1) {\n    throw new Error('decryption error')\n  }\n  return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n  var p1 = msg.slice(0, 2)\n  var i = 2\n  var status = 0\n  while (msg[i++] !== 0) {\n    if (i >= msg.length) {\n      status++\n      break\n    }\n  }\n  var ps = msg.slice(2, i - 1)\n\n  if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n    status++\n  }\n  if (ps.length < 8) {\n    status++\n  }\n  if (status) {\n    throw new Error('decryption error')\n  }\n  return msg.slice(i)\n}\nfunction compare (a, b) {\n  a = Buffer.from(a)\n  b = Buffer.from(b)\n  var dif = 0\n  var len = a.length\n  if (a.length !== b.length) {\n    dif++\n    len = Math.min(a.length, b.length)\n  }\n  var i = -1\n  while (++i < len) {\n    dif += (a[i] ^ b[i])\n  }\n  return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n  return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n  return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n  throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n  if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n    throw new TypeError('offset must be a number')\n  }\n\n  if (offset > kMaxUint32 || offset < 0) {\n    throw new TypeError('offset must be a uint32')\n  }\n\n  if (offset > kBufferMaxLength || offset > length) {\n    throw new RangeError('offset out of range')\n  }\n}\n\nfunction assertSize (size, offset, length) {\n  if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n    throw new TypeError('size must be a number')\n  }\n\n  if (size > kMaxUint32 || size < 0) {\n    throw new TypeError('size must be a uint32')\n  }\n\n  if (size + offset > length || size > kBufferMaxLength) {\n    throw new RangeError('buffer too small')\n  }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n  exports.randomFill = randomFill\n  exports.randomFillSync = randomFillSync\n} else {\n  exports.randomFill = oldBrowser\n  exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  if (typeof offset === 'function') {\n    cb = offset\n    offset = 0\n    size = buf.length\n  } else if (typeof size === 'function') {\n    cb = size\n    size = buf.length - offset\n  } else if (typeof cb !== 'function') {\n    throw new TypeError('\"cb\" argument must be a function')\n  }\n  assertOffset(offset, buf.length)\n  assertSize(size, offset, buf.length)\n  return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n  if (process.browser) {\n    var ourBuf = buf.buffer\n    var uint = new Uint8Array(ourBuf, offset, size)\n    crypto.getRandomValues(uint)\n    if (cb) {\n      process.nextTick(function () {\n        cb(null, buf)\n      })\n      return\n    }\n    return buf\n  }\n  if (cb) {\n    randombytes(size, function (err, bytes) {\n      if (err) {\n        return cb(err)\n      }\n      bytes.copy(buf, offset)\n      cb(null, buf)\n    })\n    return\n  }\n  var bytes = randombytes(size)\n  bytes.copy(buf, offset)\n  return buf\n}\nfunction randomFillSync (buf, offset, size) {\n  if (typeof offset === 'undefined') {\n    offset = 0\n  }\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  assertOffset(offset, buf.length)\n\n  if (size === undefined) size = buf.length - offset\n\n  assertSize(size, offset, buf.length)\n\n  return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n  return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n//   'createCredentials'\n// ].forEach(function (name) {\n//   exports[name] = function () {\n//     throw new Error([\n//       'sorry, ' + name + ' is not implemented yet',\n//       'we accept pull requests',\n//       'https://github.com/crypto-browserify/crypto-browserify'\n//     ].join('\\n'))\n//   }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n  throw new Error([\n    'sorry, createCredentials is not implemented yet',\n    'we accept pull requests',\n    'https://github.com/crypto-browserify/crypto-browserify'\n  ].join('\\n'))\n}\n\nexports.constants = {\n  'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n  'DH_CHECK_P_NOT_PRIME': 1,\n  'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n  'DH_NOT_SUITABLE_GENERATOR': 8,\n  'NPN_ENABLED': 1,\n  'ALPN_ENABLED': 1,\n  'RSA_PKCS1_PADDING': 1,\n  'RSA_SSLV23_PADDING': 2,\n  'RSA_NO_PADDING': 3,\n  'RSA_PKCS1_OAEP_PADDING': 4,\n  'RSA_X931_PADDING': 5,\n  'RSA_PKCS1_PSS_PADDING': 6,\n  'POINT_CONVERSION_COMPRESSED': 2,\n  'POINT_CONVERSION_UNCOMPRESSED': 4,\n  'POINT_CONVERSION_HYBRID': 6\n}\n", "\"use strict\";\n/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utils = exports.curve25519 = exports.getSharedSecret = exports.sync = exports.verify = exports.sign = exports.getPublicKey = exports.Signature = exports.Point = exports.RistrettoPoint = exports.ExtendedPoint = exports.CURVE = void 0;\nconst nodeCrypto = require(\"crypto\");\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst CU_O = BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989');\nconst CURVE = Object.freeze({\n    a: BigInt(-1),\n    d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n    P: BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949'),\n    l: CU_O,\n    n: CU_O,\n    h: BigInt(8),\n    Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n    Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n});\nexports.CURVE = CURVE;\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nconst SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\nconst SQRT_D = BigInt('6853475219497561581579357271197624642482790079785650197046958215289687604742');\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\nclass ExtendedPoint {\n    constructor(x, y, z, t) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.t = t;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('ExtendedPoint#fromAffine: expected Point');\n        }\n        if (p.equals(Point.ZERO))\n            return ExtendedPoint.ZERO;\n        return new ExtendedPoint(p.x, p.y, _1n, mod(p.x * p.y));\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return this.toAffineBatch(points).map(this.fromAffine);\n    }\n    equals(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const X1Z2 = mod(X1 * Z2);\n        const X2Z1 = mod(X2 * Z1);\n        const Y1Z2 = mod(Y1 * Z2);\n        const Y2Z1 = mod(Y2 * Z1);\n        return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n    }\n    negate() {\n        return new ExtendedPoint(mod(-this.x), this.y, this.z, mod(-this.t));\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { a } = CURVE;\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(_2n * mod(Z1 * Z1));\n        const D = mod(a * A);\n        const x1y1 = X1 + Y1;\n        const E = mod(mod(x1y1 * x1y1) - A - B);\n        const G = D + B;\n        const F = G - C;\n        const H = D - B;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    add(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1, t: T1 } = this;\n        const { x: X2, y: Y2, z: Z2, t: T2 } = other;\n        const A = mod((Y1 - X1) * (Y2 + X2));\n        const B = mod((Y1 + X1) * (Y2 - X2));\n        const F = mod(B - A);\n        if (F === _0n)\n            return this.double();\n        const C = mod(Z1 * _2n * T2);\n        const D = mod(T1 * _2n * Z2);\n        const E = D + C;\n        const G = B + A;\n        const H = D - C;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    precomputeWindow(W) {\n        const windows = 1 + 256 / W;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(ExtendedPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = ExtendedPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = ExtendedPoint.ZERO;\n        let f = ExtendedPoint.ZERO;\n        const windows = 1 + 256 / W;\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            if (wbits === 0) {\n                let pr = precomputes[offset];\n                if (window % 2)\n                    pr = pr.negate();\n                f = f.add(pr);\n            }\n            else {\n                let cached = precomputes[offset + Math.abs(wbits) - 1];\n                if (wbits < 0)\n                    cached = cached.negate();\n                p = p.add(cached);\n            }\n        }\n        return ExtendedPoint.normalizeZ([p, f])[0];\n    }\n    multiply(scalar, affinePoint) {\n        return this.wNAF(normalizeScalar(scalar, CURVE.l), affinePoint);\n    }\n    multiplyUnsafe(scalar) {\n        let n = normalizeScalar(scalar, CURVE.l, false);\n        const G = ExtendedPoint.BASE;\n        const P0 = ExtendedPoint.ZERO;\n        if (n === _0n)\n            return P0;\n        if (this.equals(P0) || n === _1n)\n            return this;\n        if (this.equals(G))\n            return this.wNAF(n);\n        let p = P0;\n        let d = this;\n        while (n > _0n) {\n            if (n & _1n)\n                p = p.add(d);\n            d = d.double();\n            n >>= _1n;\n        }\n        return p;\n    }\n    isSmallOrder() {\n        return this.multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n    }\n    isTorsionFree() {\n        return this.multiplyUnsafe(CURVE.l).equals(ExtendedPoint.ZERO);\n    }\n    toAffine(invZ = invert(this.z)) {\n        const { x, y, z } = this;\n        const ax = mod(x * invZ);\n        const ay = mod(y * invZ);\n        const zz = mod(z * invZ);\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n    fromRistrettoBytes() {\n        legacyRist();\n    }\n    toRistrettoBytes() {\n        legacyRist();\n    }\n    fromRistrettoHash() {\n        legacyRist();\n    }\n}\nexports.ExtendedPoint = ExtendedPoint;\nExtendedPoint.BASE = new ExtendedPoint(CURVE.Gx, CURVE.Gy, _1n, mod(CURVE.Gx * CURVE.Gy));\nExtendedPoint.ZERO = new ExtendedPoint(_0n, _1n, _1n, _0n);\nfunction assertExtPoint(other) {\n    if (!(other instanceof ExtendedPoint))\n        throw new TypeError('ExtendedPoint expected');\n}\nfunction assertRstPoint(other) {\n    if (!(other instanceof RistrettoPoint))\n        throw new TypeError('RistrettoPoint expected');\n}\nfunction legacyRist() {\n    throw new Error('Legacy method: switch to RistrettoPoint');\n}\nclass RistrettoPoint {\n    constructor(ep) {\n        this.ep = ep;\n    }\n    static calcElligatorRistrettoMap(r0) {\n        const { d } = CURVE;\n        const r = mod(SQRT_M1 * r0 * r0);\n        const Ns = mod((r + _1n) * ONE_MINUS_D_SQ);\n        let c = BigInt(-1);\n        const D = mod((c - d * r) * mod(r + d));\n        let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D);\n        let s_ = mod(s * r0);\n        if (!edIsNegative(s_))\n            s_ = mod(-s_);\n        if (!Ns_D_is_sq)\n            s = s_;\n        if (!Ns_D_is_sq)\n            c = r;\n        const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D);\n        const s2 = s * s;\n        const W0 = mod((s + s) * D);\n        const W1 = mod(Nt * SQRT_AD_MINUS_ONE);\n        const W2 = mod(_1n - s2);\n        const W3 = mod(_1n + s2);\n        return new ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n    }\n    static hashToCurve(hex) {\n        hex = ensureBytes(hex, 64);\n        const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n        const R1 = this.calcElligatorRistrettoMap(r1);\n        const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n        const R2 = this.calcElligatorRistrettoMap(r2);\n        return new RistrettoPoint(R1.add(R2));\n    }\n    static fromHex(hex) {\n        hex = ensureBytes(hex, 32);\n        const { a, d } = CURVE;\n        const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n        const s = bytes255ToNumberLE(hex);\n        if (!equalBytes(numberTo32BytesLE(s), hex) || edIsNegative(s))\n            throw new Error(emsg);\n        const s2 = mod(s * s);\n        const u1 = mod(_1n + a * s2);\n        const u2 = mod(_1n - a * s2);\n        const u1_2 = mod(u1 * u1);\n        const u2_2 = mod(u2 * u2);\n        const v = mod(a * d * u1_2 - u2_2);\n        const { isValid, value: I } = invertSqrt(mod(v * u2_2));\n        const Dx = mod(I * u2);\n        const Dy = mod(I * Dx * v);\n        let x = mod((s + s) * Dx);\n        if (edIsNegative(x))\n            x = mod(-x);\n        const y = mod(u1 * Dy);\n        const t = mod(x * y);\n        if (!isValid || edIsNegative(t) || y === _0n)\n            throw new Error(emsg);\n        return new RistrettoPoint(new ExtendedPoint(x, y, _1n, t));\n    }\n    toRawBytes() {\n        let { x, y, z, t } = this.ep;\n        const u1 = mod(mod(z + y) * mod(z - y));\n        const u2 = mod(x * y);\n        const u2sq = mod(u2 * u2);\n        const { value: invsqrt } = invertSqrt(mod(u1 * u2sq));\n        const D1 = mod(invsqrt * u1);\n        const D2 = mod(invsqrt * u2);\n        const zInv = mod(D1 * D2 * t);\n        let D;\n        if (edIsNegative(t * zInv)) {\n            let _x = mod(y * SQRT_M1);\n            let _y = mod(x * SQRT_M1);\n            x = _x;\n            y = _y;\n            D = mod(D1 * INVSQRT_A_MINUS_D);\n        }\n        else {\n            D = D2;\n        }\n        if (edIsNegative(x * zInv))\n            y = mod(-y);\n        let s = mod((z - y) * D);\n        if (edIsNegative(s))\n            s = mod(-s);\n        return numberTo32BytesLE(s);\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toString() {\n        return this.toHex();\n    }\n    equals(other) {\n        assertRstPoint(other);\n        const a = this.ep;\n        const b = other.ep;\n        const one = mod(a.x * b.y) === mod(a.y * b.x);\n        const two = mod(a.y * b.y) === mod(a.x * b.x);\n        return one || two;\n    }\n    add(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.add(other.ep));\n    }\n    subtract(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.subtract(other.ep));\n    }\n    multiply(scalar) {\n        return new RistrettoPoint(this.ep.multiply(scalar));\n    }\n    multiplyUnsafe(scalar) {\n        return new RistrettoPoint(this.ep.multiplyUnsafe(scalar));\n    }\n}\nexports.RistrettoPoint = RistrettoPoint;\nRistrettoPoint.BASE = new RistrettoPoint(ExtendedPoint.BASE);\nRistrettoPoint.ZERO = new RistrettoPoint(ExtendedPoint.ZERO);\nconst pointPrecomputes = new WeakMap();\nclass Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    static fromHex(hex, strict = true) {\n        const { d, P } = CURVE;\n        hex = ensureBytes(hex, 32);\n        const normed = hex.slice();\n        normed[31] = hex[31] & ~0x80;\n        const y = bytesToNumberLE(normed);\n        if (strict && y >= P)\n            throw new Error('Expected 0 < hex < P');\n        if (!strict && y >= POW_2_256)\n            throw new Error('Expected 0 < hex < 2**256');\n        const y2 = mod(y * y);\n        const u = mod(y2 - _1n);\n        const v = mod(d * y2 + _1n);\n        let { isValid, value: x } = uvRatio(u, v);\n        if (!isValid)\n            throw new Error('Point.fromHex: invalid y coordinate');\n        const isXOdd = (x & _1n) === _1n;\n        const isLastByteOdd = (hex[31] & 0x80) !== 0;\n        if (isLastByteOdd !== isXOdd) {\n            x = mod(-x);\n        }\n        return new Point(x, y);\n    }\n    static async fromPrivateKey(privateKey) {\n        return (await getExtendedPublicKey(privateKey)).point;\n    }\n    toRawBytes() {\n        const bytes = numberTo32BytesLE(this.y);\n        bytes[31] |= this.x & _1n ? 0x80 : 0;\n        return bytes;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toX25519() {\n        const { y } = this;\n        const u = mod((_1n + y) * invert(_1n - y));\n        return numberTo32BytesLE(u);\n    }\n    isTorsionFree() {\n        return ExtendedPoint.fromAffine(this).isTorsionFree();\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(mod(-this.x), this.y);\n    }\n    add(other) {\n        return ExtendedPoint.fromAffine(this).add(ExtendedPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return ExtendedPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n}\nexports.Point = Point;\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _1n);\nclass Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex, 64);\n        const r = Point.fromHex(bytes.slice(0, 32), false);\n        const s = bytesToNumberLE(bytes.slice(32, 64));\n        return new Signature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!(r instanceof Point))\n            throw new Error('Expected Point instance');\n        normalizeScalar(s, CURVE.l, false);\n        return this;\n    }\n    toRawBytes() {\n        const u8 = new Uint8Array(64);\n        u8.set(this.r.toRawBytes());\n        u8.set(numberTo32BytesLE(this.s), 32);\n        return u8;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n}\nexports.Signature = Signature;\nfunction concatBytes(...arrays) {\n    if (!arrays.every((a) => a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array list');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Uint8Array expected');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex');\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction numberTo32BytesBE(num) {\n    const length = 32;\n    const hex = num.toString(16).padStart(length * 2, '0');\n    return hexToBytes(hex);\n}\nfunction numberTo32BytesLE(num) {\n    return numberTo32BytesBE(num).reverse();\n}\nfunction edIsNegative(num) {\n    return (mod(num) & _1n) === _1n;\n}\nfunction bytesToNumberLE(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    return BigInt('0x' + bytesToHex(Uint8Array.from(uint8a).reverse()));\n}\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nfunction bytes255ToNumberLE(bytes) {\n    return mod(bytesToNumberLE(bytes) & MAX_255B);\n}\nfunction mod(a, b = CURVE.P) {\n    const res = a % b;\n    return res >= _0n ? res : b + res;\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const tmp = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = mod(acc * tmp[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return tmp;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction pow_2_252_3(x) {\n    const { P } = CURVE;\n    const _5n = BigInt(5);\n    const _10n = BigInt(10);\n    const _20n = BigInt(20);\n    const _40n = BigInt(40);\n    const _80n = BigInt(80);\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P;\n    const b4 = (pow2(b2, _2n) * b2) % P;\n    const b5 = (pow2(b4, _1n) * x) % P;\n    const b10 = (pow2(b5, _5n) * b5) % P;\n    const b20 = (pow2(b10, _10n) * b10) % P;\n    const b40 = (pow2(b20, _20n) * b20) % P;\n    const b80 = (pow2(b40, _40n) * b40) % P;\n    const b160 = (pow2(b80, _80n) * b80) % P;\n    const b240 = (pow2(b160, _80n) * b80) % P;\n    const b250 = (pow2(b240, _10n) * b10) % P;\n    const pow_p_5_8 = (pow2(b250, _2n) * x) % P;\n    return { pow_p_5_8, b2 };\n}\nfunction uvRatio(u, v) {\n    const v3 = mod(v * v * v);\n    const v7 = mod(v3 * v3 * v);\n    const pow = pow_2_252_3(u * v7).pow_p_5_8;\n    let x = mod(u * v3 * pow);\n    const vx2 = mod(v * x * x);\n    const root1 = x;\n    const root2 = mod(x * SQRT_M1);\n    const useRoot1 = vx2 === u;\n    const useRoot2 = vx2 === mod(-u);\n    const noRoot = vx2 === mod(-u * SQRT_M1);\n    if (useRoot1)\n        x = root1;\n    if (useRoot2 || noRoot)\n        x = root2;\n    if (edIsNegative(x))\n        x = mod(-x);\n    return { isValid: useRoot1 || useRoot2, value: x };\n}\nfunction invertSqrt(number) {\n    return uvRatio(_1n, number);\n}\nfunction modlLE(hash) {\n    return mod(bytesToNumberLE(hash), CURVE.l);\n}\nfunction equalBytes(b1, b2) {\n    if (b1.length !== b2.length) {\n        return false;\n    }\n    for (let i = 0; i < b1.length; i++) {\n        if (b1[i] !== b2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction ensureBytes(hex, expectedLength) {\n    const bytes = hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n    if (typeof expectedLength === 'number' && bytes.length !== expectedLength)\n        throw new Error(`Expected ${expectedLength} bytes`);\n    return bytes;\n}\nfunction normalizeScalar(num, max, strict = true) {\n    if (!max)\n        throw new TypeError('Specify max value');\n    if (typeof num === 'number' && Number.isSafeInteger(num))\n        num = BigInt(num);\n    if (typeof num === 'bigint' && num < max) {\n        if (strict) {\n            if (_0n < num)\n                return num;\n        }\n        else {\n            if (_0n <= num)\n                return num;\n        }\n    }\n    throw new TypeError('Expected valid scalar: 0 < scalar < max');\n}\nfunction adjustBytes25519(bytes) {\n    bytes[0] &= 248;\n    bytes[31] &= 127;\n    bytes[31] |= 64;\n    return bytes;\n}\nfunction decodeScalar25519(n) {\n    return bytesToNumberLE(adjustBytes25519(ensureBytes(n, 32)));\n}\nfunction checkPrivateKey(key) {\n    key =\n        typeof key === 'bigint' || typeof key === 'number'\n            ? numberTo32BytesBE(normalizeScalar(key, POW_2_256))\n            : ensureBytes(key);\n    if (key.length !== 32)\n        throw new Error(`Expected 32 bytes`);\n    return key;\n}\nfunction getKeyFromHash(hashed) {\n    const head = adjustBytes25519(hashed.slice(0, 32));\n    const prefix = hashed.slice(32, 64);\n    const scalar = modlLE(head);\n    const point = Point.BASE.multiply(scalar);\n    const pointBytes = point.toRawBytes();\n    return { head, prefix, scalar, point, pointBytes };\n}\nlet _sha512Sync;\nfunction sha512s(...m) {\n    if (typeof _sha512Sync !== 'function')\n        throw new Error('utils.sha512Sync must be set to use sync methods');\n    return _sha512Sync(...m);\n}\nasync function getExtendedPublicKey(key) {\n    return getKeyFromHash(await exports.utils.sha512(checkPrivateKey(key)));\n}\nfunction getExtendedPublicKeySync(key) {\n    return getKeyFromHash(sha512s(checkPrivateKey(key)));\n}\nasync function getPublicKey(privateKey) {\n    return (await getExtendedPublicKey(privateKey)).pointBytes;\n}\nexports.getPublicKey = getPublicKey;\nfunction getPublicKeySync(privateKey) {\n    return getExtendedPublicKeySync(privateKey).pointBytes;\n}\nasync function sign(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = await getExtendedPublicKey(privateKey);\n    const r = modlLE(await exports.utils.sha512(prefix, message));\n    const R = Point.BASE.multiply(r);\n    const k = modlLE(await exports.utils.sha512(R.toRawBytes(), pointBytes, message));\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nexports.sign = sign;\nfunction signSync(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = getExtendedPublicKeySync(privateKey);\n    const r = modlLE(sha512s(prefix, message));\n    const R = Point.BASE.multiply(r);\n    const k = modlLE(sha512s(R.toRawBytes(), pointBytes, message));\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nfunction prepareVerification(sig, message, publicKey) {\n    message = ensureBytes(message);\n    if (!(publicKey instanceof Point))\n        publicKey = Point.fromHex(publicKey, false);\n    const { r, s } = sig instanceof Signature ? sig.assertValidity() : Signature.fromHex(sig);\n    const SB = ExtendedPoint.BASE.multiplyUnsafe(s);\n    return { r, s, SB, pub: publicKey, msg: message };\n}\nfunction finishVerification(publicKey, r, SB, hashed) {\n    const k = modlLE(hashed);\n    const kA = ExtendedPoint.fromAffine(publicKey).multiplyUnsafe(k);\n    const RkA = ExtendedPoint.fromAffine(r).add(kA);\n    return RkA.subtract(SB).multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n}\nasync function verify(sig, message, publicKey) {\n    const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n    const hashed = await exports.utils.sha512(r.toRawBytes(), pub.toRawBytes(), msg);\n    return finishVerification(pub, r, SB, hashed);\n}\nexports.verify = verify;\nfunction verifySync(sig, message, publicKey) {\n    const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n    const hashed = sha512s(r.toRawBytes(), pub.toRawBytes(), msg);\n    return finishVerification(pub, r, SB, hashed);\n}\nexports.sync = {\n    getExtendedPublicKey: getExtendedPublicKeySync,\n    getPublicKey: getPublicKeySync,\n    sign: signSync,\n    verify: verifySync,\n};\nasync function getSharedSecret(privateKey, publicKey) {\n    const { head } = await getExtendedPublicKey(privateKey);\n    const u = Point.fromHex(publicKey).toX25519();\n    return exports.curve25519.scalarMult(head, u);\n}\nexports.getSharedSecret = getSharedSecret;\nPoint.BASE._setWindowSize(8);\nfunction cswap(swap, x_2, x_3) {\n    const dummy = mod(swap * (x_2 - x_3));\n    x_2 = mod(x_2 - dummy);\n    x_3 = mod(x_3 + dummy);\n    return [x_2, x_3];\n}\nfunction montgomeryLadder(pointU, scalar) {\n    const { P } = CURVE;\n    const u = normalizeScalar(pointU, P);\n    const k = normalizeScalar(scalar, P);\n    const a24 = BigInt(121665);\n    const x_1 = u;\n    let x_2 = _1n;\n    let z_2 = _0n;\n    let x_3 = u;\n    let z_3 = _1n;\n    let swap = _0n;\n    let sw;\n    for (let t = BigInt(255 - 1); t >= _0n; t--) {\n        const k_t = (k >> t) & _1n;\n        swap ^= k_t;\n        sw = cswap(swap, x_2, x_3);\n        x_2 = sw[0];\n        x_3 = sw[1];\n        sw = cswap(swap, z_2, z_3);\n        z_2 = sw[0];\n        z_3 = sw[1];\n        swap = k_t;\n        const A = x_2 + z_2;\n        const AA = mod(A * A);\n        const B = x_2 - z_2;\n        const BB = mod(B * B);\n        const E = AA - BB;\n        const C = x_3 + z_3;\n        const D = x_3 - z_3;\n        const DA = mod(D * A);\n        const CB = mod(C * B);\n        const dacb = DA + CB;\n        const da_cb = DA - CB;\n        x_3 = mod(dacb * dacb);\n        z_3 = mod(x_1 * mod(da_cb * da_cb));\n        x_2 = mod(AA * BB);\n        z_2 = mod(E * (AA + mod(a24 * E)));\n    }\n    sw = cswap(swap, x_2, x_3);\n    x_2 = sw[0];\n    x_3 = sw[1];\n    sw = cswap(swap, z_2, z_3);\n    z_2 = sw[0];\n    z_3 = sw[1];\n    const { pow_p_5_8, b2 } = pow_2_252_3(z_2);\n    const xp2 = mod(pow2(pow_p_5_8, BigInt(3)) * b2);\n    return mod(x_2 * xp2);\n}\nfunction encodeUCoordinate(u) {\n    return numberTo32BytesLE(mod(u, CURVE.P));\n}\nfunction decodeUCoordinate(uEnc) {\n    const u = ensureBytes(uEnc, 32);\n    u[31] &= 127;\n    return bytesToNumberLE(u);\n}\nexports.curve25519 = {\n    BASE_POINT_U: '0900000000000000000000000000000000000000000000000000000000000000',\n    scalarMult(privateKey, publicKey) {\n        const u = decodeUCoordinate(publicKey);\n        const p = decodeScalar25519(privateKey);\n        const pu = montgomeryLadder(u, p);\n        if (pu === _0n)\n            throw new Error('Invalid private or public key received');\n        return encodeUCoordinate(pu);\n    },\n    scalarMultBase(privateKey) {\n        return exports.curve25519.scalarMult(privateKey, exports.curve25519.BASE_POINT_U);\n    },\n};\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexports.utils = {\n    bytesToHex,\n    hexToBytes,\n    concatBytes,\n    getExtendedPublicKey,\n    mod,\n    invert,\n    TORSION_SUBGROUP: [\n        '0100000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n        '0000000000000000000000000000000000000000000000000000000000000080',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n        'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n        '0000000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n    ],\n    hashToPrivateScalar: (hash) => {\n        hash = ensureBytes(hash);\n        if (hash.length < 40 || hash.length > 1024)\n            throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n        return mod(bytesToNumberLE(hash), CURVE.l - _1n) + _1n;\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return new Uint8Array(randomBytes(bytesLength).buffer);\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => {\n        return exports.utils.randomBytes(32);\n    },\n    sha512: async (...messages) => {\n        const message = concatBytes(...messages);\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-512', message.buffer);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            return Uint8Array.from(crypto.node.createHash('sha512').update(message).digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha512 function\");\n        }\n    },\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point.equals(Point.BASE) ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_2n);\n        return cached;\n    },\n    sha512Sync: undefined,\n};\nObject.defineProperties(exports.utils, {\n    sha512Sync: {\n        configurable: false,\n        get() {\n            return _sha512Sync;\n        },\n        set(val) {\n            if (!_sha512Sync)\n                _sha512Sync = val;\n        },\n    },\n});\n", "\"use strict\";\n/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utils = exports.schnorr = exports.verify = exports.signSync = exports.sign = exports.getSharedSecret = exports.recoverPublicKey = exports.getPublicKey = exports.Signature = exports.Point = exports.CURVE = void 0;\nconst nodeCrypto = require(\"crypto\");\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n    a: _0n,\n    b: BigInt(7),\n    P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n    n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n    h: _1n,\n    Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n    Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n    beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nexports.CURVE = CURVE;\nfunction weistrass(x) {\n    const { a, b } = CURVE;\n    const x2 = mod(x * x);\n    const x3 = mod(x2 * x);\n    return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n    constructor(message) {\n        super(message);\n    }\n}\nclass JacobianPoint {\n    constructor(x, y, z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('JacobianPoint#fromAffine: expected Point');\n        }\n        return new JacobianPoint(p.x, p.y, _1n);\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n    }\n    equals(other) {\n        if (!(other instanceof JacobianPoint))\n            throw new TypeError('JacobianPoint expected');\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const Z1Z1 = mod(Z1 * Z1);\n        const Z2Z2 = mod(Z2 * Z2);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        return U1 === U2 && S1 === S2;\n    }\n    negate() {\n        return new JacobianPoint(this.x, mod(-this.y), this.z);\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(B * B);\n        const x1b = X1 + B;\n        const D = mod(_2n * (mod(x1b * x1b) - A - C));\n        const E = mod(_3n * A);\n        const F = mod(E * E);\n        const X3 = mod(F - _2n * D);\n        const Y3 = mod(E * (D - X3) - _8n * C);\n        const Z3 = mod(_2n * Y1 * Z1);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    add(other) {\n        if (!(other instanceof JacobianPoint))\n            throw new TypeError('JacobianPoint expected');\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        if (X2 === _0n || Y2 === _0n)\n            return this;\n        if (X1 === _0n || Y1 === _0n)\n            return other;\n        const Z1Z1 = mod(Z1 * Z1);\n        const Z2Z2 = mod(Z2 * Z2);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        const H = mod(U2 - U1);\n        const r = mod(S2 - S1);\n        if (H === _0n) {\n            if (r === _0n) {\n                return this.double();\n            }\n            else {\n                return JacobianPoint.ZERO;\n            }\n        }\n        const HH = mod(H * H);\n        const HHH = mod(H * HH);\n        const V = mod(U1 * HH);\n        const X3 = mod(r * r - HHH - _2n * V);\n        const Y3 = mod(r * (V - X3) - S1 * HHH);\n        const Z3 = mod(Z1 * Z2 * H);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiplyUnsafe(scalar) {\n        const P0 = JacobianPoint.ZERO;\n        if (typeof scalar === 'bigint' && scalar === _0n)\n            return P0;\n        let n = normalizeScalar(scalar);\n        if (n === _1n)\n            return this;\n        if (!USE_ENDOMORPHISM) {\n            let p = P0;\n            let d = this;\n            while (n > _0n) {\n                if (n & _1n)\n                    p = p.add(d);\n                d = d.double();\n                n >>= _1n;\n            }\n            return p;\n        }\n        let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n        let k1p = P0;\n        let k2p = P0;\n        let d = this;\n        while (k1 > _0n || k2 > _0n) {\n            if (k1 & _1n)\n                k1p = k1p.add(d);\n            if (k2 & _1n)\n                k2p = k2p.add(d);\n            d = d.double();\n            k1 >>= _1n;\n            k2 >>= _1n;\n        }\n        if (k1neg)\n            k1p = k1p.negate();\n        if (k2neg)\n            k2p = k2p.negate();\n        k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n        return k1p.add(k2p);\n    }\n    precomputeWindow(W) {\n        const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(JacobianPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = JacobianPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = JacobianPoint.ZERO;\n        let f = JacobianPoint.ZERO;\n        const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            if (wbits === 0) {\n                let pr = precomputes[offset];\n                if (window % 2)\n                    pr = pr.negate();\n                f = f.add(pr);\n            }\n            else {\n                let cached = precomputes[offset + Math.abs(wbits) - 1];\n                if (wbits < 0)\n                    cached = cached.negate();\n                p = p.add(cached);\n            }\n        }\n        return { p, f };\n    }\n    multiply(scalar, affinePoint) {\n        let n = normalizeScalar(scalar);\n        let point;\n        let fake;\n        if (USE_ENDOMORPHISM) {\n            const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n            let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n            let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n            if (k1neg)\n                k1p = k1p.negate();\n            if (k2neg)\n                k2p = k2p.negate();\n            k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n            point = k1p.add(k2p);\n            fake = f1p.add(f2p);\n        }\n        else {\n            const { p, f } = this.wNAF(n, affinePoint);\n            point = p;\n            fake = f;\n        }\n        return JacobianPoint.normalizeZ([point, fake])[0];\n    }\n    toAffine(invZ = invert(this.z)) {\n        const { x, y, z } = this;\n        const iz1 = invZ;\n        const iz2 = mod(iz1 * iz1);\n        const iz3 = mod(iz2 * iz1);\n        const ax = mod(x * iz2);\n        const ay = mod(y * iz3);\n        const zz = mod(z * iz1);\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nclass Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    hasEvenY() {\n        return this.y % _2n === _0n;\n    }\n    static fromCompressedHex(bytes) {\n        const isShort = bytes.length === 32;\n        const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n        if (!isValidFieldElement(x))\n            throw new Error('Point is not on curve');\n        const y2 = weistrass(x);\n        let y = sqrtMod(y2);\n        const isYOdd = (y & _1n) === _1n;\n        if (isShort) {\n            if (isYOdd)\n                y = mod(-y);\n        }\n        else {\n            const isFirstByteOdd = (bytes[0] & 1) === 1;\n            if (isFirstByteOdd !== isYOdd)\n                y = mod(-y);\n        }\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromUncompressedHex(bytes) {\n        const x = bytesToNumber(bytes.subarray(1, 33));\n        const y = bytesToNumber(bytes.subarray(33, 65));\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        const len = bytes.length;\n        const header = bytes[0];\n        if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n            return this.fromCompressedHex(bytes);\n        }\n        if (len === 65 && header === 0x04)\n            return this.fromUncompressedHex(bytes);\n        throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n    }\n    static fromPrivateKey(privateKey) {\n        return Point.BASE.multiply(normalizePrivateKey(privateKey));\n    }\n    static fromSignature(msgHash, signature, recovery) {\n        msgHash = ensureBytes(msgHash);\n        const h = truncateHash(msgHash);\n        const { r, s } = normalizeSignature(signature);\n        if (recovery !== 0 && recovery !== 1) {\n            throw new Error('Cannot recover signature: invalid recovery bit');\n        }\n        const prefix = recovery & 1 ? '03' : '02';\n        const R = Point.fromHex(prefix + numTo32bStr(r));\n        const { n } = CURVE;\n        const rinv = invert(r, n);\n        const u1 = mod(-h * rinv, n);\n        const u2 = mod(s * rinv, n);\n        const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n        if (!Q)\n            throw new Error('Cannot recover signature: point at infinify');\n        Q.assertValidity();\n        return Q;\n    }\n    toRawBytes(isCompressed = false) {\n        return hexToBytes(this.toHex(isCompressed));\n    }\n    toHex(isCompressed = false) {\n        const x = numTo32bStr(this.x);\n        if (isCompressed) {\n            const prefix = this.hasEvenY() ? '02' : '03';\n            return `${prefix}${x}`;\n        }\n        else {\n            return `04${x}${numTo32bStr(this.y)}`;\n        }\n    }\n    toHexX() {\n        return this.toHex(true).slice(2);\n    }\n    toRawX() {\n        return this.toRawBytes(true).slice(1);\n    }\n    assertValidity() {\n        const msg = 'Point is not on elliptic curve';\n        const { x, y } = this;\n        if (!isValidFieldElement(x) || !isValidFieldElement(y))\n            throw new Error(msg);\n        const left = mod(y * y);\n        const right = weistrass(x);\n        if (mod(left - right) !== _0n)\n            throw new Error(msg);\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(this.x, mod(-this.y));\n    }\n    double() {\n        return JacobianPoint.fromAffine(this).double().toAffine();\n    }\n    add(other) {\n        return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n    multiplyAndAddUnsafe(Q, a, b) {\n        const P = JacobianPoint.fromAffine(this);\n        const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n        const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n        const sum = aP.add(bQ);\n        return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n    }\n}\nexports.Point = Point;\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n    return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n    if (data.length < 2 || data[0] !== 0x02) {\n        throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n    }\n    const len = data[1];\n    const res = data.subarray(2, len + 2);\n    if (!len || res.length !== len) {\n        throw new Error(`Invalid signature integer: wrong length`);\n    }\n    if (res[0] === 0x00 && res[1] <= 0x7f) {\n        throw new Error('Invalid signature integer: trailing length');\n    }\n    return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n    if (data.length < 2 || data[0] != 0x30) {\n        throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n    }\n    if (data[1] !== data.length - 2) {\n        throw new Error('Invalid signature: incorrect length');\n    }\n    const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n    const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n    if (rBytesLeft.length) {\n        throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n    }\n    return { r, s };\n}\nclass Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromCompact(hex) {\n        const arr = hex instanceof Uint8Array;\n        const name = 'Signature.fromCompact';\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`${name}: Expected string or Uint8Array`);\n        const str = arr ? bytesToHex(hex) : hex;\n        if (str.length !== 128)\n            throw new Error(`${name}: Expected 64-byte hex`);\n        return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n    }\n    static fromDER(hex) {\n        const arr = hex instanceof Uint8Array;\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n        const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n        return new Signature(r, s);\n    }\n    static fromHex(hex) {\n        return this.fromDER(hex);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isWithinCurveOrder(r))\n            throw new Error('Invalid Signature: r must be 0 < r < n');\n        if (!isWithinCurveOrder(s))\n            throw new Error('Invalid Signature: s must be 0 < s < n');\n    }\n    hasHighS() {\n        const HALF = CURVE.n >> _1n;\n        return this.s > HALF;\n    }\n    normalizeS() {\n        return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n    }\n    toDERRawBytes(isCompressed = false) {\n        return hexToBytes(this.toDERHex(isCompressed));\n    }\n    toDERHex(isCompressed = false) {\n        const sHex = sliceDER(numberToHexUnpadded(this.s));\n        if (isCompressed)\n            return sHex;\n        const rHex = sliceDER(numberToHexUnpadded(this.r));\n        const rLen = numberToHexUnpadded(rHex.length / 2);\n        const sLen = numberToHexUnpadded(sHex.length / 2);\n        const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n        return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n    }\n    toRawBytes() {\n        return this.toDERRawBytes();\n    }\n    toHex() {\n        return this.toDERHex();\n    }\n    toCompactRawBytes() {\n        return hexToBytes(this.toCompactHex());\n    }\n    toCompactHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n}\nexports.Signature = Signature;\nfunction concatBytes(...arrays) {\n    if (!arrays.every((b) => b instanceof Uint8Array))\n        throw new Error('Uint8Array list expected');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n    if (typeof num !== 'bigint')\n        throw new Error('Expected bigint');\n    if (!(_0n <= num && num < POW_2_256))\n        throw new Error('Expected number < 2^256');\n    return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n    const b = hexToBytes(numTo32bStr(num));\n    if (b.length !== 32)\n        throw new Error('Error: expected 32 bytes');\n    return b;\n}\nfunction numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n    }\n    return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction bytesToNumber(bytes) {\n    return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n    return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n    if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n        return BigInt(num);\n    if (typeof num === 'bigint' && isWithinCurveOrder(num))\n        return num;\n    throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction sqrtMod(x) {\n    const { P } = CURVE;\n    const _6n = BigInt(6);\n    const _11n = BigInt(11);\n    const _22n = BigInt(22);\n    const _23n = BigInt(23);\n    const _44n = BigInt(44);\n    const _88n = BigInt(88);\n    const b2 = (x * x * x) % P;\n    const b3 = (b2 * b2 * x) % P;\n    const b6 = (pow2(b3, _3n) * b3) % P;\n    const b9 = (pow2(b6, _3n) * b3) % P;\n    const b11 = (pow2(b9, _2n) * b2) % P;\n    const b22 = (pow2(b11, _11n) * b11) % P;\n    const b44 = (pow2(b22, _22n) * b22) % P;\n    const b88 = (pow2(b44, _44n) * b44) % P;\n    const b176 = (pow2(b88, _88n) * b88) % P;\n    const b220 = (pow2(b176, _44n) * b44) % P;\n    const b223 = (pow2(b220, _3n) * b3) % P;\n    const t1 = (pow2(b223, _23n) * b22) % P;\n    const t2 = (pow2(t1, _6n) * b2) % P;\n    return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const scratch = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = mod(acc * scratch[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst ENDO = {\n    a1: BigInt('0x3086d221a7d46bcde86c90e49284eb15'),\n    b1: -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3'),\n    a2: BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'),\n    b2: BigInt('0x3086d221a7d46bcde86c90e49284eb15'),\n    POW_2_128: BigInt('0x100000000000000000000000000000000'),\n};\nfunction splitScalarEndo(k) {\n    const { n } = CURVE;\n    const { a1, b1, a2, b2, POW_2_128 } = ENDO;\n    const c1 = divNearest(b2 * k, n);\n    const c2 = divNearest(-b1 * k, n);\n    let k1 = mod(k - c1 * a1 - c2 * a2, n);\n    let k2 = mod(-c1 * b1 - c2 * b2, n);\n    const k1neg = k1 > POW_2_128;\n    const k2neg = k2 > POW_2_128;\n    if (k1neg)\n        k1 = n - k1;\n    if (k2neg)\n        k2 = n - k2;\n    if (k1 > POW_2_128 || k2 > POW_2_128) {\n        throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n    }\n    return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n    const { n } = CURVE;\n    const byteLength = hash.length;\n    const delta = byteLength * 8 - 256;\n    let h = bytesToNumber(hash);\n    if (delta > 0)\n        h = h >> BigInt(delta);\n    if (h >= n)\n        h -= n;\n    return h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n    constructor() {\n        this.v = new Uint8Array(32).fill(1);\n        this.k = new Uint8Array(32).fill(0);\n        this.counter = 0;\n    }\n    hmac(...values) {\n        return exports.utils.hmacSha256(this.k, ...values);\n    }\n    hmacSync(...values) {\n        return _hmacSha256Sync(this.k, ...values);\n    }\n    checkSync() {\n        if (typeof _hmacSha256Sync !== 'function')\n            throw new ShaError('hmacSha256Sync needs to be set');\n    }\n    incr() {\n        if (this.counter >= 1000)\n            throw new Error('Tried 1,000 k values for sign(), all were invalid');\n        this.counter += 1;\n    }\n    async reseed(seed = new Uint8Array()) {\n        this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n        this.v = await this.hmac(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n        this.v = await this.hmac(this.v);\n    }\n    reseedSync(seed = new Uint8Array()) {\n        this.checkSync();\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n        this.v = this.hmacSync(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n        this.v = this.hmacSync(this.v);\n    }\n    async generate() {\n        this.incr();\n        this.v = await this.hmac(this.v);\n        return this.v;\n    }\n    generateSync() {\n        this.checkSync();\n        this.incr();\n        this.v = this.hmacSync(this.v);\n        return this.v;\n    }\n}\nfunction isWithinCurveOrder(num) {\n    return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n    return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n    const k = bytesToNumber(kBytes);\n    if (!isWithinCurveOrder(k))\n        return;\n    const { n } = CURVE;\n    const q = Point.BASE.multiply(k);\n    const r = mod(q.x, n);\n    if (r === _0n)\n        return;\n    const s = mod(invert(k, n) * mod(m + d * r, n), n);\n    if (s === _0n)\n        return;\n    const sig = new Signature(r, s);\n    const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n    return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n    let num;\n    if (typeof key === 'bigint') {\n        num = key;\n    }\n    else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n        num = BigInt(key);\n    }\n    else if (typeof key === 'string') {\n        if (key.length !== 64)\n            throw new Error('Expected 32 bytes of private key');\n        num = hexToNumber(key);\n    }\n    else if (key instanceof Uint8Array) {\n        if (key.length !== 32)\n            throw new Error('Expected 32 bytes of private key');\n        num = bytesToNumber(key);\n    }\n    else {\n        throw new TypeError('Expected valid private key');\n    }\n    if (!isWithinCurveOrder(num))\n        throw new Error('Expected private key: 0 < key < n');\n    return num;\n}\nfunction normalizePublicKey(publicKey) {\n    if (publicKey instanceof Point) {\n        publicKey.assertValidity();\n        return publicKey;\n    }\n    else {\n        return Point.fromHex(publicKey);\n    }\n}\nfunction normalizeSignature(signature) {\n    if (signature instanceof Signature) {\n        signature.assertValidity();\n        return signature;\n    }\n    try {\n        return Signature.fromDER(signature);\n    }\n    catch (error) {\n        return Signature.fromCompact(signature);\n    }\n}\nfunction getPublicKey(privateKey, isCompressed = false) {\n    return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexports.getPublicKey = getPublicKey;\nfunction recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n    return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nexports.recoverPublicKey = recoverPublicKey;\nfunction isProbPub(item) {\n    const arr = item instanceof Uint8Array;\n    const str = typeof item === 'string';\n    const len = (arr || str) && item.length;\n    if (arr)\n        return len === 33 || len === 65;\n    if (str)\n        return len === 66 || len === 130;\n    if (item instanceof Point)\n        return true;\n    return false;\n}\nfunction getSharedSecret(privateA, publicB, isCompressed = false) {\n    if (isProbPub(privateA))\n        throw new TypeError('getSharedSecret: first arg must be private key');\n    if (!isProbPub(publicB))\n        throw new TypeError('getSharedSecret: second arg must be public key');\n    const b = normalizePublicKey(publicB);\n    b.assertValidity();\n    return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nexports.getSharedSecret = getSharedSecret;\nfunction bits2int(bytes) {\n    const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n    return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n    const z1 = bits2int(bytes);\n    const z2 = mod(z1, CURVE.n);\n    return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n    return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n    if (msgHash == null)\n        throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n    const h1 = ensureBytes(msgHash);\n    const d = normalizePrivateKey(privateKey);\n    const seedArgs = [int2octets(d), bits2octets(h1)];\n    if (extraEntropy != null) {\n        if (extraEntropy === true)\n            extraEntropy = exports.utils.randomBytes(32);\n        const e = ensureBytes(extraEntropy);\n        if (e.length !== 32)\n            throw new Error('sign: Expected 32 bytes of extra data');\n        seedArgs.push(e);\n    }\n    const seed = concatBytes(...seedArgs);\n    const m = bits2int(h1);\n    return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n    let { sig, recovery } = recSig;\n    const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n    if (canonical && sig.hasHighS()) {\n        sig = sig.normalizeS();\n        recovery ^= 1;\n    }\n    const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n    return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    let sig;\n    const drbg = new HmacDrbg();\n    await drbg.reseed(seed);\n    while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n        await drbg.reseed();\n    return finalizeSig(sig, opts);\n}\nexports.sign = sign;\nfunction signSync(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    let sig;\n    const drbg = new HmacDrbg();\n    drbg.reseedSync(seed);\n    while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n        drbg.reseedSync();\n    return finalizeSig(sig, opts);\n}\nexports.signSync = signSync;\nconst vopts = { strict: true };\nfunction verify(signature, msgHash, publicKey, opts = vopts) {\n    let sig;\n    try {\n        sig = normalizeSignature(signature);\n        msgHash = ensureBytes(msgHash);\n    }\n    catch (error) {\n        return false;\n    }\n    const { r, s } = sig;\n    if (opts.strict && sig.hasHighS())\n        return false;\n    const h = truncateHash(msgHash);\n    let P;\n    try {\n        P = normalizePublicKey(publicKey);\n    }\n    catch (error) {\n        return false;\n    }\n    const { n } = CURVE;\n    const sinv = invert(s, n);\n    const u1 = mod(h * sinv, n);\n    const u2 = mod(r * sinv, n);\n    const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n    if (!R)\n        return false;\n    const v = mod(R.x, n);\n    return v === r;\n}\nexports.verify = verify;\nfunction schnorrChallengeFinalize(ch) {\n    return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        if (bytes.length !== 64)\n            throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n        const r = bytesToNumber(bytes.subarray(0, 32));\n        const s = bytesToNumber(bytes.subarray(32, 64));\n        return new SchnorrSignature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n            throw new Error('Invalid signature');\n    }\n    toHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n    toRawBytes() {\n        return hexToBytes(this.toHex());\n    }\n}\nfunction schnorrGetPublicKey(privateKey) {\n    return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n    constructor(message, privateKey, auxRand = exports.utils.randomBytes()) {\n        if (message == null)\n            throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n        this.m = ensureBytes(message);\n        const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n        this.px = x;\n        this.d = scalar;\n        this.rand = ensureBytes(auxRand);\n        if (this.rand.length !== 32)\n            throw new TypeError('sign: Expected 32 bytes of aux randomness');\n    }\n    getScalar(priv) {\n        const point = Point.fromPrivateKey(priv);\n        const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n        return { point, scalar, x: point.toRawX() };\n    }\n    initNonce(d, t0h) {\n        return numTo32b(d ^ bytesToNumber(t0h));\n    }\n    finalizeNonce(k0h) {\n        const k0 = mod(bytesToNumber(k0h), CURVE.n);\n        if (k0 === _0n)\n            throw new Error('sign: Creation of signature failed. k is zero');\n        const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n        return { R, rx, k };\n    }\n    finalizeSig(R, k, e, d) {\n        return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n    }\n    error() {\n        throw new Error('sign: Invalid signature produced');\n    }\n    async calc() {\n        const { m, d, px, rand } = this;\n        const tag = exports.utils.taggedHash;\n        const t = this.initNonce(d, await tag(TAGS.aux, rand));\n        const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n        const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n        const sig = this.finalizeSig(R, k, e, d);\n        if (!(await schnorrVerify(sig, m, px)))\n            this.error();\n        return sig;\n    }\n    calcSync() {\n        const { m, d, px, rand } = this;\n        const tag = exports.utils.taggedHashSync;\n        const t = this.initNonce(d, tag(TAGS.aux, rand));\n        const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n        const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n        const sig = this.finalizeSig(R, k, e, d);\n        if (!schnorrVerifySync(sig, m, px))\n            this.error();\n        return sig;\n    }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n    return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n    return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n    const raw = signature instanceof SchnorrSignature;\n    const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n    if (raw)\n        sig.assertValidity();\n    return {\n        ...sig,\n        m: ensureBytes(message),\n        P: normalizePublicKey(publicKey),\n    };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n    const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n    if (!R || !R.hasEvenY() || R.x !== r)\n        return false;\n    return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n    try {\n        const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n        const e = schnorrChallengeFinalize(await exports.utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n        return finalizeSchnorrVerify(r, P, s, e);\n    }\n    catch (error) {\n        return false;\n    }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n    try {\n        const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n        const e = schnorrChallengeFinalize(exports.utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n        return finalizeSchnorrVerify(r, P, s, e);\n    }\n    catch (error) {\n        if (error instanceof ShaError)\n            throw error;\n        return false;\n    }\n}\nexports.schnorr = {\n    Signature: SchnorrSignature,\n    getPublicKey: schnorrGetPublicKey,\n    sign: schnorrSign,\n    verify: schnorrVerify,\n    signSync: schnorrSignSync,\n    verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n    challenge: 'BIP0340/challenge',\n    aux: 'BIP0340/aux',\n    nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexports.utils = {\n    bytesToHex,\n    hexToBytes,\n    concatBytes,\n    mod,\n    invert,\n    isValidPrivateKey(privateKey) {\n        try {\n            normalizePrivateKey(privateKey);\n            return true;\n        }\n        catch (error) {\n            return false;\n        }\n    },\n    _bigintTo32Bytes: numTo32b,\n    _normalizePrivateKey: normalizePrivateKey,\n    hashToPrivateKey: (hash) => {\n        hash = ensureBytes(hash);\n        if (hash.length < 40 || hash.length > 1024)\n            throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n        const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n        return numTo32b(num);\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return Uint8Array.from(randomBytes(bytesLength));\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => {\n        return exports.utils.hashToPrivateKey(exports.utils.randomBytes(40));\n    },\n    sha256: async (...messages) => {\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHash } = crypto.node;\n            const hash = createHash('sha256');\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha256 function\");\n        }\n    },\n    hmacSha256: async (key, ...messages) => {\n        if (crypto.web) {\n            const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n            const message = concatBytes(...messages);\n            const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHmac } = crypto.node;\n            const hash = createHmac('sha256', key);\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have hmac-sha256 function\");\n        }\n    },\n    sha256Sync: undefined,\n    hmacSha256Sync: undefined,\n    taggedHash: async (tag, ...messages) => {\n        let tagP = TAGGED_HASH_PREFIXES[tag];\n        if (tagP === undefined) {\n            const tagH = await exports.utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n            tagP = concatBytes(tagH, tagH);\n            TAGGED_HASH_PREFIXES[tag] = tagP;\n        }\n        return exports.utils.sha256(tagP, ...messages);\n    },\n    taggedHashSync: (tag, ...messages) => {\n        if (typeof _sha256Sync !== 'function')\n            throw new ShaError('sha256Sync is undefined, you need to set it');\n        let tagP = TAGGED_HASH_PREFIXES[tag];\n        if (tagP === undefined) {\n            const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n            tagP = concatBytes(tagH, tagH);\n            TAGGED_HASH_PREFIXES[tag] = tagP;\n        }\n        return _sha256Sync(tagP, ...messages);\n    },\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_3n);\n        return cached;\n    },\n};\nObject.defineProperties(exports.utils, {\n    sha256Sync: {\n        configurable: false,\n        get() {\n            return _sha256Sync;\n        },\n        set(val) {\n            if (!_sha256Sync)\n                _sha256Sync = val;\n        },\n    },\n    hmacSha256Sync: {\n        configurable: false,\n        get() {\n            return _hmacSha256Sync;\n        },\n        set(val) {\n            if (!_hmacSha256Sync)\n                _hmacSha256Sync = val;\n        },\n    },\n});\n", "import * as Ed25519 from '@noble/ed25519';\nimport * as Secp256k1 from '@noble/secp256k1';\nimport InputValidator from './InputValidator';\nimport IonPublicKeyModel from './models/IonPublicKeyModel';\nimport IonPublicKeyPurpose from './enums/IonPublicKeyPurpose';\nimport JwkEd25519 from './models/JwkEd25519';\nimport JwkEs256k from './models/JwkEs256k';\nimport { base64url } from 'multiformats/bases/base64';\n\n/**\n * Class containing operations related to keys used in ION.\n */\nexport default class IonKey {\n  /**\n   * Generates SECP256K1 key pair to be used in an operation.\n   * Mainly used for testing.\n   * @returns [publicKey, privateKey]\n   */\n  public static async generateEs256kDidDocumentKeyPair (input: { id: string, purposes?: IonPublicKeyPurpose[] }): Promise<[IonPublicKeyModel, JwkEs256k]> {\n    const id = input.id;\n    const purposes = input.purposes;\n\n    InputValidator.validateId(id);\n    InputValidator.validatePublicKeyPurposes(purposes);\n\n    const [publicKey, privateKey] = await IonKey.generateEs256kKeyPair();\n    const publicKeyModel: IonPublicKeyModel = {\n      id,\n      type: 'EcdsaSecp256k1VerificationKey2019',\n      publicKeyJwk: publicKey\n    };\n\n    // Only add the `purposes` property If given `purposes` array has at least an entry.\n    if (purposes !== undefined && purposes.length > 0) {\n      publicKeyModel.purposes = purposes;\n    }\n\n    return [publicKeyModel, privateKey];\n  }\n\n  /**\n   * Generates SECP256K1 key pair for ION operation use.\n   * @returns [publicKey, privateKey]\n   */\n  public static async generateEs256kOperationKeyPair (): Promise<[JwkEs256k, JwkEs256k]> {\n    const keyPair = await IonKey.generateEs256kKeyPair();\n    return keyPair;\n  }\n\n  private static async generateEs256kKeyPair (): Promise<[JwkEs256k, JwkEs256k]> {\n    const privateKeyBytes = Secp256k1.utils.randomPrivateKey();\n    // the public key is uncompressed which means that it contains both the x and y values.\n    // the first byte is a header that indicates whether the key is uncompressed (0x04 if uncompressed).\n    // bytes 1 - 32 represent X\n    // bytes 33 - 64 represent Y\n    const publicKeyBytes = await Secp256k1.getPublicKey(privateKeyBytes);\n\n    const d = base64url.baseEncode(privateKeyBytes);\n    // skip the first byte because it's used as a header to indicate whether the key is uncompressed\n    const x = base64url.baseEncode(publicKeyBytes.subarray(1, 33));\n    const y = base64url.baseEncode(publicKeyBytes.subarray(33, 65));\n\n    const publicJwk = {\n      // alg: 'ES256K',\n      kty: 'EC',\n      crv: 'secp256k1',\n      x,\n      y\n    };\n    const privateJwk = { ...publicJwk, d };\n\n    return [publicJwk, privateJwk];\n  }\n\n  /**\n   * Generates Ed25519 key pair to be used in an operation.\n   * Mainly used for testing.\n   * @returns [publicKey, privateKey]\n   */\n  public static async generateEd25519DidDocumentKeyPair (input: { id: string, purposes?: IonPublicKeyPurpose[] }): Promise<[IonPublicKeyModel, JwkEd25519]> {\n    const id = input.id;\n    const purposes = input.purposes;\n\n    InputValidator.validateId(id);\n    InputValidator.validatePublicKeyPurposes(purposes);\n\n    const [publicKey, privateKey] = await IonKey.generateEd25519KeyPair();\n    const publicKeyModel: IonPublicKeyModel = {\n      id,\n      type: 'JsonWebKey2020',\n      publicKeyJwk: publicKey\n    };\n\n    // Only add the `purposes` property If given `purposes` array has at least an entry.\n    if (purposes !== undefined && purposes.length > 0) {\n      publicKeyModel.purposes = purposes;\n    }\n\n    return [publicKeyModel, privateKey];\n  }\n\n  /**\n   * Generates Ed25519 key pair for ION operation use.\n   * @returns [publicKey, privateKey]\n   */\n  public static async generateEd25519OperationKeyPair (): Promise<[JwkEd25519, JwkEd25519]> {\n    const keyPair = await IonKey.generateEd25519KeyPair();\n    return keyPair;\n  }\n\n  private static async generateEd25519KeyPair (): Promise<[JwkEd25519, JwkEd25519]> {\n    const privateKeyBytes = Ed25519.utils.randomPrivateKey();\n    const publicKeyBytes = await Ed25519.getPublicKey(privateKeyBytes);\n\n    const d = base64url.baseEncode(privateKeyBytes);\n    const x = base64url.baseEncode(publicKeyBytes);\n\n    const publicJwk = {\n      // alg: 'EdDSA',\n      kty: 'OKP',\n      crv: 'Ed25519',\n      x\n    };\n    const privateJwk = { ...publicJwk, d };\n\n    return [publicJwk, privateJwk];\n  }\n\n  public static isJwkEs256k (key: JwkEs256k | JwkEd25519): key is JwkEs256k {\n    return key.crv === 'secp256k1' && key.kty === 'EC';\n  };\n\n  public static isJwkEd25519 (key: JwkEs256k | JwkEd25519): key is JwkEd25519 {\n    return key.crv === 'Ed25519' && key.kty === 'OKP';\n  };\n}\n", "/**\n * Supported ION networks.\n */\nenum IonNetwork {\n  Mainnet = 'mainnet',\n  Testnet = 'test'\n}\n\nexport default IonNetwork;\n", "/**\n * DID Document key purpose.\n */\nenum IonPublicKeyPurpose {\n  Authentication = 'authentication',\n  AssertionMethod = 'assertionMethod',\n  CapabilityInvocation = 'capabilityInvocation',\n  CapabilityDelegation = 'capabilityDelegation',\n  KeyAgreement = 'keyAgreement'\n}\n\nexport default IonPublicKeyPurpose;\n", "import * as Secp256k1 from '@noble/secp256k1';\nimport Encoder from './Encoder';\nimport ISigner from './interfaces/ISigner';\nimport InputValidator from './InputValidator';\nimport JwkEs256k from './models/JwkEs256k';\nimport OperationKeyType from './enums/OperationKeyType';\nimport { base64url } from 'multiformats/bases/base64';\nimport { sha256 } from 'multiformats/hashes/sha2';\n\n/**\n * An ISigner implementation that uses a given local private key.\n */\nexport default class LocalSigner implements ISigner {\n  /**\n   * Creates a new local signer using the given private key.\n   */\n  public static create (privateKey: JwkEs256k): ISigner {\n    return new LocalSigner(privateKey);\n  }\n\n  private constructor (private privateKey: JwkEs256k) {\n    InputValidator.validateEs256kOperationKey(privateKey, OperationKeyType.Private);\n  }\n\n  public async sign (header: object, content: object): Promise<string> {\n    const headerString = JSON.stringify(header);\n    const headerBytes = Encoder.stringToBytes(headerString);\n    const encodedHeader = base64url.baseEncode(headerBytes);\n\n    const payloadString = JSON.stringify(content);\n    const payloadBytes = Encoder.stringToBytes(payloadString);\n    const encodedPayload = base64url.baseEncode(payloadBytes);\n\n    const signingContentString = `${encodedHeader}.${encodedPayload}`;\n    const signingContentBytes = Encoder.stringToBytes(signingContentString);\n    const contentHash = await sha256.encode(signingContentBytes);\n\n    const privateKeyBytes = base64url.baseDecode(this.privateKey.d!);\n    const signature = await Secp256k1.sign(contentHash, privateKeyBytes, { der: false });\n\n    const encodedSignature = base64url.baseEncode(signature);\n\n    const compactJws = `${encodedHeader}.${encodedPayload}.${encodedSignature}`;\n    return compactJws;\n  }\n}\n", "// NOTE: Aliases to classes and interfaces are used for external consumption.\n\n// SDK exports.\nimport ISigner from './interfaces/ISigner';\nimport IonDid from './IonDid';\nimport IonDocumentModel from './models/IonDocumentModel';\nimport IonKey from './IonKey';\nimport IonNetwork from './enums/IonNetwork';\nimport IonPublicKeyModel from './models/IonPublicKeyModel';\nimport IonPublicKeyPurpose from './enums/IonPublicKeyPurpose';\nimport IonRequest from './IonRequest';\nimport IonSdkConfig from './IonSdkConfig';\nimport IonServiceModel from './models/IonServiceModel';\nimport JwkEd25519 from './models/JwkEd25519';\nimport JwkEs256k from './models/JwkEs256k';\nimport LocalSigner from './LocalSigner';\n\nexport {\n  ISigner,\n  IonDid,\n  IonDocumentModel,\n  IonKey,\n  IonNetwork,\n  IonPublicKeyModel,\n  IonPublicKeyPurpose,\n  IonRequest,\n  IonSdkConfig,\n  IonServiceModel,\n  JwkEd25519,\n  JwkEs256k,\n  LocalSigner\n};\n", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/*!\n * hash-wasm (https://www.npmjs.com/package/hash-wasm)\n * (c) Dani Biro\n * @license MIT\n */\n\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.hashwasm = {}));\n}(this, (function (exports) { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    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    }\n\n    class Mutex {\n        constructor() {\n            this.mutex = Promise.resolve();\n        }\n        lock() {\n            let begin = () => { };\n            this.mutex = this.mutex.then(() => new Promise(begin));\n            return new Promise((res) => {\n                begin = res;\n            });\n        }\n        dispatch(fn) {\n            return __awaiter(this, void 0, void 0, function* () {\n                const unlock = yield this.lock();\n                try {\n                    return yield Promise.resolve(fn());\n                }\n                finally {\n                    unlock();\n                }\n            });\n        }\n    }\n\n    /* eslint-disable import/prefer-default-export */\n    /* eslint-disable no-bitwise */\n    var _a;\n    function getGlobal() {\n        if (typeof globalThis !== 'undefined')\n            return globalThis;\n        // eslint-disable-next-line no-restricted-globals\n        if (typeof self !== 'undefined')\n            return self;\n        if (typeof window !== 'undefined')\n            return window;\n        return global;\n    }\n    const globalObject = getGlobal();\n    const nodeBuffer = (_a = globalObject.Buffer) !== null && _a !== void 0 ? _a : null;\n    const textEncoder = globalObject.TextEncoder ? new globalObject.TextEncoder() : null;\n    function intArrayToString(arr, len) {\n        return String.fromCharCode(...arr.subarray(0, len));\n    }\n    function hexCharCodesToInt(a, b) {\n        return (((a & 0xF) + ((a >> 6) | ((a >> 3) & 0x8))) << 4) | ((b & 0xF) + ((b >> 6) | ((b >> 3) & 0x8)));\n    }\n    function writeHexToUInt8(buf, str) {\n        const size = str.length >> 1;\n        for (let i = 0; i < size; i++) {\n            const index = i << 1;\n            buf[i] = hexCharCodesToInt(str.charCodeAt(index), str.charCodeAt(index + 1));\n        }\n    }\n    function hexStringEqualsUInt8(str, buf) {\n        if (str.length !== buf.length * 2) {\n            return false;\n        }\n        for (let i = 0; i < buf.length; i++) {\n            const strIndex = i << 1;\n            if (buf[i] !== hexCharCodesToInt(str.charCodeAt(strIndex), str.charCodeAt(strIndex + 1))) {\n                return false;\n            }\n        }\n        return true;\n    }\n    const alpha = 'a'.charCodeAt(0) - 10;\n    const digit = '0'.charCodeAt(0);\n    function getDigestHex(tmpBuffer, input, hashLength) {\n        let p = 0;\n        /* eslint-disable no-plusplus */\n        for (let i = 0; i < hashLength; i++) {\n            let nibble = input[i] >>> 4;\n            tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;\n            nibble = input[i] & 0xF;\n            tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;\n        }\n        /* eslint-enable no-plusplus */\n        return String.fromCharCode.apply(null, tmpBuffer);\n    }\n    const getUInt8Buffer = nodeBuffer !== null\n        ? (data) => {\n            if (typeof data === 'string') {\n                const buf = nodeBuffer.from(data, 'utf8');\n                return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);\n            }\n            if (nodeBuffer.isBuffer(data)) {\n                return new Uint8Array(data.buffer, data.byteOffset, data.length);\n            }\n            if (ArrayBuffer.isView(data)) {\n                return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n            }\n            throw new Error('Invalid data type!');\n        }\n        : (data) => {\n            if (typeof data === 'string') {\n                return textEncoder.encode(data);\n            }\n            if (ArrayBuffer.isView(data)) {\n                return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n            }\n            throw new Error('Invalid data type!');\n        };\n    const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    const base64Lookup = new Uint8Array(256);\n    for (let i = 0; i < base64Chars.length; i++) {\n        base64Lookup[base64Chars.charCodeAt(i)] = i;\n    }\n    function encodeBase64(data, pad = true) {\n        const len = data.length;\n        const extraBytes = len % 3;\n        const parts = [];\n        const len2 = len - extraBytes;\n        for (let i = 0; i < len2; i += 3) {\n            const tmp = ((data[i] << 16) & 0xFF0000)\n                + ((data[i + 1] << 8) & 0xFF00)\n                + (data[i + 2] & 0xFF);\n            const triplet = base64Chars.charAt((tmp >> 18) & 0x3F)\n                + base64Chars.charAt((tmp >> 12) & 0x3F)\n                + base64Chars.charAt((tmp >> 6) & 0x3F)\n                + base64Chars.charAt(tmp & 0x3F);\n            parts.push(triplet);\n        }\n        if (extraBytes === 1) {\n            const tmp = data[len - 1];\n            const a = base64Chars.charAt(tmp >> 2);\n            const b = base64Chars.charAt((tmp << 4) & 0x3F);\n            parts.push(`${a}${b}`);\n            if (pad) {\n                parts.push('==');\n            }\n        }\n        else if (extraBytes === 2) {\n            const tmp = (data[len - 2] << 8) + data[len - 1];\n            const a = base64Chars.charAt(tmp >> 10);\n            const b = base64Chars.charAt((tmp >> 4) & 0x3F);\n            const c = base64Chars.charAt((tmp << 2) & 0x3F);\n            parts.push(`${a}${b}${c}`);\n            if (pad) {\n                parts.push('=');\n            }\n        }\n        return parts.join('');\n    }\n    function getDecodeBase64Length(data) {\n        let bufferLength = Math.floor(data.length * 0.75);\n        const len = data.length;\n        if (data[len - 1] === '=') {\n            bufferLength -= 1;\n            if (data[len - 2] === '=') {\n                bufferLength -= 1;\n            }\n        }\n        return bufferLength;\n    }\n    function decodeBase64(data) {\n        const bufferLength = getDecodeBase64Length(data);\n        const len = data.length;\n        const bytes = new Uint8Array(bufferLength);\n        let p = 0;\n        for (let i = 0; i < len; i += 4) {\n            const encoded1 = base64Lookup[data.charCodeAt(i)];\n            const encoded2 = base64Lookup[data.charCodeAt(i + 1)];\n            const encoded3 = base64Lookup[data.charCodeAt(i + 2)];\n            const encoded4 = base64Lookup[data.charCodeAt(i + 3)];\n            bytes[p] = (encoded1 << 2) | (encoded2 >> 4);\n            p += 1;\n            bytes[p] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n            p += 1;\n            bytes[p] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n            p += 1;\n        }\n        return bytes;\n    }\n\n    const MAX_HEAP = 16 * 1024;\n    const WASM_FUNC_HASH_LENGTH = 4;\n    const wasmMutex = new Mutex();\n    const wasmModuleCache = new Map();\n    function WASMInterface(binary, hashLength) {\n        return __awaiter(this, void 0, void 0, function* () {\n            let wasmInstance = null;\n            let memoryView = null;\n            let initialized = false;\n            if (typeof WebAssembly === 'undefined') {\n                throw new Error('WebAssembly is not supported in this environment!');\n            }\n            const writeMemory = (data, offset = 0) => {\n                memoryView.set(data, offset);\n            };\n            const getMemory = () => memoryView;\n            const getExports = () => wasmInstance.exports;\n            const setMemorySize = (totalSize) => {\n                wasmInstance.exports.Hash_SetMemorySize(totalSize);\n                const arrayOffset = wasmInstance.exports.Hash_GetBuffer();\n                const memoryBuffer = wasmInstance.exports.memory.buffer;\n                memoryView = new Uint8Array(memoryBuffer, arrayOffset, totalSize);\n            };\n            const getStateSize = () => {\n                const view = new DataView(wasmInstance.exports.memory.buffer);\n                const stateSize = view.getUint32(wasmInstance.exports.STATE_SIZE, true);\n                return stateSize;\n            };\n            const loadWASMPromise = wasmMutex.dispatch(() => __awaiter(this, void 0, void 0, function* () {\n                if (!wasmModuleCache.has(binary.name)) {\n                    const asm = decodeBase64(binary.data);\n                    const promise = WebAssembly.compile(asm);\n                    wasmModuleCache.set(binary.name, promise);\n                }\n                const module = yield wasmModuleCache.get(binary.name);\n                wasmInstance = yield WebAssembly.instantiate(module, {\n                // env: {\n                //   emscripten_memcpy_big: (dest, src, num) => {\n                //     const memoryBuffer = wasmInstance.exports.memory.buffer;\n                //     const memView = new Uint8Array(memoryBuffer, 0);\n                //     memView.set(memView.subarray(src, src + num), dest);\n                //   },\n                //   print_memory: (offset, len) => {\n                //     const memoryBuffer = wasmInstance.exports.memory.buffer;\n                //     const memView = new Uint8Array(memoryBuffer, 0);\n                //     console.log('print_int32', memView.subarray(offset, offset + len));\n                //   },\n                // },\n                });\n                // wasmInstance.exports._start();\n            }));\n            const setupInterface = () => __awaiter(this, void 0, void 0, function* () {\n                if (!wasmInstance) {\n                    yield loadWASMPromise;\n                }\n                const arrayOffset = wasmInstance.exports.Hash_GetBuffer();\n                const memoryBuffer = wasmInstance.exports.memory.buffer;\n                memoryView = new Uint8Array(memoryBuffer, arrayOffset, MAX_HEAP);\n            });\n            const init = (bits = null) => {\n                initialized = true;\n                wasmInstance.exports.Hash_Init(bits);\n            };\n            const updateUInt8Array = (data) => {\n                let read = 0;\n                while (read < data.length) {\n                    const chunk = data.subarray(read, read + MAX_HEAP);\n                    read += chunk.length;\n                    memoryView.set(chunk);\n                    wasmInstance.exports.Hash_Update(chunk.length);\n                }\n            };\n            const update = (data) => {\n                if (!initialized) {\n                    throw new Error('update() called before init()');\n                }\n                const Uint8Buffer = getUInt8Buffer(data);\n                updateUInt8Array(Uint8Buffer);\n            };\n            const digestChars = new Uint8Array(hashLength * 2);\n            const digest = (outputType, padding = null) => {\n                if (!initialized) {\n                    throw new Error('digest() called before init()');\n                }\n                initialized = false;\n                wasmInstance.exports.Hash_Final(padding);\n                if (outputType === 'binary') {\n                    // the data is copied to allow GC of the original memory object\n                    return memoryView.slice(0, hashLength);\n                }\n                return getDigestHex(digestChars, memoryView, hashLength);\n            };\n            const save = () => {\n                if (!initialized) {\n                    throw new Error('save() can only be called after init() and before digest()');\n                }\n                const stateOffset = wasmInstance.exports.Hash_GetState();\n                const stateLength = getStateSize();\n                const memoryBuffer = wasmInstance.exports.memory.buffer;\n                const internalState = new Uint8Array(memoryBuffer, stateOffset, stateLength);\n                // prefix is 4 bytes from SHA1 hash of the WASM binary\n                // it is used to detect incompatible internal states between different versions of hash-wasm\n                const prefixedState = new Uint8Array(WASM_FUNC_HASH_LENGTH + stateLength);\n                writeHexToUInt8(prefixedState, binary.hash);\n                prefixedState.set(internalState, WASM_FUNC_HASH_LENGTH);\n                return prefixedState;\n            };\n            const load = (state) => {\n                if (!(state instanceof Uint8Array)) {\n                    throw new Error('load() expects an Uint8Array generated by save()');\n                }\n                const stateOffset = wasmInstance.exports.Hash_GetState();\n                const stateLength = getStateSize();\n                const overallLength = WASM_FUNC_HASH_LENGTH + stateLength;\n                const memoryBuffer = wasmInstance.exports.memory.buffer;\n                if (state.length !== overallLength) {\n                    throw new Error(`Bad state length (expected ${overallLength} bytes, got ${state.length})`);\n                }\n                if (!hexStringEqualsUInt8(binary.hash, state.subarray(0, WASM_FUNC_HASH_LENGTH))) {\n                    throw new Error('This state was written by an incompatible hash implementation');\n                }\n                const internalState = state.subarray(WASM_FUNC_HASH_LENGTH);\n                new Uint8Array(memoryBuffer, stateOffset, stateLength).set(internalState);\n                initialized = true;\n            };\n            const isDataShort = (data) => {\n                if (typeof data === 'string') {\n                    // worst case is 4 bytes / char\n                    return data.length < MAX_HEAP / 4;\n                }\n                return data.byteLength < MAX_HEAP;\n            };\n            let canSimplify = isDataShort;\n            switch (binary.name) {\n                case 'argon2':\n                case 'scrypt':\n                    canSimplify = () => true;\n                    break;\n                case 'blake2b':\n                case 'blake2s':\n                    // if there is a key at blake2 then cannot simplify\n                    canSimplify = (data, initParam) => initParam <= 512 && isDataShort(data);\n                    break;\n                case 'blake3':\n                    // if there is a key at blake3 then cannot simplify\n                    canSimplify = (data, initParam) => initParam === 0 && isDataShort(data);\n                    break;\n                case 'xxhash64': // cannot simplify\n                case 'xxhash3':\n                case 'xxhash128':\n                    canSimplify = () => false;\n                    break;\n            }\n            // shorthand for (init + update + digest) for better performance\n            const calculate = (data, initParam = null, digestParam = null) => {\n                if (!canSimplify(data, initParam)) {\n                    init(initParam);\n                    update(data);\n                    return digest('hex', digestParam);\n                }\n                const buffer = getUInt8Buffer(data);\n                memoryView.set(buffer);\n                wasmInstance.exports.Hash_Calculate(buffer.length, initParam, digestParam);\n                return getDigestHex(digestChars, memoryView, hashLength);\n            };\n            yield setupInterface();\n            return {\n                getMemory,\n                writeMemory,\n                getExports,\n                setMemorySize,\n                init,\n                update,\n                digest,\n                save,\n                load,\n                calculate,\n                hashLength,\n            };\n        });\n    }\n\n    var name$k = \"adler32\";\n    var data$k = \"AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAgQFAXABAQEFBAEBAgIGDgJ/AUGAiQULfwBBgAgLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAELSGFzaF9VcGRhdGUAAgpIYXNoX0ZpbmFsAAMNSGFzaF9HZXRTdGF0ZQAEDkhhc2hfQ2FsY3VsYXRlAAUKU1RBVEVfU0laRQMBCoAIBgUAQYAJCwoAQQBBATYChAgL9gYBBn9BACgChAgiAUH//wNxIQIgAUEQdiEDAkACQCAAQQFHDQAgAkEALQCACWoiAUGPgHxqIAEgAUHw/wNLGyIBIANqIgRBEHQiBUGAgDxqIAUgBEHw/wNLGyABciEBDAELAkACQAJAAkACQCAAQRBJDQBBgAkhBiAAQbArSQ0BQYAJIQYDQEEAIQUDQCAGIAVqIgEoAgAiBEH/AXEgAmoiAiADaiACIARBCHZB/wFxaiICaiACIARBEHZB/wFxaiICaiACIARBGHZqIgJqIAIgAUEEaigCACIEQf8BcWoiAmogAiAEQQh2Qf8BcWoiAmogAiAEQRB2Qf8BcWoiAmogAiAEQRh2aiICaiACIAFBCGooAgAiBEH/AXFqIgJqIAIgBEEIdkH/AXFqIgJqIAIgBEEQdkH/AXFqIgJqIAIgBEEYdmoiBGogBCABQQxqKAIAIgFB/wFxaiIEaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgJqIQMgBUEQaiIFQbArRw0ACyADQfH/A3AhAyACQfH/A3AhAiAGQbAraiEGIABB0FRqIgBBrytLDQALIABFDQQgAEEPSw0BDAILAkAgAEUNAEEAIQEDQCACIAFBgAlqLQAAaiICIANqIQMgACABQQFqIgFHDQALCyACQY+AfGogAiACQfD/A0sbIANB8f8DcEEQdHIhAQwECwNAIAYoAgAiAUH/AXEgAmoiBCADaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgRqIAQgBkEEaigCACIBQf8BcWoiBGogBCABQQh2Qf8BcWoiBGogBCABQRB2Qf8BcWoiBGogBCABQRh2aiIEaiAEIAZBCGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiBGogBCAGQQxqKAIAIgFB/wFxaiIEaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgJqIQMgBkEQaiEGIABBcGoiAEEPSw0ACyAARQ0BCwNAIAIgBi0AAGoiAiADaiEDIAZBAWohBiAAQX9qIgANAAsLIANB8f8DcCEDIAJB8f8DcCECCyACIANBEHRyIQELQQAgATYChAgLMgEBf0EAQQAoAoQIIgBBGHQgAEEIdEGAgPwHcXIgAEEIdkGA/gNxIABBGHZycjYCgAkLBQBBhAgLPABBAEEBNgKECCAAEAJBAEEAKAKECCIAQRh0IABBCHRBgID8B3FyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwsVAgBBgAgLBAQAAAAAQYQICwQBAAAA\";\n    var hash$k = \"321174b4\";\n    var wasmJson$k = {\n    \tname: name$k,\n    \tdata: data$k,\n    \thash: hash$k\n    };\n\n    function lockedCreate(mutex, binary, hashLength) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const unlock = yield mutex.lock();\n            const wasm = yield WASMInterface(binary, hashLength);\n            unlock();\n            return wasm;\n        });\n    }\n\n    const mutex$l = new Mutex();\n    let wasmCache$l = null;\n    /**\n     * Calculates Adler-32 hash. The resulting 32-bit hash is stored in\n     * network byte order (big-endian).\n     *\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function adler32(data) {\n        if (wasmCache$l === null) {\n            return lockedCreate(mutex$l, wasmJson$k, 4)\n                .then((wasm) => {\n                wasmCache$l = wasm;\n                return wasmCache$l.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache$l.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new Adler-32 hash instance\n     */\n    function createAdler32() {\n        return WASMInterface(wasmJson$k, 4).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 4,\n                digestSize: 4,\n            };\n            return obj;\n        });\n    }\n\n    var name$j = \"blake2b\";\n    var data$j = \"AGFzbQEAAAABEQRgAAF/YAJ/fwBgAX8AYAAAAwoJAAECAwECAgABBAUBcAEBAQUEAQECAgYOAn8BQbCLBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAApIYXNoX0ZpbmFsAAMJSGFzaF9Jbml0AAULSGFzaF9VcGRhdGUABg1IYXNoX0dldFN0YXRlAAcOSGFzaF9DYWxjdWxhdGUACApTVEFURV9TSVpFAwEKjzkJBQBBgAkL5QICBH8BfgJAIAFBAUgNAAJAAkACQEGAAUEAKALgigEiAmsiAyABSA0AIAEhAwwBC0EAQQA2AuCKAQJAIAJB/wBKDQBBACEEQQAhBQNAIAQgAmpB4IkBaiAAIARqLQAAOgAAIAMgBUEBaiIFQf8BcSIESg0ACwtBAEEAKQPAiQEiBkKAAXw3A8CJAUEAQQApA8iJASAGQv9+Vq18NwPIiQFB4IkBEAIgACADaiEAAkAgASADayIDQYEBSA0AIAIgAWohBANAQQBBACkDwIkBIgZCgAF8NwPAiQFBAEEAKQPIiQEgBkL/flatfDcDyIkBIAAQAiAAQYABaiEAIARBgH9qIgRBgAJKDQALIARBgH9qIQMLIANBAUgNAQtBACEEQQAhBQNAQQAoAuCKASAEakHgiQFqIAAgBGotAAA6AAAgAyAFQQFqIgVB/wFxIgRKDQALC0EAQQAoAuCKASADajYC4IoBCwu/LgEkfkEAIAApA2AiASAAKQNAIgIgACkDSCIDIAIgACkDGCIEIAApA1giBSAAKQMgIgYgAiAAKQMQIgcgASADIAApAwAiCCAAKQNwIgkgACkDOCIKIAggACkDeCILIAApA2giDCAGIAApA1AiDSAAKQMIIg4gCSAKIAApAzAiDyAHIA4gBCAJIA0gCCABIAEgDiACIAYgAyACIAQgB0EAKQOoiQEiEEEAKQOIiQF8fCIRfEEAKQPIiQEgEYVCn9j52cKR2oKbf4VCIIkiEUK7zqqm2NDrs7t/fCISIBCFQiiJIhB8IhMgEYVCMIkiESASfCISIBCFQgGJIhQgDiAIQQApA6CJASIQQQApA4CJASIVfHwiFnxBACkDwIkBIBaFQtGFmu/6z5SH0QCFQiCJIhZCiJLznf/M+YTqAHwiFyAQhUIoiSIYfCIZfHwiEHwgECAKIA9BACkDuIkBIhpBACkDmIkBfHwiG3xBACkD2IkBIBuFQvnC+JuRo7Pw2wCFQiCJIhtC8e30+KWn/aelf3wiHCAahUIoiSIafCIdIBuFQjCJIhuFQiCJIh4gACkDKCIQIAZBACkDsIkBIh9BACkDkIkBfHwiIHxBACkD0IkBICCFQuv6htq/tfbBH4VCIIkiIEKr8NP0r+68tzx8IiEgH4VCKIkiH3wiIiAghUIwiSIgICF8IiF8IiMgFIVCKIkiFHwiJCAehUIwiSIeICN8IiMgFIVCAYkiFCAFIA0gISAfhUIBiSIfIBN8fCITfCATIBkgFoVCMIkiFoVCIIkiEyAbIBx8Ihl8IhsgH4VCKIkiHHwiH3x8IiF8IAwgASAZIBqFQgGJIhkgInx8Ihp8IBogEYVCIIkiESAWIBd8IhZ8IhcgGYVCKIkiGXwiGiARhUIwiSIRICGFQiCJIiEgCyAJIB0gFiAYhUIBiSIWfHwiGHwgGCAghUIgiSIYIBJ8IhIgFoVCKIkiFnwiHSAYhUIwiSIYIBJ8IhJ8IiAgFIVCKIkiFHwiIiAhhUIwiSIhICB8IiAgFIVCAYkiFCANIAkgEiAWhUIBiSISICR8fCIWfCAfIBOFQjCJIhMgFoVCIIkiFiARIBd8IhF8IhcgEoVCKIkiEnwiH3x8IiR8ICQgDyAMIBEgGYVCAYkiESAdfHwiGXwgHiAZhUIgiSIZIBMgG3wiE3wiGyARhUIoiSIRfCIdIBmFQjCJIhmFQiCJIh4gCyADIBMgHIVCAYkiEyAafHwiGnwgGCAahUIgiSIYICN8IhogE4VCKIkiE3wiHCAYhUIwiSIYIBp8Ihp8IiMgFIVCKIkiFHwiJCAehUIwiSIeICN8IiMgFIVCAYkiFCAHIAggGiAThUIBiSITICJ8fCIafCAaIB8gFoVCMIkiFoVCIIkiGiAZIBt8Ihl8IhsgE4VCKIkiE3wiH3x8IiJ8IAogBSAZIBGFQgGJIhEgHHx8Ihl8IBkgIYVCIIkiGSAWIBd8IhZ8IhcgEYVCKIkiEXwiHCAZhUIwiSIZICKFQiCJIiEgBCAdIBYgEoVCAYkiEnwgEHwiFnwgFiAYhUIgiSIWICB8IhggEoVCKIkiEnwiHSAWhUIwiSIWIBh8Ihh8IiAgFIVCKIkiFHwiIiAhhUIwiSIhICB8IiAgFIVCAYkiFCACIAUgGCAShUIBiSISICR8fCIYfCAfIBqFQjCJIhogGIVCIIkiGCAZIBd8Ihd8IhkgEoVCKIkiEnwiH3x8IiR8ICQgDCALIBcgEYVCAYkiESAdfHwiF3wgHiAXhUIgiSIXIBogG3wiGnwiGyARhUIoiSIRfCIdIBeFQjCJIheFQiCJIh4gByAaIBOFQgGJIhMgHHwgEHwiGnwgFiAahUIgiSIWICN8IhogE4VCKIkiE3wiHCAWhUIwiSIWIBp8Ihp8IiMgFIVCKIkiFHwiJCAehUIwiSIeICN8IiMgFIVCAYkiFCAPIAQgGiAThUIBiSITICJ8fCIafCAaIB8gGIVCMIkiGIVCIIkiGiAXIBt8Ihd8IhsgE4VCKIkiE3wiH3x8IiJ8IA4gCiAXIBGFQgGJIhEgHHx8Ihd8IBcgIYVCIIkiFyAYIBl8Ihh8IhkgEYVCKIkiEXwiHCAXhUIwiSIXICKFQiCJIiEgBiADIB0gGCAShUIBiSISfHwiGHwgGCAWhUIgiSIWICB8IhggEoVCKIkiEnwiHSAWhUIwiSIWIBh8Ihh8IiAgFIVCKIkiFHwiIiAhhUIwiSIhICB8IiAgFIVCAYkiFCADIAogGCAShUIBiSISICR8fCIYfCAfIBqFQjCJIhogGIVCIIkiGCAXIBl8Ihd8IhkgEoVCKIkiEnwiH3x8IiR8ICQgCSAFIBcgEYVCAYkiESAdfHwiF3wgHiAXhUIgiSIXIBogG3wiGnwiGyARhUIoiSIRfCIdIBeFQjCJIheFQiCJIh4gASAMIBogE4VCAYkiEyAcfHwiGnwgFiAahUIgiSIWICN8IhogE4VCKIkiE3wiHCAWhUIwiSIWIBp8Ihp8IiMgFIVCKIkiFHwiJCAehUIwiSIeICN8IiMgFIVCAYkiFCANIBogE4VCAYkiEyAifCAQfCIafCAaIB8gGIVCMIkiGIVCIIkiGiAXIBt8Ihd8IhsgE4VCKIkiE3wiH3wgEHwiInwgCCAGIBcgEYVCAYkiESAcfHwiF3wgFyAhhUIgiSIXIBggGXwiGHwiGSARhUIoiSIRfCIcIBeFQjCJIhcgIoVCIIkiISACIAsgHSAYIBKFQgGJIhJ8fCIYfCAYIBaFQiCJIhYgIHwiGCAShUIoiSISfCIdIBaFQjCJIhYgGHwiGHwiICAUhUIoiSIUfCIiICGFQjCJIiEgIHwiICAUhUIBiSIUIAggAyAYIBKFQgGJIhIgJHx8Ihh8IB8gGoVCMIkiGiAYhUIgiSIYIBcgGXwiF3wiGSAShUIoiSISfCIffHwiJHwgJCALIA0gFyARhUIBiSIRIB18fCIXfCAeIBeFQiCJIhcgGiAbfCIafCIbIBGFQiiJIhF8Ih0gF4VCMIkiF4VCIIkiHiAGIAcgGiAThUIBiSITIBx8fCIafCAWIBqFQiCJIhYgI3wiGiAThUIoiSITfCIcIBaFQjCJIhYgGnwiGnwiIyAUhUIoiSIUfCIkIB6FQjCJIh4gI3wiIyAUhUIBiSIUIAEgBSAaIBOFQgGJIhMgInx8Ihp8IBogHyAYhUIwiSIYhUIgiSIaIBcgG3wiF3wiGyAThUIoiSITfCIffCAPfCIifCACIBcgEYVCAYkiESAcfCAPfCIXfCAXICGFQiCJIhcgGCAZfCIYfCIZIBGFQiiJIhF8IhwgF4VCMIkiFyAihUIgiSIhIAwgBCAdIBggEoVCAYkiEnx8Ihh8IBggFoVCIIkiFiAgfCIYIBKFQiiJIhJ8Ih0gFoVCMIkiFiAYfCIYfCIgIBSFQiiJIhR8IiIgIYVCMIkiISAgfCIgIBSFQgGJIhQgASAHIBggEoVCAYkiEiAkfHwiGHwgHyAahUIwiSIaIBiFQiCJIhggFyAZfCIXfCIZIBKFQiiJIhJ8Ih98fCIkfCAkIAQgAiAXIBGFQgGJIhEgHXx8Ihd8IB4gF4VCIIkiFyAaIBt8Ihp8IhsgEYVCKIkiEXwiHSAXhUIwiSIXhUIgiSIeIAUgCCAaIBOFQgGJIhMgHHx8Ihp8IBYgGoVCIIkiFiAjfCIaIBOFQiiJIhN8IhwgFoVCMIkiFiAafCIafCIjIBSFQiiJIhR8IiQgHoVCMIkiHiAjfCIjIBSFQgGJIhQgECAKIBogE4VCAYkiEyAifHwiGnwgGiAfIBiFQjCJIhiFQiCJIhogFyAbfCIXfCIbIBOFQiiJIhN8Ih98IA58IiJ8IAkgFyARhUIBiSIRIBx8IAt8Ihd8IBcgIYVCIIkiFyAYIBl8Ihh8IhkgEYVCKIkiEXwiHCAXhUIwiSIXICKFQiCJIiEgAyAdIBggEoVCAYkiEnwgDnwiGHwgGCAWhUIgiSIWICB8IhggEoVCKIkiEnwiHSAWhUIwiSIWIBh8Ihh8IiAgFIVCKIkiFHwiIiAhhUIwiSIhICB8IiAgFIVCAYkiFCAQIAEgGCAShUIBiSISICR8fCIYfCAfIBqFQjCJIhogGIVCIIkiGCAXIBl8Ihd8IhkgEoVCKIkiEnwiH3x8IiR8ICQgDSAGIBcgEYVCAYkiESAdfHwiF3wgHiAXhUIgiSIXIBogG3wiGnwiGyARhUIoiSIRfCIdIBeFQjCJIheFQiCJIh4gDCAJIBogE4VCAYkiEyAcfHwiGnwgFiAahUIgiSIWICN8IhogE4VCKIkiE3wiHCAWhUIwiSIWIBp8Ihp8IiMgFIVCKIkiFHwiJCAehUIwiSIeICN8IiMgFIVCAYkiFCAEIBogE4VCAYkiEyAifCAPfCIafCAaIB8gGIVCMIkiGIVCIIkiGiAXIBt8Ihd8IhsgE4VCKIkiE3wiH3wgCnwiInwgByADIBcgEYVCAYkiESAcfHwiF3wgFyAhhUIgiSIXIBggGXwiGHwiGSARhUIoiSIRfCIcIBeFQjCJIhcgIoVCIIkiISAFIAIgHSAYIBKFQgGJIhJ8fCIYfCAYIBaFQiCJIhYgIHwiGCAShUIoiSISfCIdIBaFQjCJIhYgGHwiGHwiICAUhUIoiSIUfCIiICGFQjCJIiEgIHwiICAUhUIBiSIUIAUgGCAShUIBiSISICR8IAx8Ihh8IB8gGoVCMIkiGiAYhUIgiSIYIBcgGXwiF3wiGSAShUIoiSISfCIffCAQfCIkfCAkIAMgBCAXIBGFQgGJIhEgHXx8Ihd8IB4gF4VCIIkiFyAaIBt8Ihp8IhsgEYVCKIkiEXwiHSAXhUIwiSIXhUIgiSIeIA4gASAaIBOFQgGJIhMgHHx8Ihp8IBYgGoVCIIkiFiAjfCIaIBOFQiiJIhN8IhwgFoVCMIkiFiAafCIafCIjIBSFQiiJIhR8IiQgHoVCMIkiHiAjfCIjIBSFQgGJIhQgBiAaIBOFQgGJIhMgInwgC3wiGnwgGiAfIBiFQjCJIhiFQiCJIhogFyAbfCIXfCIbIBOFQiiJIhN8Ih98IAl8IiJ8IA8gAiAXIBGFQgGJIhEgHHx8Ihd8IBcgIYVCIIkiFyAYIBl8Ihh8IhkgEYVCKIkiEXwiHCAXhUIwiSIXICKFQiCJIiEgDSAHIB0gGCAShUIBiSISfHwiGHwgGCAWhUIgiSIWICB8IhggEoVCKIkiEnwiHSAWhUIwiSIWIBh8Ihh8IiAgFIVCKIkiFHwiIiAhhUIwiSIhICB8IiAgFIVCAYkiFCALIBggEoVCAYkiEiAkfCAPfCIYfCAfIBqFQjCJIhogGIVCIIkiGCAXIBl8Ihd8IhkgEoVCKIkiEnwiH3x8IiR8ICQgAiAXIBGFQgGJIhEgHXwgCHwiF3wgHiAXhUIgiSIXIBogG3wiGnwiGyARhUIoiSIRfCIdIBeFQjCJIheFQiCJIh4gBCAFIBogE4VCAYkiEyAcfHwiGnwgFiAahUIgiSIWICN8IhogE4VCKIkiE3wiHCAWhUIwiSIWIBp8Ihp8IiMgFIVCKIkiFHwiJCAehUIwiSIeICN8IiMgFIVCAYkiFCAKIBogE4VCAYkiEyAifCAMfCIafCAaIB8gGIVCMIkiGIVCIIkiGiAXIBt8Ihd8IhsgE4VCKIkiE3wiH3x8IiJ8IAYgFyARhUIBiSIRIBx8IA58Ihd8IBcgIYVCIIkiFyAYIBl8Ihh8IhkgEYVCKIkiEXwiHCAXhUIwiSIXICKFQiCJIiEgECAdIBggEoVCAYkiEnwgDXwiGHwgGCAWhUIgiSIWICB8IhggEoVCKIkiEnwiHSAWhUIwiSIWIBh8Ihh8IiAgFIVCKIkiFHwiIiAhhUIwiSIhICB8IiAgFIVCAYkiFCAHIBggEoVCAYkiEiAkfCANfCIYfCAfIBqFQjCJIhogGIVCIIkiGCAXIBl8Ihd8IhkgEoVCKIkiEnwiH3wgC3wiJHwgJCAQIBcgEYVCAYkiESAdfCAOfCIXfCAeIBeFQiCJIhcgGiAbfCIafCIbIBGFQiiJIhF8Ih0gF4VCMIkiF4VCIIkiHiAPIBogE4VCAYkiEyAcfCAKfCIafCAWIBqFQiCJIhYgI3wiGiAThUIoiSITfCIcIBaFQjCJIhYgGnwiGnwiIyAUhUIoiSIUfCIkIB6FQjCJIh4gI3wiIyAUhUIBiSIUIAkgAyAaIBOFQgGJIhMgInx8Ihp8IBogHyAYhUIwiSIYhUIgiSIaIBcgG3wiF3wiGyAThUIoiSITfCIffCAHfCIifCABIBcgEYVCAYkiESAcfCAEfCIXfCAXICGFQiCJIhcgGCAZfCIYfCIZIBGFQiiJIhF8IhwgF4VCMIkiFyAihUIgiSIhIAggHSAYIBKFQgGJIhJ8IAx8Ihh8IBggFoVCIIkiFiAgfCIYIBKFQiiJIhJ8Ih0gFoVCMIkiFiAYfCIYfCIgIBSFQiiJIhR8IiIgIYVCMIkiISAgfCIgIBSFQgGJIhQgDiAYIBKFQgGJIhIgJHwgCHwiGHwgHyAahUIwiSIaIBiFQiCJIhggFyAZfCIXfCIZIBKFQiiJIhJ8Ih98fCICfCACIAogFyARhUIBiSIRIB18IA98Ihd8IB4gF4VCIIkiFyAaIBt8Ihp8IhsgEYVCKIkiEXwiHSAXhUIwiSIXhUIgiSICIBAgGiAThUIBiSITIBx8IAZ8Ihp8IBYgGoVCIIkiFiAjfCIaIBOFQiiJIhN8IhwgFoVCMIkiFiAafCIafCIeIBSFQiiJIhR8IiMgAoVCMIkiAiAefCIeIBSFQgGJIhQgBSAaIBOFQgGJIhMgInwgDXwiGnwgGiAfIBiFQjCJIhiFQiCJIhogFyAbfCIXfCIbIBOFQiiJIhN8Ih98IAZ8IgZ8IAwgASAXIBGFQgGJIhEgHHx8IgF8IAEgIYVCIIkiASAYIBl8Ihd8IhggEYVCKIkiEXwiGSABhUIwiSIBIAaFQiCJIgYgCyAdIBcgEoVCAYkiEnwgCXwiF3wgFyAWhUIgiSIWICB8IhcgEoVCKIkiEnwiHCAWhUIwiSIWIBd8Ihd8Ih0gFIVCKIkiFHwiICAGhUIwiSIGIB18Ih0gFIVCAYkiFCANIBcgEoVCAYkiEiAjfCAJfCIJfCAfIBqFQjCJIg0gCYVCIIkiCSABIBh8IgF8IhcgEoVCKIkiEnwiGHwgDnwiDnwgDiAPIAEgEYVCAYkiASAcfCAMfCIMfCACIAyFQiCJIgIgDSAbfCIMfCINIAGFQiiJIgF8Ig8gAoVCMIkiAoVCIIkiDiALIAwgE4VCAYkiDCAZfCADfCIDfCAWIAOFQiCJIgMgHnwiCyAMhUIoiSIMfCIRIAOFQjCJIgMgC3wiC3wiEyAUhUIoiSIUfCIWIBWFIAogAiANfCICIAGFQgGJIgEgEXwgBXwiBXwgBSAGhUIgiSIFIBggCYVCMIkiBiAXfCIJfCIKIAGFQiiJIgF8Ig0gBYVCMIkiBSAKfCIKhTcDgIkBQQAgByAIIAsgDIVCAYkiCyAgfHwiCHwgCCAGhUIgiSIGIAJ8IgIgC4VCKIkiB3wiCEEAKQOIiQGFIAQgECAPIAkgEoVCAYkiCXx8Igt8IAsgA4VCIIkiAyAdfCIEIAmFQiiJIgl8IgsgA4VCMIkiAyAEfCIEhTcDiIkBQQAgDUEAKQOQiQGFIBYgDoVCMIkiDCATfCINhTcDkIkBQQAgC0EAKQOYiQGFIAggBoVCMIkiBiACfCIChTcDmIkBQQAgBCAJhUIBiUEAKQOgiQGFIAaFNwOgiQFBACANIBSFQgGJQQApA6iJAYUgBYU3A6iJAUEAIAIgB4VCAYlBACkDsIkBhSADhTcDsIkBQQAgCiABhUIBiUEAKQO4iQGFIAyFNwO4iQELswMFAX8BfgF/AX4CfyMAQcAAayIAJAAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBGGpCADcDACAAQRBqQgA3AwAgAEIANwMIIABCADcDAAJAQQApA9CJAUIAUg0AQQBBACkDwIkBIgFBACgC4IoBIgKsfCIDNwPAiQFBAEEAKQPIiQEgAyABVK18NwPIiQECQEEALQDoigFFDQBBAEJ/NwPYiQELQQBCfzcD0IkBAkAgAkH/AEoNAEEAIQQDQCACIARqQeCJAWpBADoAACAEQQFqIgRBgAFBACgC4IoBIgJrSA0ACwtB4IkBEAIgAEEAKQOAiQEiATcDACAAQQApA4iJATcDCCAAQQApA5CJATcDECAAQQApA5iJATcDGCAAQQApA6CJATcDICAAQQApA6iJATcDKCAAQQApA7CJATcDMCAAQQApA7iJATcDOEEAKALkigEiBUEATA0AQQAgATwAgAkgBUEBRg0AQQEhBEEBIQIDQCAEQYAJaiAAIARqLQAAOgAAIAUgAkEBaiICQf8BcSIESg0ACwsgAEHAAGokAAvpAwIDfwF+IwBBgAFrIgIkAEEAQYECOwHyigFBACABOgDxigFBACAAOgDwigFBkH4hAANAIABB8IoBakEAOgAAIABBAWoiAyAATyEEIAMhACAEDQALQQAhAEEAQQApA/CKASIFQoiS853/zPmE6gCFNwOAiQFBAEEAKQP4igFCu86qptjQ67O7f4U3A4iJAUEAQQApA4CLAUKr8NP0r+68tzyFNwOQiQFBAEEAKQOIiwFC8e30+KWn/aelf4U3A5iJAUEAQQApA5CLAULRhZrv+s+Uh9EAhTcDoIkBQQBBACkDmIsBQp/Y+dnCkdqCm3+FNwOoiQFBAEEAKQOgiwFC6/qG2r+19sEfhTcDsIkBQQBBACkDqIsBQvnC+JuRo7Pw2wCFNwO4iQFBACAFp0H/AXE2AuSKAQJAIAFBAUgNACACQgA3A3ggAkIANwNwIAJCADcDaCACQgA3A2AgAkIANwNYIAJCADcDUCACQgA3A0ggAkIANwNAIAJCADcDOCACQgA3AzAgAkIANwMoIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwBBACEDA0AgAiAAaiAAQYAJai0AADoAACADQQFqIgNB/wFxIgAgAUgNAAsgAkGAARABCyACQYABaiQACxIAIABBA3ZB/z9xIABBEHYQBAsJAEGACSAAEAELBgBBgIkBCxsAIAFBA3ZB/z9xIAFBEHYQBEGACSAAEAEQAwsLCwEAQYAICwTwAAAA\";\n    var hash$j = \"68afc9cf\";\n    var wasmJson$j = {\n    \tname: name$j,\n    \tdata: data$j,\n    \thash: hash$j\n    };\n\n    const mutex$k = new Mutex();\n    let wasmCache$k = null;\n    function validateBits$4(bits) {\n        if (!Number.isInteger(bits) || bits < 8 || bits > 512 || bits % 8 !== 0) {\n            return new Error('Invalid variant! Valid values: 8, 16, ..., 512');\n        }\n        return null;\n    }\n    function getInitParam$1(outputBits, keyBits) {\n        // eslint-disable-next-line no-bitwise\n        return outputBits | (keyBits << 16);\n    }\n    /**\n     * Calculates BLAKE2b hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param bits Number of output bits, which has to be a number\n     *             divisible by 8, between 8 and 512. Defaults to 512.\n     * @param key Optional key (string, Buffer or TypedArray). Maximum length is 64 bytes.\n     * @returns Computed hash as a hexadecimal string\n     */\n    function blake2b(data, bits = 512, key = null) {\n        if (validateBits$4(bits)) {\n            return Promise.reject(validateBits$4(bits));\n        }\n        let keyBuffer = null;\n        let initParam = bits;\n        if (key !== null) {\n            keyBuffer = getUInt8Buffer(key);\n            if (keyBuffer.length > 64) {\n                return Promise.reject(new Error('Max key length is 64 bytes'));\n            }\n            initParam = getInitParam$1(bits, keyBuffer.length);\n        }\n        const hashLength = bits / 8;\n        if (wasmCache$k === null || wasmCache$k.hashLength !== hashLength) {\n            return lockedCreate(mutex$k, wasmJson$j, hashLength)\n                .then((wasm) => {\n                wasmCache$k = wasm;\n                if (initParam > 512) {\n                    wasmCache$k.writeMemory(keyBuffer);\n                }\n                return wasmCache$k.calculate(data, initParam);\n            });\n        }\n        try {\n            if (initParam > 512) {\n                wasmCache$k.writeMemory(keyBuffer);\n            }\n            const hash = wasmCache$k.calculate(data, initParam);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new BLAKE2b hash instance\n     * @param bits Number of output bits, which has to be a number\n     *             divisible by 8, between 8 and 512. Defaults to 512.\n     * @param key Optional key (string, Buffer or TypedArray). Maximum length is 64 bytes.\n     */\n    function createBLAKE2b(bits = 512, key = null) {\n        if (validateBits$4(bits)) {\n            return Promise.reject(validateBits$4(bits));\n        }\n        let keyBuffer = null;\n        let initParam = bits;\n        if (key !== null) {\n            keyBuffer = getUInt8Buffer(key);\n            if (keyBuffer.length > 64) {\n                return Promise.reject(new Error('Max key length is 64 bytes'));\n            }\n            initParam = getInitParam$1(bits, keyBuffer.length);\n        }\n        const outputSize = bits / 8;\n        return WASMInterface(wasmJson$j, outputSize).then((wasm) => {\n            if (initParam > 512) {\n                wasm.writeMemory(keyBuffer);\n            }\n            wasm.init(initParam);\n            const obj = {\n                init: initParam > 512\n                    ? () => {\n                        wasm.writeMemory(keyBuffer);\n                        wasm.init(initParam);\n                        return obj;\n                    }\n                    : () => {\n                        wasm.init(initParam);\n                        return obj;\n                    },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 128,\n                digestSize: outputSize,\n            };\n            return obj;\n        });\n    }\n\n    var name$i = \"argon2\";\n    var data$i = \"AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQEBQFwAQEBBQYBAQKAgAIGCAF/AUGQqAQLB0EEBm1lbW9yeQIAEkhhc2hfU2V0TWVtb3J5U2l6ZQAADkhhc2hfR2V0QnVmZmVyAAEOSGFzaF9DYWxjdWxhdGUABArXMwVbAQF/QQAhAQJAIABBACgCgAhrIgBFDQACQCAAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wEhAQwBC0EAIQFBAEEAKQOACCAAQRB0rXw3A4AICyABQRh0QRh1C2oBAn8CQEEAKAKICCIADQBBAD8AQRB0IgA2AogIQYCAIEEAKAKACGsiAUUNAAJAIAFBEHYgAUGAgHxxIAFJaiIAQABBf0cNAEEADwtBAEEAKQOACCAAQRB0rXw3A4AIQQAoAogIIQALIAALnA8BA34gACAEKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDCAQIAwpAwCFIhBCIIkiETcDACAIIBEgCCkDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAEIBAgBCkDAIUiEEIoiSIRNwMAIAAgESAAKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAMIBAgDCkDAIUiEEIwiSIRNwMAIAggESAIKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFIhBCIIkiETcDACAJIBEgCSkDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAFIBAgBSkDAIUiEEIoiSIRNwMAIAEgESABKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIUiEEIwiSIRNwMAIAkgESAJKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAFIBAgBSkDAIVCAYk3AwAgAiAGKQMAIhAgAikDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFIhBCIIkiETcDACAKIBEgCikDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAGIBAgBikDAIUiEEIoiSIRNwMAIAIgESACKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIUiEEIwiSIRNwMAIAogESAKKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAGIBAgBikDAIVCAYk3AwAgAyAHKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFIhBCIIkiETcDACALIBEgCykDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAHIBAgBykDAIUiEEIoiSIRNwMAIAMgESADKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIUiEEIwiSIRNwMAIAsgESALKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFIhBCIIkiETcDACAKIBEgCikDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAFIBAgBSkDAIUiEEIoiSIRNwMAIAAgESAAKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIUiEEIwiSIRNwMAIAogESAKKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAFIBAgBSkDAIVCAYk3AwAgASAGKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDCAQIAwpAwCFIhBCIIkiETcDACALIBEgCykDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAGIBAgBikDAIUiEEIoiSIRNwMAIAEgESABKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAMIBAgDCkDAIUiEEIwiSIRNwMAIAsgESALKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAGIBAgBikDAIVCAYk3AwAgAiAHKQMAIhAgAikDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFIhBCIIkiETcDACAIIBEgCCkDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAHIBAgBykDAIUiEEIoiSIRNwMAIAIgESACKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIUiEEIwiSIRNwMAIAggESAIKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFIhBCIIkiETcDACAJIBEgCSkDACISfCASQgGGQv7///8fgyAQQiCIfnwiEDcDACAEIBAgBCkDAIUiEEIoiSIRNwMAIAMgESADKQMAIhJ8IBBCGIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIUiEEIwiSIRNwMAIAkgESAJKQMAIhJ8IBBCEIhC/////w+DIBJCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwALhxoBAX9BACEEQQAgAikDACABKQMAhTcDkAhBACACKQMIIAEpAwiFNwOYCEEAIAIpAxAgASkDEIU3A6AIQQAgAikDGCABKQMYhTcDqAhBACACKQMgIAEpAyCFNwOwCEEAIAIpAyggASkDKIU3A7gIQQAgAikDMCABKQMwhTcDwAhBACACKQM4IAEpAziFNwPICEEAIAIpA0AgASkDQIU3A9AIQQAgAikDSCABKQNIhTcD2AhBACACKQNQIAEpA1CFNwPgCEEAIAIpA1ggASkDWIU3A+gIQQAgAikDYCABKQNghTcD8AhBACACKQNoIAEpA2iFNwP4CEEAIAIpA3AgASkDcIU3A4AJQQAgAikDeCABKQN4hTcDiAlBACACKQOAASABKQOAAYU3A5AJQQAgAikDiAEgASkDiAGFNwOYCUEAIAIpA5ABIAEpA5ABhTcDoAlBACACKQOYASABKQOYAYU3A6gJQQAgAikDoAEgASkDoAGFNwOwCUEAIAIpA6gBIAEpA6gBhTcDuAlBACACKQOwASABKQOwAYU3A8AJQQAgAikDuAEgASkDuAGFNwPICUEAIAIpA8ABIAEpA8ABhTcD0AlBACACKQPIASABKQPIAYU3A9gJQQAgAikD0AEgASkD0AGFNwPgCUEAIAIpA9gBIAEpA9gBhTcD6AlBACACKQPgASABKQPgAYU3A/AJQQAgAikD6AEgASkD6AGFNwP4CUEAIAIpA/ABIAEpA/ABhTcDgApBACACKQP4ASABKQP4AYU3A4gKQQAgAikDgAIgASkDgAKFNwOQCkEAIAIpA4gCIAEpA4gChTcDmApBACACKQOQAiABKQOQAoU3A6AKQQAgAikDmAIgASkDmAKFNwOoCkEAIAIpA6ACIAEpA6AChTcDsApBACACKQOoAiABKQOoAoU3A7gKQQAgAikDsAIgASkDsAKFNwPACkEAIAIpA7gCIAEpA7gChTcDyApBACACKQPAAiABKQPAAoU3A9AKQQAgAikDyAIgASkDyAKFNwPYCkEAIAIpA9ACIAEpA9AChTcD4ApBACACKQPYAiABKQPYAoU3A+gKQQAgAikD4AIgASkD4AKFNwPwCkEAIAIpA+gCIAEpA+gChTcD+ApBACACKQPwAiABKQPwAoU3A4ALQQAgAikD+AIgASkD+AKFNwOIC0EAIAIpA4ADIAEpA4ADhTcDkAtBACACKQOIAyABKQOIA4U3A5gLQQAgAikDkAMgASkDkAOFNwOgC0EAIAIpA5gDIAEpA5gDhTcDqAtBACACKQOgAyABKQOgA4U3A7ALQQAgAikDqAMgASkDqAOFNwO4C0EAIAIpA7ADIAEpA7ADhTcDwAtBACACKQO4AyABKQO4A4U3A8gLQQAgAikDwAMgASkDwAOFNwPQC0EAIAIpA8gDIAEpA8gDhTcD2AtBACACKQPQAyABKQPQA4U3A+ALQQAgAikD2AMgASkD2AOFNwPoC0EAIAIpA+ADIAEpA+ADhTcD8AtBACACKQPoAyABKQPoA4U3A/gLQQAgAikD8AMgASkD8AOFNwOADEEAIAIpA/gDIAEpA/gDhTcDiAxBACACKQOABCABKQOABIU3A5AMQQAgAikDiAQgASkDiASFNwOYDEEAIAIpA5AEIAEpA5AEhTcDoAxBACACKQOYBCABKQOYBIU3A6gMQQAgAikDoAQgASkDoASFNwOwDEEAIAIpA6gEIAEpA6gEhTcDuAxBACACKQOwBCABKQOwBIU3A8AMQQAgAikDuAQgASkDuASFNwPIDEEAIAIpA8AEIAEpA8AEhTcD0AxBACACKQPIBCABKQPIBIU3A9gMQQAgAikD0AQgASkD0ASFNwPgDEEAIAIpA9gEIAEpA9gEhTcD6AxBACACKQPgBCABKQPgBIU3A/AMQQAgAikD6AQgASkD6ASFNwP4DEEAIAIpA/AEIAEpA/AEhTcDgA1BACACKQP4BCABKQP4BIU3A4gNQQAgAikDgAUgASkDgAWFNwOQDUEAIAIpA4gFIAEpA4gFhTcDmA1BACACKQOQBSABKQOQBYU3A6ANQQAgAikDmAUgASkDmAWFNwOoDUEAIAIpA6AFIAEpA6AFhTcDsA1BACACKQOoBSABKQOoBYU3A7gNQQAgAikDsAUgASkDsAWFNwPADUEAIAIpA7gFIAEpA7gFhTcDyA1BACACKQPABSABKQPABYU3A9ANQQAgAikDyAUgASkDyAWFNwPYDUEAIAIpA9AFIAEpA9AFhTcD4A1BACACKQPYBSABKQPYBYU3A+gNQQAgAikD4AUgASkD4AWFNwPwDUEAIAIpA+gFIAEpA+gFhTcD+A1BACACKQPwBSABKQPwBYU3A4AOQQAgAikD+AUgASkD+AWFNwOIDkEAIAIpA4AGIAEpA4AGhTcDkA5BACACKQOIBiABKQOIBoU3A5gOQQAgAikDkAYgASkDkAaFNwOgDkEAIAIpA5gGIAEpA5gGhTcDqA5BACACKQOgBiABKQOgBoU3A7AOQQAgAikDqAYgASkDqAaFNwO4DkEAIAIpA7AGIAEpA7AGhTcDwA5BACACKQO4BiABKQO4BoU3A8gOQQAgAikDwAYgASkDwAaFNwPQDkEAIAIpA8gGIAEpA8gGhTcD2A5BACACKQPQBiABKQPQBoU3A+AOQQAgAikD2AYgASkD2AaFNwPoDkEAIAIpA+AGIAEpA+AGhTcD8A5BACACKQPoBiABKQPoBoU3A/gOQQAgAikD8AYgASkD8AaFNwOAD0EAIAIpA/gGIAEpA/gGhTcDiA9BACACKQOAByABKQOAB4U3A5APQQAgAikDiAcgASkDiAeFNwOYD0EAIAIpA5AHIAEpA5AHhTcDoA9BACACKQOYByABKQOYB4U3A6gPQQAgAikDoAcgASkDoAeFNwOwD0EAIAIpA6gHIAEpA6gHhTcDuA9BACACKQOwByABKQOwB4U3A8APQQAgAikDuAcgASkDuAeFNwPID0EAIAIpA8AHIAEpA8AHhTcD0A9BACACKQPIByABKQPIB4U3A9gPQQAgAikD0AcgASkD0AeFNwPgD0EAIAIpA9gHIAEpA9gHhTcD6A9BACACKQPgByABKQPgB4U3A/APQQAgAikD6AcgASkD6AeFNwP4D0EAIAIpA/AHIAEpA/AHhTcDgBBBACACKQP4ByABKQP4B4U3A4gQQZAIQZgIQaAIQagIQbAIQbgIQcAIQcgIQdAIQdgIQeAIQegIQfAIQfgIQYAJQYgJEAJBkAlBmAlBoAlBqAlBsAlBuAlBwAlByAlB0AlB2AlB4AlB6AlB8AlB+AlBgApBiAoQAkGQCkGYCkGgCkGoCkGwCkG4CkHACkHICkHQCkHYCkHgCkHoCkHwCkH4CkGAC0GICxACQZALQZgLQaALQagLQbALQbgLQcALQcgLQdALQdgLQeALQegLQfALQfgLQYAMQYgMEAJBkAxBmAxBoAxBqAxBsAxBuAxBwAxByAxB0AxB2AxB4AxB6AxB8AxB+AxBgA1BiA0QAkGQDUGYDUGgDUGoDUGwDUG4DUHADUHIDUHQDUHYDUHgDUHoDUHwDUH4DUGADkGIDhACQZAOQZgOQaAOQagOQbAOQbgOQcAOQcgOQdAOQdgOQeAOQegOQfAOQfgOQYAPQYgPEAJBkA9BmA9BoA9BqA9BsA9BuA9BwA9ByA9B0A9B2A9B4A9B6A9B8A9B+A9BgBBBiBAQAkGQCEGYCEGQCUGYCUGQCkGYCkGQC0GYC0GQDEGYDEGQDUGYDUGQDkGYDkGQD0GYDxACQaAIQagIQaAJQagJQaAKQagKQaALQagLQaAMQagMQaANQagNQaAOQagOQaAPQagPEAJBsAhBuAhBsAlBuAlBsApBuApBsAtBuAtBsAxBuAxBsA1BuA1BsA5BuA5BsA9BuA8QAkHACEHICEHACUHICUHACkHICkHAC0HIC0HADEHIDEHADUHIDUHADkHIDkHAD0HIDxACQdAIQdgIQdAJQdgJQdAKQdgKQdALQdgLQdAMQdgMQdANQdgNQdAOQdgOQdAPQdgPEAJB4AhB6AhB4AlB6AlB4ApB6ApB4AtB6AtB4AxB6AxB4A1B6A1B4A5B6A5B4A9B6A8QAkHwCEH4CEHwCUH4CUHwCkH4CkHwC0H4C0HwDEH4DEHwDUH4DUHwDkH4DkHwD0H4DxACQYAJQYgJQYAKQYgKQYALQYgLQYAMQYgMQYANQYgNQYAOQYgOQYAPQYgPQYAQQYgQEAICQAJAIANFDQADQCAAIARqIgMgAiAEaikDACABIARqKQMAhSAEQZAIaikDAIUgAykDAIU3AwAgBEEIaiIEQYAIRw0ADAILC0EAIQQDQCAAIARqIAIgBGopAwAgASAEaikDAIUgBEGQCGopAwCFNwMAIARBCGoiBEGACEcNAAsLC+YICQV/AX4DfwJ+An8BfgN/A34KfwJAQQAoAogIIgIgAUEKdGoiAygCCCABRw0AIAMoAgwhBCADKAIAIQVBACADKAIUIgatNwO4EEEAIAStIgc3A7AQQQAgBSABIAVBAnRuIghsIglBAnStNwOoECAIQQJ0IQMCQCAERQ0AIAhBA2whCiAFrSELIAOtIQwgBkECRiENIAZBf2pBAUshDkIAIQ8DQEEAIA83A5AQIA0gD1AiEHEhESAPpyESQgAhE0EAIQEDQEEAIBM3A6AQAkAgBUUNAEIAIRQgDiAPIBOEIhVCAFJyIRZBfyABQQFqQQNxIAhsQX9qIBAbIRcgASASciEYIAEgCGwhGSARIBNCAlRxIRogFVBBAXQhGwNAQQBCADcDwBBBACAUNwOYECAbIQECQCAWDQBBAEIBNwPAEEGQGEGQEEGQIEEAEANBkBhBkBhBkCBBABADQQIhAQsCQCABIAhPDQAgAyAUpyIcbCAZaiABaiECAkAgBkEBRw0AA0AgAkEAIAMgARtBACATUCIdG2pB////AWohHgJAIAFB/wBxIh8NAEEAQQApA8AQQgF8NwPAEEGQGEGQEEGQIEEAEANBkBhBkBhBkCBBABADC0EAKAKICCIEIAJBCnRqIAQgHkEKdGogBCAfQQN0QZAYaikDACIVQiCIpyAFcCAcIBgbIh4gA2wgASABQQAgFCAerVEiHhsiHyAdGyAZaiAfIApqIBAbIAFFIB5yayIdIBdqrSAVQv////8PgyIVIBV+QiCIIB2tfkIgiH0gDIKnakEKdGpBARADIAJBAWohAiABQQFqIgEgCEcNAAwCCwsDQCACQQAgAyABG0EAIBNQIh0bakF/aiEeAkACQCAaRQ0AAkAgAUH/AHEiBA0AQQBBACkDwBBCAXw3A8AQQZAYQZAQQZAgQQAQA0GQGEGQGEGQIEEAEAMLIB5BCnQhHiAEQQN0QZAYaiEfQQAoAogIIQQMAQtBACgCiAgiBCAeQQp0Ih5qIR8LIAQgAkEKdGogBCAeaiAEIB8pAwAiFUIgiKcgBXAgHCAYGyIeIANsIAEgAUEAIBQgHq1RIh4bIh8gHRsgGWogHyAKaiAQGyABRSAecmsiHSAXaq0gFUL/////D4MiFSAVfkIgiCAdrX5CIIh9IAyCp2pBCnRqQQEQAyACQQFqIQIgAUEBaiIBIAhHDQALCyAUQgF8IhQgC1INAAsLIBNCAXwiE6chASATQgRSDQALIA9CAXwiDyAHUg0AC0EAKAKICCECCyAJQQx0QYB4aiEZAkAgBUF/aiIQRQ0AQQAhBQNAIAUgA2wgA2pBCnRBgHhqIRxBeCEEQQAhAQNAIAIgASAZamoiCCAIKQMAIAIgHCABamopAwCFNwMAIAFBCGohASAEQQhqIgRB+AdJDQALIAVBAWoiBSAQRw0ACwtBACEBA0AgAiABaiACIAEgGWpqKQMANwMAIAFB+AdJIQMgAUEIaiEBIAMNAAsLCw==\";\n    var hash$i = \"59aa4fb4\";\n    var wasmJson$i = {\n    \tname: name$i,\n    \tdata: data$i,\n    \thash: hash$i\n    };\n\n    function encodeResult(salt, options, res) {\n        const parameters = [\n            `m=${options.memorySize}`,\n            `t=${options.iterations}`,\n            `p=${options.parallelism}`,\n        ].join(',');\n        return `$argon2${options.hashType}$v=19$${parameters}$${encodeBase64(salt, false)}$${encodeBase64(res, false)}`;\n    }\n    const uint32View = new DataView(new ArrayBuffer(4));\n    function int32LE(x) {\n        uint32View.setInt32(0, x, true);\n        return new Uint8Array(uint32View.buffer);\n    }\n    function hashFunc(blake512, buf, len) {\n        return __awaiter(this, void 0, void 0, function* () {\n            if (len <= 64) {\n                const blake = yield createBLAKE2b(len * 8);\n                blake.update(int32LE(len));\n                blake.update(buf);\n                return blake.digest('binary');\n            }\n            const r = Math.ceil(len / 32) - 2;\n            const ret = new Uint8Array(len);\n            blake512.init();\n            blake512.update(int32LE(len));\n            blake512.update(buf);\n            let vp = blake512.digest('binary');\n            ret.set(vp.subarray(0, 32), 0);\n            for (let i = 1; i < r; i++) {\n                blake512.init();\n                blake512.update(vp);\n                vp = blake512.digest('binary');\n                ret.set(vp.subarray(0, 32), i * 32);\n            }\n            const partialBytesNeeded = len - 32 * r;\n            let blakeSmall;\n            if (partialBytesNeeded === 64) {\n                blakeSmall = blake512;\n                blakeSmall.init();\n            }\n            else {\n                blakeSmall = yield createBLAKE2b(partialBytesNeeded * 8);\n            }\n            blakeSmall.update(vp);\n            vp = blakeSmall.digest('binary');\n            ret.set(vp.subarray(0, partialBytesNeeded), r * 32);\n            return ret;\n        });\n    }\n    function getHashType(type) {\n        switch (type) {\n            case 'd':\n                return 0;\n            case 'i':\n                return 1;\n            default:\n                return 2;\n        }\n    }\n    function argon2Internal(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const { parallelism, iterations, hashLength } = options;\n            const password = getUInt8Buffer(options.password);\n            const salt = getUInt8Buffer(options.salt);\n            const version = 0x13;\n            const hashType = getHashType(options.hashType);\n            const { memorySize } = options; // in KB\n            const [argon2Interface, blake512] = yield Promise.all([\n                WASMInterface(wasmJson$i, 1024),\n                createBLAKE2b(512),\n            ]);\n            // last block is for storing the init vector\n            argon2Interface.setMemorySize(memorySize * 1024 + 1024);\n            const initVector = new Uint8Array(24);\n            const initVectorView = new DataView(initVector.buffer);\n            initVectorView.setInt32(0, parallelism, true);\n            initVectorView.setInt32(4, hashLength, true);\n            initVectorView.setInt32(8, memorySize, true);\n            initVectorView.setInt32(12, iterations, true);\n            initVectorView.setInt32(16, version, true);\n            initVectorView.setInt32(20, hashType, true);\n            argon2Interface.writeMemory(initVector, memorySize * 1024);\n            blake512.init();\n            blake512.update(initVector);\n            blake512.update(int32LE(password.length));\n            blake512.update(password);\n            blake512.update(int32LE(salt.length));\n            blake512.update(salt);\n            blake512.update(int32LE(0)); // key length + key\n            blake512.update(int32LE(0)); // associatedData length + associatedData\n            const segments = Math.floor(memorySize / (parallelism * 4)); // length of each lane\n            const lanes = segments * 4;\n            const param = new Uint8Array(72);\n            const H0 = blake512.digest('binary');\n            param.set(H0);\n            for (let lane = 0; lane < parallelism; lane++) {\n                param.set(int32LE(0), 64);\n                param.set(int32LE(lane), 68);\n                let position = lane * lanes;\n                let chunk = yield hashFunc(blake512, param, 1024);\n                argon2Interface.writeMemory(chunk, position * 1024);\n                position += 1;\n                param.set(int32LE(1), 64);\n                chunk = yield hashFunc(blake512, param, 1024);\n                argon2Interface.writeMemory(chunk, position * 1024);\n            }\n            const C = new Uint8Array(1024);\n            writeHexToUInt8(C, argon2Interface.calculate(new Uint8Array([]), memorySize));\n            const res = yield hashFunc(blake512, C, hashLength);\n            if (options.outputType === 'hex') {\n                const digestChars = new Uint8Array(hashLength * 2);\n                return getDigestHex(digestChars, res, hashLength);\n            }\n            if (options.outputType === 'encoded') {\n                return encodeResult(salt, options, res);\n            }\n            // return binary format\n            return res;\n        });\n    }\n    const validateOptions$3 = (options) => {\n        if (!options || typeof options !== 'object') {\n            throw new Error('Invalid options parameter. It requires an object.');\n        }\n        if (!options.password) {\n            throw new Error('Password must be specified');\n        }\n        options.password = getUInt8Buffer(options.password);\n        if (options.password.length < 1) {\n            throw new Error('Password must be specified');\n        }\n        if (!options.salt) {\n            throw new Error('Salt must be specified');\n        }\n        options.salt = getUInt8Buffer(options.salt);\n        if (options.salt.length < 8) {\n            throw new Error('Salt should be at least 8 bytes long');\n        }\n        if (!Number.isInteger(options.iterations) || options.iterations < 1) {\n            throw new Error('Iterations should be a positive number');\n        }\n        if (!Number.isInteger(options.parallelism) || options.parallelism < 1) {\n            throw new Error('Parallelism should be a positive number');\n        }\n        if (!Number.isInteger(options.hashLength) || options.hashLength < 4) {\n            throw new Error('Hash length should be at least 4 bytes.');\n        }\n        if (!Number.isInteger(options.memorySize)) {\n            throw new Error('Memory size should be specified.');\n        }\n        if (options.memorySize < 8 * options.parallelism) {\n            throw new Error('Memory size should be at least 8 * parallelism.');\n        }\n        if (options.outputType === undefined) {\n            options.outputType = 'hex';\n        }\n        if (!['hex', 'binary', 'encoded'].includes(options.outputType)) {\n            throw new Error(`Insupported output type ${options.outputType}. Valid values: ['hex', 'binary', 'encoded']`);\n        }\n    };\n    /**\n     * Calculates hash using the argon2i password-hashing function\n     * @returns Computed hash\n     */\n    function argon2i(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateOptions$3(options);\n            return argon2Internal(Object.assign(Object.assign({}, options), { hashType: 'i' }));\n        });\n    }\n    /**\n     * Calculates hash using the argon2id password-hashing function\n     * @returns Computed hash\n     */\n    function argon2id(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateOptions$3(options);\n            return argon2Internal(Object.assign(Object.assign({}, options), { hashType: 'id' }));\n        });\n    }\n    /**\n     * Calculates hash using the argon2d password-hashing function\n     * @returns Computed hash\n     */\n    function argon2d(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateOptions$3(options);\n            return argon2Internal(Object.assign(Object.assign({}, options), { hashType: 'd' }));\n        });\n    }\n    const getHashParameters = (password, encoded) => {\n        const regex = /^\\$argon2(id|i|d)\\$v=([0-9]+)\\$((?:[mtp]=[0-9]+,){2}[mtp]=[0-9]+)\\$([A-Za-z0-9+/]+)\\$([A-Za-z0-9+/]+)$/;\n        const match = encoded.match(regex);\n        if (!match) {\n            throw new Error('Invalid hash');\n        }\n        const [, hashType, version, parameters, salt, hash] = match;\n        if (version !== '19') {\n            throw new Error(`Unsupported version: ${version}`);\n        }\n        const parsedParameters = {};\n        const paramMap = { m: 'memorySize', p: 'parallelism', t: 'iterations' };\n        parameters.split(',').forEach((x) => {\n            const [n, v] = x.split('=');\n            parsedParameters[paramMap[n]] = parseInt(v, 10);\n        });\n        return Object.assign(Object.assign({}, parsedParameters), { password, hashType: hashType, salt: decodeBase64(salt), hashLength: getDecodeBase64Length(hash), outputType: 'encoded' });\n    };\n    const validateVerifyOptions$1 = (options) => {\n        if (!options || typeof options !== 'object') {\n            throw new Error('Invalid options parameter. It requires an object.');\n        }\n        if (options.hash === undefined || typeof options.hash !== 'string') {\n            throw new Error('Hash should be specified');\n        }\n    };\n    /**\n     * Verifies password using the argon2 password-hashing function\n     * @returns True if the encoded hash matches the password\n     */\n    function argon2Verify(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateVerifyOptions$1(options);\n            const params = getHashParameters(options.password, options.hash);\n            validateOptions$3(params);\n            const hashStart = options.hash.lastIndexOf('$') + 1;\n            const result = yield argon2Internal(params);\n            return result.substring(hashStart) === options.hash.substring(hashStart);\n        });\n    }\n\n    var name$h = \"blake2s\";\n    var data$h = \"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\";\n    var hash$h = \"0f570f49\";\n    var wasmJson$h = {\n    \tname: name$h,\n    \tdata: data$h,\n    \thash: hash$h\n    };\n\n    const mutex$j = new Mutex();\n    let wasmCache$j = null;\n    function validateBits$3(bits) {\n        if (!Number.isInteger(bits) || bits < 8 || bits > 256 || bits % 8 !== 0) {\n            return new Error('Invalid variant! Valid values: 8, 16, ..., 256');\n        }\n        return null;\n    }\n    function getInitParam(outputBits, keyBits) {\n        // eslint-disable-next-line no-bitwise\n        return outputBits | (keyBits << 16);\n    }\n    /**\n     * Calculates BLAKE2s hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param bits Number of output bits, which has to be a number\n     *             divisible by 8, between 8 and 256. Defaults to 256.\n     * @param key Optional key (string, Buffer or TypedArray). Maximum length is 32 bytes.\n     * @returns Computed hash as a hexadecimal string\n     */\n    function blake2s(data, bits = 256, key = null) {\n        if (validateBits$3(bits)) {\n            return Promise.reject(validateBits$3(bits));\n        }\n        let keyBuffer = null;\n        let initParam = bits;\n        if (key !== null) {\n            keyBuffer = getUInt8Buffer(key);\n            if (keyBuffer.length > 32) {\n                return Promise.reject(new Error('Max key length is 32 bytes'));\n            }\n            initParam = getInitParam(bits, keyBuffer.length);\n        }\n        const hashLength = bits / 8;\n        if (wasmCache$j === null || wasmCache$j.hashLength !== hashLength) {\n            return lockedCreate(mutex$j, wasmJson$h, hashLength)\n                .then((wasm) => {\n                wasmCache$j = wasm;\n                if (initParam > 512) {\n                    wasmCache$j.writeMemory(keyBuffer);\n                }\n                return wasmCache$j.calculate(data, initParam);\n            });\n        }\n        try {\n            if (initParam > 512) {\n                wasmCache$j.writeMemory(keyBuffer);\n            }\n            const hash = wasmCache$j.calculate(data, initParam);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new BLAKE2s hash instance\n     * @param bits Number of output bits, which has to be a number\n     *             divisible by 8, between 8 and 256. Defaults to 256.\n     * @param key Optional key (string, Buffer or TypedArray). Maximum length is 32 bytes.\n     */\n    function createBLAKE2s(bits = 256, key = null) {\n        if (validateBits$3(bits)) {\n            return Promise.reject(validateBits$3(bits));\n        }\n        let keyBuffer = null;\n        let initParam = bits;\n        if (key !== null) {\n            keyBuffer = getUInt8Buffer(key);\n            if (keyBuffer.length > 32) {\n                return Promise.reject(new Error('Max key length is 32 bytes'));\n            }\n            initParam = getInitParam(bits, keyBuffer.length);\n        }\n        const outputSize = bits / 8;\n        return WASMInterface(wasmJson$h, outputSize).then((wasm) => {\n            if (initParam > 512) {\n                wasm.writeMemory(keyBuffer);\n            }\n            wasm.init(initParam);\n            const obj = {\n                init: initParam > 512\n                    ? () => {\n                        wasm.writeMemory(keyBuffer);\n                        wasm.init(initParam);\n                        return obj;\n                    }\n                    : () => {\n                        wasm.init(initParam);\n                        return obj;\n                    },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: outputSize,\n            };\n            return obj;\n        });\n    }\n\n    var name$g = \"blake3\";\n    var data$g = \"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FWogFCAfc0EZdyIVaiIUIBhqIB0gFHNBEHciFCAlaiIYIBVzQRR3IhVqIhkgFHNBGHciFCAYaiIYaiIdICBzQRR3Ih9qIiA2AgAgACAXICQgHHNBGHciHCAeaiIeIBtzQRl3IhtqIAFqIgEgFmogASAUc0EQdyIBICtqIhQgG3NBFHciFmoiFyABc0EYdyIBNgI4IAAgGCAVc0EZdyIVIC5qIANqIgMgE2ogAyAcc0EQdyIDIAIgImoiAmoiIiAVc0EUdyIVaiITNgIEIAAgASAUaiIBNgIkIAAgAiAFc0EZdyICIBlqICFqIgUgGmogBSAnc0EQdyIFIB5qIhQgAnNBFHciAmoiGjYCCCAAICAgEnNBGHciEiAdaiIhNgIoIAAgEyADc0EYdyIDNgIwIAAgASAWc0EZdzYCECAAIBogBXNBGHciATYCNCAAICEgH3NBGXc2AhQgACABIBRqIgE2AiAgACADICJqIgUgFXNBGXc2AhggACASNgI8IAAgASACc0EZdzYCHCAAIBc2AgwgACAFNgIsC7cDAwR/A34FfyMAQdABayIBJAACQCAAe6ciAkEALQCQigEiA08NACABQShqIQQDQCABQQApA4CJASIANwMAIAFBACkDiIkBIgU3AwggAUEAKQOQiQEiBjcDECABQQApA5iJASIHNwMYIAEgA0EFdCIDQdGJAWoiCCkDADcDKCABIANB2YkBaiIJKQMANwMwIAEgA0HhiQFqIgopAwA3AzggASADQemJAWoiCykDADcDQEEALQCKigEhDCABQcAAOgBoIAEgDEEEciIMOgBpIAFCADcDICABIANB8YkBaikDADcDSCABIANB+YkBaikDADcDUCABIANBgYoBaikDADcDWCABIANBiYoBaikDADcDYCABIAc3A4gBIAEgBjcDgAEgASAFNwN4IAEgADcDcCABQZABaiABQfAAaiAEQcAAQgAgDBADIAsgASkDyAEgASkDqAGFNwMAIAogASkDwAEgASkDoAGFNwMAIAkgASkDuAEgASkDmAGFNwMAIAggASkDsAEgASkDkAGFNwMAQQBBAC0AkIoBQX9qIgM6AJCKASACIANB/wFxIgNJDQALCyABQdABaiQAC/oLBAR/BH4GfwF+IwBB0AJrIgUkAAJAAkAgAUGACEsNAEEAIQYgASEHQQAhCAJAIAFBgAhHDQAgBUEAKQOAiQEiCTcD8AEgBUEAKQOIiQEiCjcD+AEgBUEAKQOQiQEiCzcDgAIgBUEAKQOYiQEiDDcDiAIgA0EBciEIQRAhByAAIQ0CQANAAkACQCAHDgIDAAELIAhBAnIhCAsgBUGQAmogBUHwAWogDUHAACACIAhB/wFxEAMgBSAFKQOwAiAFKQOQAoUiCTcD8AEgBSAFKQO4AiAFKQOYAoUiCjcD+AEgBSAFKQPAAiAFKQOgAoUiCzcDgAIgBSAFKQPIAiAFKQOoAoUiDDcDiAIgB0F/aiEHIA1BwABqIQ0gAyEIDAALCyAEIAw3AxggBCALNwMQIAQgCjcDCCAEIAk3AwBBgAghCEEBIQZBACEHCyAIIAFPDQEgBUHgAGoiDUIANwMAIAVB2ABqIgFCADcDACAFQdAAaiIOQgA3AwAgBUHIAGoiD0IANwMAIAVBwABqIhBCADcDACAFQThqIhFCADcDACAFQTBqIhJCADcDACAFIAM6AGogBUIANwMoIAVBADsBaCAFQQApA4CJATcDACAFQQApA4iJATcDCCAFQQApA5CJATcDECAFQQApA5iJATcDGCAFIAatIAJ8NwMgIAUgACAIaiAHEAIgBUGAAWpBMGogEikDADcDACAFQYABakE4aiARKQMANwMAIAUgBSkDACIJNwOAASAFIAUpAwgiCjcDiAEgBSAFKQMQIgs3A5ABIAUgBSkDGCIMNwOYASAFIAUpAyg3A6gBIAUtAGohByAFLQBpIQMgBSkDICECIAUtAGghCCAFQYABakHAAGogECkDADcDACAFQYABakHIAGogDykDADcDACAFQYABakHQAGogDikDADcDACAFQYABakHYAGogASkDADcDACAFQYABakHgAGogDSkDADcDACAFIAg6AOgBIAUgAjcDoAEgBSAHIANFckECciIHOgDpASAFIAw3A4gCIAUgCzcDgAIgBSAKNwP4ASAFIAk3A/ABIAVBkAJqIAVB8AFqIAVBqAFqIAggAiAHQf8BcRADIAUpA7ACIQIgBSkDkAIhCSAFKQO4AiEKIAUpA5gCIQsgBSkDwAIhDCAFKQOgAiETIAQgBkEFdGoiCCAFKQPIAiAFKQOoAoU3AxggCCAMIBOFNwMQIAggCiALhTcDCCAIIAIgCYU3AwAgBkEBaiEGDAELIABCASABQX9qQQp2QQFyrXlCP4WGIgmnQQp0IgggAiADIAUQBSEHIAAgCGogASAIayAJQv///wGDIAJ8IAMgBUHAAEEgIAhBgAhLG2oQBSEIAkAgB0EBRw0AIAQgBSkDADcDACAEIAUpAwg3AwggBCAFKQMQNwMQIAQgBSkDGDcDGCAEIAUpAyA3AyAgBCAFKQMoNwMoIAQgBSkDMDcDMCAEIAUpAzg3AzhBAiEGDAELQQAhDUEAIQYCQCAIIAdqIgBBAkkNACAAQX5qQQF2IgZBAWohDSAFQfABaiEIIAUhBwNAIAggBzYCACAHQcAAaiEHIAhBBGohCCANQX9qIg0NAAsgA0EEciEBIAVB8AFqIQcgBCEIIAZBAWoiBiENA0AgBygCACEDIAVBACkDgIkBNwOQAiAFQQApA4iJATcDmAIgBUEAKQOQiQE3A6ACIAVBACkDmIkBNwOoAiAFQYABaiAFQZACaiADQcAAQgAgARADIAUpA6ABIQIgBSkDgAEhCSAFKQOoASEKIAUpA4gBIQsgBSkDsAEhDCAFKQOQASETIAhBGGogBSkDuAEgBSkDmAGFNwMAIAhBEGogDCAThTcDACAIQQhqIAogC4U3AwAgCCACIAmFNwMAIAhBIGohCCAHQQRqIQcgDUF/aiINDQALIABBfnEhDQsgDSAATw0AIAQgBkEFdGoiCCAFIAZBBnRqIgcpAwA3AwAgCCAHKQMINwMIIAggBykDEDcDECAIIAcpAxg3AxggBkEBaiEGCyAFQdACaiQAIAYLvREIAn8EfgF/AX4EfwN+An8BfiMAQfABayIBJAACQCAARQ0AAkBBAC0AkIoBIgINACABQTBqQQApA9CJATcDACABQThqQQApA9iJATcDACABQQApA6CJASIDNwMAIAFBACkDqIkBIgQ3AwggAUEAKQOwiQEiBTcDECABQQApA7iJASIGNwMYIAFBACkDyIkBNwMoQQAtAIqKASECQQAtAImKASEHQQApA8CJASEIQQAtAIiKASEJIAFBwABqQQApA+CJATcDACABQcgAakEAKQPoiQE3AwAgAUHQAGpBACkD8IkBNwMAIAFB2ABqQQApA/iJATcDACABQeAAakEAKQOAigE3AwAgASAJOgBoIAEgCDcDICABIAIgB0VyQQJyIgI6AGkgAUHwAGpBAXIhCiABQShqIQtCACEIQYAJIQwDQCABQbABaiABIAsgCUH/AXEgCCACQQhyQf8BcRADIAEgASkD2AEiDSABKQO4AYU3A3ggASABKQPgASIOIAEpA8ABhTcDgAEgASAGIAEpA+gBIg+FNwOoASABIAUgDoU3A6ABIAEgBCANhTcDmAEgASADIAEpA9ABIg2FNwOQASABIA8gASkDyAGFNwOIASAAQcAAIABBwABJGyIQQX9qIQkgASANIAEpA7ABhSINNwNwIA2nIREgCiEHIAwhAgJAA0AgAiAROgAAIAlFDQEgCUF/aiEJIAJBAWohAiAHLQAAIREgB0EBaiEHDAALCyAAIBBrIgBFDQIgDCAQaiEMIAhCAXwhCCABKQMIIQQgASkDACEDIAEpAxghBiABKQMQIQUgAS0AaSECIAEtAGghCQwACwsCQAJAAkBBAC0AiYoBIglBBnRBAEEALQCIigEiDGtGDQAgAUHgAGpBACkDgIoBNwMAIAFB2ABqQQApA/iJATcDACABQdAAakEAKQPwiQE3AwAgAUHIAGpBACkD6IkBNwMAIAFBwABqQQApA+CJATcDACABQThqQQApA9iJATcDACABQTBqQQApA9CJATcDACABQQApA8iJATcDKCABQQApA8CJASIINwMgIAFBACkDuIkBIg03AxggAUEAKQOwiQEiDjcDECABQQApA6iJASIPNwMIIAFBACkDoIkBIgM3AwBBAC0AiooBIQcgAUHuAGogAUG0AWovAQA7AQAgASABKAGwATYBaiABIAw6AGggASAHIAlFckECciIJOgBpDAELIAFB4ABqIAJBfmoiAkEFdCIJQcmKAWopAwA3AwAgAUHYAGogCUHBigFqKQMANwMAIAFB0ABqIAlBuYoBaikDADcDACABQcgAaiAJQbGKAWopAwA3AwBBwAAhDCABQcAAaiAJQamKAWopAwA3AwAgAUE4aiAJQaGKAWopAwA3AwAgAUEwaiAJQZmKAWopAwA3AwBCACEIIAFCADcDICABQQApA5iJASINNwMYIAFBACkDkIkBIg43AxAgAUEAKQOIiQEiDzcDCCABQQApA4CJASIDNwMAIAEgCUGRigFqKQMANwMoQQAtAIqKASEJIAFB7gBqIAFBsAFqQQRqLwEAOwEAIAEgASgBsAE2AWogASAJQQRyIgk6AGkgAUHAADoAaCACRQ0BCyACQX9qIgdBBXQiEUGRigFqKQMAIQQgEUGZigFqKQMAIQUgEUGhigFqKQMAIQYgEUGpigFqKQMAIRIgASANNwOIASABIA43A4ABIAEgDzcDeCABIAM3A3AgAUGwAWogAUHwAGogAUEoaiIQIAwgCCAJQf8BcRADIAFBwAA6AGggASASNwNAIAEgBjcDOCABIAU3AzAgASAENwMoIAFCADcDICABQQApA5iJASIINwMYIAFBACkDkIkBIg03AxAgAUEAKQOIiQEiDjcDCCABQQApA4CJASIPNwMAIAFBAC0AiooBQQRyIgk6AGkgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggAUHuAGogAUGwAWpBBGoiDC8BADsBACABIAEoAbABNgFqIAdFDQAgAUHqAGohESACQQV0QemJAWohAgNAIAJBaGopAwAhAyACQXBqKQMAIQQgAkF4aikDACEFIAIpAwAhBiABIAg3A4gBIAEgDTcDgAEgASAONwN4IAEgDzcDcCABQbABaiABQfAAaiAQQcAAQgAgCUH/AXEQAyABQcAAOgBoIAEgBjcDQCABIAU3AzggASAENwMwIAEgAzcDKCABQgA3AyAgAUEAKQOYiQEiCDcDGCABQQApA5CJASINNwMQIAFBACkDiIkBIg43AwggAUEAKQOAiQEiDzcDACABQQAtAIqKAUEEciIJOgBpIAEgASkD6AEgASkDyAGFNwNgIAEgASkD4AEgASkDwAGFNwNYIAEgASkD2AEgASkDuAGFNwNQIAEgASkD0AEgASkDsAGFNwNIIBFBBGogDC8BADsBACARIAEoAbABNgEAIAJBYGohAiAHQX9qIgcNAAsLIAFB8ABqQQFyIQogAUEoaiELQgAhCEGACSEMQcAAIQIDQCABQbABaiABIAsgAkH/AXEgCCAJQQhyQf8BcRADIAEgASkD2AEiDSABKQO4AYU3A3ggASABKQPgASIOIAEpA8ABhTcDgAEgASABKQPoASIPIAEpA8gBhTcDiAEgASABKQMAIAEpA9ABIgOFNwOQASABIA0gASkDCIU3A5gBIAEgDiABKQMQhTcDoAEgASADIAEpA7ABhSINNwNwIAEgDyABKQMYhTcDqAEgAEHAACAAQcAASRsiEEF/aiECIA2nIREgCiEHIAwhCQJAA0AgCSAROgAAIAJFDQEgAkF/aiECIAlBAWohCSAHLQAAIREgB0EBaiEHDAALCyAAIBBrIgBFDQEgDCAQaiEMIAhCAXwhCCABLQBpIQkgAS0AaCECDAALCyABQfABaiQAC6MCAQR+AkACQCAAQSBGDQBCq7OP/JGjs/DbACEBQv+kuYjFkdqCm38hAkLy5rvjo6f9p6V/IQNC58yn0NbQ67O7fyEEQQAhAAwBC0EAKQOYCSEBQQApA5AJIQJBACkDiAkhA0EAKQOACSEEQRAhAAtBACAAOgCKigFBAEIANwOAigFBAEIANwP4iQFBAEIANwPwiQFBAEIANwPoiQFBAEIANwPgiQFBAEIANwPYiQFBAEIANwPQiQFBAEIANwPIiQFBAEIANwPAiQFBACABNwO4iQFBACACNwOwiQFBACADNwOoiQFBACAENwOgiQFBACABNwOYiQFBACACNwOQiQFBACADNwOIiQFBACAENwOAiQFBAEEAOgCQigFBAEEAOwGIigELBgAgABABCwYAIAAQBgsGAEGAiQELqwIBBH4CQAJAIAFBIEYNAEKrs4/8kaOz8NsAIQNC/6S5iMWR2oKbfyEEQvLmu+Ojp/2npX8hBULnzKfQ1tDrs7t/IQZBACEBDAELQQApA5gJIQNBACkDkAkhBEEAKQOICSEFQQApA4AJIQZBECEBC0EAIAE6AIqKAUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQgA3A8CJAUEAIAM3A7iJAUEAIAQ3A7CJAUEAIAU3A6iJAUEAIAY3A6CJAUEAIAM3A5iJAUEAIAQ3A5CJAUEAIAU3A4iJAUEAIAY3A4CJAUEAQQA6AJCKAUEAQQA7AYiKASAAEAEgAhAGCwsLAQBBgAgLBHgHAAA=\";\n    var hash$g = \"e8655383\";\n    var wasmJson$g = {\n    \tname: name$g,\n    \tdata: data$g,\n    \thash: hash$g\n    };\n\n    const mutex$i = new Mutex();\n    let wasmCache$i = null;\n    function validateBits$2(bits) {\n        if (!Number.isInteger(bits) || bits < 8 || bits % 8 !== 0) {\n            return new Error('Invalid variant! Valid values: 8, 16, ...');\n        }\n        return null;\n    }\n    /**\n     * Calculates BLAKE3 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param bits Number of output bits, which has to be a number\n     *             divisible by 8. Defaults to 256.\n     * @param key Optional key (string, Buffer or TypedArray). Length should be 32 bytes.\n     * @returns Computed hash as a hexadecimal string\n     */\n    function blake3(data, bits = 256, key = null) {\n        if (validateBits$2(bits)) {\n            return Promise.reject(validateBits$2(bits));\n        }\n        let keyBuffer = null;\n        let initParam = 0; // key is empty by default\n        if (key !== null) {\n            keyBuffer = getUInt8Buffer(key);\n            if (keyBuffer.length !== 32) {\n                return Promise.reject(new Error('Key length must be exactly 32 bytes'));\n            }\n            initParam = 32;\n        }\n        const hashLength = bits / 8;\n        const digestParam = hashLength;\n        if (wasmCache$i === null || wasmCache$i.hashLength !== hashLength) {\n            return lockedCreate(mutex$i, wasmJson$g, hashLength)\n                .then((wasm) => {\n                wasmCache$i = wasm;\n                if (initParam === 32) {\n                    wasmCache$i.writeMemory(keyBuffer);\n                }\n                return wasmCache$i.calculate(data, initParam, digestParam);\n            });\n        }\n        try {\n            if (initParam === 32) {\n                wasmCache$i.writeMemory(keyBuffer);\n            }\n            const hash = wasmCache$i.calculate(data, initParam, digestParam);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new BLAKE3 hash instance\n     * @param bits Number of output bits, which has to be a number\n     *             divisible by 8. Defaults to 256.\n     * @param key Optional key (string, Buffer or TypedArray). Length should be 32 bytes.\n     */\n    function createBLAKE3(bits = 256, key = null) {\n        if (validateBits$2(bits)) {\n            return Promise.reject(validateBits$2(bits));\n        }\n        let keyBuffer = null;\n        let initParam = 0; // key is empty by default\n        if (key !== null) {\n            keyBuffer = getUInt8Buffer(key);\n            if (keyBuffer.length !== 32) {\n                return Promise.reject(new Error('Key length must be exactly 32 bytes'));\n            }\n            initParam = 32;\n        }\n        const outputSize = bits / 8;\n        const digestParam = outputSize;\n        return WASMInterface(wasmJson$g, outputSize).then((wasm) => {\n            if (initParam === 32) {\n                wasm.writeMemory(keyBuffer);\n            }\n            wasm.init(initParam);\n            const obj = {\n                init: initParam === 32\n                    ? () => {\n                        wasm.writeMemory(keyBuffer);\n                        wasm.init(initParam);\n                        return obj;\n                    }\n                    : () => {\n                        wasm.init(initParam);\n                        return obj;\n                    },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType, digestParam),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: outputSize,\n            };\n            return obj;\n        });\n    }\n\n    var name$f = \"crc32\";\n    var data$f = \"AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwgHAAEBAQIAAwQFAXABAQEFBAEBAgIGDgJ/AUGQyQULfwBBgAgLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAILSGFzaF9VcGRhdGUAAwpIYXNoX0ZpbmFsAAQNSGFzaF9HZXRTdGF0ZQAFDkhhc2hfQ2FsY3VsYXRlAAYKU1RBVEVfU0laRQMBCq0HBwUAQYAJC8MDAQN/QYCJASEBQQAhAgNAIAFBAEEAQQBBAEEAQQBBAEEAIAJBAXFrIABxIAJBAXZzIgNBAXFrIABxIANBAXZzIgNBAXFrIABxIANBAXZzIgNBAXFrIABxIANBAXZzIgNBAXFrIABxIANBAXZzIgNBAXFrIABxIANBAXZzIgNBAXFrIABxIANBAXZzIgNBAXFrIABxIANBAXZzNgIAIAFBBGohASACQQFqIgJBgAJHDQALQQAhAANAIABBhJEBaiAAQYSJAWooAgAiAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhJkBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEoQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYSpAWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhLEBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEuQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYTBAWogAkH/AXFBAnRBgIkBaigCACACQQh2czYCACAAQQRqIgBB/AdHDQALCycAAkBBACgCgMkBIABGDQAgABABQQAgADYCgMkBC0EAQQA2AoTJAQuhAgEDf0EAKAKEyQFBf3MhAUGACSECAkAgAEEISQ0AQYAJIQIDQCACQQRqKAIAIgNBDnZB/AdxQYCRAWooAgAgA0EWdkH8B3FBgIkBaigCAHMgA0EGdkH8B3FBgJkBaigCAHMgA0H/AXFBAnRBgKEBaigCAHMgAigCACABcyIBQRZ2QfwHcUGAqQFqKAIAcyABQQ52QfwHcUGAsQFqKAIAcyABQQZ2QfwHcUGAuQFqKAIAcyABQf8BcUECdEGAwQFqKAIAcyEBIAJBCGohAiAAQXhqIgBBB0sNAAsLAkAgAEUNAANAIAFB/wFxIAItAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQFqIQIgAEF/aiIADQALC0EAIAFBf3M2AoTJAQszAQF/QQBBACgChMkBIgBBGHQgAEEIdEGAgPwHcXIgAEEIdkGA/gNxIABBGHZycjYCgAkLBgBBhMkBC1oAAkBBACgCgMkBIAFGDQAgARABQQAgATYCgMkBC0EAQQA2AoTJASAAEANBAEEAKAKEyQEiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgKACQsLCwEAQYAICwQEAAAA\";\n    var hash$f = \"749723dc\";\n    var wasmJson$f = {\n    \tname: name$f,\n    \tdata: data$f,\n    \thash: hash$f\n    };\n\n    const mutex$h = new Mutex();\n    let wasmCache$h = null;\n    /**\n     * Calculates CRC-32 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function crc32(data) {\n        if (wasmCache$h === null) {\n            return lockedCreate(mutex$h, wasmJson$f, 4)\n                .then((wasm) => {\n                wasmCache$h = wasm;\n                return wasmCache$h.calculate(data, 0xEDB88320);\n            });\n        }\n        try {\n            const hash = wasmCache$h.calculate(data, 0xEDB88320);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new CRC-32 hash instance\n     */\n    function createCRC32() {\n        return WASMInterface(wasmJson$f, 4).then((wasm) => {\n            wasm.init(0xEDB88320);\n            const obj = {\n                init: () => { wasm.init(0xEDB88320); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 4,\n                digestSize: 4,\n            };\n            return obj;\n        });\n    }\n\n    const mutex$g = new Mutex();\n    let wasmCache$g = null;\n    /**\n     * Calculates CRC-32C hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function crc32c(data) {\n        if (wasmCache$g === null) {\n            return lockedCreate(mutex$g, wasmJson$f, 4)\n                .then((wasm) => {\n                wasmCache$g = wasm;\n                return wasmCache$g.calculate(data, 0x82F63B78);\n            });\n        }\n        try {\n            const hash = wasmCache$g.calculate(data, 0x82F63B78);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new CRC-32C hash instance\n     */\n    function createCRC32C() {\n        return WASMInterface(wasmJson$f, 4).then((wasm) => {\n            wasm.init(0x82F63B78);\n            const obj = {\n                init: () => { wasm.init(0x82F63B78); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 4,\n                digestSize: 4,\n            };\n            return obj;\n        });\n    }\n\n    var name$e = \"md4\";\n    var data$e = \"AGFzbQEAAAABEgRgAAF/YAAAYAF/AGACf38BfwMIBwABAgMBAAIEBQFwAQEBBQQBAQICBg4CfwFBoIoFC38AQYAICwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAABC0hhc2hfVXBkYXRlAAIKSGFzaF9GaW5hbAAEDUhhc2hfR2V0U3RhdGUABQ5IYXNoX0NhbGN1bGF0ZQAGClNUQVRFX1NJWkUDAQqXEQcFAEGACQstAEEAQv6568XpjpWZEDcCkIkBQQBCgcaUupbx6uZvNwKIiQFBAEIANwKAiQEL6AIBA39BAEEAKAKAiQEiASAAakH/////AXEiAjYCgIkBQQAoAoSJASEDAkAgAiABTw0AQQAgA0EBaiIDNgKEiQELQQAgAyAAQR12ajYChIkBAkACQAJAAkACQAJAIAFBP3EiAw0AQYAJIQIMAQtBwAAgA2siAiAASw0BIANBGGohA0EAIQEDQCADIAFqQYCJAWogAUGACWotAAA6AAAgAyABQQFqIgFqQdgARw0AC0GYiQFBwAAQAxogACACayEAIAJBgAlqIQILIABBwABPDQEgACEDDAILIABFDQJBACEBIANBmIkBakEALQCACToAACAAQQFGDQIgA0GZiQFqIQMgAEF/aiECA0AgAyABaiABQYEJai0AADoAACACIAFBAWoiAUcNAAwDCwsgAEE/cSEDIAIgAEFAcRADIQILIANFDQBBACEBA0AgAUGYiQFqIAIgAWotAAA6AAAgAyABQQFqIgFHDQALCwuYCwEXf0EAKAKUiQEhAkEAKAKQiQEhA0EAKAKMiQEhBEEAKAKIiQEhBQNAIABBHGooAgAiBiAAQRRqKAIAIgcgAEEYaigCACIIIABBEGooAgAiCSAAQSxqKAIAIgogAEEoaigCACILIABBJGooAgAiDCAAQSBqKAIAIg0gCyAIIABBCGooAgAiDiADaiAAQQRqKAIAIg8gAmogBCADIAJzcSACcyAFaiAAKAIAIhBqQQN3IhEgBCADc3EgA3NqQQd3IhIgESAEc3EgBHNqQQt3IhNqIBIgB2ogESAJaiAAQQxqKAIAIhQgBGogEyASIBFzcSARc2pBE3ciESATIBJzcSASc2pBA3ciEiARIBNzcSATc2pBB3ciEyASIBFzcSARc2pBC3ciFWogEyAMaiASIA1qIBEgBmogFSATIBJzcSASc2pBE3ciESAVIBNzcSATc2pBA3ciEiARIBVzcSAVc2pBB3ciEyASIBFzcSARc2pBC3ciFSAAQThqKAIAIhZqIBMgAEE0aigCACIXaiASIABBMGooAgAiGGogESAKaiAVIBMgEnNxIBJzakETdyISIBUgE3NxIBNzakEDdyITIBIgFXNxIBVzakEHdyIVIBMgEnNxIBJzakELdyIRaiAJIBVqIBAgE2ogEiAAQTxqKAIAIglqIBEgFSATc3EgE3NqQRN3IhIgESAVcnEgESAVcXJqQZnzidQFakEDdyITIBIgEXJxIBIgEXFyakGZ84nUBWpBBXciESATIBJycSATIBJxcmpBmfOJ1AVqQQl3IhVqIAcgEWogDyATaiAYIBJqIBUgESATcnEgESATcXJqQZnzidQFakENdyISIBUgEXJxIBUgEXFyakGZ84nUBWpBA3ciESASIBVycSASIBVxcmpBmfOJ1AVqQQV3IhMgESAScnEgESAScXJqQZnzidQFakEJdyIVaiAIIBNqIA4gEWogFyASaiAVIBMgEXJxIBMgEXFyakGZ84nUBWpBDXciESAVIBNycSAVIBNxcmpBmfOJ1AVqQQN3IhIgESAVcnEgESAVcXJqQZnzidQFakEFdyITIBIgEXJxIBIgEXFyakGZ84nUBWpBCXciFWogBiATaiAUIBJqIBYgEWogFSATIBJycSATIBJxcmpBmfOJ1AVqQQ13IhEgFSATcnEgFSATcXJqQZnzidQFakEDdyISIBEgFXJxIBEgFXFyakGZ84nUBWpBBXciEyASIBFycSASIBFxcmpBmfOJ1AVqQQl3IhVqIBAgEmogCSARaiAVIBMgEnJxIBMgEnFyakGZ84nUBWpBDXciBiAVcyISIBNzakGh1+f2BmpBA3ciESAGcyANIBNqIBIgEXNqQaHX5/YGakEJdyISc2pBodfn9gZqQQt3IhNqIA4gEWogEyAScyAYIAZqIBIgEXMgE3NqQaHX5/YGakEPdyIRc2pBodfn9gZqQQN3IhUgEXMgCyASaiARIBNzIBVzakGh1+f2BmpBCXciEnNqQaHX5/YGakELdyITaiAPIBVqIBMgEnMgFiARaiASIBVzIBNzakGh1+f2BmpBD3ciEXNqQaHX5/YGakEDdyIVIBFzIAwgEmogESATcyAVc2pBodfn9gZqQQl3IhJzakGh1+f2BmpBC3ciE2ogFCAVaiATIBJzIBcgEWogEiAVcyATc2pBodfn9gZqQQ93IhFzakGh1+f2BmpBA3ciFSARcyAKIBJqIBEgE3MgFXNqQaHX5/YGakEJdyISc2pBodfn9gZqQQt3IhMgA2ohAyAJIBFqIBIgFXMgE3NqQaHX5/YGakEPdyAEaiEEIBIgAmohAiAVIAVqIQUgAEHAAGohACABQUBqIgENAAtBACACNgKUiQFBACADNgKQiQFBACAENgKMiQFBACAFNgKIiQEgAAuhAgEDf0EAKAKAiQEiAEE/cSIBQZiJAWpBgAE6AAACQAJAAkAgAUE/cyICQQdLDQACQCACRQ0AIAFBmYkBaiEAA0AgAEEAOgAAIABBAWohACACQX9qIgINAAsLQcAAIQJBmIkBQcAAEAMaQQAhAAwBCyACQQhGDQEgAUEBaiEACyAAQY+JAWohAQNAIAEgAmpBADoAACACQXdqIQAgAkF/aiECIABBAEoNAAtBACgCgIkBIQALQQAgAEEVdjoA04kBQQAgAEENdjoA0okBQQAgAEEFdjoA0YkBQQAgAEEDdCICOgDQiQFBACACNgKAiQFBAEEAKAKEiQE2AtSJAUGYiQFBwAAQAxpBAEEAKQKIiQE3A4AJQQBBACkCkIkBNwOICQsGAEGAiQELMwBBAEL+uevF6Y6VmRA3ApCJAUEAQoHGlLqW8ermbzcCiIkBQQBCADcCgIkBIAAQAhAECwsLAQBBgAgLBJgAAAA=\";\n    var hash$e = \"1bf01052\";\n    var wasmJson$e = {\n    \tname: name$e,\n    \tdata: data$e,\n    \thash: hash$e\n    };\n\n    const mutex$f = new Mutex();\n    let wasmCache$f = null;\n    /**\n     * Calculates MD4 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function md4(data) {\n        if (wasmCache$f === null) {\n            return lockedCreate(mutex$f, wasmJson$e, 16)\n                .then((wasm) => {\n                wasmCache$f = wasm;\n                return wasmCache$f.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache$f.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new MD4 hash instance\n     */\n    function createMD4() {\n        return WASMInterface(wasmJson$e, 16).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 16,\n            };\n            return obj;\n        });\n    }\n\n    var name$d = \"md5\";\n    var data$d = \"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\";\n    var hash$d = \"9b0fac7d\";\n    var wasmJson$d = {\n    \tname: name$d,\n    \tdata: data$d,\n    \thash: hash$d\n    };\n\n    const mutex$e = new Mutex();\n    let wasmCache$e = null;\n    /**\n     * Calculates MD5 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function md5(data) {\n        if (wasmCache$e === null) {\n            return lockedCreate(mutex$e, wasmJson$d, 16)\n                .then((wasm) => {\n                wasmCache$e = wasm;\n                return wasmCache$e.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache$e.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new MD5 hash instance\n     */\n    function createMD5() {\n        return WASMInterface(wasmJson$d, 16).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 16,\n            };\n            return obj;\n        });\n    }\n\n    var name$c = \"sha1\";\n    var data$c = \"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\";\n    var hash$c = \"40d92e5d\";\n    var wasmJson$c = {\n    \tname: name$c,\n    \tdata: data$c,\n    \thash: hash$c\n    };\n\n    const mutex$d = new Mutex();\n    let wasmCache$d = null;\n    /**\n     * Calculates SHA-1 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sha1(data) {\n        if (wasmCache$d === null) {\n            return lockedCreate(mutex$d, wasmJson$c, 20)\n                .then((wasm) => {\n                wasmCache$d = wasm;\n                return wasmCache$d.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache$d.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SHA-1 hash instance\n     */\n    function createSHA1() {\n        return WASMInterface(wasmJson$c, 20).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 20,\n            };\n            return obj;\n        });\n    }\n\n    var name$b = \"sha3\";\n    var data$b = \"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\";\n    var hash$b = \"ec266d91\";\n    var wasmJson$b = {\n    \tname: name$b,\n    \tdata: data$b,\n    \thash: hash$b\n    };\n\n    const mutex$c = new Mutex();\n    let wasmCache$c = null;\n    function validateBits$1(bits) {\n        if (![224, 256, 384, 512].includes(bits)) {\n            return new Error('Invalid variant! Valid values: 224, 256, 384, 512');\n        }\n        return null;\n    }\n    /**\n     * Calculates SHA-3 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param bits Number of output bits. Valid values: 224, 256, 384, 512\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sha3(data, bits = 512) {\n        if (validateBits$1(bits)) {\n            return Promise.reject(validateBits$1(bits));\n        }\n        const hashLength = bits / 8;\n        if (wasmCache$c === null || wasmCache$c.hashLength !== hashLength) {\n            return lockedCreate(mutex$c, wasmJson$b, hashLength)\n                .then((wasm) => {\n                wasmCache$c = wasm;\n                return wasmCache$c.calculate(data, bits, 0x06);\n            });\n        }\n        try {\n            const hash = wasmCache$c.calculate(data, bits, 0x06);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SHA-3 hash instance\n     * @param bits Number of output bits. Valid values: 224, 256, 384, 512\n     */\n    function createSHA3(bits = 512) {\n        if (validateBits$1(bits)) {\n            return Promise.reject(validateBits$1(bits));\n        }\n        const outputSize = bits / 8;\n        return WASMInterface(wasmJson$b, outputSize).then((wasm) => {\n            wasm.init(bits);\n            const obj = {\n                init: () => { wasm.init(bits); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType, 0x06),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 200 - 2 * outputSize,\n                digestSize: outputSize,\n            };\n            return obj;\n        });\n    }\n\n    const mutex$b = new Mutex();\n    let wasmCache$b = null;\n    function validateBits(bits) {\n        if (![224, 256, 384, 512].includes(bits)) {\n            return new Error('Invalid variant! Valid values: 224, 256, 384, 512');\n        }\n        return null;\n    }\n    /**\n     * Calculates Keccak hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param bits Number of output bits. Valid values: 224, 256, 384, 512\n     * @returns Computed hash as a hexadecimal string\n     */\n    function keccak(data, bits = 512) {\n        if (validateBits(bits)) {\n            return Promise.reject(validateBits(bits));\n        }\n        const hashLength = bits / 8;\n        if (wasmCache$b === null || wasmCache$b.hashLength !== hashLength) {\n            return lockedCreate(mutex$b, wasmJson$b, hashLength)\n                .then((wasm) => {\n                wasmCache$b = wasm;\n                return wasmCache$b.calculate(data, bits, 0x01);\n            });\n        }\n        try {\n            const hash = wasmCache$b.calculate(data, bits, 0x01);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new Keccak hash instance\n     * @param bits Number of output bits. Valid values: 224, 256, 384, 512\n     */\n    function createKeccak(bits = 512) {\n        if (validateBits(bits)) {\n            return Promise.reject(validateBits(bits));\n        }\n        const outputSize = bits / 8;\n        return WASMInterface(wasmJson$b, outputSize).then((wasm) => {\n            wasm.init(bits);\n            const obj = {\n                init: () => { wasm.init(bits); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType, 0x01),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 200 - 2 * outputSize,\n                digestSize: outputSize,\n            };\n            return obj;\n        });\n    }\n\n    var name$a = \"sha256\";\n    var data$a = \"AGFzbQEAAAABEQRgAAF/YAF/AGACf38AYAAAAwgHAAEBAgMAAgQFAXABAQEFBAEBAgIGDgJ/AUHwiQULfwBBgAgLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAELSGFzaF9VcGRhdGUAAgpIYXNoX0ZpbmFsAAQNSGFzaF9HZXRTdGF0ZQAFDkhhc2hfQ2FsY3VsYXRlAAYKU1RBVEVfU0laRQMBCuJIBwUAQYAJC50BAEEAQgA3A8CJAUEAQRxBICAAQeABRiIAGzYC6IkBQQBCp5/mp8b0k/2+f0Krs4/8kaOz8NsAIAAbNwPgiQFBAEKxloD+n6KFrOgAQv+kuYjFkdqCm38gABs3A9iJAUEAQpe6w4OTp5aHd0Ly5rvjo6f9p6V/IAAbNwPQiQFBAELYvZaI/KC1vjZC58yn0NbQ67O7fyAAGzcDyIkBC4ACAgF+Bn9BAEEAKQPAiQEiASAArXw3A8CJAQJAAkACQCABp0E/cSICDQBBgAkhAgwBCwJAIABBwAAgAmsiAyADIABLIgQbIgVFDQAgAkGAiQFqIQZBACECQQAhBwNAIAYgAmogAkGACWotAAA6AAAgBSAHQQFqIgdB/wFxIgJLDQALCyAEDQFByIkBQYCJARADIAAgA2shACADQYAJaiECCwJAIABBwABJDQADQEHIiQEgAhADIAJBwABqIQIgAEFAaiIAQT9LDQALCyAARQ0AQQAhB0EAIQUDQCAHQYCJAWogAiAHai0AADoAACAAIAVBAWoiBUH/AXEiB0sNAAsLC5M+AUV/IAAgASgCPCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIiAkEOdyACQQN2cyACQRl3cyABKAI4IgNBGHQgA0EIdEGAgPwHcXIgA0EIdkGA/gNxIANBGHZyciIDaiABKAIgIgRBGHQgBEEIdEGAgPwHcXIgBEEIdkGA/gNxIARBGHZyciIFQQ53IAVBA3ZzIAVBGXdzIAEoAhwiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyIgZqIAEoAgQiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyIgdBDncgB0EDdnMgB0EZd3MgASgCACIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnIiCGogASgCJCIEQRh0IARBCHRBgID8B3FyIARBCHZBgP4DcSAEQRh2cnIiCWogA0ENdyADQQp2cyADQQ93c2oiBGogASgCGCIKQRh0IApBCHRBgID8B3FyIApBCHZBgP4DcSAKQRh2cnIiC0EOdyALQQN2cyALQRl3cyABKAIUIgpBGHQgCkEIdEGAgPwHcXIgCkEIdkGA/gNxIApBGHZyciIMaiADaiABKAIQIgpBGHQgCkEIdEGAgPwHcXIgCkEIdkGA/gNxIApBGHZyciINQQ53IA1BA3ZzIA1BGXdzIAEoAgwiCkEYdCAKQQh0QYCA/AdxciAKQQh2QYD+A3EgCkEYdnJyIg5qIAEoAjAiCkEYdCAKQQh0QYCA/AdxciAKQQh2QYD+A3EgCkEYdnJyIg9qIAEoAggiCkEYdCAKQQh0QYCA/AdxciAKQQh2QYD+A3EgCkEYdnJyIhBBDncgEEEDdnMgEEEZd3MgB2ogASgCKCIKQRh0IApBCHRBgID8B3FyIApBCHZBgP4DcSAKQRh2cnIiEWogAkENdyACQQp2cyACQQ93c2oiCkENdyAKQQp2cyAKQQ93c2oiEkENdyASQQp2cyASQQ93c2oiE0ENdyATQQp2cyATQQ93c2oiFGogASgCNCIVQRh0IBVBCHRBgID8B3FyIBVBCHZBgP4DcSAVQRh2cnIiFkEOdyAWQQN2cyAWQRl3cyAPaiATaiABKAIsIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZyciIXQQ53IBdBA3ZzIBdBGXdzIBFqIBJqIAlBDncgCUEDdnMgCUEZd3MgBWogCmogBkEOdyAGQQN2cyAGQRl3cyALaiACaiAMQQ53IAxBA3ZzIAxBGXdzIA1qIBZqIA5BDncgDkEDdnMgDkEZd3MgEGogF2ogBEENdyAEQQp2cyAEQQ93c2oiFUENdyAVQQp2cyAVQQ93c2oiGEENdyAYQQp2cyAYQQ93c2oiGUENdyAZQQp2cyAZQQ93c2oiGkENdyAaQQp2cyAaQQ93c2oiG0ENdyAbQQp2cyAbQQ93c2oiHEENdyAcQQp2cyAcQQ93c2oiHUEOdyAdQQN2cyAdQRl3cyADQQ53IANBA3ZzIANBGXdzIBZqIBlqIA9BDncgD0EDdnMgD0EZd3MgF2ogGGogEUEOdyARQQN2cyARQRl3cyAJaiAVaiAUQQ13IBRBCnZzIBRBD3dzaiIeQQ13IB5BCnZzIB5BD3dzaiIfQQ13IB9BCnZzIB9BD3dzaiIgaiAUQQ53IBRBA3ZzIBRBGXdzIBlqIARBDncgBEEDdnMgBEEZd3MgAmogGmogIEENdyAgQQp2cyAgQQ93c2oiIWogE0EOdyATQQN2cyATQRl3cyAYaiAgaiASQQ53IBJBA3ZzIBJBGXdzIBVqIB9qIApBDncgCkEDdnMgCkEZd3MgBGogHmogHUENdyAdQQp2cyAdQQ93c2oiIkENdyAiQQp2cyAiQQ93c2oiI0ENdyAjQQp2cyAjQQ93c2oiJEENdyAkQQp2cyAkQQ93c2oiJWogHEEOdyAcQQN2cyAcQRl3cyAfaiAkaiAbQQ53IBtBA3ZzIBtBGXdzIB5qICNqIBpBDncgGkEDdnMgGkEZd3MgFGogImogGUEOdyAZQQN2cyAZQRl3cyATaiAdaiAYQQ53IBhBA3ZzIBhBGXdzIBJqIBxqIBVBDncgFUEDdnMgFUEZd3MgCmogG2ogIUENdyAhQQp2cyAhQQ93c2oiJkENdyAmQQp2cyAmQQ93c2oiJ0ENdyAnQQp2cyAnQQ93c2oiKEENdyAoQQp2cyAoQQ93c2oiKUENdyApQQp2cyApQQ93c2oiKkENdyAqQQp2cyAqQQ93c2oiK0ENdyArQQp2cyArQQ93c2oiLEEOdyAsQQN2cyAsQRl3cyAgQQ53ICBBA3ZzICBBGXdzIBxqIChqIB9BDncgH0EDdnMgH0EZd3MgG2ogJ2ogHkEOdyAeQQN2cyAeQRl3cyAaaiAmaiAlQQ13ICVBCnZzICVBD3dzaiItQQ13IC1BCnZzIC1BD3dzaiIuQQ13IC5BCnZzIC5BD3dzaiIvaiAlQQ53ICVBA3ZzICVBGXdzIChqICFBDncgIUEDdnMgIUEZd3MgHWogKWogL0ENdyAvQQp2cyAvQQ93c2oiMGogJEEOdyAkQQN2cyAkQRl3cyAnaiAvaiAjQQ53ICNBA3ZzICNBGXdzICZqIC5qICJBDncgIkEDdnMgIkEZd3MgIWogLWogLEENdyAsQQp2cyAsQQ93c2oiMUENdyAxQQp2cyAxQQ93c2oiMkENdyAyQQp2cyAyQQ93c2oiM0ENdyAzQQp2cyAzQQ93c2oiNGogK0EOdyArQQN2cyArQRl3cyAuaiAzaiAqQQ53ICpBA3ZzICpBGXdzIC1qIDJqIClBDncgKUEDdnMgKUEZd3MgJWogMWogKEEOdyAoQQN2cyAoQRl3cyAkaiAsaiAnQQ53ICdBA3ZzICdBGXdzICNqICtqICZBDncgJkEDdnMgJkEZd3MgImogKmogMEENdyAwQQp2cyAwQQ93c2oiNUENdyA1QQp2cyA1QQ93c2oiNkENdyA2QQp2cyA2QQ93c2oiN0ENdyA3QQp2cyA3QQ93c2oiOEENdyA4QQp2cyA4QQ93c2oiOUENdyA5QQp2cyA5QQ93c2oiOkENdyA6QQp2cyA6QQ93c2oiOyA5IDEgKyApICcgISAfIBQgEiACIBcgBiAAKAIQIjwgDmogACgCFCI9IBBqIAAoAhgiPiAHaiAAKAIcIj8gPEEadyA8QRV3cyA8QQd3c2ogPiA9cyA8cSA+c2ogCGpBmN+olARqIkAgACgCDCJBaiIHID0gPHNxID1zaiAHQRp3IAdBFXdzIAdBB3dzakGRid2JB2oiQiAAKAIIIkNqIg4gByA8c3EgPHNqIA5BGncgDkEVd3MgDkEHd3NqQc/3g657aiJEIAAoAgQiRWoiECAOIAdzcSAHc2ogEEEadyAQQRV3cyAQQQd3c2pBpbfXzX5qIkYgACgCACIBaiIIaiALIBBqIAwgDmogByANaiAIIBAgDnNxIA5zaiAIQRp3IAhBFXdzIAhBB3dzakHbhNvKA2oiDSBDIEUgAXNxIEUgAXFzIAFBHncgAUETd3MgAUEKd3NqIEBqIgdqIgYgCCAQc3EgEHNqIAZBGncgBkEVd3MgBkEHd3NqQfGjxM8FaiJAIAdBHncgB0ETd3MgB0EKd3MgByABcyBFcSAHIAFxc2ogQmoiDmoiCyAGIAhzcSAIc2ogC0EadyALQRV3cyALQQd3c2pBpIX+kXlqIkIgDkEedyAOQRN3cyAOQQp3cyAOIAdzIAFxIA4gB3FzaiBEaiIQaiIIIAsgBnNxIAZzaiAIQRp3IAhBFXdzIAhBB3dzakHVvfHYemoiRCAQQR53IBBBE3dzIBBBCndzIBAgDnMgB3EgECAOcXNqIEZqIgdqIgxqIBEgCGogCSALaiAFIAZqIAwgCCALc3EgC3NqIAxBGncgDEEVd3MgDEEHd3NqQZjVnsB9aiIJIAdBHncgB0ETd3MgB0EKd3MgByAQcyAOcSAHIBBxc2ogDWoiDmoiBiAMIAhzcSAIc2ogBkEadyAGQRV3cyAGQQd3c2pBgbaNlAFqIhEgDkEedyAOQRN3cyAOQQp3cyAOIAdzIBBxIA4gB3FzaiBAaiIQaiIIIAYgDHNxIAxzaiAIQRp3IAhBFXdzIAhBB3dzakG+i8ahAmoiFyAQQR53IBBBE3dzIBBBCndzIBAgDnMgB3EgECAOcXNqIEJqIgdqIgsgCCAGc3EgBnNqIAtBGncgC0EVd3MgC0EHd3NqQcP7sagFaiIFIAdBHncgB0ETd3MgB0EKd3MgByAQcyAOcSAHIBBxc2ogRGoiDmoiDGogAyALaiAWIAhqIA8gBmogDCALIAhzcSAIc2ogDEEadyAMQRV3cyAMQQd3c2pB9Lr5lQdqIg8gDkEedyAOQRN3cyAOQQp3cyAOIAdzIBBxIA4gB3FzaiAJaiICaiIQIAwgC3NxIAtzaiAQQRp3IBBBFXdzIBBBB3dzakH+4/qGeGoiCyACQR53IAJBE3dzIAJBCndzIAIgDnMgB3EgAiAOcXNqIBFqIgNqIgggECAMc3EgDHNqIAhBGncgCEEVd3MgCEEHd3NqQaeN8N55aiIMIANBHncgA0ETd3MgA0EKd3MgAyACcyAOcSADIAJxc2ogF2oiB2oiDiAIIBBzcSAQc2ogDkEadyAOQRV3cyAOQQd3c2pB9OLvjHxqIgkgB0EedyAHQRN3cyAHQQp3cyAHIANzIAJxIAcgA3FzaiAFaiICaiIGaiAVIA5qIAogCGogBiAOIAhzcSAIcyAQaiAEaiAGQRp3IAZBFXdzIAZBB3dzakHB0+2kfmoiECACQR53IAJBE3dzIAJBCndzIAIgB3MgA3EgAiAHcXNqIA9qIgNqIgogBiAOc3EgDnNqIApBGncgCkEVd3MgCkEHd3NqQYaP+f1+aiIOIANBHncgA0ETd3MgA0EKd3MgAyACcyAHcSADIAJxc2ogC2oiBGoiEiAKIAZzcSAGc2ogEkEadyASQRV3cyASQQd3c2pBxruG/gBqIgggBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAMaiICaiIVIBIgCnNxIApzaiAVQRp3IBVBFXdzIBVBB3dzakHMw7KgAmoiBiACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIAlqIgNqIgdqIBkgFWogEyASaiAKIBhqIAcgFSASc3EgEnNqIAdBGncgB0EVd3MgB0EHd3NqQe/YpO8CaiIYIANBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogEGoiBGoiCiAHIBVzcSAVc2ogCkEadyAKQRV3cyAKQQd3c2pBqonS0wRqIhUgBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAOaiICaiISIAogB3NxIAdzaiASQRp3IBJBFXdzIBJBB3dzakHc08LlBWoiGSACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIAhqIgNqIhMgEiAKc3EgCnNqIBNBGncgE0EVd3MgE0EHd3NqQdqR5rcHaiIHIANBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogBmoiBGoiFGogGyATaiAeIBJqIBogCmogFCATIBJzcSASc2ogFEEadyAUQRV3cyAUQQd3c2pB0qL5wXlqIhogBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAYaiICaiIKIBQgE3NxIBNzaiAKQRp3IApBFXdzIApBB3dzakHtjMfBemoiGCACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIBVqIgNqIhIgCiAUc3EgFHNqIBJBGncgEkEVd3MgEkEHd3NqQcjPjIB7aiIVIANBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogGWoiBGoiEyASIApzcSAKc2ogE0EadyATQRV3cyATQQd3c2pBx//l+ntqIhkgBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAHaiICaiIUaiAdIBNqICAgEmogHCAKaiAUIBMgEnNxIBJzaiAUQRp3IBRBFXdzIBRBB3dzakHzl4C3fGoiGyACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIBpqIgNqIgogFCATc3EgE3NqIApBGncgCkEVd3MgCkEHd3NqQceinq19aiIaIANBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogGGoiBGoiEiAKIBRzcSAUc2ogEkEadyASQRV3cyASQQd3c2pB0capNmoiGCAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBVqIgJqIhMgEiAKc3EgCnNqIBNBGncgE0EVd3MgE0EHd3NqQefSpKEBaiIVIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogGWoiA2oiFGogIyATaiAmIBJqIBQgEyASc3EgEnMgCmogImogFEEadyAUQRV3cyAUQQd3c2pBhZXcvQJqIhkgA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAbaiIEaiIKIBQgE3NxIBNzaiAKQRp3IApBFXdzIApBB3dzakG4wuzwAmoiGyAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBpqIgJqIhIgCiAUc3EgFHNqIBJBGncgEkEVd3MgEkEHd3NqQfzbsekEaiIaIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogGGoiA2oiEyASIApzcSAKc2ogE0EadyATQRV3cyATQQd3c2pBk5rgmQVqIhggA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAVaiIEaiIUaiAlIBNqICggEmogCiAkaiAUIBMgEnNxIBJzaiAUQRp3IBRBFXdzIBRBB3dzakHU5qmoBmoiFSAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBlqIgJqIgogFCATc3EgE3NqIApBGncgCkEVd3MgCkEHd3NqQbuVqLMHaiIZIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogG2oiA2oiEiAKIBRzcSAUc2ogEkEadyASQRV3cyASQQd3c2pBrpKLjnhqIhsgA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAaaiIEaiITIBIgCnNxIApzaiATQRp3IBNBFXdzIBNBB3dzakGF2ciTeWoiGiAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBhqIgJqIhRqIC4gE2ogKiASaiAtIApqIBQgEyASc3EgEnNqIBRBGncgFEEVd3MgFEEHd3NqQaHR/5V6aiIYIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogFWoiA2oiCiAUIBNzcSATc2ogCkEadyAKQRV3cyAKQQd3c2pBy8zpwHpqIhUgA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAZaiIEaiISIAogFHNxIBRzaiASQRp3IBJBFXdzIBJBB3dzakHwlq6SfGoiGSAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBtqIgJqIhMgEiAKc3EgCnNqIBNBGncgE0EVd3MgE0EHd3NqQaOjsbt8aiIbIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogGmoiA2oiFGogMCATaiAsIBJqIC8gCmogFCATIBJzcSASc2ogFEEadyAUQRV3cyAUQQd3c2pBmdDLjH1qIhogA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAYaiIEaiIKIBQgE3NxIBNzaiAKQRp3IApBFXdzIApBB3dzakGkjOS0fWoiGCAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBVqIgJqIhIgCiAUc3EgFHNqIBJBGncgEkEVd3MgEkEHd3NqQYXruKB/aiIVIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogGWoiA2oiEyASIApzcSAKc2ogE0EadyATQRV3cyATQQd3c2pB8MCqgwFqIhkgA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAbaiIEaiIUIBMgEnNxIBJzIApqIDVqIBRBGncgFEEVd3MgFEEHd3NqQZaCk80BaiIbIARBHncgBEETd3MgBEEKd3MgBCADcyACcSAEIANxc2ogGmoiAmoiCiA3aiAzIBRqIDYgE2ogMiASaiAKIBQgE3NxIBNzaiAKQRp3IApBFXdzIApBB3dzakGI2N3xAWoiGiACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIBhqIgNqIhIgCiAUc3EgFHNqIBJBGncgEkEVd3MgEkEHd3NqQczuoboCaiIcIANBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogFWoiBGoiEyASIApzcSAKc2ogE0EadyATQRV3cyATQQd3c2pBtfnCpQNqIhUgBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAZaiICaiIKIBMgEnNxIBJzaiAKQRp3IApBFXdzIApBB3dzakGzmfDIA2oiGSACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIBtqIgNqIhRqIC1BDncgLUEDdnMgLUEZd3MgKWogNWogNEENdyA0QQp2cyA0QQ93c2oiGCAKaiA4IBNqIDQgEmogFCAKIBNzcSATc2ogFEEadyAUQRV3cyAUQQd3c2pBytTi9gRqIhsgA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAaaiIEaiISIBQgCnNxIApzaiASQRp3IBJBFXdzIBJBB3dzakHPlPPcBWoiGiAEQR53IARBE3dzIARBCndzIAQgA3MgAnEgBCADcXNqIBxqIgJqIgogEiAUc3EgFHNqIApBGncgCkEVd3MgCkEHd3NqQfPfucEGaiIcIAJBHncgAkETd3MgAkEKd3MgAiAEcyADcSACIARxc2ogFWoiA2oiEyAKIBJzcSASc2ogE0EadyATQRV3cyATQQd3c2pB7oW+pAdqIh0gA0EedyADQRN3cyADQQp3cyADIAJzIARxIAMgAnFzaiAZaiIEaiIUaiAvQQ53IC9BA3ZzIC9BGXdzICtqIDdqIC5BDncgLkEDdnMgLkEZd3MgKmogNmogGEENdyAYQQp2cyAYQQ93c2oiFUENdyAVQQp2cyAVQQ93c2oiGSATaiA6IApqIBUgEmogFCATIApzcSAKc2ogFEEadyAUQRV3cyAUQQd3c2pB78aVxQdqIgogBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAbaiICaiISIBQgE3NxIBNzaiASQRp3IBJBFXdzIBJBB3dzakGU8KGmeGoiGyACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIBpqIgNqIhMgEiAUc3EgFHNqIBNBGncgE0EVd3MgE0EHd3NqQYiEnOZ4aiIaIANBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogHGoiBGoiFCATIBJzcSASc2ogFEEadyAUQRV3cyAUQQd3c2pB+v/7hXlqIhwgBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAdaiICaiIVID9qNgIcIAAgQSACQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIApqIgNBHncgA0ETd3MgA0EKd3MgAyACcyAEcSADIAJxc2ogG2oiBEEedyAEQRN3cyAEQQp3cyAEIANzIAJxIAQgA3FzaiAaaiICQR53IAJBE3dzIAJBCndzIAIgBHMgA3EgAiAEcXNqIBxqIgpqNgIMIAAgPiAwQQ53IDBBA3ZzIDBBGXdzICxqIDhqIBlBDXcgGUEKdnMgGUEPd3NqIhkgEmogFSAUIBNzcSATc2ogFUEadyAVQRV3cyAVQQd3c2pB69nBonpqIhogA2oiEmo2AhggACBDIApBHncgCkETd3MgCkEKd3MgCiACcyAEcSAKIAJxc2ogGmoiA2o2AgggACA9IDFBDncgMUEDdnMgMUEZd3MgMGogGGogO0ENdyA7QQp2cyA7QQ93c2ogE2ogEiAVIBRzcSAUc2ogEkEadyASQRV3cyASQQd3c2pB98fm93tqIhggBGoiE2o2AhQgACBFIANBHncgA0ETd3MgA0EKd3MgAyAKcyACcSADIApxc2ogGGoiBGo2AgQgACA8IDVBDncgNUEDdnMgNUEZd3MgMWogOWogGUENdyAZQQp2cyAZQQ93c2ogFGogEyASIBVzcSAVc2ogE0EadyATQRV3cyATQQd3c2pB8vHFs3xqIhIgAmpqNgIQIAAgASAEQR53IARBE3dzIARBCndzIAQgA3MgCnEgBCADcXNqIBJqajYCAAv3BQIBfgR/QQApA8CJASIApyIBQQJ2QQ9xIgJBAnRBgIkBaiIDIAMoAgBBfyABQQN0IgFBGHEiA3RBf3NxQYABIAN0czYCAAJAAkACQCACQQ5JDQACQCACQQ5HDQBBAEEANgK8iQELQciJAUGAiQEQA0EAIQEMAQsgAkENRg0BIAJBAWohAQsgAUECdCEBA0AgAUGAiQFqQQA2AgAgAUEEaiIBQThHDQALQQApA8CJASIAp0EDdCEBC0EAIAFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCvIkBQQAgAEIdiKciAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgK4iQFByIkBQYCJARADQQBBACgC5IkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYC5IkBQQBBACgC4IkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYC4IkBQQBBACgC3IkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYC3IkBQQBBACgC2IkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYC2IkBQQBBACgC1IkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYC1IkBQQBBACgC0IkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYC0IkBQQBBACgCzIkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCzIkBQQBBACgCyIkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZyciIBNgLIiQECQEEAKALoiQEiBEUNAEEAIAE6AIAJIARBAUYNACABQQh2IQNBASEBQQEhAgNAIAFBgAlqIAM6AAAgBCACQQFqIgJB/wFxIgFNDQEgAUHIiQFqLQAAIQMMAAsLCwYAQYCJAQujAQBBAEIANwPAiQFBAEEcQSAgAUHgAUYiARs2AuiJAUEAQqef5qfG9JP9vn9Cq7OP/JGjs/DbACABGzcD4IkBQQBCsZaA/p+ihazoAEL/pLmIxZHagpt/IAEbNwPYiQFBAEKXusODk6eWh3dC8ua746On/aelfyABGzcD0IkBQQBC2L2WiPygtb42QufMp9DW0Ouzu38gARs3A8iJASAAEAIQBAsLCwEAQYAICwRwAAAA\";\n    var hash$a = \"817d957e\";\n    var wasmJson$a = {\n    \tname: name$a,\n    \tdata: data$a,\n    \thash: hash$a\n    };\n\n    const mutex$a = new Mutex();\n    let wasmCache$a = null;\n    /**\n     * Calculates SHA-2 (SHA-224) hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sha224(data) {\n        if (wasmCache$a === null) {\n            return lockedCreate(mutex$a, wasmJson$a, 28)\n                .then((wasm) => {\n                wasmCache$a = wasm;\n                return wasmCache$a.calculate(data, 224);\n            });\n        }\n        try {\n            const hash = wasmCache$a.calculate(data, 224);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SHA-2 (SHA-224) hash instance\n     */\n    function createSHA224() {\n        return WASMInterface(wasmJson$a, 28).then((wasm) => {\n            wasm.init(224);\n            const obj = {\n                init: () => { wasm.init(224); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 28,\n            };\n            return obj;\n        });\n    }\n\n    const mutex$9 = new Mutex();\n    let wasmCache$9 = null;\n    /**\n     * Calculates SHA-2 (SHA-256) hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sha256(data) {\n        if (wasmCache$9 === null) {\n            return lockedCreate(mutex$9, wasmJson$a, 32)\n                .then((wasm) => {\n                wasmCache$9 = wasm;\n                return wasmCache$9.calculate(data, 256);\n            });\n        }\n        try {\n            const hash = wasmCache$9.calculate(data, 256);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SHA-2 (SHA-256) hash instance\n     */\n    function createSHA256() {\n        return WASMInterface(wasmJson$a, 32).then((wasm) => {\n            wasm.init(256);\n            const obj = {\n                init: () => { wasm.init(256); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 32,\n            };\n            return obj;\n        });\n    }\n\n    var name$9 = \"sha512\";\n    var data$9 = \"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\";\n    var hash$9 = \"a5d1ca7c\";\n    var wasmJson$9 = {\n    \tname: name$9,\n    \tdata: data$9,\n    \thash: hash$9\n    };\n\n    const mutex$8 = new Mutex();\n    let wasmCache$8 = null;\n    /**\n     * Calculates SHA-2 (SHA-384) hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sha384(data) {\n        if (wasmCache$8 === null) {\n            return lockedCreate(mutex$8, wasmJson$9, 48)\n                .then((wasm) => {\n                wasmCache$8 = wasm;\n                return wasmCache$8.calculate(data, 384);\n            });\n        }\n        try {\n            const hash = wasmCache$8.calculate(data, 384);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SHA-2 (SHA-384) hash instance\n     */\n    function createSHA384() {\n        return WASMInterface(wasmJson$9, 48).then((wasm) => {\n            wasm.init(384);\n            const obj = {\n                init: () => { wasm.init(384); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 128,\n                digestSize: 48,\n            };\n            return obj;\n        });\n    }\n\n    const mutex$7 = new Mutex();\n    let wasmCache$7 = null;\n    /**\n     * Calculates SHA-2 (SHA-512) hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sha512(data) {\n        if (wasmCache$7 === null) {\n            return lockedCreate(mutex$7, wasmJson$9, 64)\n                .then((wasm) => {\n                wasmCache$7 = wasm;\n                return wasmCache$7.calculate(data, 512);\n            });\n        }\n        try {\n            const hash = wasmCache$7.calculate(data, 512);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SHA-2 (SHA-512) hash instance\n     */\n    function createSHA512() {\n        return WASMInterface(wasmJson$9, 64).then((wasm) => {\n            wasm.init(512);\n            const obj = {\n                init: () => { wasm.init(512); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 128,\n                digestSize: 64,\n            };\n            return obj;\n        });\n    }\n\n    var name$8 = \"xxhash32\";\n    var data$8 = \"AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwcGAAEBAgADBAUBcAEBAQUEAQECAgYOAn8BQbCJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEKswkGBQBBgAkLTQBBAEIANwOoiQFBACAANgKIiQFBACAAQc+Moo4GajYCjIkBQQAgAEH3lK+veGo2AoSJAUEAIABBqIiNoQJqNgKAiQFBAEEANgKgiQELswUBBn8CQCAARQ0AQQBBACkDqIkBIACtfDcDqIkBAkBBACgCoIkBIgEgAGpBD0sNAEEAIAFBAWo2AqCJASABQZCJAWpBAC0AgAk6AAAgAEEBRg0BQQEhAgNAQQBBACgCoIkBIgFBAWo2AqCJASABQZCJAWogAkGACWotAAA6AAAgACACQQFqIgJHDQAMAgsLIABB8AhqIQMCQAJAIAENAEEAKAKMiQEhAUEAKAKIiQEhBEEAKAKEiQEhBUEAKAKAiQEhBkGACSECDAELQYAJIQICQCABQQ9LDQBBgAkhAgNAIAItAAAhBEEAIAFBAWo2AqCJASABQZCJAWogBDoAACACQQFqIQJBACgCoIkBIgFBEEkNAAsLQQBBACgCkIkBQfeUr694bEEAKAKAiQFqQQ13QbHz3fF5bCIGNgKAiQFBAEEAKAKUiQFB95Svr3hsQQAoAoSJAWpBDXdBsfPd8XlsIgU2AoSJAUEAQQAoApiJAUH3lK+veGxBACgCiIkBakENd0Gx893xeWwiBDYCiIkBQQBBACgCnIkBQfeUr694bEEAKAKMiQFqQQ13QbHz3fF5bCIBNgKMiQELIABBgAlqIQACQCACIANLDQADQCACKAIAQfeUr694bCAGakENd0Gx893xeWwhBiACQQxqKAIAQfeUr694bCABakENd0Gx893xeWwhASACQQhqKAIAQfeUr694bCAEakENd0Gx893xeWwhBCACQQRqKAIAQfeUr694bCAFakENd0Gx893xeWwhBSACQRBqIgIgA00NAAsLQQAgATYCjIkBQQAgBDYCiIkBQQAgBTYChIkBQQAgBjYCgIkBQQAgACACayIBNgKgiQEgAUUNAEEAIQEDQCABQZCJAWogAiABai0AADoAACABQQFqIgFBACgCoIkBSQ0ACwsLzAICAX4Gf0EAKQOoiQEiAKchAQJAAkAgAEIQVA0AQQAoAoSJAUEHd0EAKAKAiQFBAXdqQQAoAoiJAUEMd2pBACgCjIkBQRJ3aiECDAELQQAoAoiJAUGxz9myAWohAgsgAiABaiECQZCJASEBQQAoAqCJASIDQZCJAWohBAJAIANBBEgNAEGQiQEhBQNAIAUoAgBBvdzKlXxsIAJqQRF3Qa/W074CbCECIAVBCGohBiAFQQRqIgEhBSAGIARNDQALCwJAIAEgBEYNACADQZCJAWohBQNAIAEtAABBsc/ZsgFsIAJqQQt3QbHz3fF5bCECIAUgAUEBaiIBRw0ACwtBACACQQ92IAJzQfeUr694bCIBQQ12IAFzQb3cypV8bCIBQRB2IAFzIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycq03A4AJCwYAQYCJAQtTAEEAQgA3A6iJAUEAIAE2AoiJAUEAIAFBz4yijgZqNgKMiQFBACABQfeUr694ajYChIkBQQAgAUGoiI2hAmo2AoCJAUEAQQA2AqCJASAAEAIQAwsLCwEAQYAICwQwAAAA\";\n    var hash$8 = \"5b6a5062\";\n    var wasmJson$8 = {\n    \tname: name$8,\n    \tdata: data$8,\n    \thash: hash$8\n    };\n\n    const mutex$6 = new Mutex();\n    let wasmCache$6 = null;\n    function validateSeed$3(seed) {\n        if (!Number.isInteger(seed) || seed < 0 || seed > 0xFFFFFFFF) {\n            return new Error('Seed must be a valid 32-bit long unsigned integer.');\n        }\n        return null;\n    }\n    /**\n     * Calculates xxHash32 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param seed Number used to initialize the internal state of the algorithm (defaults to 0)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function xxhash32(data, seed = 0) {\n        if (validateSeed$3(seed)) {\n            return Promise.reject(validateSeed$3(seed));\n        }\n        if (wasmCache$6 === null) {\n            return lockedCreate(mutex$6, wasmJson$8, 4)\n                .then((wasm) => {\n                wasmCache$6 = wasm;\n                return wasmCache$6.calculate(data, seed);\n            });\n        }\n        try {\n            const hash = wasmCache$6.calculate(data, seed);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new xxHash32 hash instance\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param seed Number used to initialize the internal state of the algorithm (defaults to 0)\n     */\n    function createXXHash32(seed = 0) {\n        if (validateSeed$3(seed)) {\n            return Promise.reject(validateSeed$3(seed));\n        }\n        return WASMInterface(wasmJson$8, 4).then((wasm) => {\n            wasm.init(seed);\n            const obj = {\n                init: () => { wasm.init(seed); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 16,\n                digestSize: 4,\n            };\n            return obj;\n        });\n    }\n\n    var name$7 = \"xxhash64\";\n    var data$7 = \"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\";\n    var hash$7 = \"bc315b2a\";\n    var wasmJson$7 = {\n    \tname: name$7,\n    \tdata: data$7,\n    \thash: hash$7\n    };\n\n    const mutex$5 = new Mutex();\n    let wasmCache$5 = null;\n    const seedBuffer$2 = new ArrayBuffer(8);\n    function validateSeed$2(seed) {\n        if (!Number.isInteger(seed) || seed < 0 || seed > 0xFFFFFFFF) {\n            return new Error('Seed must be given as two valid 32-bit long unsigned integers (lo + high).');\n        }\n        return null;\n    }\n    function writeSeed$2(arr, low, high) {\n        // write in little-endian format\n        const buffer = new DataView(arr);\n        buffer.setUint32(0, low, true);\n        buffer.setUint32(4, high, true);\n    }\n    /**\n     * Calculates xxHash64 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param seedLow Lower 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @param seedHigh Higher 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function xxhash64(data, seedLow = 0, seedHigh = 0) {\n        if (validateSeed$2(seedLow)) {\n            return Promise.reject(validateSeed$2(seedLow));\n        }\n        if (validateSeed$2(seedHigh)) {\n            return Promise.reject(validateSeed$2(seedHigh));\n        }\n        if (wasmCache$5 === null) {\n            return lockedCreate(mutex$5, wasmJson$7, 8)\n                .then((wasm) => {\n                wasmCache$5 = wasm;\n                writeSeed$2(seedBuffer$2, seedLow, seedHigh);\n                wasmCache$5.writeMemory(new Uint8Array(seedBuffer$2));\n                return wasmCache$5.calculate(data);\n            });\n        }\n        try {\n            writeSeed$2(seedBuffer$2, seedLow, seedHigh);\n            wasmCache$5.writeMemory(new Uint8Array(seedBuffer$2));\n            const hash = wasmCache$5.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new xxHash64 hash instance\n     * @param seedLow Lower 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @param seedHigh Higher 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     */\n    function createXXHash64(seedLow = 0, seedHigh = 0) {\n        if (validateSeed$2(seedLow)) {\n            return Promise.reject(validateSeed$2(seedLow));\n        }\n        if (validateSeed$2(seedHigh)) {\n            return Promise.reject(validateSeed$2(seedHigh));\n        }\n        return WASMInterface(wasmJson$7, 8).then((wasm) => {\n            const instanceBuffer = new ArrayBuffer(8);\n            writeSeed$2(instanceBuffer, seedLow, seedHigh);\n            wasm.writeMemory(new Uint8Array(instanceBuffer));\n            wasm.init();\n            const obj = {\n                init: () => {\n                    wasm.writeMemory(new Uint8Array(instanceBuffer));\n                    wasm.init();\n                    return obj;\n                },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 32,\n                digestSize: 8,\n            };\n            return obj;\n        });\n    }\n\n    var name$6 = \"xxhash3\";\n    var data$6 = \"AGFzbQEAAAABJAZgAAF/YAR/f39/AGAHf39/f39/fwBgA39/fgF+YAAAYAF/AAMMCwABAgMDAwQFBAAEBAUBcAEBAQUEAQECAgYOAn8BQcCOBQt/AEHACQsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQABgtIYXNoX1VwZGF0ZQAHCkhhc2hfRmluYWwACA1IYXNoX0dldFN0YXRlAAkOSGFzaF9DYWxjdWxhdGUACgpTVEFURV9TSVpFAwEK+joLBQBBgAoL7wMBEH4CQCADRQ0AIAFBOGohASACQThqIQIgACkDMCEEIAApAzghBSAAKQMgIQYgACkDKCEHIAApAxAhCCAAKQMYIQkgACkDACEKIAApAwghCwNAIAcgAUFoaikDACIMfCACQXBqKQMAIAFBcGopAwAiDYUiB0IgiCAHQv////8Pg358IQcgCSABQVhqKQMAIg58IAJBYGopAwAgAUFgaikDACIPhSIJQiCIIAlC/////w+DfnwhCSALIAFBSGopAwAiEHwgAkFQaikDACABQVBqKQMAIhGFIgtCIIggC0L/////D4N+fCELIAJBeGopAwAgAUF4aikDACIShSITQiCIIBNC/////w+DfiAEfCABKQMAIhN8IQQgAkFoaikDACAMhSIMQiCIIAxC/////w+DfiAGfCANfCEGIAJBWGopAwAgDoUiDEIgiCAMQv////8Pg34gCHwgD3whCCACQUhqKQMAIBCFIgxCIIggDEL/////D4N+IAp8IBF8IQogBSASfCACKQMAIBOFIgVCIIggBUL/////D4N+fCEFIAFBwABqIQEgAkEIaiECIANBf2oiAw0ACyAAIAk3AxggACAKNwMAIAAgCzcDCCAAIAc3AyggACAINwMQIAAgBTcDOCAAIAY3AyAgACAENwMwCwveAgIBfwF+AkAgAiABKAIAIgdrIgIgBEsNACAAIAMgBSAHQQN0aiACEAEgACAAKQMAIgggBSAGaiIHKQMAhSAIQi+IhUKx893xCX43AwAgACAAKQMIIgggBykDCIUgCEIviIVCsfPd8Ql+NwMIIAAgACkDECIIIAcpAxCFIAhCL4iFQrHz3fEJfjcDECAAIAApAxgiCCAHKQMYhSAIQi+IhUKx893xCX43AxggACAAKQMgIgggBykDIIUgCEIviIVCsfPd8Ql+NwMgIAAgACkDKCIIIAcpAyiFIAhCL4iFQrHz3fEJfjcDKCAAIAApAzAiCCAHKQMwhSAIQi+IhUKx893xCX43AzAgACAAKQM4IgggBykDOIUgCEIviIVCsfPd8Ql+NwM4IAAgAyACQQZ0aiAFIAQgAmsiBxABIAEgBzYCAA8LIAAgAyAFIAdBA3RqIAQQASABIAcgBGo2AgAL3QQBBH4CQCAAQQlJDQBBACkDgIwBIAEpAyAgASkDGIUgAnyFIgNCOIYgA0IohkKAgICAgIDA/wCDhCADQhiGQoCAgICA4D+DIANCCIZCgICAgPAfg4SEIANCCIhCgICA+A+DIANCGIhCgID8B4OEIANCKIhCgP4DgyADQjiIhISEIACtfCAAQfiLAWopAwAgASkDMCABKQMohSACfYUiAnwgAkL/////D4MiBCADQiCIIgV+IgZC/////w+DIAJCIIgiAiADQv////8PgyIDfnwgBCADfiIDQiCIfCIEQiCGIANC/////w+DhCAGQiCIIAIgBX58IARCIIh8hXwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4UPCwJAIABBBEkNACABKQMQIAEpAwiFIAKnIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycq1CIIYgAoV9QQA1AoCMAUIghiAAQfyLAWo1AgCEhSIDQhiJIAOFIANCMYmFQqW+4/TRjIfZn39+IgNCI4ggAK18IAOFQqW+4/TRjIfZn39+IgNCHIggA4UPCwJAIABFDQAgASgCBCABKAIAc60gAnwiA0EALQCAjAFBEHQgAEEIdHIgAEEBdkGAjAFqLQAAQRh0ciAAQf+LAWotAAByrYUgA0IhiIVCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhQ8LIAEpAzggAoUgASkDQIUiA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC94IAQZ+IACtQoeVr6+Ytt6bnn9+IQMCQCAAQSFJDQACQCAAQcEASQ0AAkAgAEHhAEkNACABKQNoIAJ9QQApA7iMAYUiBEL/////D4MiBSABKQNgIAJ8QQApA7CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDeCACfSAAQciLAWopAwCFIgNC/////w+DIgQgASkDcCACfCAAQcCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQNIIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQNAIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDWCACfSAAQdiLAWopAwCFIgNC/////w+DIgQgASkDUCACfCAAQdCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMoIAJ9QQApA5iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA5CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDOCACfSAAQeiLAWopAwCFIgNC/////w+DIgQgASkDMCACfCAAQeCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMIIAJ9QQApA4iMAYUiBEL/////D4MiBSABKQMAIAJ8QQApA4CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDGCACfSAAQfiLAWopAwCFIgNC/////w+DIgQgASkDECACfCAAQfCLAWopAwCFIgJCIIgiBX4iBkL/////D4MgA0IgiCIDIAJC/////w+DIgJ+fCAEIAJ+IgJCIIh8IgRCIIYgAkL/////D4OEIAZCIIggAyAFfnwgBEIgiHyFfCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQuICwQBfwV+An8BfkEAIQMgASkDeCACfUEAKQP4jAGFIgRC/////w+DIgUgASkDcCACfEEAKQPwjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpA2ggAn1BACkD6IwBhSIEQv////8PgyIFIAEpA2AgAnxBACkD4IwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQNYIAJ9QQApA9iMAYUiBEL/////D4MiBSABKQNQIAJ8QQApA9CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDSCACfUEAKQPIjAGFIgRC/////w+DIgUgASkDQCACfEEAKQPAjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAzggAn1BACkDuIwBhSIEQv////8PgyIFIAEpAzAgAnxBACkDsIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQMoIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDGCACfUEAKQOYjAGFIgRC/////w+DIgUgASkDECACfEEAKQOQjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAwggAn1BACkDiIwBhSIEQv////8PgyIFIAEpAwAgAnxBACkDgIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSAArUKHla+vmLbem55/fnx8fHx8fHx8IgRCJYggBIVC+fPd8ZnymasWfiIEQiCIIASFIQQgAEEQbSEJAkAgAEGQAUgNACAJQQkgCUEJShtBeGohCQNAIAEgA2oiCkELaikDACACfSADQYiNAWopAwCFIgVC/////w+DIgYgCkEDaikDACACfCADQYCNAWopAwCFIgdCIIgiCH4iC0L/////D4MgBUIgiCIFIAdC/////w+DIgd+fCAGIAd+IgZCIIh8IgdCIIYgBkL/////D4OEIAtCIIggBSAIfnwgB0IgiHyFIAR8IQQgA0EQaiEDIAlBf2oiCQ0ACwsgASkDfyACfSAAQfiLAWopAwCFIgVC/////w+DIgYgASkDdyACfCAAQfCLAWopAwCFIgJCIIgiB34iCEL/////D4MgBUIgiCIFIAJC/////w+DIgJ+fCAGIAJ+IgJCIIh8IgZCIIYgAkL/////D4OEIAhCIIggBSAHfnwgBkIgiHyFIAR8IgJCJYggAoVC+fPd8ZnymasWfiICQiCIIAKFC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAAfTcDqIsBQQAgAEKo9dv7s5ynmj98NwOgiwFBAEK4sry3lNW31lggAH03A5iLAUEAIABC8cihuqm0w/zOAHw3A5CLAUEAQoihl9u445SXo38gAH03A4iLAUEAIABCvNDI2pvysIBLfDcDgIsBQQBC4OvAtJ7QjpPMACAAfTcD+IoBQQAgAEK4kZii9/6Qko5/fDcD8IoBQQBCgrXB7sf5v7khIAB9NwPoigFBACAAQsvzmffEmfDy+AB8NwPgigFBAELygJGl+vbssx8gAH03A9iKAUEAIABC3qm3y76Q5MtbfDcD0IoBQQBC/IKE5PK+yNYcIAB9NwPIigFBACAAQrj9s8uzhOmlvn98NwPAigELQQBCADcDkI4BQQBCADcDiI4BQQBCADcDgI4BQQAgATYCsI4BQQAgADcDoI4BQQBCsfPd8Qk3A7iKAUEAQsXP2bLx5brqJzcDsIoBQQBC95Svrwg3A6iKAUEAQuPcypX8zvL1hX83A6CKAUEAQvnz3fGZ9pmrFjcDmIoBQQBCz9bTvtLHq9lCNwOQigFBAEKHla+vmLbem55/NwOIigFBAEK93MqVDDcDgIoBQQBCkICAgIAQNwOYjgELwAUBBX9BAEEAKQOQjgEgAK18NwOQjgECQAJAQQAoAoCOASIBIABqIgJBgAJLDQAgAUGAjAFqIQNBgAohBAJAAkAgAEEITw0AIAAhAQwBCyAAIQEDQCADIAQpAwA3AwAgA0EIaiEDIARBCGohBCABQXhqIgFBB0sNAAsLIAFFDQEDQCADIAQtAAA6AAAgA0EBaiEDIARBAWohBCABQX9qIgENAAtBACgCgI4BIABqIQIMAQtBgAohAyAAQYAKaiECQQAoArCOASIEQcCKASAEGyEAAkAgAUUNACABQYCMAWohA0GACiEEAkACQEGAAiABayIFQQhPDQAgBSEBDAELIAUhAQNAIAMgBCkDADcDACADQQhqIQMgBEEIaiEEIAFBeGoiAUEHSw0ACwsCQCABRQ0AA0AgAyAELQAAOgAAIANBAWohAyAEQQFqIQQgAUF/aiIBDQALC0GAigFBiI4BQQAoApiOAUGAjAFBBCAAQQAoApyOARACQQBBADYCgI4BIAVBgApqIQMLAkAgA0GAAmogAk8NACACQYB+aiEEA0BBgIoBQYiOAUEAKAKYjgEgA0EEIABBACgCnI4BEAIgA0GAAmoiAyAESQ0AC0EAIANBQGopAwA3A8CNAUEAIANBSGopAwA3A8iNAUEAIANBUGopAwA3A9CNAUEAIANBWGopAwA3A9iNAUEAIANBYGopAwA3A+CNAUEAIANBaGopAwA3A+iNAUEAIANBcGopAwA3A/CNAUEAIANBeGopAwA3A/iNAQtBgIwBIQQCQAJAIAIgA2siAkEITw0AIAIhAQwBCyACIQEDQCAEIAMpAwA3AwAgBEEIaiEEIANBCGohAyABQXhqIgFBB0sNAAsLIAFFDQADQCAEIAMtAAA6AAAgBEEBaiEEIANBAWohAyABQX9qIgENAAsLQQAgAjYCgI4BC6oQBQR/AX4Cfwp+An8jACIAIQEgAEGAAWtBQHEiAiQAQQAoArCOASIAQcCKASAAGyEDAkACQEEAKQOQjgEiBELxAVQNACACQQApA4CKATcDACACQQApA4iKATcDCCACQQApA5CKATcDECACQQApA5iKATcDGCACQQApA6CKATcDICACQQApA6iKATcDKCACQQApA7CKATcDMCACQQApA7iKATcDOAJAAkBBACgCgI4BIgVBwABJDQAgAkEAKAKIjgE2AkAgAiACQcAAakEAKAKYjgFBgIwBIAVBf2pBBnYgA0EAKAKcjgEQAiACIAIpAwhBACgCgI4BIgBBwIsBaikDACIEfCADQQAoApyOAWoiBkEBaikDACAAQciLAWopAwAiB4UiCEIgiCAIQv////8Pg358Igk3AwggAiACKQMYIABB0IsBaikDACIIfCAGQRFqKQMAIABB2IsBaikDACIKhSILQiCIIAtC/////w+DfnwiDDcDGCACIAcgBCAGQXlqKQMAhSIEQiCIIARC/////w+DfiACKQMAfHwiDTcDACACIAogCCAGQQlqKQMAhSIEQiCIIARC/////w+DfiACKQMQfHwiDjcDECAGQRlqKQMAIQQgAikDICEHIAIgAikDKCAAQeCLAWopAwAiCHwgBkEhaikDACAAQeiLAWopAwAiCoUiC0IgiCALQv////8Pg358Ig83AyggAiAKIAcgBCAIhSIEQiCIIARC/////w+Dfnx8IhA3AyAgAiACKQM4IABB8IsBaikDACIEfCAGQTFqKQMAIABB+IsBaikDACIHhSIIQiCIIAhC/////w+Dfnw3AzggByAEIAZBKWopAwCFIgRCIIggBEL/////D4N+IAIpAzB8fCEEDAELQcAAIAVrIRECQAJAAkAgBUE4TQ0AQYCOASARayEGIAJBwABqIQUgESEADAELQQAhEiARIQADQCACQcAAaiASaiAFIBJqQcCNAWopAwA3AwAgEkEIaiESIABBeGoiAEEHSw0ACyAFIBJqIgZBwABGDQEgBkHAjQFqIQYgAkHAAGogEmohBQsDQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiAAQX9qIgANAAtBACgCgI4BIQULIAJBwABqIBFqIQZBgIwBIQACQCAFQQhJDQBBgIwBIQADQCAGIAApAwA3AwAgBkEIaiEGIABBCGohACAFQXhqIgVBB0sNAAsLAkAgBUUNAANAIAYgAC0AADoAACAGQQFqIQYgAEEBaiEAIAVBf2oiBQ0ACwsgAiACKQMIIAIpA0AiBHwgA0EAKAKcjgFqIgBBAWopAwAgAikDSCIHhSIIQiCIIAhC/////w+DfnwiCTcDCCACIAIpAxggAikDUCIIfCAAQRFqKQMAIAIpA1giCoUiC0IgiCALQv////8Pg358Igw3AxggAiAHIAQgAEF5aikDAIUiBEIgiCAEQv////8Pg34gAikDAHx8Ig03AwAgAiAKIAggAEEJaikDAIUiBEIgiCAEQv////8Pg34gAikDEHx8Ig43AxAgAEEZaikDACEEIAIpAyAhByACIAIpAyggAikDYCIIfCAAQSFqKQMAIAIpA2giCoUiC0IgiCALQv////8Pg358Ig83AyggAiAKIAcgBCAIhSIEQiCIIARC/////w+Dfnx8IhA3AyAgAiACKQM4IAIpA3AiBHwgAEExaikDACACKQN4IgeFIghCIIggCEL/////D4N+fDcDOCAHIAQgAEEpaikDAIUiBEIgiCAEQv////8Pg34gAikDMHx8IQQLIAIgBDcDMCADKQNDIAIpAziFIgdC/////w+DIgggAykDOyAEhSIEQiCIIgp+IgtC/////w+DIAdCIIgiByAEQv////8PgyIEfnwgCCAEfiIEQiCIfCIIQiCGIARC/////w+DhCALQiCIIAcgCn58IAhCIIh8hSADKQMzIA+FIgRC/////w+DIgcgAykDKyAQhSIIQiCIIgp+IgtC/////w+DIARCIIgiBCAIQv////8PgyIIfnwgByAIfiIHQiCIfCIIQiCGIAdC/////w+DhCALQiCIIAQgCn58IAhCIIh8hSADKQMjIAyFIgRC/////w+DIgcgAykDGyAOhSIIQiCIIgp+IgtC/////w+DIARCIIgiBCAIQv////8PgyIIfnwgByAIfiIHQiCIfCIIQiCGIAdC/////w+DhCALQiCIIAQgCn58IAhCIIh8hSADKQMTIAmFIgRC/////w+DIgcgAykDCyANhSIIQiCIIgp+IgtC/////w+DIARCIIgiBCAIQv////8PgyIIfnwgByAIfiIHQiCIfCIIQiCGIAdC/////w+DhCALQiCIIAQgCn58IAhCIIh8hUEAKQOQjgFCh5Wvr5i23puef358fHx8IgRCJYggBIVC+fPd8ZnymasWfiIEQiCIIASFIQQMAQsgBKchAAJAQQApA6COASIEUA0AAkAgAEEQSw0AIABBgAggBBADIQQMAgsCQCAAQYABSw0AIABBgAggBBAEIQQMAgsgAEGACCAEEAUhBAwBCwJAIABBEEsNACAAIANCABADIQQMAQsCQCAAQYABSw0AIAAgA0IAEAQhBAwBCyAAIANCABAFIQQLQQAgBEI4hiAEQiiGQoCAgICAgMD/AIOEIARCGIZCgICAgIDgP4MgBEIIhkKAgICA8B+DhIQgBEIIiEKAgID4D4MgBEIYiEKAgPwHg4QgBEIoiEKA/gODIARCOIiEhIQ3A4AKIAEkAAsGAEGAigELAgALC8wBAQBBgAgLxAG4/mw5I6RLvnwBgSz3Ia0c3tRt6YOQl9tyQKSkt7NnH8t55k7MwOV4glrQfcz/ciG4CEZ090MkjuA1kOaBOiZMPChSu5HDAMuI0GWLG1Muo3FkSJeiDflOOBnvRqnerNio+nY/45w0P/ncu8fHC08dilHgS820WTHIn37J2XhzZOrFrIM00+vDxYGg//oTY+sXDd1Rt/DaSdMWVSYp1GieKxa+WH1HofyP+LjRetAxzkXLOo+VFgQor9f7yrtLQH5AAgAA\";\n    var hash$6 = \"187bc2c6\";\n    var wasmJson$6 = {\n    \tname: name$6,\n    \tdata: data$6,\n    \thash: hash$6\n    };\n\n    const mutex$4 = new Mutex();\n    let wasmCache$4 = null;\n    const seedBuffer$1 = new ArrayBuffer(8);\n    function validateSeed$1(seed) {\n        if (!Number.isInteger(seed) || seed < 0 || seed > 0xFFFFFFFF) {\n            return new Error('Seed must be given as two valid 32-bit long unsigned integers (lo + high).');\n        }\n        return null;\n    }\n    function writeSeed$1(arr, low, high) {\n        // write in little-endian format\n        const buffer = new DataView(arr);\n        buffer.setUint32(0, low, true);\n        buffer.setUint32(4, high, true);\n    }\n    /**\n     * Calculates xxHash3 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param seedLow Lower 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @param seedHigh Higher 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function xxhash3(data, seedLow = 0, seedHigh = 0) {\n        if (validateSeed$1(seedLow)) {\n            return Promise.reject(validateSeed$1(seedLow));\n        }\n        if (validateSeed$1(seedHigh)) {\n            return Promise.reject(validateSeed$1(seedHigh));\n        }\n        if (wasmCache$4 === null) {\n            return lockedCreate(mutex$4, wasmJson$6, 8)\n                .then((wasm) => {\n                wasmCache$4 = wasm;\n                writeSeed$1(seedBuffer$1, seedLow, seedHigh);\n                wasmCache$4.writeMemory(new Uint8Array(seedBuffer$1));\n                return wasmCache$4.calculate(data);\n            });\n        }\n        try {\n            writeSeed$1(seedBuffer$1, seedLow, seedHigh);\n            wasmCache$4.writeMemory(new Uint8Array(seedBuffer$1));\n            const hash = wasmCache$4.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new xxHash3 hash instance\n     * @param seedLow Lower 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @param seedHigh Higher 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     */\n    function createXXHash3(seedLow = 0, seedHigh = 0) {\n        if (validateSeed$1(seedLow)) {\n            return Promise.reject(validateSeed$1(seedLow));\n        }\n        if (validateSeed$1(seedHigh)) {\n            return Promise.reject(validateSeed$1(seedHigh));\n        }\n        return WASMInterface(wasmJson$6, 8).then((wasm) => {\n            const instanceBuffer = new ArrayBuffer(8);\n            writeSeed$1(instanceBuffer, seedLow, seedHigh);\n            wasm.writeMemory(new Uint8Array(instanceBuffer));\n            wasm.init();\n            const obj = {\n                init: () => {\n                    wasm.writeMemory(new Uint8Array(instanceBuffer));\n                    wasm.init();\n                    return obj;\n                },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 512,\n                digestSize: 8,\n            };\n            return obj;\n        });\n    }\n\n    var name$5 = \"xxhash128\";\n    var data$5 = \"AGFzbQEAAAABKwdgAAF/YAR/f39/AGAHf39/f39/fwBgA39/fgF+YAR/f39+AGAAAGABfwADDQwAAQIDBAQEBQYFAAUEBQFwAQEBBQQBAQICBg4CfwFBwI4FC38AQcAJCwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAAHC0hhc2hfVXBkYXRlAAgKSGFzaF9GaW5hbAAJDUhhc2hfR2V0U3RhdGUACg5IYXNoX0NhbGN1bGF0ZQALClNUQVRFX1NJWkUDAQrKRgwFAEGACgvvAwEQfgJAIANFDQAgAUE4aiEBIAJBOGohAiAAKQMwIQQgACkDOCEFIAApAyAhBiAAKQMoIQcgACkDECEIIAApAxghCSAAKQMAIQogACkDCCELA0AgByABQWhqKQMAIgx8IAJBcGopAwAgAUFwaikDACINhSIHQiCIIAdC/////w+DfnwhByAJIAFBWGopAwAiDnwgAkFgaikDACABQWBqKQMAIg+FIglCIIggCUL/////D4N+fCEJIAsgAUFIaikDACIQfCACQVBqKQMAIAFBUGopAwAiEYUiC0IgiCALQv////8Pg358IQsgAkF4aikDACABQXhqKQMAIhKFIhNCIIggE0L/////D4N+IAR8IAEpAwAiE3whBCACQWhqKQMAIAyFIgxCIIggDEL/////D4N+IAZ8IA18IQYgAkFYaikDACAOhSIMQiCIIAxC/////w+DfiAIfCAPfCEIIAJBSGopAwAgEIUiDEIgiCAMQv////8Pg34gCnwgEXwhCiAFIBJ8IAIpAwAgE4UiBUIgiCAFQv////8Pg358IQUgAUHAAGohASACQQhqIQIgA0F/aiIDDQALIAAgCTcDGCAAIAo3AwAgACALNwMIIAAgBzcDKCAAIAg3AxAgACAFNwM4IAAgBjcDICAAIAQ3AzALC94CAgF/AX4CQCACIAEoAgAiB2siAiAESw0AIAAgAyAFIAdBA3RqIAIQASAAIAApAwAiCCAFIAZqIgcpAwCFIAhCL4iFQrHz3fEJfjcDACAAIAApAwgiCCAHKQMIhSAIQi+IhUKx893xCX43AwggACAAKQMQIgggBykDEIUgCEIviIVCsfPd8Ql+NwMQIAAgACkDGCIIIAcpAxiFIAhCL4iFQrHz3fEJfjcDGCAAIAApAyAiCCAHKQMghSAIQi+IhUKx893xCX43AyAgACAAKQMoIgggBykDKIUgCEIviIVCsfPd8Ql+NwMoIAAgACkDMCIIIAcpAzCFIAhCL4iFQrHz3fEJfjcDMCAAIAApAzgiCCAHKQM4hSAIQi+IhUKx893xCX43AzggACADIAJBBnRqIAUgBCACayIHEAEgASAHNgIADwsgACADIAUgB0EDdGogBBABIAEgByAEajYCAAvtAwEFfiABKQM4IAApAziFIgNC/////w+DIgQgASkDMCAAKQMwhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMoIAApAyiFIgNC/////w+DIgQgASkDICAAKQMghSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMYIAApAxiFIgNC/////w+DIgQgASkDECAAKQMQhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMIIAApAwiFIgNC/////w+DIgQgASkDACAAKQMAhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSACfHx8fCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQvCCAEFfgJAIAFBCUkNACAAQQApA4CMASACKQMoIAIpAyCFIAN9hSABQfiLAWopAwAiBIUiBUIgiCIGQoeVr68IfiIHQv////8PgyAFQv////8PgyIFQrHz3fEJfnwgBUKHla+vCH4iBUIgiHwiCEIghiAFQv////8Pg4QgAUF/aq1CNoZ8IAQgAikDOCACKQMwhSADfIUiA0L/////D4NC95Svrwh+IANCgICAgHCDfCAGQrHz3fEJfnwgB0IgiHwgCEIgiHwiA0I4hiADQiiGQoCAgICAgMD/AIOEIANCGIZCgICAgIDgP4MgA0IIhkKAgICA8B+DhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhISFIgRCIIgiBULP1tO+An4iBkL/////D4MgBEL/////D4MiBEK93MqVDH58IARCz9bTvgJ+IgdCIIh8IgRCBYhC////P4MgBEIghiAHQv////8Pg4SFQvnz3fGZ8pmrFn4iB0IgiCAHhTcDACAAIAVCvdzKlQx+IANCz9bTvtLHq9lCfnwgBkIgiHwgBEIgiHwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4U3AwgPCwJAIAFBBEkNACAAIAIpAxggAikDEIUgA6ciAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyrUIghiADhXwgAUH8iwFqNQIAQiCGQQA1AoCMAYSFIgNCIIgiBCABQQJ0QYeVr694aq0iBX4iBkIgiCAEQrHz3fEJfnwgBkL/////D4MgA0L/////D4MiA0Kx893xCX58IAMgBX4iA0IgiHwiBEIgiHwgBEIghiADQv////8Pg4QiBEIBhnwiA0IliCADhUL5893xmfKZqxZ+IgVCIIggBYU3AwggACADQgOIIASFIgNCI4ggA4VCpb7j9NGMh9mff34iA0IciCADhTcDAA8LAkAgAUUNACAAIAIoAgQgAigCAHOtIAN8IgRBAC0AgIwBQRB0IAFBCHRyIAFBAXZBgIwBai0AAEEYdHIgAUH/iwFqLQAAciIBrYUgBEIhiIVCz9bTvtLHq9lCfiIEQh2IIASFQvnz3fGZ9pmrFn4iBEIgiCAEhTcDACAAIAIoAgwgAigCCHOtIAN9IgMgAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyQQ13rYUgA0IhiIVCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhTcDCA8LIAAgAikDUCADhSACKQNYhSIEQiGIIASFQs/W077Sx6vZQn4iBEIdiCAEhUL5893xmfaZqxZ+IgRCIIggBIU3AwggACACKQNAIAOFIAIpA0iFIgNCIYggA4VCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhTcDAAunCgEKfiABrSIEQoeVr6+Ytt6bnn9+IQUCQAJAIAFBIU8NAEIAIQYMAQtCACEHAkAgAUHBAEkNAEIAIQcCQCABQeEASQ0AIAIpA3ggA30gAUHIiwFqKQMAIgiFIgdC/////w+DIgkgAikDcCADfCABQcCLAWopAwAiCoUiC0IgiCIMfiINQiCIIAdCIIgiByAMfnwgDUL/////D4MgByALQv////8PgyILfnwgCSALfiIHQiCIfCIJQiCIfEEAKQO4jAEiC0EAKQOwjAEiDHyFIAlCIIYgB0L/////D4OEhSEHIAIpA2ggA30gC4UiCUL/////D4MiCyACKQNgIAN8IAyFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCALIAx+IgtCIIh8IgxCIIYgC0L/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAV8IAggCnyFIQULIAIpA1ggA30gAUHYiwFqKQMAIgiFIglC/////w+DIgogAikDUCADfCABQdCLAWopAwAiC4UiDEIgiCINfiIGQv////8PgyAJQiCIIgkgDEL/////D4MiDH58IAogDH4iCkIgiHwiDEIghiAKQv////8Pg4QgBkIgiCAJIA1+fCAMQiCIfIUgB3xBACkDqIwBIglBACkDoIwBIgp8hSEHIAIpA0ggA30gCYUiCUL/////D4MiDCACKQNAIAN8IAqFIgpCIIgiDX4iBkL/////D4MgCUIgiCIJIApC/////w+DIgp+fCAMIAp+IgpCIIh8IgxCIIYgCkL/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAV8IAggC3yFIQULIAIpAzggA30gAUHoiwFqKQMAIgiFIglC/////w+DIgogAikDMCADfCABQeCLAWopAwAiC4UiDEIgiCINfiIGQv////8PgyAJQiCIIgkgDEL/////D4MiDH58IAogDH4iCkIgiHwiDEIghiAKQv////8Pg4QgBkIgiCAJIA1+fCAMQiCIfIUgB3xBACkDmIwBIgdBACkDkIwBIgl8hSEGIAIpAyggA30gB4UiB0L/////D4MiCiACKQMgIAN8IAmFIglCIIgiDH4iDUL/////D4MgB0IgiCIHIAlC/////w+DIgl+fCAKIAl+IglCIIh8IgpCIIYgCUL/////D4OEIA1CIIggByAMfnwgCkIgiHyFIAV8IAggC3yFIQULIAAgAikDGCADfSABQfiLAWopAwAiB4UiCEL/////D4MiCSACKQMQIAN8IAFB8IsBaikDACIKhSILQiCIIgx+Ig1C/////w+DIAhCIIgiCCALQv////8PgyILfnwgCSALfiIJQiCIfCILQiCGIAlC/////w+DhCANQiCIIAggDH58IAtCIIh8hSAGfEEAKQOIjAEiCEEAKQOAjAEiCXyFIgsgAikDCCADfSAIhSIIQv////8PgyIMIAIpAwAgA3wgCYUiCUIgiCINfiIGQv////8PgyAIQiCIIgggCUL/////D4MiCX58IAwgCX4iCUIgiHwiDEIghiAJQv////8Pg4QgBkIgiCAIIA1+fCAMQiCIfIUgBXwgByAKfIUiBXwiB0IliCAHhUL5893xmfKZqxZ+IgdCIIggB4U3AwAgAEIAIAVCh5Wvr5i23puef34gBCADfULP1tO+0ser2UJ+fCALQuPcypX8zvL1hX9+fCIDQiWIIAOFQvnz3fGZ8pmrFn4iA0IgiCADhX03AwgLiQ8DAX8UfgJ/QQAhBCACKQN4IAN9QQApA/iMASIFhSIGQv////8PgyIHIAIpA3AgA3xBACkD8IwBIgiFIglCIIgiCn4iC0L/////D4MgBkIgiCIGIAlC/////w+DIgl+fCAHIAl+IgdCIIh8IglCIIYgB0L/////D4OEIAtCIIggBiAKfnwgCUIgiHyFIAIpA1ggA31BACkD2IwBIgeFIgZC/////w+DIgkgAikDUCADfEEAKQPQjAEiCoUiC0IgiCIMfiINQv////8PgyAGQiCIIgYgC0L/////D4MiC358IAkgC34iCUIgiHwiC0IghiAJQv////8Pg4QgDUIgiCAGIAx+fCALQiCIfIUgAikDOCADfUEAKQO4jAEiCYUiBkL/////D4MiCyACKQMwIAN8QQApA7CMASIMhSINQiCIIg5+Ig9C/////w+DIAZCIIgiBiANQv////8PgyINfnwgCyANfiILQiCIfCINQiCGIAtC/////w+DhCAPQiCIIAYgDn58IA1CIIh8hSACKQMYIAN9QQApA5iMASILhSIGQv////8PgyINIAIpAxAgA3xBACkDkIwBIg6FIg9CIIgiEH4iEUL/////D4MgBkIgiCIGIA9C/////w+DIg9+fCANIA9+Ig1CIIh8Ig9CIIYgDUL/////D4OEIBFCIIggBiAQfnwgD0IgiHyFQQApA4iMASINQQApA4CMASIPfIV8QQApA6iMASIQQQApA6CMASIRfIV8QQApA8iMASISQQApA8CMASITfIV8QQApA+iMASIUQQApA+CMASIVfIUiBkIliCAGhUL5893xmfKZqxZ+IgZCIIggBoUhBiACKQNoIAN9IBSFIhRC/////w+DIhYgAikDYCADfCAVhSIVQiCIIhd+IhhC/////w+DIBRCIIgiFCAVQv////8PgyIVfnwgFiAVfiIVQiCIfCIWQiCGIBVC/////w+DhCAYQiCIIBQgF358IBZCIIh8hSACKQNIIAN9IBKFIhJC/////w+DIhQgAikDQCADfCAThSITQiCIIhV+IhZC/////w+DIBJCIIgiEiATQv////8PgyITfnwgFCATfiITQiCIfCIUQiCGIBNC/////w+DhCAWQiCIIBIgFX58IBRCIIh8hSACKQMoIAN9IBCFIhBC/////w+DIhIgAikDICADfCARhSIRQiCIIhN+IhRC/////w+DIBBCIIgiECARQv////8PgyIRfnwgEiARfiIRQiCIfCISQiCGIBFC/////w+DhCAUQiCIIBAgE358IBJCIIh8hSACKQMIIAN9IA2FIg1C/////w+DIhAgAikDACADfCAPhSIPQiCIIhF+IhJC/////w+DIA1CIIgiDSAPQv////8PgyIPfnwgECAPfiIPQiCIfCIQQiCGIA9C/////w+DhCASQiCIIA0gEX58IBBCIIh8hSABrSIPQoeVr6+Ytt6bnn9+fCALIA58hXwgCSAMfIV8IAcgCnyFfCAFIAh8hSIFQiWIIAWFQvnz3fGZ8pmrFn4iBUIgiCAFhSEFIAFBIG0hGQJAIAFBoAFIDQAgGUEFIBlBBUobQXxqIRoDQCACIARqIhlBG2opAwAgA30gBEGYjQFqKQMAIgeFIghC/////w+DIgkgGUETaikDACADfCAEQZCNAWopAwAiCoUiC0IgiCIMfiINQv////8PgyAIQiCIIgggC0L/////D4MiC358IAkgC34iCUIgiHwiC0IghiAJQv////8Pg4QgDUIgiCAIIAx+fCALQiCIfIUgBnwgBEGIjQFqKQMAIgggBEGAjQFqKQMAIgl8hSEGIBlBC2opAwAgA30gCIUiCEL/////D4MiCyAZQQNqKQMAIAN8IAmFIglCIIgi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QXBqKQMANwPwjQFBACADQXhqKQMANwP4jQELQYCMASEEAkACQCACIANrIgJBCE8NACACIQEMAQsgAiEBA0AgBCADKQMANwMAIARBCGohBCADQQhqIQMgAUF4aiIBQQdLDQALCyABRQ0AA0AgBCADLQAAOgAAIARBAWohBCADQQFqIQMgAUF/aiIBDQALC0EAIAI2AoCOAQvcDgUEfwF+An8EfgJ/IwAiACEBIABBgAFrQUBxIgAkAEEAKAKwjgEiAkHAigEgAhshAwJAAkBBACkDkI4BIgRC8QFUDQAgAEEAKQOAigE3AwAgAEEAKQOIigE3AwggAEEAKQOQigE3AxAgAEEAKQOYigE3AxggAEEAKQOgigE3AyAgAEEAKQOoigE3AyggAEEAKQOwigE3AzAgAEEAKQO4igE3AzgCQAJAQQAoAoCOASIFQcAASQ0AIABBACgCiI4BNgJAIAAgAEHAAGpBACgCmI4BQYCMASAFQX9qQQZ2IANBACgCnI4BEAIgACAAKQMIQQAoAoCOASICQcCLAWopAwAiBHwgA0EAKAKcjgFqIgZBAWopAwAgAkHIiwFqKQMAIgeFIghCIIggCEL/////D4N+fDcDCCAAIAApAxggAkHQiwFqKQMAIgh8IAZBEWopAwAgAkHYiwFqKQMAIgmFIgpCIIggCkL/////D4N+fDcDGCAAIAcgBCAGQXlqKQMAhSIEQiCIIARC/////w+DfiAAKQMAfHw3AwAgACAJIAggBkEJaikDAIUiBEIgiCAEQv////8Pg34gACkDEHx8NwMQIAZBGWopAwAhBCAAKQMgIQcgACAAKQMoIAJB4IsBaikDACIIfCAGQSFqKQMAIAJB6IsBaikDACIJhSIKQiCIIApC/////w+Dfnw3AyggACAJIAcgBCAIhSIEQiCIIARC/////w+Dfnx8NwMgIAAgACkDOCACQfCLAWopAwAiBHwgBkExaikDACACQfiLAWopAwAiB4UiCEIgiCAIQv////8Pg358NwM4IAAgByAEIAZBKWopAwCFIgRCIIggBEL/////D4N+IAApAzB8fDcDMAwBC0HAACAFayELAkACQAJAIAVBOE0NAEGAjgEgC2shBiAAQcAAaiEFIAshAgwBC0EAIQwgCyECA0AgAEHAAGogDGogBSAMakHAjQFqKQMANwMAIAxBCGohDCACQXhqIgJBB0sNAAsgBSAMaiIGQcAARg0BIAZBwI0BaiEGIABBwABqIAxqIQULA0AgBSAGLQAAOgAAIAVBAWohBSAGQQFqIQYgAkF/aiICDQALQQAoAoCOASEFCyAAQcAAaiALaiEGQYCMASECAkAgBUEISQ0AQYCMASECA0AgBiACKQMANwMAIAZBCGohBiACQQhqIQIgBUF4aiIFQQdLDQALCwJAIAVFDQADQCAGIAItAAA6AAAgBkEBaiEGIAJBAWohAiAFQX9qIgUNAAsLIAAgACkDCCAAKQNAIgR8IANBACgCnI4BaiICQQFqKQMAIAApA0giB4UiCEIgiCAIQv////8Pg358NwMIIAAgACkDGCAAKQNQIgh8IAJBEWopAwAgACkDWCIJhSIKQiCIIApC/////w+Dfnw3AxggACAHIAQgAkF5aikDAIUiBEIgiCAEQv////8Pg34gACkDAHx8NwMAIAAgCSAIIAJBCWopAwCFIgRCIIggBEL/////D4N+IAApAxB8fDcDECACQRlqKQMAIQQgACkDICEHIAAgACkDKCAAKQNgIgh8IAJBIWopAwAgACkDaCIJhSIKQiCIIApC/////w+Dfnw3AyggACAJIAcgBCAIhSIEQiCIIARC/////w+Dfnx8NwMgIAAgACkDOCAAKQNwIgR8IAJBMWopAwAgACkDeCIHhSIIQiCIIAhC/////w+Dfnw3AzggACAHIAQgAkEpaikDAIUiBEIgiCAEQv////8Pg34gACkDMHx8NwMwCyAAIAAgA0ELakEAKQOQjgEiBEKHla+vmLbem55/fhADNwNAIAAgACADQQAoApyOAWpBdWogBELP1tO+0ser2UJ+Qn+FEAM3A0gMAQsgBKchAgJAQQApA6COASIEUA0AAkAgAkEQSw0AIABBwABqIAJBgAggBBAEDAILAkAgAkGAAUsNACAAQcAAaiACQYAIIAQQBQwCCyAAQcAAaiACQYAIIAQQBgwBCwJAIAJBEEsNACAAQcAAaiACIANCABAEDAELAkAgAkGAAUsNACAAQcAAaiACIANCABAFDAELIABBwABqIAIgA0IAEAYLQQAgAEH4AGopAwA3A8AKQQAgAEHwAGopAwA3A7gKQQAgAEHoAGopAwA3A7AKQQAgAEHgAGopAwA3A6gKQQAgAEHYAGopAwA3A6AKQQAgAEHQAGopAwA3A5gKQQAgACkDSCIEQjiGIARCKIZCgICAgICAwP8Ag4QgBEIYhkKAgICAgOA/gyAEQgiGQoCAgIDwH4OEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhCIENwOACkEAIAQ3A5AKQQAgACkDQCIEQjiGIARCKIZCgICAgICAwP8Ag4QgBEIYhkKAgICAgOA/gyAEQgiGQoCAgIDwH4OEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhDcDiAogASQACwYAQYCKAQsCAAsLzAEBAEGACAvEAbj+bDkjpEu+fAGBLPchrRze1G3pg5CX23JApKS3s2cfy3nmTszA5XiCWtB9zP9yIbgIRnT3QySO4DWQ5oE6Jkw8KFK7kcMAy4jQZYsbUy6jcWRIl6IN+U44Ge9Gqd6s2Kj6dj/jnDQ/+dy7x8cLTx2KUeBLzbRZMciffsnZeHNk6sWsgzTT68PFgaD/+hNj6xcN3VG38NpJ0xZVJinUaJ4rFr5YfUeh/I/4uNF60DHORcs6j5UWBCiv1/vKu0tAfkACAAA=\";\n    var hash$5 = \"e8e3fcf8\";\n    var wasmJson$5 = {\n    \tname: name$5,\n    \tdata: data$5,\n    \thash: hash$5\n    };\n\n    const mutex$3 = new Mutex();\n    let wasmCache$3 = null;\n    const seedBuffer = new ArrayBuffer(8);\n    function validateSeed(seed) {\n        if (!Number.isInteger(seed) || seed < 0 || seed > 0xFFFFFFFF) {\n            return new Error('Seed must be given as two valid 32-bit long unsigned integers (lo + high).');\n        }\n        return null;\n    }\n    function writeSeed(arr, low, high) {\n        // write in little-endian format\n        const buffer = new DataView(arr);\n        buffer.setUint32(0, low, true);\n        buffer.setUint32(4, high, true);\n    }\n    /**\n     * Calculates xxHash128 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @param seedLow Lower 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @param seedHigh Higher 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function xxhash128(data, seedLow = 0, seedHigh = 0) {\n        if (validateSeed(seedLow)) {\n            return Promise.reject(validateSeed(seedLow));\n        }\n        if (validateSeed(seedHigh)) {\n            return Promise.reject(validateSeed(seedHigh));\n        }\n        if (wasmCache$3 === null) {\n            return lockedCreate(mutex$3, wasmJson$5, 16)\n                .then((wasm) => {\n                wasmCache$3 = wasm;\n                writeSeed(seedBuffer, seedLow, seedHigh);\n                wasmCache$3.writeMemory(new Uint8Array(seedBuffer));\n                return wasmCache$3.calculate(data);\n            });\n        }\n        try {\n            writeSeed(seedBuffer, seedLow, seedHigh);\n            wasmCache$3.writeMemory(new Uint8Array(seedBuffer));\n            const hash = wasmCache$3.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new xxHash128 hash instance\n     * @param seedLow Lower 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     * @param seedHigh Higher 32 bits of the number used to\n     *  initialize the internal state of the algorithm (defaults to 0)\n     */\n    function createXXHash128(seedLow = 0, seedHigh = 0) {\n        if (validateSeed(seedLow)) {\n            return Promise.reject(validateSeed(seedLow));\n        }\n        if (validateSeed(seedHigh)) {\n            return Promise.reject(validateSeed(seedHigh));\n        }\n        return WASMInterface(wasmJson$5, 16).then((wasm) => {\n            const instanceBuffer = new ArrayBuffer(8);\n            writeSeed(instanceBuffer, seedLow, seedHigh);\n            wasm.writeMemory(new Uint8Array(instanceBuffer));\n            wasm.init();\n            const obj = {\n                init: () => {\n                    wasm.writeMemory(new Uint8Array(instanceBuffer));\n                    wasm.init();\n                    return obj;\n                },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 512,\n                digestSize: 16,\n            };\n            return obj;\n        });\n    }\n\n    var name$4 = \"ripemd160\";\n    var data$4 = \"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\";\n    var hash$4 = \"42f1de39\";\n    var wasmJson$4 = {\n    \tname: name$4,\n    \tdata: data$4,\n    \thash: hash$4\n    };\n\n    const mutex$2 = new Mutex();\n    let wasmCache$2 = null;\n    /**\n     * Calculates RIPEMD-160 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function ripemd160(data) {\n        if (wasmCache$2 === null) {\n            return lockedCreate(mutex$2, wasmJson$4, 20)\n                .then((wasm) => {\n                wasmCache$2 = wasm;\n                return wasmCache$2.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache$2.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new RIPEMD-160 hash instance\n     */\n    function createRIPEMD160() {\n        return WASMInterface(wasmJson$4, 20).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 20,\n            };\n            return obj;\n        });\n    }\n\n    function calculateKeyBuffer(hasher, key) {\n        const { blockSize } = hasher;\n        const buf = getUInt8Buffer(key);\n        if (buf.length > blockSize) {\n            hasher.update(buf);\n            const uintArr = hasher.digest('binary');\n            hasher.init();\n            return uintArr;\n        }\n        return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);\n    }\n    function calculateHmac(hasher, key) {\n        hasher.init();\n        const { blockSize } = hasher;\n        const keyBuf = calculateKeyBuffer(hasher, key);\n        const keyBuffer = new Uint8Array(blockSize);\n        keyBuffer.set(keyBuf);\n        const opad = new Uint8Array(blockSize);\n        for (let i = 0; i < blockSize; i++) {\n            const v = keyBuffer[i];\n            opad[i] = v ^ 0x5C;\n            keyBuffer[i] = v ^ 0x36;\n        }\n        hasher.update(keyBuffer);\n        const obj = {\n            init: () => {\n                hasher.init();\n                hasher.update(keyBuffer);\n                return obj;\n            },\n            update: (data) => {\n                hasher.update(data);\n                return obj;\n            },\n            digest: ((outputType) => {\n                const uintArr = hasher.digest('binary');\n                hasher.init();\n                hasher.update(opad);\n                hasher.update(uintArr);\n                return hasher.digest(outputType);\n            }),\n            save: () => {\n                throw new Error('save() not supported');\n            },\n            load: () => {\n                throw new Error('load() not supported');\n            },\n            blockSize: hasher.blockSize,\n            digestSize: hasher.digestSize,\n        };\n        return obj;\n    }\n    /**\n     * Calculates HMAC hash\n     * @param hash Hash algorithm to use. It has to be the return value of a function like createSHA1()\n     * @param key Key (string, Buffer or TypedArray)\n     */\n    function createHMAC(hash, key) {\n        if (!hash || !hash.then) {\n            throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), \"key\").');\n        }\n        return hash.then((hasher) => calculateHmac(hasher, key));\n    }\n\n    function calculatePBKDF2(digest, salt, iterations, hashLength, outputType) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const DK = new Uint8Array(hashLength);\n            const block1 = new Uint8Array(salt.length + 4);\n            const block1View = new DataView(block1.buffer);\n            const saltBuffer = getUInt8Buffer(salt);\n            const saltUIntBuffer = new Uint8Array(saltBuffer.buffer, saltBuffer.byteOffset, saltBuffer.length);\n            block1.set(saltUIntBuffer);\n            let destPos = 0;\n            const hLen = digest.digestSize;\n            const l = Math.ceil(hashLength / hLen);\n            let T = null;\n            let U = null;\n            for (let i = 1; i <= l; i++) {\n                block1View.setUint32(salt.length, i);\n                digest.init();\n                digest.update(block1);\n                T = digest.digest('binary');\n                U = T.slice();\n                for (let j = 1; j < iterations; j++) {\n                    digest.init();\n                    digest.update(U);\n                    U = digest.digest('binary');\n                    for (let k = 0; k < hLen; k++) {\n                        T[k] ^= U[k];\n                    }\n                }\n                DK.set(T.subarray(0, hashLength - destPos), destPos);\n                destPos += hLen;\n            }\n            if (outputType === 'binary') {\n                return DK;\n            }\n            const digestChars = new Uint8Array(hashLength * 2);\n            return getDigestHex(digestChars, DK, hashLength);\n        });\n    }\n    const validateOptions$2 = (options) => {\n        if (!options || typeof options !== 'object') {\n            throw new Error('Invalid options parameter. It requires an object.');\n        }\n        if (!options.hashFunction || !options.hashFunction.then) {\n            throw new Error('Invalid hash function is provided! Usage: pbkdf2(\"password\", \"salt\", 1000, 32, createSHA1()).');\n        }\n        if (!Number.isInteger(options.iterations) || options.iterations < 1) {\n            throw new Error('Iterations should be a positive number');\n        }\n        if (!Number.isInteger(options.hashLength) || options.hashLength < 1) {\n            throw new Error('Hash length should be a positive number');\n        }\n        if (options.outputType === undefined) {\n            options.outputType = 'hex';\n        }\n        if (!['hex', 'binary'].includes(options.outputType)) {\n            throw new Error(`Insupported output type ${options.outputType}. Valid values: ['hex', 'binary']`);\n        }\n    };\n    /**\n     * Generates a new PBKDF2 hash for the supplied password\n     */\n    function pbkdf2(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateOptions$2(options);\n            const hmac = yield createHMAC(options.hashFunction, options.password);\n            return calculatePBKDF2(hmac, options.salt, options.iterations, options.hashLength, options.outputType);\n        });\n    }\n\n    var name$3 = \"scrypt\";\n    var data$3 = \"AGFzbQEAAAABIwZgAX8Bf2AAAX9gBX9/fn9/AGAEf39/fwBgAX8AYAN/f38AAwcGAAECAwQFBAUBcAEBAQUGAQECgIACBggBfwFBkIgECwc5BAZtZW1vcnkCABJIYXNoX1NldE1lbW9yeVNpemUAAA5IYXNoX0dldEJ1ZmZlcgABBnNjcnlwdAAFCpcmBlsBAX9BACEBAkAgAEEAKAKACGsiAEUNAAJAIABBEHYgAEGAgHxxIABJaiIAQABBf0cNAEH/ASEBDAELQQAhAUEAQQApA4AIIABBEHStfDcDgAgLIAFBGHRBGHULagECfwJAQQAoAogIIgANAEEAPwBBEHQiADYCiAhBgIAgQQAoAoAIayIBRQ0AAkAgAUEQdiABQYCAfHEgAUlqIgBAAEF/Rw0AQQAPC0EAQQApA4AIIABBEHStfDcDgAhBACgCiAghAAsgAAu5EAMMfwl+An8gAUEFdCEFIAQgAUEIdGohBiAEIAFBB3QiB2ohCAJAAkACQAJAIAFFDQBBACEJIAAhCiAEIQsDQCALIAooAgA2AgAgCkEEaiEKIAtBBGohCyAJQQFqIgkgBUkNAAsgAlANAiABQQh0IQxBACENIAMhDgNAQQAhCSABIQ8DQCAOIAlqIgogBCAJaiILKQMANwMAIApBCGogC0EIaikDADcDACAKQRBqIAtBEGopAwA3AwAgCkEYaiALQRhqKQMANwMAIApBIGogC0EgaikDADcDACAKQShqIAtBKGopAwA3AwAgCkEwaiALQTBqKQMANwMAIApBOGogC0E4aikDADcDACAKQcAAaiALQcAAaikDADcDACAKQcgAaiALQcgAaikDADcDACAKQdAAaiALQdAAaikDADcDACAKQdgAaiALQdgAaikDADcDACAKQeAAaiALQeAAaikDADcDACAKQegAaiALQegAaikDADcDACAKQfAAaiALQfAAaikDADcDACAKQfgAaiALQfgAaikDADcDACAJQYABaiEJIA9Bf2oiDw0ACyAEIAggBiABEAMgDiEJIAQhDyABIRADQCAJIAdqIgogDyAHaiILKQMANwMAIApBCGogC0EIaikDADcDACAKQRBqIAtBEGopAwA3AwAgCkEYaiALQRhqKQMANwMAIApBIGogC0EgaikDADcDACAKQShqIAtBKGopAwA3AwAgCkEwaiALQTBqKQMANwMAIApBOGogC0E4aikDADcDACAKQcAAaiALQcAAaikDADcDACAKQcgAaiALQcgAaikDADcDACAKQdAAaiALQdAAaikDADcDACAKQdgAaiALQdgAaikDADcDACAKQeAAaiALQeAAaikDADcDACAKQegAaiALQegAaikDADcDACAKQfAAaiALQfAAaikDADcDACAKQfgAaiALQfgAaikDADcDACAJQYABaiEJIA9BgAFqIQ8gEEF/aiIQDQALIAggBCAGIAEQAyAOIAxqIQ4gDUECaiINrSACVA0ADAILCyACUA0CIAhBQGoiCikDOCERIAopAzAhEiAKKQMoIRMgCikDICEUIAopAxghFSAKKQMQIRYgCikDCCEXIAopAwAhGEECIQoDQCAKrSEZIApBAmohCiAZIAJUDQALIAYgETcDOCAGIBI3AzAgBiATNwMoIAYgFDcDICAGIBU3AxggBiAWNwMQIAYgFzcDCCAGIBg3AwALAkAgAUUNACAHQUBqIgogCGohGiACp0F/aiEOIAogBGohGyABQQd0IQ1BACEMA0AgAyANIBsoAgAgDnFsaiEHQQAhCSABIQ8DQCAEIAlqIgogCikDACAHIAlqIgspAwCFNwMAIApBCGoiECAQKQMAIAtBCGopAwCFNwMAIApBEGoiECAQKQMAIAtBEGopAwCFNwMAIApBGGoiECAQKQMAIAtBGGopAwCFNwMAIApBIGoiECAQKQMAIAtBIGopAwCFNwMAIApBKGoiECAQKQMAIAtBKGopAwCFNwMAIApBMGoiECAQKQMAIAtBMGopAwCFNwMAIApBOGoiECAQKQMAIAtBOGopAwCFNwMAIApBwABqIhAgECkDACALQcAAaikDAIU3AwAgCkHIAGoiECAQKQMAIAtByABqKQMAhTcDACAKQdAAaiIQIBApAwAgC0HQAGopAwCFNwMAIApB2ABqIhAgECkDACALQdgAaikDAIU3AwAgCkHgAGoiECAQKQMAIAtB4ABqKQMAhTcDACAKQegAaiIQIBApAwAgC0HoAGopAwCFNwMAIApB8ABqIhAgECkDACALQfAAaikDAIU3AwAgCkH4AGoiCiAKKQMAIAtB+ABqKQMAhTcDACAJQYABaiEJIA9Bf2oiDw0ACyAEIAggBiABEAMgAyANIBooAgAgDnFsaiEHQQAhCSABIQ8DQCAIIAlqIgogCikDACAHIAlqIgspAwCFNwMAIApBCGoiECAQKQMAIAtBCGopAwCFNwMAIApBEGoiECAQKQMAIAtBEGopAwCFNwMAIApBGGoiECAQKQMAIAtBGGopAwCFNwMAIApBIGoiECAQKQMAIAtBIGopAwCFNwMAIApBKGoiECAQKQMAIAtBKGopAwCFNwMAIApBMGoiECAQKQMAIAtBMGopAwCFNwMAIApBOGoiECAQKQMAIAtBOGopAwCFNwMAIApBwABqIhAgECkDACALQcAAaikDAIU3AwAgCkHIAGoiECAQKQMAIAtByABqKQMAhTcDACAKQdAAaiIQIBApAwAgC0HQAGopAwCFNwMAIApB2ABqIhAgECkDACALQdgAaikDAIU3AwAgCkHgAGoiECAQKQMAIAtB4ABqKQMAhTcDACAKQegAaiIQIBApAwAgC0HoAGopAwCFNwMAIApB8ABqIhAgECkDACALQfAAaikDAIU3AwAgCkH4AGoiCiAKKQMAIAtB+ABqKQMAhTcDACAJQYABaiEJIA9Bf2oiDw0ACyAIIAQgBiABEAMgDEECaiIMrSACVA0ADAILCyAIQUBqIgopAzghESAKKQMwIRIgCikDKCETIAopAyAhFCAKKQMYIRUgCikDECEWIAopAwghFyAKKQMAIRhBAiEKA0AgCq0hGSAKQQJqIQogGSACVA0ACyAGIBE3AzggBiASNwMwIAYgEzcDKCAGIBQ3AyAgBiAVNwMYIAYgFjcDECAGIBc3AwggBiAYNwMACyABRQ0AQQAhCgNAIAAgBCgCADYCACAAQQRqIQAgBEEEaiEEIApBAWoiCiAFSQ0ACwsL4wUDAX8IfgJ/IAIgA0EHdCAAakFAaiIEKQMAIgU3AwAgAiAEKQMIIgY3AwggAiAEKQMQIgc3AxAgAiAEKQMYIgg3AxggAiAEKQMgIgk3AyAgAiAEKQMoIgo3AyggAiAEKQMwIgs3AzAgAiAEKQM4Igw3AzgCQCADRQ0AIANBAXQhDSAAQfgAaiEEIANBBnQhDkECIQADQCACIAUgBEGIf2opAwCFNwMAIAIgBiAEQZB/aikDAIU3AwggAiAHIARBmH9qKQMAhTcDECACIAggBEGgf2opAwCFNwMYIAIgCSAEQah/aikDAIU3AyAgAiAKIARBsH9qKQMAhTcDKCACIAsgBEG4f2opAwCFNwMwIAIgDCAEQUBqKQMAhTcDOCACEAQgASACKQMANwMAIAFBCGogAikDCDcDACABQRBqIAIpAxA3AwAgAUEYaiACKQMYNwMAIAFBIGogAikDIDcDACABQShqIAIpAyg3AwAgAUEwaiACKQMwNwMAIAFBOGogAikDODcDACACIAIpAwAgBEFIaikDAIU3AwAgAiACKQMIIARBUGopAwCFNwMIIAIgAikDECAEQVhqKQMAhTcDECACIAIpAxggBEFgaikDAIU3AxggAiACKQMgIARBaGopAwCFNwMgIAIgAikDKCAEQXBqKQMAhTcDKCACIAIpAzAgBEF4aikDAIU3AzAgAiACKQM4IAQpAwCFNwM4IAIQBCABIA5qIgMgAikDADcDACADQQhqIAIpAwg3AwAgA0EQaiACKQMQNwMAIANBGGogAikDGDcDACADQSBqIAIpAyA3AwAgA0EoaiACKQMoNwMAIANBMGogAikDMDcDACADQThqIAIpAzg3AwAgACANTw0BIARBgAFqIQQgAUHAAGohASAAQQJqIQAgAikDOCEMIAIpAzAhCyACKQMoIQogAikDICEJIAIpAxghCCACKQMQIQcgAikDCCEGIAIpAwAhBQwACwsLug0IAX4BfwF+AX8BfgF/AX4SfyAAIAAoAgQgACkDKCIBQiCIpyICIAApAzgiA0IgiKciBGpBB3cgACkDCCIFQiCIp3MiBiAEakEJdyAAKQMYIgdCIIincyIIIAZqQQ13IAJzIgkgB6ciCiABpyILakEHdyADp3MiAiALakEJdyAFp3MiDCACakENdyAKcyINIAxqQRJ3IAtzIg4gACkDACIBQiCIpyIPIAApAxAiA0IgiKciEGpBB3cgACkDICIFQiCIp3MiC2pBB3dzIgogCSAIakESdyAEcyIRIAJqQQd3IAApAzAiB6ciCSABpyISakEHdyADp3MiBCASakEJdyAFp3MiEyAEakENdyAJcyIUcyIJIBFqQQl3IAsgEGpBCXcgB0IgiKdzIhVzIhYgCWpBDXcgAnMiFyAWakESdyARcyIRakEHdyAGIBQgE2pBEncgEnMiEmpBB3cgFSALakENdyAPcyIUcyICIBJqQQl3IAxzIg8gAmpBDXcgBnMiGHMiBiARakEJdyAIIA0gFCAVakESdyAQcyIQIARqQQd3cyIMIBBqQQl3cyIIcyIVIAZqQQ13IApzIhQgDCAKIA5qQQl3IBNzIhMgCmpBDXcgC3MiGSATakESdyAOcyIKakEHdyAXcyILIApqQQl3IA9zIg4gC2pBDXcgDHMiFyAOakESdyAKcyINIAIgCCAMakENdyAEcyIMIAhqQRJ3IBBzIghqQQd3IBlzIgpqQQd3cyIEIBQgFWpBEncgEXMiECALakEHdyAJIBggD2pBEncgEnMiEWpBB3cgDHMiDCARakEJdyATcyISIAxqQQ13IAlzIg9zIgkgEGpBCXcgCiAIakEJdyAWcyITcyIWIAlqQQ13IAtzIhQgFmpBEncgEHMiEGpBB3cgBiAPIBJqQRJ3IBFzIhFqQQd3IBMgCmpBDXcgAnMiC3MiAiARakEJdyAOcyIOIAJqQQ13IAZzIhhzIgYgEGpBCXcgFSAXIAsgE2pBEncgCHMiCCAMakEHd3MiCyAIakEJd3MiE3MiFSAGakENdyAEcyIXIAsgBCANakEJdyAScyISIARqQQ13IApzIhkgEmpBEncgDXMiBGpBB3cgFHMiCiAEakEJdyAOcyIPIApqQQ13IAtzIhQgD2pBEncgBHMiDSACIBMgC2pBDXcgDHMiDCATakESdyAIcyIIakEHdyAZcyILakEHd3MiBCAXIBVqQRJ3IBBzIhAgCmpBB3cgCSAYIA5qQRJ3IBFzIg5qQQd3IAxzIgwgDmpBCXcgEnMiESAMakENdyAJcyIXcyIJIBBqQQl3IAsgCGpBCXcgFnMiEnMiEyAJakENdyAKcyIYIBNqQRJ3IBBzIhBqQQd3IAYgFyARakESdyAOcyIKakEHdyASIAtqQQ13IAJzIhdzIgIgCmpBCXcgD3MiDiACakENdyAGcyIWcyIGIAkgFiAOakESdyAKcyIWakEHdyAVIBQgFyASakESdyAIcyIIIAxqQQd3cyIKIAhqQQl3cyISIApqQQ13IAxzIg9zIgwgFmpBCXcgBCANakEJdyARcyIRcyIVIAxqQQ13IAlzIhQgFWpBEncgFnMiCWpBB3cgAiAPIBJqQRJ3IAhzIghqQQd3IBEgBGpBDXcgC3MiD3MiCyAIakEJdyATcyITIAtqQQ13IAJzIhdzIhZqNgIEIAAgACgCCCAWIAlqQQl3IAogDyARakESdyANcyIRakEHdyAYcyICIBFqQQl3IA5zIg5zIg9qNgIIIAAgACgCDCAPIBZqQQ13IAZzIg1qNgIMIAAgACgCECAGIBBqQQl3IBJzIhIgDiACakENdyAKcyIYIBcgE2pBEncgCHMiCiAMakEHd3MiCCAKakEJd3MiFiAIakENdyAMcyIMajYCECAAIAAoAgAgDSAPakESdyAJc2o2AgAgACAAKAIUIAwgFmpBEncgCnNqNgIUIAAgACgCGCAIajYCGCAAIAAoAhwgFmo2AhwgACAAKAIgIBIgBmpBDXcgBHMiCSAYIA5qQRJ3IBFzIgYgC2pBB3dzIgogBmpBCXcgFXMiBGo2AiAgACAAKAIkIAQgCmpBDXcgC3MiC2o2AiQgACAAKAIoIAsgBGpBEncgBnNqNgIoIAAgACgCLCAKajYCLCAAIAAoAjAgCSASakESdyAQcyIGIAJqQQd3IBRzIgtqNgIwIAAgACgCNCALIAZqQQl3IBNzIgpqNgI0IAAgACgCOCAKIAtqQQ13IAJzIgJqNgI4IAAgACgCPCACIApqQRJ3IAZzajYCPAtyAwF/AX4CfwJAIAJFDQBBACgCiAgiAyAAIAGtIgQgAyAAQQd0IgUgAmxqIgMgAyAFIAFsaiIGEAIgAkEBRg0AIAJBf2ohASAFIQIDQEEAKAKICCACaiAAIAQgAyAGEAIgAiAFaiECIAFBf2oiAQ0ACwsL\";\n    var hash$3 = \"d96fb75f\";\n    var wasmJson$3 = {\n    \tname: name$3,\n    \tdata: data$3,\n    \thash: hash$3\n    };\n\n    function scryptInternal(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const { costFactor, blockSize, parallelism, hashLength, } = options;\n            const SHA256Hasher = createSHA256();\n            const blockData = yield pbkdf2({\n                password: options.password,\n                salt: options.salt,\n                iterations: 1,\n                hashLength: 128 * blockSize * parallelism,\n                hashFunction: SHA256Hasher,\n                outputType: 'binary',\n            });\n            const scryptInterface = yield WASMInterface(wasmJson$3, 0);\n            // last block is for storing the temporary vectors\n            const VSize = 128 * blockSize * costFactor;\n            const XYSize = 256 * blockSize;\n            scryptInterface.setMemorySize(blockData.length + VSize + XYSize);\n            scryptInterface.writeMemory(blockData, 0);\n            // mix blocks\n            scryptInterface.getExports().scrypt(blockSize, costFactor, parallelism);\n            const expensiveSalt = scryptInterface\n                .getMemory()\n                .subarray(0, 128 * blockSize * parallelism);\n            const outputData = yield pbkdf2({\n                password: options.password,\n                salt: expensiveSalt,\n                iterations: 1,\n                hashLength,\n                hashFunction: SHA256Hasher,\n                outputType: 'binary',\n            });\n            if (options.outputType === 'hex') {\n                const digestChars = new Uint8Array(hashLength * 2);\n                return getDigestHex(digestChars, outputData, hashLength);\n            }\n            // return binary format\n            return outputData;\n        });\n    }\n    // eslint-disable-next-line no-bitwise\n    const isPowerOfTwo = (v) => v && !(v & (v - 1));\n    const validateOptions$1 = (options) => {\n        if (!options || typeof options !== 'object') {\n            throw new Error('Invalid options parameter. It requires an object.');\n        }\n        if (!Number.isInteger(options.blockSize) || options.blockSize < 1) {\n            throw new Error('Block size should be a positive number');\n        }\n        if (!Number.isInteger(options.costFactor)\n            || options.costFactor < 2\n            || !isPowerOfTwo(options.costFactor)) {\n            throw new Error('Cost factor should be a power of 2, greater than 1');\n        }\n        if (!Number.isInteger(options.parallelism) || options.parallelism < 1) {\n            throw new Error('Parallelism should be a positive number');\n        }\n        if (!Number.isInteger(options.hashLength) || options.hashLength < 1) {\n            throw new Error('Hash length should be a positive number.');\n        }\n        if (options.outputType === undefined) {\n            options.outputType = 'hex';\n        }\n        if (!['hex', 'binary'].includes(options.outputType)) {\n            throw new Error(`Insupported output type ${options.outputType}. Valid values: ['hex', 'binary']`);\n        }\n    };\n    /**\n     * Calculates hash using the scrypt password-based key derivation function\n     * @returns Computed hash as a hexadecimal string or as\n     *          Uint8Array depending on the outputType option\n     */\n    function scrypt(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateOptions$1(options);\n            return scryptInternal(options);\n        });\n    }\n\n    var name$2 = \"bcrypt\";\n    var data$2 = \"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\";\n    var hash$2 = \"9f4c7b9e\";\n    var wasmJson$2 = {\n    \tname: name$2,\n    \tdata: data$2,\n    \thash: hash$2\n    };\n\n    function bcryptInternal(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const { costFactor, password, salt } = options;\n            const bcryptInterface = yield WASMInterface(wasmJson$2, 0);\n            bcryptInterface.writeMemory(getUInt8Buffer(salt), 0);\n            const passwordBuffer = getUInt8Buffer(password);\n            bcryptInterface.writeMemory(passwordBuffer, 16);\n            const shouldEncode = options.outputType === 'encoded' ? 1 : 0;\n            bcryptInterface.getExports().bcrypt(passwordBuffer.length, costFactor, shouldEncode);\n            const memory = bcryptInterface.getMemory();\n            if (options.outputType === 'encoded') {\n                return intArrayToString(memory, 60);\n            }\n            if (options.outputType === 'hex') {\n                const digestChars = new Uint8Array(24 * 2);\n                return getDigestHex(digestChars, memory, 24);\n            }\n            // return binary format\n            // the data is copied to allow GC of the original memory buffer\n            return memory.slice(0, 24);\n        });\n    }\n    const validateOptions = (options) => {\n        if (!options || typeof options !== 'object') {\n            throw new Error('Invalid options parameter. It requires an object.');\n        }\n        if (!Number.isInteger(options.costFactor) || options.costFactor < 4 || options.costFactor > 31) {\n            throw new Error('Cost factor should be a number between 4 and 31');\n        }\n        options.password = getUInt8Buffer(options.password);\n        if (options.password.length < 1) {\n            throw new Error('Password should be at least 1 byte long');\n        }\n        if (options.password.length > 72) {\n            throw new Error('Password should be at most 72 bytes long');\n        }\n        options.salt = getUInt8Buffer(options.salt);\n        if (options.salt.length !== 16) {\n            throw new Error('Salt should be 16 bytes long');\n        }\n        if (options.outputType === undefined) {\n            options.outputType = 'encoded';\n        }\n        if (!['hex', 'binary', 'encoded'].includes(options.outputType)) {\n            throw new Error(`Insupported output type ${options.outputType}. Valid values: ['hex', 'binary', 'encoded']`);\n        }\n    };\n    /**\n     * Calculates hash using the bcrypt password-hashing function\n     * @returns Computed hash\n     */\n    function bcrypt(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateOptions(options);\n            return bcryptInternal(options);\n        });\n    }\n    const validateHashCharacters = (hash) => {\n        if (!/^\\$2[axyb]\\$[0-3][0-9]\\$[./A-Za-z0-9]{53}$/.test(hash)) {\n            return false;\n        }\n        if (hash[4] === '0' && parseInt(hash[5], 10) < 4) {\n            return false;\n        }\n        if (hash[4] === '3' && parseInt(hash[5], 10) > 1) {\n            return false;\n        }\n        return true;\n    };\n    const validateVerifyOptions = (options) => {\n        if (!options || typeof options !== 'object') {\n            throw new Error('Invalid options parameter. It requires an object.');\n        }\n        if (options.hash === undefined || typeof options.hash !== 'string') {\n            throw new Error('Hash should be specified');\n        }\n        if (options.hash.length !== 60) {\n            throw new Error('Hash should be 60 bytes long');\n        }\n        if (!validateHashCharacters(options.hash)) {\n            throw new Error('Invalid hash');\n        }\n        options.password = getUInt8Buffer(options.password);\n        if (options.password.length < 1) {\n            throw new Error('Password should be at least 1 byte long');\n        }\n        if (options.password.length > 72) {\n            throw new Error('Password should be at most 72 bytes long');\n        }\n    };\n    /**\n     * Verifies password using bcrypt password-hashing function\n     * @returns True if the encoded hash matches the password\n     */\n    function bcryptVerify(options) {\n        return __awaiter(this, void 0, void 0, function* () {\n            validateVerifyOptions(options);\n            const { hash, password } = options;\n            const bcryptInterface = yield WASMInterface(wasmJson$2, 0);\n            bcryptInterface.writeMemory(getUInt8Buffer(hash), 0);\n            const passwordBuffer = getUInt8Buffer(password);\n            bcryptInterface.writeMemory(passwordBuffer, 60);\n            return !!bcryptInterface.getExports().bcrypt_verify(passwordBuffer.length);\n        });\n    }\n\n    var name$1 = \"whirlpool\";\n    var data$1 = \"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\";\n    var hash$1 = \"358808f8\";\n    var wasmJson$1 = {\n    \tname: name$1,\n    \tdata: data$1,\n    \thash: hash$1\n    };\n\n    const mutex$1 = new Mutex();\n    let wasmCache$1 = null;\n    /**\n     * Calculates Whirlpool hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function whirlpool(data) {\n        if (wasmCache$1 === null) {\n            return lockedCreate(mutex$1, wasmJson$1, 64)\n                .then((wasm) => {\n                wasmCache$1 = wasm;\n                return wasmCache$1.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache$1.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new Whirlpool hash instance\n     */\n    function createWhirlpool() {\n        return WASMInterface(wasmJson$1, 64).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 64,\n            };\n            return obj;\n        });\n    }\n\n    var name = \"sm3\";\n    var data = \"AGFzbQEAAAABDANgAAF/YAAAYAF/AAMIBwABAgIBAAIEBQFwAQEBBQQBAQICBg4CfwFB8IkFC38AQYAICwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAABC0hhc2hfVXBkYXRlAAIKSGFzaF9GaW5hbAAEDUhhc2hfR2V0U3RhdGUABQ5IYXNoX0NhbGN1bGF0ZQAGClNUQVRFX1NJWkUDAQq4GAcFAEGACQtRAEEAQs3ct5zuycP9sH83AqCJAUEAQrzhvMuqlc6YFjcCmIkBQQBC14WRuYHAgcVaNwKQiQFBAELvrICcl9esiskANwKIiQFBAEIANwKAiQELiAIBBH8CQCAARQ0AQQAhAUEAQQAoAoCJASICIABqIgM2AoCJASACQT9xIQQCQCADIAJPDQBBAEEAKAKEiQFBAWo2AoSJAQtBgAkhAgJAIARFDQACQEHAACAEayIBIABNDQAgBCEBDAELQQAhAgNAIAQgAmpBqIkBaiACQYAJai0AADoAACAEIAJBAWoiAmpBwABHDQALQaiJARADIAFBgAlqIQIgACABayEAQQAhAQsCQCAAQcAASQ0AA0AgAhADIAJBwABqIQIgAEFAaiIAQT9LDQALCyAARQ0AIAFBqIkBaiEEA0AgBCACLQAAOgAAIARBAWohBCACQQFqIQIgAEF/aiIADQALCwuDDAEZfyMAQZACayIBJAAgASAAKAIIIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCCCABIAAoAhQiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIUIAEgACgCGCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AhggASAAKAIcIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciIDNgIcIAEgACgCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIiBDYCACABIAAoAhAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIgU2AhAgASAAKAIEIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciIGNgIEIAEgACgCICICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIiBzYCICABIAAoAgwiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIgg2AgwgACgCJCECIAEgACgCNCIJQRh0IAlBCHRBgID8B3FyIAlBCHZBgP4DcSAJQRh2cnIiCjYCNCABIAAoAigiCUEYdCAJQQh0QYCA/AdxciAJQQh2QYD+A3EgCUEYdnJyIgs2AiggASADIARzIApBD3dzIgkgC3MgCEEHd3MgCUEPd3MgCUEXd3MiDDYCQCABIAAoAjgiCUEYdCAJQQh0QYCA/AdxciAJQQh2QYD+A3EgCUEYdnJyIgM2AjggASAAKAIsIglBGHQgCUEIdEGAgPwHcXIgCUEIdkGA/gNxIAlBGHZyciIENgIsIAEgByAGcyADQQ93cyIJIARzIAVBB3dzIAlBD3dzIAlBF3dzNgJEIAEgAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIgk2AiQgASgCCCEDIAEgACgCPCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIiAjYCPCABIAAoAjAiAEEYdCAAQQh0QYCA/AdxciAAQQh2QYD+A3EgAEEYdnJyIgQ2AjAgASAJIANzIAJBD3dzIgAgBHMgASgCFEEHd3MgAEEPd3MgAEEXd3M2AkggASAIIAtzIAxBD3dzIgAgCnMgAEEPd3MgAEEXd3MgASgCGEEHd3M2AkxBACEGQSAhByABIQlBACgCiIkBIg0hCEEAKAKkiQEiDiEPQQAoAqCJASIQIQpBACgCnIkBIhEhEkEAKAKYiQEiEyELQQAoApSJASIUIRVBACgCkIkBIhYhA0EAKAKMiQEiFyEYA0AgEiALIgJzIAoiBHMgD2ogCCIAQQx3IgogAmpBmYqxzgcgB3ZBmYqxzgcgBnRyakEHdyIPaiAJKAIAIhlqIghBCXcgCHMgCEERd3MhCyADIgUgGHMgAHMgFWogDyAKc2ogCUEQaigCACAZc2ohCCAJQQRqIQkgB0F/aiEHIBJBE3chCiAYQQl3IQMgBCEPIAIhEiAFIRUgACEYIAZBAWoiBkEQRw0AC0EAIQZBECEHA0AgASAGaiIJQdAAaiAJQSxqKAIAIAlBEGooAgBzIAlBxABqKAIAIhVBD3dzIhIgCUE4aigCAHMgCUEcaigCAEEHd3MgEkEPd3MgEkEXd3MiGTYCACAKIg8gCyIJQX9zcSACIAlxciAEaiAIIhJBDHciCiAJakGKu57UByAHd2pBB3ciBGogDGoiCEEJdyAIcyAIQRF3cyELIBIgAyIYIABycSAYIABxciAFaiAEIApzaiAZIAxzaiEIIAJBE3chCiAAQQl3IQMgB0EBaiEHIBUhDCAPIQQgCSECIBghBSASIQAgBkEEaiIGQcABRw0AC0EAIA8gDnM2AqSJAUEAIAogEHM2AqCJAUEAIAkgEXM2ApyJAUEAIAsgE3M2ApiJAUEAIBggFHM2ApSJAUEAIAMgFnM2ApCJAUEAIBIgF3M2AoyJAUEAIAggDXM2AoiJASABQZACaiQAC4UIAQd/IwBBEGsiACQAIABBACgCgIkBIgFBG3QgAUELdEGAgPwHcXIgAUEFdkGA/gNxIAFBA3RBGHZycjYCDCAAQQAoAoSJASICQQN0IAFBHXZyIgNBGHQgA0EIdEGAgPwHcXIgA0EIdkGA/gNxIANBGHZyciIENgIIAkBBOEH4ACABQT9xIgVBOEkbIAVrIgNFDQBBACADIAFqIgE2AoCJAQJAIAEgA08NAEEAIAJBAWo2AoSJAQtBkAghAQJAAkAgBUUNACADQcAAIAVrIgJJDQFBACEBA0AgBSABakGoiQFqIAFBkAhqLQAAOgAAIAUgAUEBaiIBakHAAEcNAAtBqIkBEAMgAkGQCGohASADIAJrIQMLQQAhBQsCQCADQcAASQ0AA0AgARADIAFBwABqIQEgA0FAaiIDQT9LDQALCyADRQ0AIAVBqIkBaiEFA0AgBSABLQAAOgAAIAVBAWohBSABQQFqIQEgA0F/aiIDDQALC0EAQQAoAoCJASIBQQhqNgKAiQEgAUE/cSECAkAgAUF4SQ0AQQBBACgChIkBQQFqNgKEiQELQQAhBkEIIQUgAEEIaiEBAkACQCACRQ0AAkAgAkE4Tw0AIAIhBgwBCyACQaiJAWogBDoAAAJAIAJBP0YNACACQamJAWogBEEIdjoAACACQT9zQX9qIgVFDQAgAkGqiQFqIQEgAEEIakECciEDA0AgASADLQAAOgAAIAFBAWohASADQQFqIQMgBUF/aiIFDQALC0GoiQEQAyACQUhqIgVFDQEgAEEIakHAACACa2ohAQsgBkGoiQFqIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASAFQX9qIgUNAAsLQQBBACgCiIkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCgAlBAEEAKAKMiQEiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgKECUEAQQAoApCJASIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AogJQQBBACgClIkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCjAlBAEEAKAKYiQEiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgKQCUEAQQAoApyJASIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnI2ApQJQQBBACgCoIkBIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYCmAlBAEEAKAKkiQEiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgKcCSAAQRBqJAALBgBBgIkBC8ABAQJ/QQBCzdy3nO7Jw/2wfzcCoIkBQQBCvOG8y6qVzpgWNwKYiQFBAELXhZG5gcCBxVo3ApCJAUEAQu+sgJyX16yKyQA3AoiJAUEAQgA3AoCJAQJAIABFDQBBACAANgKAiQFBgAkhAQJAIABBwABJDQBBgAkhAQNAIAEQAyABQcAAaiEBIABBQGoiAEE/Sw0ACyAARQ0BC0EAIQIDQCACQaiJAWogASACai0AADoAACAAIAJBAWoiAkcNAAsLEAQLC1ECAEGACAsEaAAAAABBkAgLQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\";\n    var hash = \"6e6f46ad\";\n    var wasmJson = {\n    \tname: name,\n    \tdata: data,\n    \thash: hash\n    };\n\n    const mutex = new Mutex();\n    let wasmCache = null;\n    /**\n     * Calculates SM3 hash\n     * @param data Input data (string, Buffer or TypedArray)\n     * @returns Computed hash as a hexadecimal string\n     */\n    function sm3(data) {\n        if (wasmCache === null) {\n            return lockedCreate(mutex, wasmJson, 32)\n                .then((wasm) => {\n                wasmCache = wasm;\n                return wasmCache.calculate(data);\n            });\n        }\n        try {\n            const hash = wasmCache.calculate(data);\n            return Promise.resolve(hash);\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    }\n    /**\n     * Creates a new SM3 hash instance\n     */\n    function createSM3() {\n        return WASMInterface(wasmJson, 32).then((wasm) => {\n            wasm.init();\n            const obj = {\n                init: () => { wasm.init(); return obj; },\n                update: (data) => { wasm.update(data); return obj; },\n                digest: (outputType) => wasm.digest(outputType),\n                save: () => wasm.save(),\n                load: (data) => { wasm.load(data); return obj; },\n                blockSize: 64,\n                digestSize: 32,\n            };\n            return obj;\n        });\n    }\n\n    exports.adler32 = adler32;\n    exports.argon2Verify = argon2Verify;\n    exports.argon2d = argon2d;\n    exports.argon2i = argon2i;\n    exports.argon2id = argon2id;\n    exports.bcrypt = bcrypt;\n    exports.bcryptVerify = bcryptVerify;\n    exports.blake2b = blake2b;\n    exports.blake2s = blake2s;\n    exports.blake3 = blake3;\n    exports.crc32 = crc32;\n    exports.crc32c = crc32c;\n    exports.createAdler32 = createAdler32;\n    exports.createBLAKE2b = createBLAKE2b;\n    exports.createBLAKE2s = createBLAKE2s;\n    exports.createBLAKE3 = createBLAKE3;\n    exports.createCRC32 = createCRC32;\n    exports.createCRC32C = createCRC32C;\n    exports.createHMAC = createHMAC;\n    exports.createKeccak = createKeccak;\n    exports.createMD4 = createMD4;\n    exports.createMD5 = createMD5;\n    exports.createRIPEMD160 = createRIPEMD160;\n    exports.createSHA1 = createSHA1;\n    exports.createSHA224 = createSHA224;\n    exports.createSHA256 = createSHA256;\n    exports.createSHA3 = createSHA3;\n    exports.createSHA384 = createSHA384;\n    exports.createSHA512 = createSHA512;\n    exports.createSM3 = createSM3;\n    exports.createWhirlpool = createWhirlpool;\n    exports.createXXHash128 = createXXHash128;\n    exports.createXXHash3 = createXXHash3;\n    exports.createXXHash32 = createXXHash32;\n    exports.createXXHash64 = createXXHash64;\n    exports.keccak = keccak;\n    exports.md4 = md4;\n    exports.md5 = md5;\n    exports.pbkdf2 = pbkdf2;\n    exports.ripemd160 = ripemd160;\n    exports.scrypt = scrypt;\n    exports.sha1 = sha1;\n    exports.sha224 = sha224;\n    exports.sha256 = sha256;\n    exports.sha3 = sha3;\n    exports.sha384 = sha384;\n    exports.sha512 = sha512;\n    exports.sm3 = sm3;\n    exports.whirlpool = whirlpool;\n    exports.xxhash128 = xxhash128;\n    exports.xxhash3 = xxhash3;\n    exports.xxhash32 = xxhash32;\n    exports.xxhash64 = xxhash64;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst 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\nconst 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    const arr = new Uint8Array(1)\n    const 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  const 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  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const 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(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\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  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const 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  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let 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    const 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  let 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    const len = checked(obj.length) | 0\n    const 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  let x = a.length\n  let y = b.length\n\n  for (let 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  let 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  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        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  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let 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  let 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  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let 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  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let 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  const 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  let str = ''\n  const 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 '<Buffer ' + str + '>'\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  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let 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  let indexSize = 1\n  let arrLength = arr.length\n  let 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  let i\n  if (dir) {\n    let 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      let found = true\n      for (let 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  const 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  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const 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  const 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  let 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  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let 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\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const 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  let res = ''\n  let 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  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let 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  const 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  const 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  let val = this[offset]\n  let mul = 1\n  let 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  let val = this[offset + --byteLength]\n  let 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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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  let val = this[offset]\n  let mul = 1\n  let 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  let i = byteLength\n  let mul = 1\n  let 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  const 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  const 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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\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    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let 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    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let 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\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let 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    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let 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\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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  const 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      const 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  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const 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// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst 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  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let 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  const byteArray = []\n  for (let 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  let c, hi, lo\n  const byteArray = []\n  for (let 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  let i\n  for (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\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n", "const fetch = require('cross-fetch');\r\nconst hash =  require('hash-wasm');\r\n\r\n\r\nconst buffer = require('buffer/').Buffer;\r\n\r\nmodule.exports = class IonProofOfWork {\r\n    static randomHexString() {\r\n        const size = Math.floor(Math.random() * Math.floor(500));\r\n        const randomString = [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join('');\r\n        return buffer.from(randomString).toString('hex');\r\n    }\r\n\r\n    static async submitIonRequestUntilSuccess(getChallengeUri, solveChallengeUri, requestBody) {\r\n        let result;\r\n        while (result === undefined) {\r\n            result = await this.submitIonRequest(getChallengeUri, solveChallengeUri, requestBody);\r\n        };\r\n    };\r\n\r\n    static async submitIonRequest(getChallengeUri, solveChallengeUri, requestBody) {\r\n        console.log(`Getting challenge from: ${getChallengeUri}`);\r\n        const getChallengeResponse = await fetch(getChallengeUri, {\r\n            mode: 'cors'\r\n        });\r\n        if (!getChallengeResponse.ok) {\r\n            throw new Error('Get challenge service not available')\r\n        }\r\n        const challengeBody = await getChallengeResponse.json();\r\n        console.log(challengeBody);\r\n\r\n        const challengeNonce = challengeBody.challengeNonce;\r\n        const largestAllowedHash = challengeBody.largestAllowedHash;\r\n        const validDuration = challengeBody.validDurationInMinutes * 60 * 1000;\r\n    \r\n        let answerHash = '';\r\n        let answerNonce = '';\r\n\r\n        console.log(`Solving for body:\\n${requestBody}`);\r\n        const startTime = Date.now();\r\n        do {\r\n            answerNonce = this.randomHexString();\r\n            answerHash = await hash.argon2id({\r\n                password: buffer.from(answerNonce, 'hex').toString() + requestBody,\r\n                salt: buffer.from(challengeNonce, 'hex'),\r\n                parallelism: 1,\r\n                iterations: 1,\r\n                memorySize: 1000,\r\n                hashLength: 32, // output size = 32 bytes\r\n                outputType: 'hex',\r\n            });\r\n            console.log(answerHash);\r\n            console.log(largestAllowedHash);\r\n        } while (answerHash > largestAllowedHash && Date.now() - startTime < validDuration);\r\n\r\n        if (Date.now() - startTime >  validDuration) {\r\n            return;\r\n        }\r\n\r\n        console.log('3')\r\n        const response = await fetch(solveChallengeUri, {\r\n            method: 'POST',\r\n            mode: 'cors',\r\n            body: requestBody,\r\n            headers: {\r\n                'Challenge-Nonce': challengeNonce,\r\n                'Answer-Nonce': answerNonce,\r\n                'Content-Type': 'application/json'\r\n            }\r\n        });\r\n\r\n        if (response.status >= 500) {\r\n            console.log(`Unexpected 5xx response: ${await response.text()}`);\r\n        } else if (response.status >= 400) {\r\n            // 400 means bad request, so should retry with a new challenge\r\n            console.log(`Bed request: ${await response.text()}`);\r\n            console.log('Retrying with new challenge and difficulty');\r\n        } else if (response.status >= 300) {\r\n            console.log(`Unexpected 3xx response: ${await response.text()}`);\r\n        } else {\r\n            //success\r\n            console.log(`Successful registration`);\r\n            const responseText = await response.text();\r\n            console.log(responseText);\r\n            return responseText;\r\n        };\r\n    }\r\n}\r\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n  var i, r = new Float64Array(16);\n  if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n  return r;\n};\n\n//  Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n    gf1 = gf([1]),\n    _121665 = gf([0xdb41, 1]),\n    D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n    D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n    X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n    Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n    I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n  x[i]   = (h >> 24) & 0xff;\n  x[i+1] = (h >> 16) & 0xff;\n  x[i+2] = (h >>  8) & 0xff;\n  x[i+3] = h & 0xff;\n  x[i+4] = (l >> 24)  & 0xff;\n  x[i+5] = (l >> 16)  & 0xff;\n  x[i+6] = (l >>  8)  & 0xff;\n  x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n  var i,d = 0;\n  for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n  return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n  return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n  return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n  var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n      j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n      j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n      j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n      j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n      j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n      j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n      j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n      j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n      j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n      j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n      j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n      j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n      j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n      j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n      j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n  var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n      x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n      x15 = j15, u;\n\n  for (var i = 0; i < 20; i += 2) {\n    u = x0 + x12 | 0;\n    x4 ^= u<<7 | u>>>(32-7);\n    u = x4 + x0 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x4 | 0;\n    x12 ^= u<<13 | u>>>(32-13);\n    u = x12 + x8 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x1 | 0;\n    x9 ^= u<<7 | u>>>(32-7);\n    u = x9 + x5 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x9 | 0;\n    x1 ^= u<<13 | u>>>(32-13);\n    u = x1 + x13 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x6 | 0;\n    x14 ^= u<<7 | u>>>(32-7);\n    u = x14 + x10 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x14 | 0;\n    x6 ^= u<<13 | u>>>(32-13);\n    u = x6 + x2 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x11 | 0;\n    x3 ^= u<<7 | u>>>(32-7);\n    u = x3 + x15 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x3 | 0;\n    x11 ^= u<<13 | u>>>(32-13);\n    u = x11 + x7 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n\n    u = x0 + x3 | 0;\n    x1 ^= u<<7 | u>>>(32-7);\n    u = x1 + x0 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x1 | 0;\n    x3 ^= u<<13 | u>>>(32-13);\n    u = x3 + x2 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x4 | 0;\n    x6 ^= u<<7 | u>>>(32-7);\n    u = x6 + x5 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x6 | 0;\n    x4 ^= u<<13 | u>>>(32-13);\n    u = x4 + x7 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x9 | 0;\n    x11 ^= u<<7 | u>>>(32-7);\n    u = x11 + x10 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x11 | 0;\n    x9 ^= u<<13 | u>>>(32-13);\n    u = x9 + x8 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x14 | 0;\n    x12 ^= u<<7 | u>>>(32-7);\n    u = x12 + x15 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x12 | 0;\n    x14 ^= u<<13 | u>>>(32-13);\n    u = x14 + x13 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n  }\n   x0 =  x0 +  j0 | 0;\n   x1 =  x1 +  j1 | 0;\n   x2 =  x2 +  j2 | 0;\n   x3 =  x3 +  j3 | 0;\n   x4 =  x4 +  j4 | 0;\n   x5 =  x5 +  j5 | 0;\n   x6 =  x6 +  j6 | 0;\n   x7 =  x7 +  j7 | 0;\n   x8 =  x8 +  j8 | 0;\n   x9 =  x9 +  j9 | 0;\n  x10 = x10 + j10 | 0;\n  x11 = x11 + j11 | 0;\n  x12 = x12 + j12 | 0;\n  x13 = x13 + j13 | 0;\n  x14 = x14 + j14 | 0;\n  x15 = x15 + j15 | 0;\n\n  o[ 0] = x0 >>>  0 & 0xff;\n  o[ 1] = x0 >>>  8 & 0xff;\n  o[ 2] = x0 >>> 16 & 0xff;\n  o[ 3] = x0 >>> 24 & 0xff;\n\n  o[ 4] = x1 >>>  0 & 0xff;\n  o[ 5] = x1 >>>  8 & 0xff;\n  o[ 6] = x1 >>> 16 & 0xff;\n  o[ 7] = x1 >>> 24 & 0xff;\n\n  o[ 8] = x2 >>>  0 & 0xff;\n  o[ 9] = x2 >>>  8 & 0xff;\n  o[10] = x2 >>> 16 & 0xff;\n  o[11] = x2 >>> 24 & 0xff;\n\n  o[12] = x3 >>>  0 & 0xff;\n  o[13] = x3 >>>  8 & 0xff;\n  o[14] = x3 >>> 16 & 0xff;\n  o[15] = x3 >>> 24 & 0xff;\n\n  o[16] = x4 >>>  0 & 0xff;\n  o[17] = x4 >>>  8 & 0xff;\n  o[18] = x4 >>> 16 & 0xff;\n  o[19] = x4 >>> 24 & 0xff;\n\n  o[20] = x5 >>>  0 & 0xff;\n  o[21] = x5 >>>  8 & 0xff;\n  o[22] = x5 >>> 16 & 0xff;\n  o[23] = x5 >>> 24 & 0xff;\n\n  o[24] = x6 >>>  0 & 0xff;\n  o[25] = x6 >>>  8 & 0xff;\n  o[26] = x6 >>> 16 & 0xff;\n  o[27] = x6 >>> 24 & 0xff;\n\n  o[28] = x7 >>>  0 & 0xff;\n  o[29] = x7 >>>  8 & 0xff;\n  o[30] = x7 >>> 16 & 0xff;\n  o[31] = x7 >>> 24 & 0xff;\n\n  o[32] = x8 >>>  0 & 0xff;\n  o[33] = x8 >>>  8 & 0xff;\n  o[34] = x8 >>> 16 & 0xff;\n  o[35] = x8 >>> 24 & 0xff;\n\n  o[36] = x9 >>>  0 & 0xff;\n  o[37] = x9 >>>  8 & 0xff;\n  o[38] = x9 >>> 16 & 0xff;\n  o[39] = x9 >>> 24 & 0xff;\n\n  o[40] = x10 >>>  0 & 0xff;\n  o[41] = x10 >>>  8 & 0xff;\n  o[42] = x10 >>> 16 & 0xff;\n  o[43] = x10 >>> 24 & 0xff;\n\n  o[44] = x11 >>>  0 & 0xff;\n  o[45] = x11 >>>  8 & 0xff;\n  o[46] = x11 >>> 16 & 0xff;\n  o[47] = x11 >>> 24 & 0xff;\n\n  o[48] = x12 >>>  0 & 0xff;\n  o[49] = x12 >>>  8 & 0xff;\n  o[50] = x12 >>> 16 & 0xff;\n  o[51] = x12 >>> 24 & 0xff;\n\n  o[52] = x13 >>>  0 & 0xff;\n  o[53] = x13 >>>  8 & 0xff;\n  o[54] = x13 >>> 16 & 0xff;\n  o[55] = x13 >>> 24 & 0xff;\n\n  o[56] = x14 >>>  0 & 0xff;\n  o[57] = x14 >>>  8 & 0xff;\n  o[58] = x14 >>> 16 & 0xff;\n  o[59] = x14 >>> 24 & 0xff;\n\n  o[60] = x15 >>>  0 & 0xff;\n  o[61] = x15 >>>  8 & 0xff;\n  o[62] = x15 >>> 16 & 0xff;\n  o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n  var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n      j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n      j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n      j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n      j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n      j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n      j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n      j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n      j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n      j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n      j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n      j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n      j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n      j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n      j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n      j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n  var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n      x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n      x15 = j15, u;\n\n  for (var i = 0; i < 20; i += 2) {\n    u = x0 + x12 | 0;\n    x4 ^= u<<7 | u>>>(32-7);\n    u = x4 + x0 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x4 | 0;\n    x12 ^= u<<13 | u>>>(32-13);\n    u = x12 + x8 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x1 | 0;\n    x9 ^= u<<7 | u>>>(32-7);\n    u = x9 + x5 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x9 | 0;\n    x1 ^= u<<13 | u>>>(32-13);\n    u = x1 + x13 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x6 | 0;\n    x14 ^= u<<7 | u>>>(32-7);\n    u = x14 + x10 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x14 | 0;\n    x6 ^= u<<13 | u>>>(32-13);\n    u = x6 + x2 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x11 | 0;\n    x3 ^= u<<7 | u>>>(32-7);\n    u = x3 + x15 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x3 | 0;\n    x11 ^= u<<13 | u>>>(32-13);\n    u = x11 + x7 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n\n    u = x0 + x3 | 0;\n    x1 ^= u<<7 | u>>>(32-7);\n    u = x1 + x0 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x1 | 0;\n    x3 ^= u<<13 | u>>>(32-13);\n    u = x3 + x2 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x4 | 0;\n    x6 ^= u<<7 | u>>>(32-7);\n    u = x6 + x5 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x6 | 0;\n    x4 ^= u<<13 | u>>>(32-13);\n    u = x4 + x7 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x9 | 0;\n    x11 ^= u<<7 | u>>>(32-7);\n    u = x11 + x10 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x11 | 0;\n    x9 ^= u<<13 | u>>>(32-13);\n    u = x9 + x8 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x14 | 0;\n    x12 ^= u<<7 | u>>>(32-7);\n    u = x12 + x15 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x12 | 0;\n    x14 ^= u<<13 | u>>>(32-13);\n    u = x14 + x13 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n  }\n\n  o[ 0] = x0 >>>  0 & 0xff;\n  o[ 1] = x0 >>>  8 & 0xff;\n  o[ 2] = x0 >>> 16 & 0xff;\n  o[ 3] = x0 >>> 24 & 0xff;\n\n  o[ 4] = x5 >>>  0 & 0xff;\n  o[ 5] = x5 >>>  8 & 0xff;\n  o[ 6] = x5 >>> 16 & 0xff;\n  o[ 7] = x5 >>> 24 & 0xff;\n\n  o[ 8] = x10 >>>  0 & 0xff;\n  o[ 9] = x10 >>>  8 & 0xff;\n  o[10] = x10 >>> 16 & 0xff;\n  o[11] = x10 >>> 24 & 0xff;\n\n  o[12] = x15 >>>  0 & 0xff;\n  o[13] = x15 >>>  8 & 0xff;\n  o[14] = x15 >>> 16 & 0xff;\n  o[15] = x15 >>> 24 & 0xff;\n\n  o[16] = x6 >>>  0 & 0xff;\n  o[17] = x6 >>>  8 & 0xff;\n  o[18] = x6 >>> 16 & 0xff;\n  o[19] = x6 >>> 24 & 0xff;\n\n  o[20] = x7 >>>  0 & 0xff;\n  o[21] = x7 >>>  8 & 0xff;\n  o[22] = x7 >>> 16 & 0xff;\n  o[23] = x7 >>> 24 & 0xff;\n\n  o[24] = x8 >>>  0 & 0xff;\n  o[25] = x8 >>>  8 & 0xff;\n  o[26] = x8 >>> 16 & 0xff;\n  o[27] = x8 >>> 24 & 0xff;\n\n  o[28] = x9 >>>  0 & 0xff;\n  o[29] = x9 >>>  8 & 0xff;\n  o[30] = x9 >>> 16 & 0xff;\n  o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n  core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n  core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n            // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n  var z = new Uint8Array(16), x = new Uint8Array(64);\n  var u, i;\n  for (i = 0; i < 16; i++) z[i] = 0;\n  for (i = 0; i < 8; i++) z[i] = n[i];\n  while (b >= 64) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n    u = 1;\n    for (i = 8; i < 16; i++) {\n      u = u + (z[i] & 0xff) | 0;\n      z[i] = u & 0xff;\n      u >>>= 8;\n    }\n    b -= 64;\n    cpos += 64;\n    mpos += 64;\n  }\n  if (b > 0) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n  }\n  return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n  var z = new Uint8Array(16), x = new Uint8Array(64);\n  var u, i;\n  for (i = 0; i < 16; i++) z[i] = 0;\n  for (i = 0; i < 8; i++) z[i] = n[i];\n  while (b >= 64) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n    u = 1;\n    for (i = 8; i < 16; i++) {\n      u = u + (z[i] & 0xff) | 0;\n      z[i] = u & 0xff;\n      u >>>= 8;\n    }\n    b -= 64;\n    cpos += 64;\n  }\n  if (b > 0) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < b; i++) c[cpos+i] = x[i];\n  }\n  return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n  var s = new Uint8Array(32);\n  crypto_core_hsalsa20(s,n,k,sigma);\n  var sn = new Uint8Array(8);\n  for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n  return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n  var s = new Uint8Array(32);\n  crypto_core_hsalsa20(s,n,k,sigma);\n  var sn = new Uint8Array(8);\n  for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n  return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n  this.buffer = new Uint8Array(16);\n  this.r = new Uint16Array(10);\n  this.h = new Uint16Array(10);\n  this.pad = new Uint16Array(8);\n  this.leftover = 0;\n  this.fin = 0;\n\n  var t0, t1, t2, t3, t4, t5, t6, t7;\n\n  t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0                     ) & 0x1fff;\n  t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;\n  t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 <<  6)) & 0x1f03;\n  t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;\n  t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>>  4) | (t4 << 12)) & 0x00ff;\n  this.r[5] = ((t4 >>>  1)) & 0x1ffe;\n  t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;\n  t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 <<  5)) & 0x1f81;\n  t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;\n  this.r[9] = ((t7 >>>  5)) & 0x007f;\n\n  this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n  this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n  this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n  this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n  this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n  this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n  this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n  this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n  var hibit = this.fin ? 0 : (1 << 11);\n  var t0, t1, t2, t3, t4, t5, t6, t7, c;\n  var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n  var h0 = this.h[0],\n      h1 = this.h[1],\n      h2 = this.h[2],\n      h3 = this.h[3],\n      h4 = this.h[4],\n      h5 = this.h[5],\n      h6 = this.h[6],\n      h7 = this.h[7],\n      h8 = this.h[8],\n      h9 = this.h[9];\n\n  var r0 = this.r[0],\n      r1 = this.r[1],\n      r2 = this.r[2],\n      r3 = this.r[3],\n      r4 = this.r[4],\n      r5 = this.r[5],\n      r6 = this.r[6],\n      r7 = this.r[7],\n      r8 = this.r[8],\n      r9 = this.r[9];\n\n  while (bytes >= 16) {\n    t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0                     ) & 0x1fff;\n    t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;\n    t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 <<  6)) & 0x1fff;\n    t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;\n    t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>>  4) | (t4 << 12)) & 0x1fff;\n    h5 += ((t4 >>>  1)) & 0x1fff;\n    t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;\n    t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 <<  5)) & 0x1fff;\n    t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;\n    h9 += ((t7 >>> 5)) | hibit;\n\n    c = 0;\n\n    d0 = c;\n    d0 += h0 * r0;\n    d0 += h1 * (5 * r9);\n    d0 += h2 * (5 * r8);\n    d0 += h3 * (5 * r7);\n    d0 += h4 * (5 * r6);\n    c = (d0 >>> 13); d0 &= 0x1fff;\n    d0 += h5 * (5 * r5);\n    d0 += h6 * (5 * r4);\n    d0 += h7 * (5 * r3);\n    d0 += h8 * (5 * r2);\n    d0 += h9 * (5 * r1);\n    c += (d0 >>> 13); d0 &= 0x1fff;\n\n    d1 = c;\n    d1 += h0 * r1;\n    d1 += h1 * r0;\n    d1 += h2 * (5 * r9);\n    d1 += h3 * (5 * r8);\n    d1 += h4 * (5 * r7);\n    c = (d1 >>> 13); d1 &= 0x1fff;\n    d1 += h5 * (5 * r6);\n    d1 += h6 * (5 * r5);\n    d1 += h7 * (5 * r4);\n    d1 += h8 * (5 * r3);\n    d1 += h9 * (5 * r2);\n    c += (d1 >>> 13); d1 &= 0x1fff;\n\n    d2 = c;\n    d2 += h0 * r2;\n    d2 += h1 * r1;\n    d2 += h2 * r0;\n    d2 += h3 * (5 * r9);\n    d2 += h4 * (5 * r8);\n    c = (d2 >>> 13); d2 &= 0x1fff;\n    d2 += h5 * (5 * r7);\n    d2 += h6 * (5 * r6);\n    d2 += h7 * (5 * r5);\n    d2 += h8 * (5 * r4);\n    d2 += h9 * (5 * r3);\n    c += (d2 >>> 13); d2 &= 0x1fff;\n\n    d3 = c;\n    d3 += h0 * r3;\n    d3 += h1 * r2;\n    d3 += h2 * r1;\n    d3 += h3 * r0;\n    d3 += h4 * (5 * r9);\n    c = (d3 >>> 13); d3 &= 0x1fff;\n    d3 += h5 * (5 * r8);\n    d3 += h6 * (5 * r7);\n    d3 += h7 * (5 * r6);\n    d3 += h8 * (5 * r5);\n    d3 += h9 * (5 * r4);\n    c += (d3 >>> 13); d3 &= 0x1fff;\n\n    d4 = c;\n    d4 += h0 * r4;\n    d4 += h1 * r3;\n    d4 += h2 * r2;\n    d4 += h3 * r1;\n    d4 += h4 * r0;\n    c = (d4 >>> 13); d4 &= 0x1fff;\n    d4 += h5 * (5 * r9);\n    d4 += h6 * (5 * r8);\n    d4 += h7 * (5 * r7);\n    d4 += h8 * (5 * r6);\n    d4 += h9 * (5 * r5);\n    c += (d4 >>> 13); d4 &= 0x1fff;\n\n    d5 = c;\n    d5 += h0 * r5;\n    d5 += h1 * r4;\n    d5 += h2 * r3;\n    d5 += h3 * r2;\n    d5 += h4 * r1;\n    c = (d5 >>> 13); d5 &= 0x1fff;\n    d5 += h5 * r0;\n    d5 += h6 * (5 * r9);\n    d5 += h7 * (5 * r8);\n    d5 += h8 * (5 * r7);\n    d5 += h9 * (5 * r6);\n    c += (d5 >>> 13); d5 &= 0x1fff;\n\n    d6 = c;\n    d6 += h0 * r6;\n    d6 += h1 * r5;\n    d6 += h2 * r4;\n    d6 += h3 * r3;\n    d6 += h4 * r2;\n    c = (d6 >>> 13); d6 &= 0x1fff;\n    d6 += h5 * r1;\n    d6 += h6 * r0;\n    d6 += h7 * (5 * r9);\n    d6 += h8 * (5 * r8);\n    d6 += h9 * (5 * r7);\n    c += (d6 >>> 13); d6 &= 0x1fff;\n\n    d7 = c;\n    d7 += h0 * r7;\n    d7 += h1 * r6;\n    d7 += h2 * r5;\n    d7 += h3 * r4;\n    d7 += h4 * r3;\n    c = (d7 >>> 13); d7 &= 0x1fff;\n    d7 += h5 * r2;\n    d7 += h6 * r1;\n    d7 += h7 * r0;\n    d7 += h8 * (5 * r9);\n    d7 += h9 * (5 * r8);\n    c += (d7 >>> 13); d7 &= 0x1fff;\n\n    d8 = c;\n    d8 += h0 * r8;\n    d8 += h1 * r7;\n    d8 += h2 * r6;\n    d8 += h3 * r5;\n    d8 += h4 * r4;\n    c = (d8 >>> 13); d8 &= 0x1fff;\n    d8 += h5 * r3;\n    d8 += h6 * r2;\n    d8 += h7 * r1;\n    d8 += h8 * r0;\n    d8 += h9 * (5 * r9);\n    c += (d8 >>> 13); d8 &= 0x1fff;\n\n    d9 = c;\n    d9 += h0 * r9;\n    d9 += h1 * r8;\n    d9 += h2 * r7;\n    d9 += h3 * r6;\n    d9 += h4 * r5;\n    c = (d9 >>> 13); d9 &= 0x1fff;\n    d9 += h5 * r4;\n    d9 += h6 * r3;\n    d9 += h7 * r2;\n    d9 += h8 * r1;\n    d9 += h9 * r0;\n    c += (d9 >>> 13); d9 &= 0x1fff;\n\n    c = (((c << 2) + c)) | 0;\n    c = (c + d0) | 0;\n    d0 = c & 0x1fff;\n    c = (c >>> 13);\n    d1 += c;\n\n    h0 = d0;\n    h1 = d1;\n    h2 = d2;\n    h3 = d3;\n    h4 = d4;\n    h5 = d5;\n    h6 = d6;\n    h7 = d7;\n    h8 = d8;\n    h9 = d9;\n\n    mpos += 16;\n    bytes -= 16;\n  }\n  this.h[0] = h0;\n  this.h[1] = h1;\n  this.h[2] = h2;\n  this.h[3] = h3;\n  this.h[4] = h4;\n  this.h[5] = h5;\n  this.h[6] = h6;\n  this.h[7] = h7;\n  this.h[8] = h8;\n  this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n  var g = new Uint16Array(10);\n  var c, mask, f, i;\n\n  if (this.leftover) {\n    i = this.leftover;\n    this.buffer[i++] = 1;\n    for (; i < 16; i++) this.buffer[i] = 0;\n    this.fin = 1;\n    this.blocks(this.buffer, 0, 16);\n  }\n\n  c = this.h[1] >>> 13;\n  this.h[1] &= 0x1fff;\n  for (i = 2; i < 10; i++) {\n    this.h[i] += c;\n    c = this.h[i] >>> 13;\n    this.h[i] &= 0x1fff;\n  }\n  this.h[0] += (c * 5);\n  c = this.h[0] >>> 13;\n  this.h[0] &= 0x1fff;\n  this.h[1] += c;\n  c = this.h[1] >>> 13;\n  this.h[1] &= 0x1fff;\n  this.h[2] += c;\n\n  g[0] = this.h[0] + 5;\n  c = g[0] >>> 13;\n  g[0] &= 0x1fff;\n  for (i = 1; i < 10; i++) {\n    g[i] = this.h[i] + c;\n    c = g[i] >>> 13;\n    g[i] &= 0x1fff;\n  }\n  g[9] -= (1 << 13);\n\n  mask = (c ^ 1) - 1;\n  for (i = 0; i < 10; i++) g[i] &= mask;\n  mask = ~mask;\n  for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n  this.h[0] = ((this.h[0]       ) | (this.h[1] << 13)                    ) & 0xffff;\n  this.h[1] = ((this.h[1] >>>  3) | (this.h[2] << 10)                    ) & 0xffff;\n  this.h[2] = ((this.h[2] >>>  6) | (this.h[3] <<  7)                    ) & 0xffff;\n  this.h[3] = ((this.h[3] >>>  9) | (this.h[4] <<  4)                    ) & 0xffff;\n  this.h[4] = ((this.h[4] >>> 12) | (this.h[5] <<  1) | (this.h[6] << 14)) & 0xffff;\n  this.h[5] = ((this.h[6] >>>  2) | (this.h[7] << 11)                    ) & 0xffff;\n  this.h[6] = ((this.h[7] >>>  5) | (this.h[8] <<  8)                    ) & 0xffff;\n  this.h[7] = ((this.h[8] >>>  8) | (this.h[9] <<  5)                    ) & 0xffff;\n\n  f = this.h[0] + this.pad[0];\n  this.h[0] = f & 0xffff;\n  for (i = 1; i < 8; i++) {\n    f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n    this.h[i] = f & 0xffff;\n  }\n\n  mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n  mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n  mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n  mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n  mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n  mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n  mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n  mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n  mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n  mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n  mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n  mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n  mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n  mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n  mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n  mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n  var i, want;\n\n  if (this.leftover) {\n    want = (16 - this.leftover);\n    if (want > bytes)\n      want = bytes;\n    for (i = 0; i < want; i++)\n      this.buffer[this.leftover + i] = m[mpos+i];\n    bytes -= want;\n    mpos += want;\n    this.leftover += want;\n    if (this.leftover < 16)\n      return;\n    this.blocks(this.buffer, 0, 16);\n    this.leftover = 0;\n  }\n\n  if (bytes >= 16) {\n    want = bytes - (bytes % 16);\n    this.blocks(m, mpos, want);\n    mpos += want;\n    bytes -= want;\n  }\n\n  if (bytes) {\n    for (i = 0; i < bytes; i++)\n      this.buffer[this.leftover + i] = m[mpos+i];\n    this.leftover += bytes;\n  }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n  var s = new poly1305(k);\n  s.update(m, mpos, n);\n  s.finish(out, outpos);\n  return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n  var x = new Uint8Array(16);\n  crypto_onetimeauth(x,0,m,mpos,n,k);\n  return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n  var i;\n  if (d < 32) return -1;\n  crypto_stream_xor(c,0,m,0,d,n,k);\n  crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n  for (i = 0; i < 16; i++) c[i] = 0;\n  return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n  var i;\n  var x = new Uint8Array(32);\n  if (d < 32) return -1;\n  crypto_stream(x,0,32,n,k);\n  if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n  crypto_stream_xor(m,0,c,0,d,n,k);\n  for (i = 0; i < 32; i++) m[i] = 0;\n  return 0;\n}\n\nfunction set25519(r, a) {\n  var i;\n  for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n  var i, v, c = 1;\n  for (i = 0; i < 16; i++) {\n    v = o[i] + c + 65535;\n    c = Math.floor(v / 65536);\n    o[i] = v - c * 65536;\n  }\n  o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n  var t, c = ~(b-1);\n  for (var i = 0; i < 16; i++) {\n    t = c & (p[i] ^ q[i]);\n    p[i] ^= t;\n    q[i] ^= t;\n  }\n}\n\nfunction pack25519(o, n) {\n  var i, j, b;\n  var m = gf(), t = gf();\n  for (i = 0; i < 16; i++) t[i] = n[i];\n  car25519(t);\n  car25519(t);\n  car25519(t);\n  for (j = 0; j < 2; j++) {\n    m[0] = t[0] - 0xffed;\n    for (i = 1; i < 15; i++) {\n      m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n      m[i-1] &= 0xffff;\n    }\n    m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n    b = (m[15]>>16) & 1;\n    m[14] &= 0xffff;\n    sel25519(t, m, 1-b);\n  }\n  for (i = 0; i < 16; i++) {\n    o[2*i] = t[i] & 0xff;\n    o[2*i+1] = t[i]>>8;\n  }\n}\n\nfunction neq25519(a, b) {\n  var c = new Uint8Array(32), d = new Uint8Array(32);\n  pack25519(c, a);\n  pack25519(d, b);\n  return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n  var d = new Uint8Array(32);\n  pack25519(d, a);\n  return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n  var i;\n  for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n  o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n  for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n  for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n  var v, c,\n     t0 = 0,  t1 = 0,  t2 = 0,  t3 = 0,  t4 = 0,  t5 = 0,  t6 = 0,  t7 = 0,\n     t8 = 0,  t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n    t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n    t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n    b0 = b[0],\n    b1 = b[1],\n    b2 = b[2],\n    b3 = b[3],\n    b4 = b[4],\n    b5 = b[5],\n    b6 = b[6],\n    b7 = b[7],\n    b8 = b[8],\n    b9 = b[9],\n    b10 = b[10],\n    b11 = b[11],\n    b12 = b[12],\n    b13 = b[13],\n    b14 = b[14],\n    b15 = b[15];\n\n  v = a[0];\n  t0 += v * b0;\n  t1 += v * b1;\n  t2 += v * b2;\n  t3 += v * b3;\n  t4 += v * b4;\n  t5 += v * b5;\n  t6 += v * b6;\n  t7 += v * b7;\n  t8 += v * b8;\n  t9 += v * b9;\n  t10 += v * b10;\n  t11 += v * b11;\n  t12 += v * b12;\n  t13 += v * b13;\n  t14 += v * b14;\n  t15 += v * b15;\n  v = a[1];\n  t1 += v * b0;\n  t2 += v * b1;\n  t3 += v * b2;\n  t4 += v * b3;\n  t5 += v * b4;\n  t6 += v * b5;\n  t7 += v * b6;\n  t8 += v * b7;\n  t9 += v * b8;\n  t10 += v * b9;\n  t11 += v * b10;\n  t12 += v * b11;\n  t13 += v * b12;\n  t14 += v * b13;\n  t15 += v * b14;\n  t16 += v * b15;\n  v = a[2];\n  t2 += v * b0;\n  t3 += v * b1;\n  t4 += v * b2;\n  t5 += v * b3;\n  t6 += v * b4;\n  t7 += v * b5;\n  t8 += v * b6;\n  t9 += v * b7;\n  t10 += v * b8;\n  t11 += v * b9;\n  t12 += v * b10;\n  t13 += v * b11;\n  t14 += v * b12;\n  t15 += v * b13;\n  t16 += v * b14;\n  t17 += v * b15;\n  v = a[3];\n  t3 += v * b0;\n  t4 += v * b1;\n  t5 += v * b2;\n  t6 += v * b3;\n  t7 += v * b4;\n  t8 += v * b5;\n  t9 += v * b6;\n  t10 += v * b7;\n  t11 += v * b8;\n  t12 += v * b9;\n  t13 += v * b10;\n  t14 += v * b11;\n  t15 += v * b12;\n  t16 += v * b13;\n  t17 += v * b14;\n  t18 += v * b15;\n  v = a[4];\n  t4 += v * b0;\n  t5 += v * b1;\n  t6 += v * b2;\n  t7 += v * b3;\n  t8 += v * b4;\n  t9 += v * b5;\n  t10 += v * b6;\n  t11 += v * b7;\n  t12 += v * b8;\n  t13 += v * b9;\n  t14 += v * b10;\n  t15 += v * b11;\n  t16 += v * b12;\n  t17 += v * b13;\n  t18 += v * b14;\n  t19 += v * b15;\n  v = a[5];\n  t5 += v * b0;\n  t6 += v * b1;\n  t7 += v * b2;\n  t8 += v * b3;\n  t9 += v * b4;\n  t10 += v * b5;\n  t11 += v * b6;\n  t12 += v * b7;\n  t13 += v * b8;\n  t14 += v * b9;\n  t15 += v * b10;\n  t16 += v * b11;\n  t17 += v * b12;\n  t18 += v * b13;\n  t19 += v * b14;\n  t20 += v * b15;\n  v = a[6];\n  t6 += v * b0;\n  t7 += v * b1;\n  t8 += v * b2;\n  t9 += v * b3;\n  t10 += v * b4;\n  t11 += v * b5;\n  t12 += v * b6;\n  t13 += v * b7;\n  t14 += v * b8;\n  t15 += v * b9;\n  t16 += v * b10;\n  t17 += v * b11;\n  t18 += v * b12;\n  t19 += v * b13;\n  t20 += v * b14;\n  t21 += v * b15;\n  v = a[7];\n  t7 += v * b0;\n  t8 += v * b1;\n  t9 += v * b2;\n  t10 += v * b3;\n  t11 += v * b4;\n  t12 += v * b5;\n  t13 += v * b6;\n  t14 += v * b7;\n  t15 += v * b8;\n  t16 += v * b9;\n  t17 += v * b10;\n  t18 += v * b11;\n  t19 += v * b12;\n  t20 += v * b13;\n  t21 += v * b14;\n  t22 += v * b15;\n  v = a[8];\n  t8 += v * b0;\n  t9 += v * b1;\n  t10 += v * b2;\n  t11 += v * b3;\n  t12 += v * b4;\n  t13 += v * b5;\n  t14 += v * b6;\n  t15 += v * b7;\n  t16 += v * b8;\n  t17 += v * b9;\n  t18 += v * b10;\n  t19 += v * b11;\n  t20 += v * b12;\n  t21 += v * b13;\n  t22 += v * b14;\n  t23 += v * b15;\n  v = a[9];\n  t9 += v * b0;\n  t10 += v * b1;\n  t11 += v * b2;\n  t12 += v * b3;\n  t13 += v * b4;\n  t14 += v * b5;\n  t15 += v * b6;\n  t16 += v * b7;\n  t17 += v * b8;\n  t18 += v * b9;\n  t19 += v * b10;\n  t20 += v * b11;\n  t21 += v * b12;\n  t22 += v * b13;\n  t23 += v * b14;\n  t24 += v * b15;\n  v = a[10];\n  t10 += v * b0;\n  t11 += v * b1;\n  t12 += v * b2;\n  t13 += v * b3;\n  t14 += v * b4;\n  t15 += v * b5;\n  t16 += v * b6;\n  t17 += v * b7;\n  t18 += v * b8;\n  t19 += v * b9;\n  t20 += v * b10;\n  t21 += v * b11;\n  t22 += v * b12;\n  t23 += v * b13;\n  t24 += v * b14;\n  t25 += v * b15;\n  v = a[11];\n  t11 += v * b0;\n  t12 += v * b1;\n  t13 += v * b2;\n  t14 += v * b3;\n  t15 += v * b4;\n  t16 += v * b5;\n  t17 += v * b6;\n  t18 += v * b7;\n  t19 += v * b8;\n  t20 += v * b9;\n  t21 += v * b10;\n  t22 += v * b11;\n  t23 += v * b12;\n  t24 += v * b13;\n  t25 += v * b14;\n  t26 += v * b15;\n  v = a[12];\n  t12 += v * b0;\n  t13 += v * b1;\n  t14 += v * b2;\n  t15 += v * b3;\n  t16 += v * b4;\n  t17 += v * b5;\n  t18 += v * b6;\n  t19 += v * b7;\n  t20 += v * b8;\n  t21 += v * b9;\n  t22 += v * b10;\n  t23 += v * b11;\n  t24 += v * b12;\n  t25 += v * b13;\n  t26 += v * b14;\n  t27 += v * b15;\n  v = a[13];\n  t13 += v * b0;\n  t14 += v * b1;\n  t15 += v * b2;\n  t16 += v * b3;\n  t17 += v * b4;\n  t18 += v * b5;\n  t19 += v * b6;\n  t20 += v * b7;\n  t21 += v * b8;\n  t22 += v * b9;\n  t23 += v * b10;\n  t24 += v * b11;\n  t25 += v * b12;\n  t26 += v * b13;\n  t27 += v * b14;\n  t28 += v * b15;\n  v = a[14];\n  t14 += v * b0;\n  t15 += v * b1;\n  t16 += v * b2;\n  t17 += v * b3;\n  t18 += v * b4;\n  t19 += v * b5;\n  t20 += v * b6;\n  t21 += v * b7;\n  t22 += v * b8;\n  t23 += v * b9;\n  t24 += v * b10;\n  t25 += v * b11;\n  t26 += v * b12;\n  t27 += v * b13;\n  t28 += v * b14;\n  t29 += v * b15;\n  v = a[15];\n  t15 += v * b0;\n  t16 += v * b1;\n  t17 += v * b2;\n  t18 += v * b3;\n  t19 += v * b4;\n  t20 += v * b5;\n  t21 += v * b6;\n  t22 += v * b7;\n  t23 += v * b8;\n  t24 += v * b9;\n  t25 += v * b10;\n  t26 += v * b11;\n  t27 += v * b12;\n  t28 += v * b13;\n  t29 += v * b14;\n  t30 += v * b15;\n\n  t0  += 38 * t16;\n  t1  += 38 * t17;\n  t2  += 38 * t18;\n  t3  += 38 * t19;\n  t4  += 38 * t20;\n  t5  += 38 * t21;\n  t6  += 38 * t22;\n  t7  += 38 * t23;\n  t8  += 38 * t24;\n  t9  += 38 * t25;\n  t10 += 38 * t26;\n  t11 += 38 * t27;\n  t12 += 38 * t28;\n  t13 += 38 * t29;\n  t14 += 38 * t30;\n  // t15 left as is\n\n  // first car\n  c = 1;\n  v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;\n  v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;\n  v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;\n  v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;\n  v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;\n  v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;\n  v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;\n  v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;\n  v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;\n  v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;\n  v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n  v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n  v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n  v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n  v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n  v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n  t0 += c-1 + 37 * (c-1);\n\n  // second car\n  c = 1;\n  v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;\n  v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;\n  v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;\n  v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;\n  v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;\n  v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;\n  v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;\n  v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;\n  v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;\n  v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;\n  v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n  v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n  v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n  v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n  v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n  v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n  t0 += c-1 + 37 * (c-1);\n\n  o[ 0] = t0;\n  o[ 1] = t1;\n  o[ 2] = t2;\n  o[ 3] = t3;\n  o[ 4] = t4;\n  o[ 5] = t5;\n  o[ 6] = t6;\n  o[ 7] = t7;\n  o[ 8] = t8;\n  o[ 9] = t9;\n  o[10] = t10;\n  o[11] = t11;\n  o[12] = t12;\n  o[13] = t13;\n  o[14] = t14;\n  o[15] = t15;\n}\n\nfunction S(o, a) {\n  M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n  var c = gf();\n  var a;\n  for (a = 0; a < 16; a++) c[a] = i[a];\n  for (a = 253; a >= 0; a--) {\n    S(c, c);\n    if(a !== 2 && a !== 4) M(c, c, i);\n  }\n  for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n  var c = gf();\n  var a;\n  for (a = 0; a < 16; a++) c[a] = i[a];\n  for (a = 250; a >= 0; a--) {\n      S(c, c);\n      if(a !== 1) M(c, c, i);\n  }\n  for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n  var z = new Uint8Array(32);\n  var x = new Float64Array(80), r, i;\n  var a = gf(), b = gf(), c = gf(),\n      d = gf(), e = gf(), f = gf();\n  for (i = 0; i < 31; i++) z[i] = n[i];\n  z[31]=(n[31]&127)|64;\n  z[0]&=248;\n  unpack25519(x,p);\n  for (i = 0; i < 16; i++) {\n    b[i]=x[i];\n    d[i]=a[i]=c[i]=0;\n  }\n  a[0]=d[0]=1;\n  for (i=254; i>=0; --i) {\n    r=(z[i>>>3]>>>(i&7))&1;\n    sel25519(a,b,r);\n    sel25519(c,d,r);\n    A(e,a,c);\n    Z(a,a,c);\n    A(c,b,d);\n    Z(b,b,d);\n    S(d,e);\n    S(f,a);\n    M(a,c,a);\n    M(c,b,e);\n    A(e,a,c);\n    Z(a,a,c);\n    S(b,a);\n    Z(c,d,f);\n    M(a,c,_121665);\n    A(a,a,d);\n    M(c,c,a);\n    M(a,d,f);\n    M(d,b,x);\n    S(b,e);\n    sel25519(a,b,r);\n    sel25519(c,d,r);\n  }\n  for (i = 0; i < 16; i++) {\n    x[i+16]=a[i];\n    x[i+32]=c[i];\n    x[i+48]=b[i];\n    x[i+64]=d[i];\n  }\n  var x32 = x.subarray(32);\n  var x16 = x.subarray(16);\n  inv25519(x32,x32);\n  M(x16,x16,x32);\n  pack25519(q,x16);\n  return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n  return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n  randombytes(x, 32);\n  return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n  var s = new Uint8Array(32);\n  crypto_scalarmult(s, x, y);\n  return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n  var k = new Uint8Array(32);\n  crypto_box_beforenm(k, y, x);\n  return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n  var k = new Uint8Array(32);\n  crypto_box_beforenm(k, y, x);\n  return crypto_box_open_afternm(m, c, d, n, k);\n}\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\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n  var wh = new Int32Array(16), wl = new Int32Array(16),\n      bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n      bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n      th, tl, i, j, h, l, a, b, c, d;\n\n  var ah0 = hh[0],\n      ah1 = hh[1],\n      ah2 = hh[2],\n      ah3 = hh[3],\n      ah4 = hh[4],\n      ah5 = hh[5],\n      ah6 = hh[6],\n      ah7 = hh[7],\n\n      al0 = hl[0],\n      al1 = hl[1],\n      al2 = hl[2],\n      al3 = hl[3],\n      al4 = hl[4],\n      al5 = hl[5],\n      al6 = hl[6],\n      al7 = hl[7];\n\n  var pos = 0;\n  while (n >= 128) {\n    for (i = 0; i < 16; i++) {\n      j = 8 * i + pos;\n      wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n      wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n    }\n    for (i = 0; i < 80; i++) {\n      bh0 = ah0;\n      bh1 = ah1;\n      bh2 = ah2;\n      bh3 = ah3;\n      bh4 = ah4;\n      bh5 = ah5;\n      bh6 = ah6;\n      bh7 = ah7;\n\n      bl0 = al0;\n      bl1 = al1;\n      bl2 = al2;\n      bl3 = al3;\n      bl4 = al4;\n      bl5 = al5;\n      bl6 = al6;\n      bl7 = al7;\n\n      // add\n      h = ah7;\n      l = al7;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      // Sigma1\n      h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n      l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // Ch\n      h = (ah4 & ah5) ^ (~ah4 & ah6);\n      l = (al4 & al5) ^ (~al4 & al6);\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // K\n      h = K[i*2];\n      l = K[i*2+1];\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // w\n      h = wh[i%16];\n      l = wl[i%16];\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      th = c & 0xffff | d << 16;\n      tl = a & 0xffff | b << 16;\n\n      // add\n      h = th;\n      l = tl;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      // Sigma0\n      h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n      l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // Maj\n      h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n      l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      bh7 = (c & 0xffff) | (d << 16);\n      bl7 = (a & 0xffff) | (b << 16);\n\n      // add\n      h = bh3;\n      l = bl3;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      h = th;\n      l = tl;\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      bh3 = (c & 0xffff) | (d << 16);\n      bl3 = (a & 0xffff) | (b << 16);\n\n      ah1 = bh0;\n      ah2 = bh1;\n      ah3 = bh2;\n      ah4 = bh3;\n      ah5 = bh4;\n      ah6 = bh5;\n      ah7 = bh6;\n      ah0 = bh7;\n\n      al1 = bl0;\n      al2 = bl1;\n      al3 = bl2;\n      al4 = bl3;\n      al5 = bl4;\n      al6 = bl5;\n      al7 = bl6;\n      al0 = bl7;\n\n      if (i%16 === 15) {\n        for (j = 0; j < 16; j++) {\n          // add\n          h = wh[j];\n          l = wl[j];\n\n          a = l & 0xffff; b = l >>> 16;\n          c = h & 0xffff; d = h >>> 16;\n\n          h = wh[(j+9)%16];\n          l = wl[(j+9)%16];\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          // sigma0\n          th = wh[(j+1)%16];\n          tl = wl[(j+1)%16];\n          h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n          l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          // sigma1\n          th = wh[(j+14)%16];\n          tl = wl[(j+14)%16];\n          h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n          l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          b += a >>> 16;\n          c += b >>> 16;\n          d += c >>> 16;\n\n          wh[j] = (c & 0xffff) | (d << 16);\n          wl[j] = (a & 0xffff) | (b << 16);\n        }\n      }\n    }\n\n    // add\n    h = ah0;\n    l = al0;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[0];\n    l = hl[0];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[0] = ah0 = (c & 0xffff) | (d << 16);\n    hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n    h = ah1;\n    l = al1;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[1];\n    l = hl[1];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[1] = ah1 = (c & 0xffff) | (d << 16);\n    hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n    h = ah2;\n    l = al2;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[2];\n    l = hl[2];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[2] = ah2 = (c & 0xffff) | (d << 16);\n    hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n    h = ah3;\n    l = al3;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[3];\n    l = hl[3];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[3] = ah3 = (c & 0xffff) | (d << 16);\n    hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n    h = ah4;\n    l = al4;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[4];\n    l = hl[4];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[4] = ah4 = (c & 0xffff) | (d << 16);\n    hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n    h = ah5;\n    l = al5;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[5];\n    l = hl[5];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[5] = ah5 = (c & 0xffff) | (d << 16);\n    hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n    h = ah6;\n    l = al6;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[6];\n    l = hl[6];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[6] = ah6 = (c & 0xffff) | (d << 16);\n    hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n    h = ah7;\n    l = al7;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[7];\n    l = hl[7];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[7] = ah7 = (c & 0xffff) | (d << 16);\n    hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n    pos += 128;\n    n -= 128;\n  }\n\n  return n;\n}\n\nfunction crypto_hash(out, m, n) {\n  var hh = new Int32Array(8),\n      hl = new Int32Array(8),\n      x = new Uint8Array(256),\n      i, b = n;\n\n  hh[0] = 0x6a09e667;\n  hh[1] = 0xbb67ae85;\n  hh[2] = 0x3c6ef372;\n  hh[3] = 0xa54ff53a;\n  hh[4] = 0x510e527f;\n  hh[5] = 0x9b05688c;\n  hh[6] = 0x1f83d9ab;\n  hh[7] = 0x5be0cd19;\n\n  hl[0] = 0xf3bcc908;\n  hl[1] = 0x84caa73b;\n  hl[2] = 0xfe94f82b;\n  hl[3] = 0x5f1d36f1;\n  hl[4] = 0xade682d1;\n  hl[5] = 0x2b3e6c1f;\n  hl[6] = 0xfb41bd6b;\n  hl[7] = 0x137e2179;\n\n  crypto_hashblocks_hl(hh, hl, m, n);\n  n %= 128;\n\n  for (i = 0; i < n; i++) x[i] = m[b-n+i];\n  x[n] = 128;\n\n  n = 256-128*(n<112?1:0);\n  x[n-9] = 0;\n  ts64(x, n-8,  (b / 0x20000000) | 0, b << 3);\n  crypto_hashblocks_hl(hh, hl, x, n);\n\n  for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n  return 0;\n}\n\nfunction add(p, q) {\n  var a = gf(), b = gf(), c = gf(),\n      d = gf(), e = gf(), f = gf(),\n      g = gf(), h = gf(), t = gf();\n\n  Z(a, p[1], p[0]);\n  Z(t, q[1], q[0]);\n  M(a, a, t);\n  A(b, p[0], p[1]);\n  A(t, q[0], q[1]);\n  M(b, b, t);\n  M(c, p[3], q[3]);\n  M(c, c, D2);\n  M(d, p[2], q[2]);\n  A(d, d, d);\n  Z(e, b, a);\n  Z(f, d, c);\n  A(g, d, c);\n  A(h, b, a);\n\n  M(p[0], e, f);\n  M(p[1], h, g);\n  M(p[2], g, f);\n  M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n  var i;\n  for (i = 0; i < 4; i++) {\n    sel25519(p[i], q[i], b);\n  }\n}\n\nfunction pack(r, p) {\n  var tx = gf(), ty = gf(), zi = gf();\n  inv25519(zi, p[2]);\n  M(tx, p[0], zi);\n  M(ty, p[1], zi);\n  pack25519(r, ty);\n  r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n  var b, i;\n  set25519(p[0], gf0);\n  set25519(p[1], gf1);\n  set25519(p[2], gf1);\n  set25519(p[3], gf0);\n  for (i = 255; i >= 0; --i) {\n    b = (s[(i/8)|0] >> (i&7)) & 1;\n    cswap(p, q, b);\n    add(q, p);\n    add(p, p);\n    cswap(p, q, b);\n  }\n}\n\nfunction scalarbase(p, s) {\n  var q = [gf(), gf(), gf(), gf()];\n  set25519(q[0], X);\n  set25519(q[1], Y);\n  set25519(q[2], gf1);\n  M(q[3], X, Y);\n  scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n  var d = new Uint8Array(64);\n  var p = [gf(), gf(), gf(), gf()];\n  var i;\n\n  if (!seeded) randombytes(sk, 32);\n  crypto_hash(d, sk, 32);\n  d[0] &= 248;\n  d[31] &= 127;\n  d[31] |= 64;\n\n  scalarbase(p, d);\n  pack(pk, p);\n\n  for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n  return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n  var carry, i, j, k;\n  for (i = 63; i >= 32; --i) {\n    carry = 0;\n    for (j = i - 32, k = i - 12; j < k; ++j) {\n      x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n      carry = Math.floor((x[j] + 128) / 256);\n      x[j] -= carry * 256;\n    }\n    x[j] += carry;\n    x[i] = 0;\n  }\n  carry = 0;\n  for (j = 0; j < 32; j++) {\n    x[j] += carry - (x[31] >> 4) * L[j];\n    carry = x[j] >> 8;\n    x[j] &= 255;\n  }\n  for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n  for (i = 0; i < 32; i++) {\n    x[i+1] += x[i] >> 8;\n    r[i] = x[i] & 255;\n  }\n}\n\nfunction reduce(r) {\n  var x = new Float64Array(64), i;\n  for (i = 0; i < 64; i++) x[i] = r[i];\n  for (i = 0; i < 64; i++) r[i] = 0;\n  modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n  var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n  var i, j, x = new Float64Array(64);\n  var p = [gf(), gf(), gf(), gf()];\n\n  crypto_hash(d, sk, 32);\n  d[0] &= 248;\n  d[31] &= 127;\n  d[31] |= 64;\n\n  var smlen = n + 64;\n  for (i = 0; i < n; i++) sm[64 + i] = m[i];\n  for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n  crypto_hash(r, sm.subarray(32), n+32);\n  reduce(r);\n  scalarbase(p, r);\n  pack(sm, p);\n\n  for (i = 32; i < 64; i++) sm[i] = sk[i];\n  crypto_hash(h, sm, n + 64);\n  reduce(h);\n\n  for (i = 0; i < 64; i++) x[i] = 0;\n  for (i = 0; i < 32; i++) x[i] = r[i];\n  for (i = 0; i < 32; i++) {\n    for (j = 0; j < 32; j++) {\n      x[i+j] += h[i] * d[j];\n    }\n  }\n\n  modL(sm.subarray(32), x);\n  return smlen;\n}\n\nfunction unpackneg(r, p) {\n  var t = gf(), chk = gf(), num = gf(),\n      den = gf(), den2 = gf(), den4 = gf(),\n      den6 = gf();\n\n  set25519(r[2], gf1);\n  unpack25519(r[1], p);\n  S(num, r[1]);\n  M(den, num, D);\n  Z(num, num, r[2]);\n  A(den, r[2], den);\n\n  S(den2, den);\n  S(den4, den2);\n  M(den6, den4, den2);\n  M(t, den6, num);\n  M(t, t, den);\n\n  pow2523(t, t);\n  M(t, t, num);\n  M(t, t, den);\n  M(t, t, den);\n  M(r[0], t, den);\n\n  S(chk, r[0]);\n  M(chk, chk, den);\n  if (neq25519(chk, num)) M(r[0], r[0], I);\n\n  S(chk, r[0]);\n  M(chk, chk, den);\n  if (neq25519(chk, num)) return -1;\n\n  if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n  M(r[3], r[0], r[1]);\n  return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n  var i;\n  var t = new Uint8Array(32), h = new Uint8Array(64);\n  var p = [gf(), gf(), gf(), gf()],\n      q = [gf(), gf(), gf(), gf()];\n\n  if (n < 64) return -1;\n\n  if (unpackneg(q, pk)) return -1;\n\n  for (i = 0; i < n; i++) m[i] = sm[i];\n  for (i = 0; i < 32; i++) m[i+32] = pk[i];\n  crypto_hash(h, m, n);\n  reduce(h);\n  scalarmult(p, q, h);\n\n  scalarbase(q, sm.subarray(32));\n  add(p, q);\n  pack(t, p);\n\n  n -= 64;\n  if (crypto_verify_32(sm, 0, t, 0)) {\n    for (i = 0; i < n; i++) m[i] = 0;\n    return -1;\n  }\n\n  for (i = 0; i < n; i++) m[i] = sm[i + 64];\n  return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n    crypto_secretbox_NONCEBYTES = 24,\n    crypto_secretbox_ZEROBYTES = 32,\n    crypto_secretbox_BOXZEROBYTES = 16,\n    crypto_scalarmult_BYTES = 32,\n    crypto_scalarmult_SCALARBYTES = 32,\n    crypto_box_PUBLICKEYBYTES = 32,\n    crypto_box_SECRETKEYBYTES = 32,\n    crypto_box_BEFORENMBYTES = 32,\n    crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n    crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n    crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n    crypto_sign_BYTES = 64,\n    crypto_sign_PUBLICKEYBYTES = 32,\n    crypto_sign_SECRETKEYBYTES = 64,\n    crypto_sign_SEEDBYTES = 32,\n    crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n  crypto_core_hsalsa20: crypto_core_hsalsa20,\n  crypto_stream_xor: crypto_stream_xor,\n  crypto_stream: crypto_stream,\n  crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n  crypto_stream_salsa20: crypto_stream_salsa20,\n  crypto_onetimeauth: crypto_onetimeauth,\n  crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n  crypto_verify_16: crypto_verify_16,\n  crypto_verify_32: crypto_verify_32,\n  crypto_secretbox: crypto_secretbox,\n  crypto_secretbox_open: crypto_secretbox_open,\n  crypto_scalarmult: crypto_scalarmult,\n  crypto_scalarmult_base: crypto_scalarmult_base,\n  crypto_box_beforenm: crypto_box_beforenm,\n  crypto_box_afternm: crypto_box_afternm,\n  crypto_box: crypto_box,\n  crypto_box_open: crypto_box_open,\n  crypto_box_keypair: crypto_box_keypair,\n  crypto_hash: crypto_hash,\n  crypto_sign: crypto_sign,\n  crypto_sign_keypair: crypto_sign_keypair,\n  crypto_sign_open: crypto_sign_open,\n\n  crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n  crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n  crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n  crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n  crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n  crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n  crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n  crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n  crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n  crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n  crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n  crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n  crypto_sign_BYTES: crypto_sign_BYTES,\n  crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n  crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n  crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n  crypto_hash_BYTES: crypto_hash_BYTES,\n\n  gf: gf,\n  D: D,\n  L: L,\n  pack25519: pack25519,\n  unpack25519: unpack25519,\n  M: M,\n  A: A,\n  S: S,\n  Z: Z,\n  pow2523: pow2523,\n  add: add,\n  set25519: set25519,\n  modL: modL,\n  scalarmult: scalarmult,\n  scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n  if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n  if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n  if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n  if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n  for (var i = 0; i < arguments.length; i++) {\n    if (!(arguments[i] instanceof Uint8Array))\n      throw new TypeError('unexpected type, use Uint8Array');\n  }\n}\n\nfunction cleanup(arr) {\n  for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n  var b = new Uint8Array(n);\n  randombytes(b, n);\n  return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n  checkArrayTypes(msg, nonce, key);\n  checkLengths(key, nonce);\n  var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n  var c = new Uint8Array(m.length);\n  for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n  crypto_secretbox(c, m, m.length, nonce, key);\n  return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n  checkArrayTypes(box, nonce, key);\n  checkLengths(key, nonce);\n  var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n  var m = new Uint8Array(c.length);\n  for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n  if (c.length < 32) return null;\n  if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n  return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n  checkArrayTypes(n, p);\n  if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n  if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n  var q = new Uint8Array(crypto_scalarmult_BYTES);\n  crypto_scalarmult(q, n, p);\n  return q;\n};\n\nnacl.scalarMult.base = function(n) {\n  checkArrayTypes(n);\n  if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n  var q = new Uint8Array(crypto_scalarmult_BYTES);\n  crypto_scalarmult_base(q, n);\n  return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n  var k = nacl.box.before(publicKey, secretKey);\n  return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n  checkArrayTypes(publicKey, secretKey);\n  checkBoxLengths(publicKey, secretKey);\n  var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n  crypto_box_beforenm(k, publicKey, secretKey);\n  return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n  var k = nacl.box.before(publicKey, secretKey);\n  return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n  var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n  crypto_box_keypair(pk, sk);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n  checkArrayTypes(secretKey);\n  if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n  crypto_scalarmult_base(pk, secretKey);\n  return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n  checkArrayTypes(msg, secretKey);\n  if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n  crypto_sign(signedMsg, msg, msg.length, secretKey);\n  return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n  checkArrayTypes(signedMsg, publicKey);\n  if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n    throw new Error('bad public key size');\n  var tmp = new Uint8Array(signedMsg.length);\n  var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n  if (mlen < 0) return null;\n  var m = new Uint8Array(mlen);\n  for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n  return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n  var signedMsg = nacl.sign(msg, secretKey);\n  var sig = new Uint8Array(crypto_sign_BYTES);\n  for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n  return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n  checkArrayTypes(msg, sig, publicKey);\n  if (sig.length !== crypto_sign_BYTES)\n    throw new Error('bad signature size');\n  if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n    throw new Error('bad public key size');\n  var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n  var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n  var i;\n  for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n  for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n  return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n  crypto_sign_keypair(pk, sk);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n  checkArrayTypes(secretKey);\n  if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n  return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n  checkArrayTypes(seed);\n  if (seed.length !== crypto_sign_SEEDBYTES)\n    throw new Error('bad seed size');\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n  for (var i = 0; i < 32; i++) sk[i] = seed[i];\n  crypto_sign_keypair(pk, sk, true);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n  checkArrayTypes(msg);\n  var h = new Uint8Array(crypto_hash_BYTES);\n  crypto_hash(h, msg, msg.length);\n  return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n  checkArrayTypes(x, y);\n  // Zero length arguments are considered not equal.\n  if (x.length === 0 || y.length === 0) return false;\n  if (x.length !== y.length) return false;\n  return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n  randombytes = fn;\n};\n\n(function() {\n  // Initialize PRNG if environment provides CSPRNG.\n  // If not, methods calling randombytes will throw.\n  var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n  if (crypto && crypto.getRandomValues) {\n    // Browsers.\n    var QUOTA = 65536;\n    nacl.setPRNG(function(x, n) {\n      var i, v = new Uint8Array(n);\n      for (i = 0; i < n; i += QUOTA) {\n        crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n      }\n      for (i = 0; i < n; i++) x[i] = v[i];\n      cleanup(v);\n    });\n  } else if (typeof require !== 'undefined') {\n    // Node.js.\n    crypto = require('crypto');\n    if (crypto && crypto.randomBytes) {\n      nacl.setPRNG(function(x, n) {\n        var i, v = crypto.randomBytes(n);\n        for (i = 0; i < n; i++) x[i] = v[i];\n        cleanup(v);\n      });\n    }\n  }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n  'use strict';\n  if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n  else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n  'use strict';\n  if (!nacl) throw new Error('tweetnacl not loaded');\n\n  // -- Operations copied from TweetNaCl.js. --\n\n  var gf = function(init) {\n    var i, r = new Float64Array(16);\n    if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n    return r;\n  };\n\n  var gf0 = gf(),\n      gf1 = gf([1]),\n      D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n      I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n  function car25519(o) {\n    var c;\n    var i;\n    for (i = 0; i < 16; i++) {\n      o[i] += 65536;\n      c = Math.floor(o[i] / 65536);\n      o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n      o[i] -= (c * 65536);\n    }\n  }\n\n  function sel25519(p, q, b) {\n    var t, c = ~(b-1);\n    for (var i = 0; i < 16; i++) {\n      t = c & (p[i] ^ q[i]);\n      p[i] ^= t;\n      q[i] ^= t;\n    }\n  }\n\n  function unpack25519(o, n) {\n    var i;\n    for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n    o[15] &= 0x7fff;\n  }\n\n  // addition\n  function A(o, a, b) {\n    var i;\n    for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n  }\n\n  // subtraction\n  function Z(o, a, b) {\n    var i;\n    for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n  }\n\n  // multiplication\n  function M(o, a, b) {\n    var i, j, t = new Float64Array(31);\n    for (i = 0; i < 31; i++) t[i] = 0;\n    for (i = 0; i < 16; i++) {\n      for (j = 0; j < 16; j++) {\n        t[i+j] += a[i] * b[j];\n      }\n    }\n    for (i = 0; i < 15; i++) {\n      t[i] += 38 * t[i+16];\n    }\n    for (i = 0; i < 16; i++) o[i] = t[i];\n    car25519(o);\n    car25519(o);\n  }\n\n  // squaring\n  function S(o, a) {\n    M(o, a, a);\n  }\n\n  // inversion\n  function inv25519(o, i) {\n    var c = gf();\n    var a;\n    for (a = 0; a < 16; a++) c[a] = i[a];\n    for (a = 253; a >= 0; a--) {\n      S(c, c);\n      if(a !== 2 && a !== 4) M(c, c, i);\n    }\n    for (a = 0; a < 16; a++) o[a] = c[a];\n  }\n\n  function pack25519(o, n) {\n    var i, j, b;\n    var m = gf(), t = gf();\n    for (i = 0; i < 16; i++) t[i] = n[i];\n    car25519(t);\n    car25519(t);\n    car25519(t);\n    for (j = 0; j < 2; j++) {\n      m[0] = t[0] - 0xffed;\n      for (i = 1; i < 15; i++) {\n        m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n        m[i-1] &= 0xffff;\n      }\n      m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n      b = (m[15]>>16) & 1;\n      m[14] &= 0xffff;\n      sel25519(t, m, 1-b);\n    }\n    for (i = 0; i < 16; i++) {\n      o[2*i] = t[i] & 0xff;\n      o[2*i+1] = t[i] >> 8;\n    }\n  }\n\n  function par25519(a) {\n    var d = new Uint8Array(32);\n    pack25519(d, a);\n    return d[0] & 1;\n  }\n\n  function vn(x, xi, y, yi, n) {\n    var i, d = 0;\n    for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n    return (1 & ((d - 1) >>> 8)) - 1;\n  }\n\n  function crypto_verify_32(x, xi, y, yi) {\n    return vn(x, xi, y, yi, 32);\n  }\n\n  function neq25519(a, b) {\n    var c = new Uint8Array(32), d = new Uint8Array(32);\n    pack25519(c, a);\n    pack25519(d, b);\n    return crypto_verify_32(c, 0, d, 0);\n  }\n\n  function pow2523(o, i) {\n    var c = gf();\n    var a;\n    for (a = 0; a < 16; a++) c[a] = i[a];\n    for (a = 250; a >= 0; a--) {\n      S(c, c);\n      if (a !== 1) M(c, c, i);\n    }\n    for (a = 0; a < 16; a++) o[a] = c[a];\n  }\n\n  function set25519(r, a) {\n    var i;\n    for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n  }\n\n  function unpackneg(r, p) {\n    var t = gf(), chk = gf(), num = gf(),\n      den = gf(), den2 = gf(), den4 = gf(),\n      den6 = gf();\n\n    set25519(r[2], gf1);\n    unpack25519(r[1], p);\n    S(num, r[1]);\n    M(den, num, D);\n    Z(num, num, r[2]);\n    A(den, r[2], den);\n\n    S(den2, den);\n    S(den4, den2);\n    M(den6, den4, den2);\n    M(t, den6, num);\n    M(t, t, den);\n\n    pow2523(t, t);\n    M(t, t, num);\n    M(t, t, den);\n    M(t, t, den);\n    M(r[0], t, den);\n\n    S(chk, r[0]);\n    M(chk, chk, den);\n    if (neq25519(chk, num)) M(r[0], r[0], I);\n\n    S(chk, r[0]);\n    M(chk, chk, den);\n    if (neq25519(chk, num)) return -1;\n\n    if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n    M(r[3], r[0], r[1]);\n    return 0;\n  }\n\n  // ----\n\n  // Converts Ed25519 public key to Curve25519 public key.\n  // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n  function convertPublicKey(pk) {\n    var z = new Uint8Array(32),\n      q = [gf(), gf(), gf(), gf()],\n      a = gf(), b = gf();\n\n    if (unpackneg(q, pk)) return null; // reject invalid key\n\n    var y = q[1];\n\n    A(a, gf1, y);\n    Z(b, gf1, y);\n    inv25519(b, b);\n    M(a, a, b);\n\n    pack25519(z, a);\n    return z;\n  }\n\n  // Converts Ed25519 secret key to Curve25519 secret key.\n  function convertSecretKey(sk) {\n    var d = new Uint8Array(64), o = new Uint8Array(32), i;\n    nacl.lowlevel.crypto_hash(d, sk, 32);\n    d[0] &= 248;\n    d[31] &= 127;\n    d[31] |= 64;\n    for (i = 0; i < 32; i++) o[i] = d[i];\n    for (i = 0; i < 64; i++) d[i] = 0;\n    return o;\n  }\n\n  function convertKeyPair(edKeyPair) {\n    var publicKey = convertPublicKey(edKeyPair.publicKey);\n    if (!publicKey) return null;\n    return {\n      publicKey: publicKey,\n      secretKey: convertSecretKey(edKeyPair.secretKey)\n    };\n  }\n\n  return {\n    convertPublicKey: convertPublicKey,\n    convertSecretKey: convertSecretKey,\n    convertKeyPair: convertKeyPair,\n  };\n\n}));\n", "'use strict';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n    for (const key in props) {\n        Object.defineProperty(obj, key, {\n            value: props[key],\n            enumerable: true,\n            configurable: true,\n        });\n    }\n\n    return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n    if (!err || typeof err === 'string') {\n        throw new TypeError('Please pass an Error to err-code');\n    }\n\n    if (!props) {\n        props = {};\n    }\n\n    if (typeof code === 'object') {\n        props = code;\n        code = '';\n    }\n\n    if (code) {\n        props.code = code;\n    }\n\n    try {\n        return assign(err, props);\n    } catch (_) {\n        props.message = err.message;\n        props.stack = err.stack;\n\n        const ErrClass = function () {};\n\n        ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n        // @ts-ignore\n        const output = assign(new ErrClass(), props);\n\n        return output;\n    }\n}\n\nmodule.exports = createError;\n", "\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params  = new Array(arguments.length - 1),\r\n        offset  = 0,\r\n        index   = 2,\r\n        pending = true;\r\n    while (index < arguments.length)\r\n        params[offset++] = arguments[index++];\r\n    return new Promise(function executor(resolve, reject) {\r\n        params[offset] = function callback(err/*, varargs */) {\r\n            if (pending) {\r\n                pending = false;\r\n                if (err)\r\n                    reject(err);\r\n                else {\r\n                    var params = new Array(arguments.length - 1),\r\n                        offset = 0;\r\n                    while (offset < params.length)\r\n                        params[offset++] = arguments[offset];\r\n                    resolve.apply(null, params);\r\n                }\r\n            }\r\n        };\r\n        try {\r\n            fn.apply(ctx || null, params);\r\n        } catch (err) {\r\n            if (pending) {\r\n                pending = false;\r\n                reject(err);\r\n            }\r\n        }\r\n    });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n    var p = string.length;\r\n    if (!p)\r\n        return 0;\r\n    var n = 0;\r\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n        ++n;\r\n    return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n    var parts = null,\r\n        chunk = [];\r\n    var i = 0, // output index\r\n        j = 0, // goto index\r\n        t;     // temporary\r\n    while (start < end) {\r\n        var b = buffer[start++];\r\n        switch (j) {\r\n            case 0:\r\n                chunk[i++] = b64[b >> 2];\r\n                t = (b & 3) << 4;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                chunk[i++] = b64[t | b >> 4];\r\n                t = (b & 15) << 2;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                chunk[i++] = b64[t | b >> 6];\r\n                chunk[i++] = b64[b & 63];\r\n                j = 0;\r\n                break;\r\n        }\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (j) {\r\n        chunk[i++] = b64[t];\r\n        chunk[i++] = 61;\r\n        if (j === 1)\r\n            chunk[i++] = 61;\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n    var start = offset;\r\n    var j = 0, // goto index\r\n        t;     // temporary\r\n    for (var i = 0; i < string.length;) {\r\n        var c = string.charCodeAt(i++);\r\n        if (c === 61 && j > 1)\r\n            break;\r\n        if ((c = s64[c]) === undefined)\r\n            throw Error(invalidEncoding);\r\n        switch (j) {\r\n            case 0:\r\n                t = c;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n                t = c;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n                t = c;\r\n                j = 3;\r\n                break;\r\n            case 3:\r\n                buffer[offset++] = (t & 3) << 6 | c;\r\n                j = 0;\r\n                break;\r\n        }\r\n    }\r\n    if (j === 1)\r\n        throw Error(invalidEncoding);\r\n    return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n        fn  : fn,\r\n        ctx : ctx || this\r\n    });\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n    if (evt === undefined)\r\n        this._listeners = {};\r\n    else {\r\n        if (fn === undefined)\r\n            this._listeners[evt] = [];\r\n        else {\r\n            var listeners = this._listeners[evt];\r\n            for (var i = 0; i < listeners.length;)\r\n                if (listeners[i].fn === fn)\r\n                    listeners.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n    var listeners = this._listeners[evt];\r\n    if (listeners) {\r\n        var args = [],\r\n            i = 1;\r\n        for (; i < arguments.length;)\r\n            args.push(arguments[i++]);\r\n        for (i = 0; i < listeners.length;)\r\n            listeners[i].fn.apply(listeners[i++].ctx, args);\r\n    }\r\n    return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n    // float: typed array\r\n    if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n        var f32 = new Float32Array([ -0 ]),\r\n            f8b = new Uint8Array(f32.buffer),\r\n            le  = f8b[3] === 128;\r\n\r\n        function writeFloat_f32_cpy(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n        }\r\n\r\n        function writeFloat_f32_rev(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[3];\r\n            buf[pos + 1] = f8b[2];\r\n            buf[pos + 2] = f8b[1];\r\n            buf[pos + 3] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n        function readFloat_f32_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        function readFloat_f32_rev(buf, pos) {\r\n            f8b[3] = buf[pos    ];\r\n            f8b[2] = buf[pos + 1];\r\n            f8b[1] = buf[pos + 2];\r\n            f8b[0] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n    // float: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0)\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n            else if (isNaN(val))\r\n                writeUint(2143289344, buf, pos);\r\n            else if (val > 3.4028234663852886e+38) // +-Infinity\r\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n            else if (val < 1.1754943508222875e-38) // denormal\r\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n            else {\r\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n            }\r\n        }\r\n\r\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n        function readFloat_ieee754(readUint, buf, pos) {\r\n            var uint = readUint(buf, pos),\r\n                sign = (uint >> 31) * 2 + 1,\r\n                exponent = uint >>> 23 & 255,\r\n                mantissa = uint & 8388607;\r\n            return exponent === 255\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 1.401298464324817e-45 * mantissa\r\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n        }\r\n\r\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n    })();\r\n\r\n    // double: typed array\r\n    if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n        var f64 = new Float64Array([-0]),\r\n            f8b = new Uint8Array(f64.buffer),\r\n            le  = f8b[7] === 128;\r\n\r\n        function writeDouble_f64_cpy(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n            buf[pos + 4] = f8b[4];\r\n            buf[pos + 5] = f8b[5];\r\n            buf[pos + 6] = f8b[6];\r\n            buf[pos + 7] = f8b[7];\r\n        }\r\n\r\n        function writeDouble_f64_rev(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[7];\r\n            buf[pos + 1] = f8b[6];\r\n            buf[pos + 2] = f8b[5];\r\n            buf[pos + 3] = f8b[4];\r\n            buf[pos + 4] = f8b[3];\r\n            buf[pos + 5] = f8b[2];\r\n            buf[pos + 6] = f8b[1];\r\n            buf[pos + 7] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n        function readDouble_f64_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            f8b[4] = buf[pos + 4];\r\n            f8b[5] = buf[pos + 5];\r\n            f8b[6] = buf[pos + 6];\r\n            f8b[7] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        function readDouble_f64_rev(buf, pos) {\r\n            f8b[7] = buf[pos    ];\r\n            f8b[6] = buf[pos + 1];\r\n            f8b[5] = buf[pos + 2];\r\n            f8b[4] = buf[pos + 3];\r\n            f8b[3] = buf[pos + 4];\r\n            f8b[2] = buf[pos + 5];\r\n            f8b[1] = buf[pos + 6];\r\n            f8b[0] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n    // double: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n            } else if (isNaN(val)) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(2146959360, buf, pos + off1);\r\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n            } else {\r\n                var mantissa;\r\n                if (val < 2.2250738585072014e-308) { // denormal\r\n                    mantissa = val / 5e-324;\r\n                    writeUint(mantissa >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n                } else {\r\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n                    if (exponent === 1024)\r\n                        exponent = 1023;\r\n                    mantissa = val * Math.pow(2, -exponent);\r\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n                }\r\n            }\r\n        }\r\n\r\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n            var lo = readUint(buf, pos + off0),\r\n                hi = readUint(buf, pos + off1);\r\n            var sign = (hi >> 31) * 2 + 1,\r\n                exponent = hi >>> 20 & 2047,\r\n                mantissa = 4294967296 * (hi & 1048575) + lo;\r\n            return exponent === 2047\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 5e-324 * mantissa\r\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n        }\r\n\r\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n    })();\r\n\r\n    return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n    buf[pos    ] =  val        & 255;\r\n    buf[pos + 1] =  val >>> 8  & 255;\r\n    buf[pos + 2] =  val >>> 16 & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n    buf[pos    ] =  val >>> 24;\r\n    buf[pos + 1] =  val >>> 16 & 255;\r\n    buf[pos + 2] =  val >>> 8  & 255;\r\n    buf[pos + 3] =  val        & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n    return (buf[pos    ]\r\n          | buf[pos + 1] << 8\r\n          | buf[pos + 2] << 16\r\n          | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n    return (buf[pos    ] << 24\r\n          | buf[pos + 1] << 16\r\n          | buf[pos + 2] << 8\r\n          | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n    try {\r\n        var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n        if (mod && (mod.length || Object.keys(mod).length))\r\n            return mod;\r\n    } catch (e) {} // eslint-disable-line no-empty\r\n    return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n    var SIZE   = size || 8192;\r\n    var MAX    = SIZE >>> 1;\r\n    var slab   = null;\r\n    var offset = SIZE;\r\n    return function pool_alloc(size) {\r\n        if (size < 1 || size > MAX)\r\n            return alloc(size);\r\n        if (offset + size > SIZE) {\r\n            slab = alloc(SIZE);\r\n            offset = 0;\r\n        }\r\n        var buf = slice.call(slab, offset, offset += size);\r\n        if (offset & 7) // align to 32 bit\r\n            offset = (offset | 7) + 1;\r\n        return buf;\r\n    };\r\n}\r\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n    // note that the casts below are theoretically unnecessary as of today, but older statically\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n    /**\n     * Low bits.\n     * @type {number}\n     */\n    this.lo = lo >>> 0;\n\n    /**\n     * High bits.\n     * @type {number}\n     */\n    this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n    if (value === 0)\n        return zero;\n    var sign = value < 0;\n    if (sign)\n        value = -value;\n    var lo = value >>> 0,\n        hi = (value - lo) / 4294967296 >>> 0;\n    if (sign) {\n        hi = ~hi >>> 0;\n        lo = ~lo >>> 0;\n        if (++lo > 4294967295) {\n            lo = 0;\n            if (++hi > 4294967295)\n                hi = 0;\n        }\n    }\n    return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n    if (typeof value === \"number\")\n        return LongBits.fromNumber(value);\n    if (util.isString(value)) {\n        /* istanbul ignore else */\n        if (util.Long)\n            value = util.Long.fromString(value);\n        else\n            return LongBits.fromNumber(parseInt(value, 10));\n    }\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n    if (!unsigned && this.hi >>> 31) {\n        var lo = ~this.lo + 1 >>> 0,\n            hi = ~this.hi     >>> 0;\n        if (!lo)\n            hi = hi + 1 >>> 0;\n        return -(lo + hi * 4294967296);\n    }\n    return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n    return util.Long\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n        /* istanbul ignore next */\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n    if (hash === zeroHash)\n        return zero;\n    return new LongBits(\n        ( charCodeAt.call(hash, 0)\n        | charCodeAt.call(hash, 1) << 8\n        | charCodeAt.call(hash, 2) << 16\n        | charCodeAt.call(hash, 3) << 24) >>> 0\n    ,\n        ( charCodeAt.call(hash, 4)\n        | charCodeAt.call(hash, 5) << 8\n        | charCodeAt.call(hash, 6) << 16\n        | charCodeAt.call(hash, 7) << 24) >>> 0\n    );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n    return String.fromCharCode(\n        this.lo        & 255,\n        this.lo >>> 8  & 255,\n        this.lo >>> 16 & 255,\n        this.lo >>> 24      ,\n        this.hi        & 255,\n        this.hi >>> 8  & 255,\n        this.hi >>> 16 & 255,\n        this.hi >>> 24\n    );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n    var mask =   this.hi >> 31;\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n    var mask = -(this.lo & 1);\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n    var part0 =  this.lo,\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n        part2 =  this.hi >>> 24;\n    return part2 === 0\n         ? part1 === 0\n           ? part0 < 16384\n             ? part0 < 128 ? 1 : 2\n             : part0 < 2097152 ? 3 : 4\n           : part1 < 16384\n             ? part1 < 128 ? 5 : 6\n             : part1 < 2097152 ? 7 : 8\n         : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n                   && global\n                   && global.process\n                   && global.process.versions\n                   && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n           || typeof window !== \"undefined\" && window\n           || typeof self   !== \"undefined\" && self\n           || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n    return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n    var value = obj[prop];\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n    return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n    try {\n        var Buffer = util.inquire(\"buffer\").Buffer;\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n    } catch (e) {\n        /* istanbul ignore next */\n        return null;\n    }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n    /* istanbul ignore next */\n    return typeof sizeOrArray === \"number\"\n        ? util.Buffer\n            ? util._Buffer_allocUnsafe(sizeOrArray)\n            : new util.Array(sizeOrArray)\n        : util.Buffer\n            ? util._Buffer_from(sizeOrArray)\n            : typeof Uint8Array === \"undefined\"\n                ? sizeOrArray\n                : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n         || /* istanbul ignore next */ util.global.Long\n         || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n    return value\n        ? util.LongBits.from(value).toHash()\n        : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n    var bits = util.LongBits.fromHash(hash);\n    if (util.Long)\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n    return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n        if (dst[keys[i]] === undefined || !ifNotSet)\n            dst[keys[i]] = src[keys[i]];\n    return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n    return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n    function CustomError(message, properties) {\n\n        if (!(this instanceof CustomError))\n            return new CustomError(message, properties);\n\n        // Error.call(this, message);\n        // ^ just returns a new error instance because the ctor can be called as a function\n\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) // node\n            Error.captureStackTrace(this, CustomError);\n        else\n            Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n        if (properties)\n            merge(this, properties);\n    }\n\n    CustomError.prototype = Object.create(Error.prototype, {\n        constructor: {\n            value: CustomError,\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n        name: {\n            get: function get() { return name; },\n            set: undefined,\n            enumerable: false,\n            // configurable: false would accurately preserve the behavior of\n            // the original, but I'm guessing that was not intentional.\n            // For an actual error subclass, this property would\n            // be configurable.\n            configurable: true,\n        },\n        toString: {\n            value: function value() { return this.name + \": \" + this.message; },\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n    });\n\n    return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n *     if (e instanceof ProtocolError && e.instance)\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n    var fieldMap = {};\n    for (var i = 0; i < fieldNames.length; ++i)\n        fieldMap[fieldNames[i]] = 1;\n\n    /**\n     * @returns {string|undefined} Set field name, if any\n     * @this Object\n     * @ignore\n     */\n    return function() { // eslint-disable-line consistent-return\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n                return keys[i];\n    };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n    /**\n     * @param {string} name Field name\n     * @returns {undefined}\n     * @this Object\n     * @ignore\n     */\n    return function(name) {\n        for (var i = 0; i < fieldNames.length; ++i)\n            if (fieldNames[i] !== name)\n                delete this[fieldNames[i]];\n    };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n    longs: String,\n    enums: String,\n    bytes: String,\n    json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n    var Buffer = util.Buffer;\n    /* istanbul ignore if */\n    if (!Buffer) {\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\n        return;\n    }\n    // because node 4.x buffers are incompatible & immutable\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n        /* istanbul ignore next */\n        function Buffer_from(value, encoding) {\n            return new Buffer(value, encoding);\n        };\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n        /* istanbul ignore next */\n        function Buffer_allocUnsafe(size) {\n            return new Buffer(size);\n        };\n};\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits  = util.LongBits,\n    utf8      = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n    /**\n     * Read buffer.\n     * @type {Uint8Array}\n     */\n    this.buf = buffer;\n\n    /**\n     * Read buffer position.\n     * @type {number}\n     */\n    this.pos = 0;\n\n    /**\n     * Read buffer length.\n     * @type {number}\n     */\n    this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n    ? function create_typed_array(buffer) {\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    }\n    /* istanbul ignore next */\n    : function create_array(buffer) {\n        if (Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    };\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup(buffer) {\n            return (Reader.create = function create_buffer(buffer) {\n                return util.Buffer.isBuffer(buffer)\n                    ? new BufferReader(buffer)\n                    /* istanbul ignore next */\n                    : create_array(buffer);\n            })(buffer);\n        }\n        /* istanbul ignore next */\n        : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n    return function read_uint32() {\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n        /* istanbul ignore if */\n        if ((this.pos += 5) > this.len) {\n            this.pos = this.len;\n            throw indexOutOfRange(this, 10);\n        }\n        return value;\n    };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n    return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n    var value = this.uint32();\n    return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n    // tends to deopt with local vars for octet etc.\n    var bits = new LongBits(0, 0);\n    var i = 0;\n    if (this.len - this.pos > 4) { // fast route (lo)\n        for (; i < 4; ++i) {\n            // 1st..4th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 5th\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\n        if (this.buf[this.pos++] < 128)\n            return bits;\n        i = 0;\n    } else {\n        for (; i < 3; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 1st..3th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 4th\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n        return bits;\n    }\n    if (this.len - this.pos > 4) { // fast route (hi)\n        for (; i < 5; ++i) {\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    } else {\n        for (; i < 5; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    }\n    /* istanbul ignore next */\n    throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n    return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n    return (buf[end - 4]\n          | buf[end - 3] << 8\n          | buf[end - 2] << 16\n          | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 8);\n\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readFloatLE(this.buf, this.pos);\n    this.pos += 4;\n    return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readDoubleLE(this.buf, this.pos);\n    this.pos += 8;\n    return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n    var length = this.uint32(),\n        start  = this.pos,\n        end    = this.pos + length;\n\n    /* istanbul ignore if */\n    if (end > this.len)\n        throw indexOutOfRange(this, length);\n\n    this.pos += length;\n    if (Array.isArray(this.buf)) // plain array\n        return this.buf.slice(start, end);\n    return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n        ? new this.buf.constructor(0)\n        : this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n    var bytes = this.bytes();\n    return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n    if (typeof length === \"number\") {\n        /* istanbul ignore if */\n        if (this.pos + length > this.len)\n            throw indexOutOfRange(this, length);\n        this.pos += length;\n    } else {\n        do {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n        } while (this.buf[this.pos++] & 128);\n    }\n    return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n    switch (wireType) {\n        case 0:\n            this.skip();\n            break;\n        case 1:\n            this.skip(8);\n            break;\n        case 2:\n            this.skip(this.uint32());\n            break;\n        case 3:\n            while ((wireType = this.uint32() & 7) !== 4) {\n                this.skipType(wireType);\n            }\n            break;\n        case 5:\n            this.skip(4);\n            break;\n\n        /* istanbul ignore next */\n        default:\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n    }\n    return this;\n};\n\nReader._configure = function(BufferReader_) {\n    BufferReader = BufferReader_;\n    Reader.create = create();\n    BufferReader._configure();\n\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n    util.merge(Reader.prototype, {\n\n        int64: function read_int64() {\n            return readLongVarint.call(this)[fn](false);\n        },\n\n        uint64: function read_uint64() {\n            return readLongVarint.call(this)[fn](true);\n        },\n\n        sint64: function read_sint64() {\n            return readLongVarint.call(this).zzDecode()[fn](false);\n        },\n\n        fixed64: function read_fixed64() {\n            return readFixed64.call(this)[fn](true);\n        },\n\n        sfixed64: function read_sfixed64() {\n            return readFixed64.call(this)[fn](false);\n        }\n\n    });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n    Reader.call(this, buffer);\n\n    /**\n     * Read buffer.\n     * @name BufferReader#buf\n     * @type {Buffer}\n     */\n}\n\nBufferReader._configure = function () {\n    /* istanbul ignore else */\n    if (util.Buffer)\n        BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n    var len = this.uint32(); // modifies pos\n    return this.buf.utf8Slice\n        ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n        : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits  = util.LongBits,\n    base64    = util.base64,\n    utf8      = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n    /**\n     * Function to call.\n     * @type {function(Uint8Array, number, *)}\n     */\n    this.fn = fn;\n\n    /**\n     * Value byte length.\n     * @type {number}\n     */\n    this.len = len;\n\n    /**\n     * Next operation.\n     * @type {Writer.Op|undefined}\n     */\n    this.next = undefined;\n\n    /**\n     * Value to write.\n     * @type {*}\n     */\n    this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n    /**\n     * Current head.\n     * @type {Writer.Op}\n     */\n    this.head = writer.head;\n\n    /**\n     * Current tail.\n     * @type {Writer.Op}\n     */\n    this.tail = writer.tail;\n\n    /**\n     * Current buffer length.\n     * @type {number}\n     */\n    this.len = writer.len;\n\n    /**\n     * Next state.\n     * @type {State|null}\n     */\n    this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n    /**\n     * Current length.\n     * @type {number}\n     */\n    this.len = 0;\n\n    /**\n     * Operations head.\n     * @type {Object}\n     */\n    this.head = new Op(noop, 0, 0);\n\n    /**\n     * Operations tail\n     * @type {Object}\n     */\n    this.tail = this.head;\n\n    /**\n     * Linked forked states.\n     * @type {Object|null}\n     */\n    this.states = null;\n\n    // When a value is written, the writer calculates its byte length and puts it into a linked\n    // list of operations to perform when finish() is called. This both allows us to allocate\n    // buffers of the exact required size and reduces the amount of work we have to do compared\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\n    // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup() {\n            return (Writer.create = function create_buffer() {\n                return new BufferWriter();\n            })();\n        }\n        /* istanbul ignore next */\n        : function create_array() {\n            return new Writer();\n        };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n    return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n    this.tail = this.tail.next = new Op(fn, len, val);\n    this.len += len;\n    return this;\n};\n\nfunction writeByte(val, buf, pos) {\n    buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n    while (val > 127) {\n        buf[pos++] = val & 127 | 128;\n        val >>>= 7;\n    }\n    buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n    this.len = len;\n    this.next = undefined;\n    this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\n    this.len += (this.tail = this.tail.next = new VarintOp(\n        (value = value >>> 0)\n                < 128       ? 1\n        : value < 16384     ? 2\n        : value < 2097152   ? 3\n        : value < 268435456 ? 4\n        :                     5,\n    value)).len;\n    return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n    return value < 0\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n        : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n    while (val.hi) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n        val.hi >>>= 7;\n    }\n    while (val.lo > 127) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = val.lo >>> 7;\n    }\n    buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n    var bits = LongBits.from(value).zzEncode();\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n    return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n    buf[pos    ] =  val         & 255;\n    buf[pos + 1] =  val >>> 8   & 255;\n    buf[pos + 2] =  val >>> 16  & 255;\n    buf[pos + 3] =  val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n    return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n    return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n    return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n    ? function writeBytes_set(val, buf, pos) {\n        buf.set(val, pos); // also works for plain array values\n    }\n    /* istanbul ignore next */\n    : function writeBytes_for(val, buf, pos) {\n        for (var i = 0; i < val.length; ++i)\n            buf[pos + i] = val[i];\n    };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n    var len = value.length >>> 0;\n    if (!len)\n        return this._push(writeByte, 1, 0);\n    if (util.isString(value)) {\n        var buf = Writer.alloc(len = base64.length(value));\n        base64.decode(value, buf, 0);\n        value = buf;\n    }\n    return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n    var len = utf8.length(value);\n    return len\n        ? this.uint32(len)._push(utf8.write, len, value)\n        : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n    this.states = new State(this);\n    this.head = this.tail = new Op(noop, 0, 0);\n    this.len = 0;\n    return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n    if (this.states) {\n        this.head   = this.states.head;\n        this.tail   = this.states.tail;\n        this.len    = this.states.len;\n        this.states = this.states.next;\n    } else {\n        this.head = this.tail = new Op(noop, 0, 0);\n        this.len  = 0;\n    }\n    return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n    var head = this.head,\n        tail = this.tail,\n        len  = this.len;\n    this.reset().uint32(len);\n    if (len) {\n        this.tail.next = head.next; // skip noop\n        this.tail = tail;\n        this.len += len;\n    }\n    return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n    var head = this.head.next, // skip noop\n        buf  = this.constructor.alloc(this.len),\n        pos  = 0;\n    while (head) {\n        head.fn(head.val, buf, pos);\n        pos += head.len;\n        head = head.next;\n    }\n    // this.head = this.tail = null;\n    return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n    BufferWriter = BufferWriter_;\n    Writer.create = create();\n    BufferWriter._configure();\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n    Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n    /**\n     * Allocates a buffer of the specified size.\n     * @function\n     * @param {number} size Buffer size\n     * @returns {Buffer} Buffer\n     */\n    BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n    BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n        ? function writeBytesBuffer_set(val, buf, pos) {\n          buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n          // also works for plain array values\n        }\n        /* istanbul ignore next */\n        : function writeBytesBuffer_copy(val, buf, pos) {\n          if (val.copy) // Buffer values\n            val.copy(buf, pos, 0, val.length);\n          else for (var i = 0; i < val.length;) // plain array values\n            buf[pos++] = val[i++];\n        };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n    if (util.isString(value))\n        value = util._Buffer_from(value, \"base64\");\n    var len = value.length >>> 0;\n    this.uint32(len);\n    if (len)\n        this._push(BufferWriter.writeBytesBuffer, len, value);\n    return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n        util.utf8.write(val, buf, pos);\n    else if (buf.utf8Write)\n        buf.utf8Write(val, pos);\n    else\n        buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n    var len = util.Buffer.byteLength(value);\n    this.uint32(len);\n    if (len)\n        this._push(writeStringBuffer, len, value);\n    return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n", "'use strict'\n\n// JS treats subjects of bitwise operators as SIGNED 32 bit numbers,\n// which means the maximum amount of bits we can store inside each byte\n// is 7..\nconst BITS_PER_BYTE = 7\n\nmodule.exports = class SparseArray {\n  constructor () {\n    this._bitArrays = []\n    this._data = []\n    this._length = 0\n    this._changedLength = false\n    this._changedData = false\n  }\n\n  set (index, value) {\n    let pos = this._internalPositionFor(index, false)\n    if (value === undefined) {\n      // unsetting\n      if (pos !== -1) {\n        // remove item from bit array and array itself\n        this._unsetInternalPos(pos)\n        this._unsetBit(index)\n        this._changedLength = true\n        this._changedData = true\n      }\n    } else {\n      let needsSort = false\n      if (pos === -1) {\n        pos = this._data.length\n        this._setBit(index)\n        this._changedData = true\n      } else {\n        needsSort = true\n      }\n      this._setInternalPos(pos, index, value, needsSort)\n      this._changedLength = true\n    }\n  }\n\n  unset (index) {\n    this.set(index, undefined)\n  }\n\n  get (index) {\n    this._sortData()\n    const pos = this._internalPositionFor(index, true)\n    if (pos === -1) {\n      return undefined\n    }\n    return this._data[pos][1]\n  }\n\n  push (value) {\n    this.set(this.length, value)\n    return this.length\n  }\n\n  get length () {\n    this._sortData()\n    if (this._changedLength) {\n      const last = this._data[this._data.length - 1]\n      this._length = last ? last[0] + 1 : 0\n      this._changedLength = false\n    }\n    return this._length\n  }\n\n  forEach (iterator) {\n    let i = 0\n    while(i < this.length) {\n      iterator(this.get(i), i, this)\n      i++\n    }\n  }\n\n  map (iterator) {\n    let i = 0\n    let mapped = new Array(this.length)\n    while(i < this.length) {\n      mapped[i] = iterator(this.get(i), i, this)\n      i++\n    }\n    return mapped\n  }\n\n  reduce (reducer, initialValue) {\n    let i = 0\n    let acc = initialValue\n    while(i < this.length) {\n      const value = this.get(i)\n      acc = reducer(acc, value, i)\n      i++\n    }\n    return acc\n  }\n\n  find (finder) {\n    let i = 0, found, last\n    while ((i < this.length) && !found) {\n      last = this.get(i)\n      found = finder(last)\n      i++\n    }\n    return found ? last : undefined\n  }\n\n  _internalPositionFor (index, noCreate) {\n    const bytePos = this._bytePosFor(index, noCreate)\n    if (bytePos >= this._bitArrays.length) {\n      return -1\n    }\n    const byte = this._bitArrays[bytePos]\n    const bitPos = index - bytePos * BITS_PER_BYTE\n    const exists = (byte & (1 << bitPos)) > 0\n    if (!exists) {\n      return -1\n    }\n    const previousPopCount = this._bitArrays.slice(0, bytePos).reduce(popCountReduce, 0)\n\n    const mask = ~(0xffffffff << (bitPos + 1))\n    const bytePopCount = popCount(byte & mask)\n    const arrayPos = previousPopCount + bytePopCount - 1\n    return arrayPos\n  }\n\n  _bytePosFor (index, noCreate) {\n    const bytePos = Math.floor(index / BITS_PER_BYTE)\n    const targetLength = bytePos + 1\n    while (!noCreate && this._bitArrays.length < targetLength) {\n      this._bitArrays.push(0)\n    }\n    return bytePos\n  }\n\n  _setBit (index) {\n    const bytePos = this._bytePosFor(index, false)\n    this._bitArrays[bytePos] |= (1 << (index - (bytePos * BITS_PER_BYTE)))\n  }\n\n  _unsetBit(index) {\n    const bytePos = this._bytePosFor(index, false)\n    this._bitArrays[bytePos] &= ~(1 << (index - (bytePos * BITS_PER_BYTE)))\n  }\n\n  _setInternalPos(pos, index, value, needsSort) {\n    const data =this._data\n    const elem = [index, value]\n    if (needsSort) {\n      this._sortData()\n      data[pos] = elem\n    } else {\n      // new element. just shove it into the array\n      // but be nice about where we shove it\n      // in order to make sorting it later easier\n      if (data.length) {\n        if (data[data.length - 1][0] >= index) {\n          data.push(elem)\n        } else if (data[0][0] <= index) {\n          data.unshift(elem)\n        } else {\n          const randomIndex = Math.round(data.length / 2)\n          this._data = data.slice(0, randomIndex).concat(elem).concat(data.slice(randomIndex))\n        }\n      } else {\n        this._data.push(elem)\n      }\n      this._changedData = true\n      this._changedLength = true\n    }\n  }\n\n  _unsetInternalPos (pos) {\n    this._data.splice(pos, 1)\n  }\n\n  _sortData () {\n    if (this._changedData) {\n      this._data.sort(sortInternal)\n    }\n\n    this._changedData = false\n  }\n\n  bitField () {\n    const bytes = []\n    let pendingBitsForResultingByte = 8\n    let pendingBitsForNewByte = 0\n    let resultingByte = 0\n    let newByte\n    const pending = this._bitArrays.slice()\n    while (pending.length || pendingBitsForNewByte) {\n      if (pendingBitsForNewByte === 0) {\n        newByte = pending.shift()\n        pendingBitsForNewByte = 7\n      }\n\n      const usingBits = Math.min(pendingBitsForNewByte, pendingBitsForResultingByte)\n      const mask = ~(0b11111111 << usingBits)\n      const masked = newByte & mask\n      resultingByte |= masked << (8 - pendingBitsForResultingByte)\n      newByte = newByte >>> usingBits\n      pendingBitsForNewByte -= usingBits\n      pendingBitsForResultingByte -= usingBits\n\n      if (!pendingBitsForResultingByte || (!pendingBitsForNewByte && !pending.length)) {\n        bytes.push(resultingByte)\n        resultingByte = 0\n        pendingBitsForResultingByte = 8\n      }\n    }\n\n    // remove trailing zeroes\n    for(var i = bytes.length - 1; i > 0; i--) {\n      const value = bytes[i]\n      if (value === 0) {\n        bytes.pop()\n      } else {\n        break\n      }\n    }\n\n    return bytes\n  }\n\n  compactArray () {\n    this._sortData()\n    return this._data.map(valueOnly)\n  }\n}\n\nfunction popCountReduce (count, byte) {\n  return count + popCount(byte)\n}\n\nfunction popCount(_v) {\n  let v = _v\n  v = v - ((v >> 1) & 0x55555555)                    // reuse input as temporary\n  v = (v & 0x33333333) + ((v >> 2) & 0x33333333)     // temp\n  return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24\n}\n\nfunction sortInternal (a, b) {\n  return a[0] - b[0]\n}\n\nfunction valueOnly (elem) {\n  return elem[1]\n}", "/* jshint -W086: true */\n// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons                                       |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license.                          |\n// +----------------------------------------------------------------------+\n\n;(function (root, undefined) {\n    'use strict';\n\n    // Create a local object that'll be exported or referenced globally.\n    var library = {\n        'version': '3.0.0',\n        'x86': {},\n        'x64': {},\n        'inputValidation': true\n    };\n\n    // PRIVATE FUNCTIONS\n    // -----------------\n\n    function _validBytes(bytes) {\n        // check the input is an array or a typed array\n        if (!Array.isArray(bytes) && !ArrayBuffer.isView(bytes)) {\n            return false;\n        }\n\n        // check all bytes are actually bytes\n        for (var i = 0; i < bytes.length; i++) {\n            if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function _x86Multiply(m, n) {\n        //\n        // Given two 32bit ints, returns the two multiplied together as a\n        // 32bit int.\n        //\n\n        return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\n    }\n\n    function _x86Rotl(m, n) {\n        //\n        // Given a 32bit int and an int representing a number of bit positions,\n        // returns the 32bit int rotated left by that number of positions.\n        //\n\n        return (m << n) | (m >>> (32 - n));\n    }\n\n    function _x86Fmix(h) {\n        //\n        // Given a block, returns murmurHash3's final x86 mix of that block.\n        //\n\n        h ^= h >>> 16;\n        h = _x86Multiply(h, 0x85ebca6b);\n        h ^= h >>> 13;\n        h = _x86Multiply(h, 0xc2b2ae35);\n        h ^= h >>> 16;\n\n        return h;\n    }\n\n    function _x64Add(m, n) {\n        //\n        // Given two 64bit ints (as an array of two 32bit ints) returns the two\n        // added together as a 64bit int (as an array of two 32bit ints).\n        //\n\n        m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n        n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n        var o = [0, 0, 0, 0];\n\n        o[3] += m[3] + n[3];\n        o[2] += o[3] >>> 16;\n        o[3] &= 0xffff;\n\n        o[2] += m[2] + n[2];\n        o[1] += o[2] >>> 16;\n        o[2] &= 0xffff;\n\n        o[1] += m[1] + n[1];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[0] += m[0] + n[0];\n        o[0] &= 0xffff;\n\n        return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n    }\n\n    function _x64Multiply(m, n) {\n        //\n        // Given two 64bit ints (as an array of two 32bit ints) returns the two\n        // multiplied together as a 64bit int (as an array of two 32bit ints).\n        //\n\n        m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n        n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n        var o = [0, 0, 0, 0];\n\n        o[3] += m[3] * n[3];\n        o[2] += o[3] >>> 16;\n        o[3] &= 0xffff;\n\n        o[2] += m[2] * n[3];\n        o[1] += o[2] >>> 16;\n        o[2] &= 0xffff;\n\n        o[2] += m[3] * n[2];\n        o[1] += o[2] >>> 16;\n        o[2] &= 0xffff;\n\n        o[1] += m[1] * n[3];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[1] += m[2] * n[2];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[1] += m[3] * n[1];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\n        o[0] &= 0xffff;\n\n        return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n    }\n\n    function _x64Rotl(m, n) {\n        //\n        // Given a 64bit int (as an array of two 32bit ints) and an int\n        // representing a number of bit positions, returns the 64bit int (as an\n        // array of two 32bit ints) rotated left by that number of positions.\n        //\n\n        n %= 64;\n\n        if (n === 32) {\n            return [m[1], m[0]];\n        } else if (n < 32) {\n            return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n        } else {\n            n -= 32;\n            return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n        }\n    }\n\n    function _x64LeftShift(m, n) {\n        //\n        // Given a 64bit int (as an array of two 32bit ints) and an int\n        // representing a number of bit positions, returns the 64bit int (as an\n        // array of two 32bit ints) shifted left by that number of positions.\n        //\n\n        n %= 64;\n\n        if (n === 0) {\n            return m;\n        } else if (n < 32) {\n            return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n        } else {\n            return [m[1] << (n - 32), 0];\n        }\n    }\n\n    function _x64Xor(m, n) {\n        //\n        // Given two 64bit ints (as an array of two 32bit ints) returns the two\n        // xored together as a 64bit int (as an array of two 32bit ints).\n        //\n\n        return [m[0] ^ n[0], m[1] ^ n[1]];\n    }\n\n    function _x64Fmix(h) {\n        //\n        // Given a block, returns murmurHash3's final x64 mix of that block.\n        // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n        // only place where we need to right shift 64bit ints.)\n        //\n\n        h = _x64Xor(h, [0, h[0] >>> 1]);\n        h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n        h = _x64Xor(h, [0, h[0] >>> 1]);\n        h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n        h = _x64Xor(h, [0, h[0] >>> 1]);\n\n        return h;\n    }\n\n    // PUBLIC FUNCTIONS\n    // ----------------\n\n    library.x86.hash32 = function (bytes, seed) {\n        //\n        // Given a string and an optional seed as an int, returns a 32 bit hash\n        // using the x86 flavor of MurmurHash3, as an unsigned int.\n        //\n        if (library.inputValidation && !_validBytes(bytes)) {\n            return undefined;\n        }\n        seed = seed || 0;\n\n        var remainder = bytes.length % 4;\n        var blocks = bytes.length - remainder;\n\n        var h1 = seed;\n\n        var k1 = 0;\n\n        var c1 = 0xcc9e2d51;\n        var c2 = 0x1b873593;\n\n        for (var i = 0; i < blocks; i = i + 4) {\n            k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n            k1 = _x86Multiply(k1, c1);\n            k1 = _x86Rotl(k1, 15);\n            k1 = _x86Multiply(k1, c2);\n\n            h1 ^= k1;\n            h1 = _x86Rotl(h1, 13);\n            h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n        }\n\n        k1 = 0;\n\n        switch (remainder) {\n            case 3:\n                k1 ^= bytes[i + 2] << 16;\n\n            case 2:\n                k1 ^= bytes[i + 1] << 8;\n\n            case 1:\n                k1 ^= bytes[i];\n                k1 = _x86Multiply(k1, c1);\n                k1 = _x86Rotl(k1, 15);\n                k1 = _x86Multiply(k1, c2);\n                h1 ^= k1;\n        }\n\n        h1 ^= bytes.length;\n        h1 = _x86Fmix(h1);\n\n        return h1 >>> 0;\n    };\n\n    library.x86.hash128 = function (bytes, seed) {\n        //\n        // Given a string and an optional seed as an int, returns a 128 bit\n        // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n        //\n        if (library.inputValidation && !_validBytes(bytes)) {\n            return undefined;\n        }\n\n        seed = seed || 0;\n        var remainder = bytes.length % 16;\n        var blocks = bytes.length - remainder;\n\n        var h1 = seed;\n        var h2 = seed;\n        var h3 = seed;\n        var h4 = seed;\n\n        var k1 = 0;\n        var k2 = 0;\n        var k3 = 0;\n        var k4 = 0;\n\n        var c1 = 0x239b961b;\n        var c2 = 0xab0e9789;\n        var c3 = 0x38b34ae5;\n        var c4 = 0xa1e38b93;\n\n        for (var i = 0; i < blocks; i = i + 16) {\n            k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n            k2 = (bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n            k3 = (bytes[i + 8]) | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n            k4 = (bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n            k1 = _x86Multiply(k1, c1);\n            k1 = _x86Rotl(k1, 15);\n            k1 = _x86Multiply(k1, c2);\n            h1 ^= k1;\n\n            h1 = _x86Rotl(h1, 19);\n            h1 += h2;\n            h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n            k2 = _x86Multiply(k2, c2);\n            k2 = _x86Rotl(k2, 16);\n            k2 = _x86Multiply(k2, c3);\n            h2 ^= k2;\n\n            h2 = _x86Rotl(h2, 17);\n            h2 += h3;\n            h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n            k3 = _x86Multiply(k3, c3);\n            k3 = _x86Rotl(k3, 17);\n            k3 = _x86Multiply(k3, c4);\n            h3 ^= k3;\n\n            h3 = _x86Rotl(h3, 15);\n            h3 += h4;\n            h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n            k4 = _x86Multiply(k4, c4);\n            k4 = _x86Rotl(k4, 18);\n            k4 = _x86Multiply(k4, c1);\n            h4 ^= k4;\n\n            h4 = _x86Rotl(h4, 13);\n            h4 += h1;\n            h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n        }\n\n        k1 = 0;\n        k2 = 0;\n        k3 = 0;\n        k4 = 0;\n\n        switch (remainder) {\n            case 15:\n                k4 ^= bytes[i + 14] << 16;\n\n            case 14:\n                k4 ^= bytes[i + 13] << 8;\n\n            case 13:\n                k4 ^= bytes[i + 12];\n                k4 = _x86Multiply(k4, c4);\n                k4 = _x86Rotl(k4, 18);\n                k4 = _x86Multiply(k4, c1);\n                h4 ^= k4;\n\n            case 12:\n                k3 ^= bytes[i + 11] << 24;\n\n            case 11:\n                k3 ^= bytes[i + 10] << 16;\n\n            case 10:\n                k3 ^= bytes[i + 9] << 8;\n\n            case 9:\n                k3 ^= bytes[i + 8];\n                k3 = _x86Multiply(k3, c3);\n                k3 = _x86Rotl(k3, 17);\n                k3 = _x86Multiply(k3, c4);\n                h3 ^= k3;\n\n            case 8:\n                k2 ^= bytes[i + 7] << 24;\n\n            case 7:\n                k2 ^= bytes[i + 6] << 16;\n\n            case 6:\n                k2 ^= bytes[i + 5] << 8;\n\n            case 5:\n                k2 ^= bytes[i + 4];\n                k2 = _x86Multiply(k2, c2);\n                k2 = _x86Rotl(k2, 16);\n                k2 = _x86Multiply(k2, c3);\n                h2 ^= k2;\n\n            case 4:\n                k1 ^= bytes[i + 3] << 24;\n\n            case 3:\n                k1 ^= bytes[i + 2] << 16;\n\n            case 2:\n                k1 ^= bytes[i + 1] << 8;\n\n            case 1:\n                k1 ^= bytes[i];\n                k1 = _x86Multiply(k1, c1);\n                k1 = _x86Rotl(k1, 15);\n                k1 = _x86Multiply(k1, c2);\n                h1 ^= k1;\n        }\n\n        h1 ^= bytes.length;\n        h2 ^= bytes.length;\n        h3 ^= bytes.length;\n        h4 ^= bytes.length;\n\n        h1 += h2;\n        h1 += h3;\n        h1 += h4;\n        h2 += h1;\n        h3 += h1;\n        h4 += h1;\n\n        h1 = _x86Fmix(h1);\n        h2 = _x86Fmix(h2);\n        h3 = _x86Fmix(h3);\n        h4 = _x86Fmix(h4);\n\n        h1 += h2;\n        h1 += h3;\n        h1 += h4;\n        h2 += h1;\n        h3 += h1;\n        h4 += h1;\n\n        return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\n    };\n\n    library.x64.hash128 = function (bytes, seed) {\n        //\n        // Given a string and an optional seed as an int, returns a 128 bit\n        // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n        //\n        if (library.inputValidation && !_validBytes(bytes)) {\n            return undefined;\n        }\n        seed = seed || 0;\n\n        var remainder = bytes.length % 16;\n        var blocks = bytes.length - remainder;\n\n        var h1 = [0, seed];\n        var h2 = [0, seed];\n\n        var k1 = [0, 0];\n        var k2 = [0, 0];\n\n        var c1 = [0x87c37b91, 0x114253d5];\n        var c2 = [0x4cf5ad43, 0x2745937f];\n\n        for (var i = 0; i < blocks; i = i + 16) {\n            k1 = [(bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24), (bytes[i]) |\n                (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24)];\n            k2 = [(bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24), (bytes[i + 8]) |\n                (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24)];\n\n            k1 = _x64Multiply(k1, c1);\n            k1 = _x64Rotl(k1, 31);\n            k1 = _x64Multiply(k1, c2);\n            h1 = _x64Xor(h1, k1);\n\n            h1 = _x64Rotl(h1, 27);\n            h1 = _x64Add(h1, h2);\n            h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n            k2 = _x64Multiply(k2, c2);\n            k2 = _x64Rotl(k2, 33);\n            k2 = _x64Multiply(k2, c1);\n            h2 = _x64Xor(h2, k2);\n\n            h2 = _x64Rotl(h2, 31);\n            h2 = _x64Add(h2, h1);\n            h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n        }\n\n        k1 = [0, 0];\n        k2 = [0, 0];\n\n        switch (remainder) {\n            case 15:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 14]], 48));\n\n            case 14:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 13]], 40));\n\n            case 13:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 12]], 32));\n\n            case 12:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 11]], 24));\n\n            case 11:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 10]], 16));\n\n            case 10:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 9]], 8));\n\n            case 9:\n                k2 = _x64Xor(k2, [0, bytes[i + 8]]);\n                k2 = _x64Multiply(k2, c2);\n                k2 = _x64Rotl(k2, 33);\n                k2 = _x64Multiply(k2, c1);\n                h2 = _x64Xor(h2, k2);\n\n            case 8:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 7]], 56));\n\n            case 7:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 6]], 48));\n\n            case 6:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 5]], 40));\n\n            case 5:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 4]], 32));\n\n            case 4:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 3]], 24));\n\n            case 3:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 2]], 16));\n\n            case 2:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 1]], 8));\n\n            case 1:\n                k1 = _x64Xor(k1, [0, bytes[i]]);\n                k1 = _x64Multiply(k1, c1);\n                k1 = _x64Rotl(k1, 31);\n                k1 = _x64Multiply(k1, c2);\n                h1 = _x64Xor(h1, k1);\n        }\n\n        h1 = _x64Xor(h1, [0, bytes.length]);\n        h2 = _x64Xor(h2, [0, bytes.length]);\n\n        h1 = _x64Add(h1, h2);\n        h2 = _x64Add(h2, h1);\n\n        h1 = _x64Fmix(h1);\n        h2 = _x64Fmix(h2);\n\n        h1 = _x64Add(h1, h2);\n        h2 = _x64Add(h2, h1);\n\n        return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\n    };\n\n    // INITIALIZATION\n    // --------------\n\n    // Export murmurHash3 for CommonJS, either as an AMD module or just as part\n    // of the global object.\n    if (typeof exports !== 'undefined') {\n\n        if (typeof module !== 'undefined' && module.exports) {\n            exports = module.exports = library;\n        }\n\n        exports.murmurHash3 = library;\n\n    } else if (typeof define === 'function' && define.amd) {\n\n        define([], function () {\n            return library;\n        });\n    } else {\n\n        // Use murmurHash3.noConflict to restore `murmurHash3` back to its\n        // original value. Returns a reference to the library object, to allow\n        // it to be used under a different name.\n        library._murmurHash3 = root.murmurHash3;\n\n        library.noConflict = function () {\n            root.murmurHash3 = library._murmurHash3;\n            library._murmurHash3 = undefined;\n            library.noConflict = undefined;\n\n            return library;\n        };\n\n        root.murmurHash3 = library;\n    }\n})(this);\n", "module.exports = require('./lib/murmurHash3js');\n", "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the “License”);\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// <https://apache.org/licenses/LICENSE-2.0>.\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an “AS IS” BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nclass JSBI extends Array {\n    constructor(length, sign) {\n        super(length);\n        this.sign = sign;\n        // Explicitly set the prototype as per\n        // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n        Object.setPrototypeOf(this, JSBI.prototype);\n        if (length > JSBI.__kMaxLength) {\n            throw new RangeError('Maximum BigInt size exceeded');\n        }\n    }\n    static BigInt(arg) {\n        if (typeof arg === 'number') {\n            if (arg === 0)\n                return JSBI.__zero();\n            if (JSBI.__isOneDigitInt(arg)) {\n                if (arg < 0) {\n                    return JSBI.__oneDigit(-arg, true);\n                }\n                return JSBI.__oneDigit(arg, false);\n            }\n            if (!Number.isFinite(arg) || Math.floor(arg) !== arg) {\n                throw new RangeError('The number ' + arg + ' cannot be converted to ' +\n                    'BigInt because it is not an integer');\n            }\n            return JSBI.__fromDouble(arg);\n        }\n        else if (typeof arg === 'string') {\n            const result = JSBI.__fromString(arg);\n            if (result === null) {\n                throw new SyntaxError('Cannot convert ' + arg + ' to a BigInt');\n            }\n            return result;\n        }\n        else if (typeof arg === 'boolean') {\n            if (arg === true) {\n                return JSBI.__oneDigit(1, false);\n            }\n            return JSBI.__zero();\n        }\n        else if (typeof arg === 'object') {\n            if (arg.constructor === JSBI)\n                return arg;\n            const primitive = JSBI.__toPrimitive(arg);\n            return JSBI.BigInt(primitive);\n        }\n        throw new TypeError('Cannot convert ' + arg + ' to a BigInt');\n    }\n    toDebugString() {\n        const result = ['BigInt['];\n        for (const digit of this) {\n            result.push((digit ? (digit >>> 0).toString(16) : digit) + ', ');\n        }\n        result.push(']');\n        return result.join('');\n    }\n    toString(radix = 10) {\n        if (radix < 2 || radix > 36) {\n            throw new RangeError('toString() radix argument must be between 2 and 36');\n        }\n        if (this.length === 0)\n            return '0';\n        if ((radix & (radix - 1)) === 0) {\n            return JSBI.__toStringBasePowerOfTwo(this, radix);\n        }\n        return JSBI.__toStringGeneric(this, radix, false);\n    }\n    valueOf() {\n        throw new Error('Convert JSBI instances to native numbers using `toNumber`.');\n    }\n    // Equivalent of \"Number(my_bigint)\" in the native implementation.\n    // TODO: add more tests\n    static toNumber(x) {\n        const xLength = x.length;\n        if (xLength === 0)\n            return 0;\n        if (xLength === 1) {\n            const value = x.__unsignedDigit(0);\n            return x.sign ? -value : value;\n        }\n        const xMsd = x.__digit(xLength - 1);\n        const msdLeadingZeros = JSBI.__clz30(xMsd);\n        const xBitLength = xLength * 30 - msdLeadingZeros;\n        if (xBitLength > 1024)\n            return x.sign ? -Infinity : Infinity;\n        let exponent = xBitLength - 1;\n        let currentDigit = xMsd;\n        let digitIndex = xLength - 1;\n        const shift = msdLeadingZeros + 3;\n        let mantissaHigh = (shift === 32) ? 0 : currentDigit << shift;\n        mantissaHigh >>>= 12;\n        const mantissaHighBitsUnset = shift - 12;\n        let mantissaLow = (shift >= 12) ? 0 : (currentDigit << (20 + shift));\n        let mantissaLowBitsUnset = 20 + shift;\n        if (mantissaHighBitsUnset > 0 && digitIndex > 0) {\n            digitIndex--;\n            currentDigit = x.__digit(digitIndex);\n            mantissaHigh |= (currentDigit >>> (30 - mantissaHighBitsUnset));\n            mantissaLow = currentDigit << mantissaHighBitsUnset + 2;\n            mantissaLowBitsUnset = mantissaHighBitsUnset + 2;\n        }\n        while (mantissaLowBitsUnset > 0 && digitIndex > 0) {\n            digitIndex--;\n            currentDigit = x.__digit(digitIndex);\n            if (mantissaLowBitsUnset >= 30) {\n                mantissaLow |= (currentDigit << (mantissaLowBitsUnset - 30));\n            }\n            else {\n                mantissaLow |= (currentDigit >>> (30 - mantissaLowBitsUnset));\n            }\n            mantissaLowBitsUnset -= 30;\n        }\n        const rounding = JSBI.__decideRounding(x, mantissaLowBitsUnset, digitIndex, currentDigit);\n        if (rounding === 1 || (rounding === 0 && (mantissaLow & 1) === 1)) {\n            mantissaLow = (mantissaLow + 1) >>> 0;\n            if (mantissaLow === 0) {\n                // Incrementing mantissaLow overflowed.\n                mantissaHigh++;\n                if ((mantissaHigh >>> 20) !== 0) {\n                    // Incrementing mantissaHigh overflowed.\n                    mantissaHigh = 0;\n                    exponent++;\n                    if (exponent > 1023) {\n                        // Incrementing the exponent overflowed.\n                        return x.sign ? -Infinity : Infinity;\n                    }\n                }\n            }\n        }\n        const signBit = x.sign ? (1 << 31) : 0;\n        exponent = (exponent + 0x3FF) << 20;\n        JSBI.__kBitConversionInts[1] = signBit | exponent | mantissaHigh;\n        JSBI.__kBitConversionInts[0] = mantissaLow;\n        return JSBI.__kBitConversionDouble[0];\n    }\n    // Operations.\n    static unaryMinus(x) {\n        if (x.length === 0)\n            return x;\n        const result = x.__copy();\n        result.sign = !x.sign;\n        return result;\n    }\n    static bitwiseNot(x) {\n        if (x.sign) {\n            // ~(-x) == ~(~(x-1)) == x-1\n            return JSBI.__absoluteSubOne(x).__trim();\n        }\n        // ~x == -x-1 == -(x+1)\n        return JSBI.__absoluteAddOne(x, true);\n    }\n    static exponentiate(x, y) {\n        if (y.sign) {\n            throw new RangeError('Exponent must be positive');\n        }\n        if (y.length === 0) {\n            return JSBI.__oneDigit(1, false);\n        }\n        if (x.length === 0)\n            return x;\n        if (x.length === 1 && x.__digit(0) === 1) {\n            // (-1) ** even_number == 1.\n            if (x.sign && (y.__digit(0) & 1) === 0) {\n                return JSBI.unaryMinus(x);\n            }\n            // (-1) ** odd_number == -1, 1 ** anything == 1.\n            return x;\n        }\n        // For all bases >= 2, very large exponents would lead to unrepresentable\n        // results.\n        if (y.length > 1)\n            throw new RangeError('BigInt too big');\n        let expValue = y.__unsignedDigit(0);\n        if (expValue === 1)\n            return x;\n        if (expValue >= JSBI.__kMaxLengthBits) {\n            throw new RangeError('BigInt too big');\n        }\n        if (x.length === 1 && x.__digit(0) === 2) {\n            // Fast path for 2^n.\n            const neededDigits = 1 + ((expValue / 30) | 0);\n            const sign = x.sign && ((expValue & 1) !== 0);\n            const result = new JSBI(neededDigits, sign);\n            result.__initializeDigits();\n            // All bits are zero. Now set the n-th bit.\n            const msd = 1 << (expValue % 30);\n            result.__setDigit(neededDigits - 1, msd);\n            return result;\n        }\n        let result = null;\n        let runningSquare = x;\n        // This implicitly sets the result's sign correctly.\n        if ((expValue & 1) !== 0)\n            result = x;\n        expValue >>= 1;\n        for (; expValue !== 0; expValue >>= 1) {\n            runningSquare = JSBI.multiply(runningSquare, runningSquare);\n            if ((expValue & 1) !== 0) {\n                if (result === null) {\n                    result = runningSquare;\n                }\n                else {\n                    result = JSBI.multiply(result, runningSquare);\n                }\n            }\n        }\n        // TODO see if there's a way for tsc to infer this will always happen?\n        return result;\n    }\n    static multiply(x, y) {\n        if (x.length === 0)\n            return x;\n        if (y.length === 0)\n            return y;\n        let resultLength = x.length + y.length;\n        if (x.__clzmsd() + y.__clzmsd() >= 30) {\n            resultLength--;\n        }\n        const result = new JSBI(resultLength, x.sign !== y.sign);\n        result.__initializeDigits();\n        for (let i = 0; i < x.length; i++) {\n            JSBI.__multiplyAccumulate(y, x.__digit(i), result, i);\n        }\n        return result.__trim();\n    }\n    static divide(x, y) {\n        if (y.length === 0)\n            throw new RangeError('Division by zero');\n        if (JSBI.__absoluteCompare(x, y) < 0)\n            return JSBI.__zero();\n        const resultSign = x.sign !== y.sign;\n        const divisor = y.__unsignedDigit(0);\n        let quotient;\n        if (y.length === 1 && divisor <= 0x7FFF) {\n            if (divisor === 1) {\n                return resultSign === x.sign ? x : JSBI.unaryMinus(x);\n            }\n            quotient = JSBI.__absoluteDivSmall(x, divisor, null);\n        }\n        else {\n            quotient = JSBI.__absoluteDivLarge(x, y, true, false);\n        }\n        quotient.sign = resultSign;\n        return quotient.__trim();\n    }\n    static remainder(x, y) {\n        if (y.length === 0)\n            throw new RangeError('Division by zero');\n        if (JSBI.__absoluteCompare(x, y) < 0)\n            return x;\n        const divisor = y.__unsignedDigit(0);\n        if (y.length === 1 && divisor <= 0x7FFF) {\n            if (divisor === 1)\n                return JSBI.__zero();\n            const remainderDigit = JSBI.__absoluteModSmall(x, divisor);\n            if (remainderDigit === 0)\n                return JSBI.__zero();\n            return JSBI.__oneDigit(remainderDigit, x.sign);\n        }\n        const remainder = JSBI.__absoluteDivLarge(x, y, false, true);\n        remainder.sign = x.sign;\n        return remainder.__trim();\n    }\n    static add(x, y) {\n        const sign = x.sign;\n        if (sign === y.sign) {\n            // x + y == x + y\n            // -x + -y == -(x + y)\n            return JSBI.__absoluteAdd(x, y, sign);\n        }\n        // x + -y == x - y == -(y - x)\n        // -x + y == y - x == -(x - y)\n        if (JSBI.__absoluteCompare(x, y) >= 0) {\n            return JSBI.__absoluteSub(x, y, sign);\n        }\n        return JSBI.__absoluteSub(y, x, !sign);\n    }\n    static subtract(x, y) {\n        const sign = x.sign;\n        if (sign !== y.sign) {\n            // x - (-y) == x + y\n            // (-x) - y == -(x + y)\n            return JSBI.__absoluteAdd(x, y, sign);\n        }\n        // x - y == -(y - x)\n        // (-x) - (-y) == y - x == -(x - y)\n        if (JSBI.__absoluteCompare(x, y) >= 0) {\n            return JSBI.__absoluteSub(x, y, sign);\n        }\n        return JSBI.__absoluteSub(y, x, !sign);\n    }\n    static leftShift(x, y) {\n        if (y.length === 0 || x.length === 0)\n            return x;\n        if (y.sign)\n            return JSBI.__rightShiftByAbsolute(x, y);\n        return JSBI.__leftShiftByAbsolute(x, y);\n    }\n    static signedRightShift(x, y) {\n        if (y.length === 0 || x.length === 0)\n            return x;\n        if (y.sign)\n            return JSBI.__leftShiftByAbsolute(x, y);\n        return JSBI.__rightShiftByAbsolute(x, y);\n    }\n    static unsignedRightShift() {\n        throw new TypeError('BigInts have no unsigned right shift; use >> instead');\n    }\n    static lessThan(x, y) {\n        return JSBI.__compareToBigInt(x, y) < 0;\n    }\n    static lessThanOrEqual(x, y) {\n        return JSBI.__compareToBigInt(x, y) <= 0;\n    }\n    static greaterThan(x, y) {\n        return JSBI.__compareToBigInt(x, y) > 0;\n    }\n    static greaterThanOrEqual(x, y) {\n        return JSBI.__compareToBigInt(x, y) >= 0;\n    }\n    static equal(x, y) {\n        if (x.sign !== y.sign)\n            return false;\n        if (x.length !== y.length)\n            return false;\n        for (let i = 0; i < x.length; i++) {\n            if (x.__digit(i) !== y.__digit(i))\n                return false;\n        }\n        return true;\n    }\n    static notEqual(x, y) {\n        return !JSBI.equal(x, y);\n    }\n    static bitwiseAnd(x, y) {\n        if (!x.sign && !y.sign) {\n            return JSBI.__absoluteAnd(x, y).__trim();\n        }\n        else if (x.sign && y.sign) {\n            const resultLength = Math.max(x.length, y.length) + 1;\n            // (-x) & (-y) == ~(x-1) & ~(y-1) == ~((x-1) | (y-1))\n            // == -(((x-1) | (y-1)) + 1)\n            let result = JSBI.__absoluteSubOne(x, resultLength);\n            const y1 = JSBI.__absoluteSubOne(y);\n            result = JSBI.__absoluteOr(result, y1, result);\n            return JSBI.__absoluteAddOne(result, true, result).__trim();\n        }\n        // Assume that x is the positive BigInt.\n        if (x.sign) {\n            [x, y] = [y, x];\n        }\n        // x & (-y) == x & ~(y-1) == x &~ (y-1)\n        return JSBI.__absoluteAndNot(x, JSBI.__absoluteSubOne(y)).__trim();\n    }\n    static bitwiseXor(x, y) {\n        if (!x.sign && !y.sign) {\n            return JSBI.__absoluteXor(x, y).__trim();\n        }\n        else if (x.sign && y.sign) {\n            // (-x) ^ (-y) == ~(x-1) ^ ~(y-1) == (x-1) ^ (y-1)\n            const resultLength = Math.max(x.length, y.length);\n            const result = JSBI.__absoluteSubOne(x, resultLength);\n            const y1 = JSBI.__absoluteSubOne(y);\n            return JSBI.__absoluteXor(result, y1, result).__trim();\n        }\n        const resultLength = Math.max(x.length, y.length) + 1;\n        // Assume that x is the positive BigInt.\n        if (x.sign) {\n            [x, y] = [y, x];\n        }\n        // x ^ (-y) == x ^ ~(y-1) == ~(x ^ (y-1)) == -((x ^ (y-1)) + 1)\n        let result = JSBI.__absoluteSubOne(y, resultLength);\n        result = JSBI.__absoluteXor(result, x, result);\n        return JSBI.__absoluteAddOne(result, true, result).__trim();\n    }\n    static bitwiseOr(x, y) {\n        const resultLength = Math.max(x.length, y.length);\n        if (!x.sign && !y.sign) {\n            return JSBI.__absoluteOr(x, y).__trim();\n        }\n        else if (x.sign && y.sign) {\n            // (-x) | (-y) == ~(x-1) | ~(y-1) == ~((x-1) & (y-1))\n            // == -(((x-1) & (y-1)) + 1)\n            let result = JSBI.__absoluteSubOne(x, resultLength);\n            const y1 = JSBI.__absoluteSubOne(y);\n            result = JSBI.__absoluteAnd(result, y1, result);\n            return JSBI.__absoluteAddOne(result, true, result).__trim();\n        }\n        // Assume that x is the positive BigInt.\n        if (x.sign) {\n            [x, y] = [y, x];\n        }\n        // x | (-y) == x | ~(y-1) == ~((y-1) &~ x) == -(((y-1) ~& x) + 1)\n        let result = JSBI.__absoluteSubOne(y, resultLength);\n        result = JSBI.__absoluteAndNot(result, x, result);\n        return JSBI.__absoluteAddOne(result, true, result).__trim();\n    }\n    static asIntN(n, x) {\n        if (x.length === 0)\n            return x;\n        n = Math.floor(n);\n        if (n < 0) {\n            throw new RangeError('Invalid value: not (convertible to) a safe integer');\n        }\n        if (n === 0)\n            return JSBI.__zero();\n        // If {x} has less than {n} bits, return it directly.\n        if (n >= JSBI.__kMaxLengthBits)\n            return x;\n        const neededLength = ((n + 29) / 30) | 0;\n        if (x.length < neededLength)\n            return x;\n        const topDigit = x.__unsignedDigit(neededLength - 1);\n        const compareDigit = 1 << ((n - 1) % 30);\n        if (x.length === neededLength && topDigit < compareDigit)\n            return x;\n        // Otherwise truncate and simulate two's complement.\n        const hasBit = (topDigit & compareDigit) === compareDigit;\n        if (!hasBit)\n            return JSBI.__truncateToNBits(n, x);\n        if (!x.sign)\n            return JSBI.__truncateAndSubFromPowerOfTwo(n, x, true);\n        if ((topDigit & (compareDigit - 1)) === 0) {\n            for (let i = neededLength - 2; i >= 0; i--) {\n                if (x.__digit(i) !== 0) {\n                    return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n                }\n            }\n            if (x.length === neededLength && topDigit === compareDigit)\n                return x;\n            return JSBI.__truncateToNBits(n, x);\n        }\n        return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n    }\n    static asUintN(n, x) {\n        if (x.length === 0)\n            return x;\n        n = Math.floor(n);\n        if (n < 0) {\n            throw new RangeError('Invalid value: not (convertible to) a safe integer');\n        }\n        if (n === 0)\n            return JSBI.__zero();\n        // If {x} is negative, simulate two's complement representation.\n        if (x.sign) {\n            if (n > JSBI.__kMaxLengthBits) {\n                throw new RangeError('BigInt too big');\n            }\n            return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n        }\n        // If {x} is positive and has up to {n} bits, return it directly.\n        if (n >= JSBI.__kMaxLengthBits)\n            return x;\n        const neededLength = ((n + 29) / 30) | 0;\n        if (x.length < neededLength)\n            return x;\n        const bitsInTopDigit = n % 30;\n        if (x.length == neededLength) {\n            if (bitsInTopDigit === 0)\n                return x;\n            const topDigit = x.__digit(neededLength - 1);\n            if ((topDigit >>> bitsInTopDigit) === 0)\n                return x;\n        }\n        // Otherwise, truncate.\n        return JSBI.__truncateToNBits(n, x);\n    }\n    // Operators.\n    static ADD(x, y) {\n        x = JSBI.__toPrimitive(x);\n        y = JSBI.__toPrimitive(y);\n        if (typeof x === 'string') {\n            if (typeof y !== 'string')\n                y = y.toString();\n            return x + y;\n        }\n        if (typeof y === 'string') {\n            return x.toString() + y;\n        }\n        x = JSBI.__toNumeric(x);\n        y = JSBI.__toNumeric(y);\n        if (JSBI.__isBigInt(x) && JSBI.__isBigInt(y)) {\n            return JSBI.add(x, y);\n        }\n        if (typeof x === 'number' && typeof y === 'number') {\n            return x + y;\n        }\n        throw new TypeError('Cannot mix BigInt and other types, use explicit conversions');\n    }\n    static LT(x, y) {\n        return JSBI.__compare(x, y, 0);\n    }\n    static LE(x, y) {\n        return JSBI.__compare(x, y, 1);\n    }\n    static GT(x, y) {\n        return JSBI.__compare(x, y, 2);\n    }\n    static GE(x, y) {\n        return JSBI.__compare(x, y, 3);\n    }\n    static EQ(x, y) {\n        while (true) {\n            if (JSBI.__isBigInt(x)) {\n                if (JSBI.__isBigInt(y))\n                    return JSBI.equal(x, y);\n                return JSBI.EQ(y, x);\n            }\n            else if (typeof x === 'number') {\n                if (JSBI.__isBigInt(y))\n                    return JSBI.__equalToNumber(y, x);\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'string') {\n                if (JSBI.__isBigInt(y)) {\n                    x = JSBI.__fromString(x);\n                    if (x === null)\n                        return false;\n                    return JSBI.equal(x, y);\n                }\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'boolean') {\n                if (JSBI.__isBigInt(y))\n                    return JSBI.__equalToNumber(y, +x);\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'symbol') {\n                if (JSBI.__isBigInt(y))\n                    return false;\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'object') {\n                if (typeof y === 'object' && y.constructor !== JSBI)\n                    return x == y;\n                x = JSBI.__toPrimitive(x);\n            }\n            else {\n                return x == y;\n            }\n        }\n    }\n    static NE(x, y) {\n        return !JSBI.EQ(x, y);\n    }\n    // DataView-related functionality.\n    static DataViewGetBigInt64(dataview, byteOffset, littleEndian = false) {\n        return JSBI.asIntN(64, JSBI.DataViewGetBigUint64(dataview, byteOffset, littleEndian));\n    }\n    static DataViewGetBigUint64(dataview, byteOffset, littleEndian = false) {\n        const [h, l] = littleEndian ? [4, 0] : [0, 4];\n        const high = dataview.getUint32(byteOffset + h, littleEndian);\n        const low = dataview.getUint32(byteOffset + l, littleEndian);\n        const result = new JSBI(3, false);\n        result.__setDigit(0, low & 0x3FFFFFFF);\n        result.__setDigit(1, ((high & 0xFFFFFFF) << 2) | (low >>> 30));\n        result.__setDigit(2, high >>> 28);\n        return result.__trim();\n    }\n    static DataViewSetBigInt64(dataview, byteOffset, value, littleEndian = false) {\n        JSBI.DataViewSetBigUint64(dataview, byteOffset, value, littleEndian);\n    }\n    static DataViewSetBigUint64(dataview, byteOffset, value, littleEndian = false) {\n        value = JSBI.asUintN(64, value);\n        let high = 0;\n        let low = 0;\n        if (value.length > 0) {\n            low = value.__digit(0);\n            if (value.length > 1) {\n                const d1 = value.__digit(1);\n                low = low | d1 << 30;\n                high = d1 >>> 2;\n                if (value.length > 2) {\n                    high = high | (value.__digit(2) << 28);\n                }\n            }\n        }\n        const [h, l] = littleEndian ? [4, 0] : [0, 4];\n        dataview.setUint32(byteOffset + h, high, littleEndian);\n        dataview.setUint32(byteOffset + l, low, littleEndian);\n    }\n    // Helpers.\n    static __zero() {\n        return new JSBI(0, false);\n    }\n    static __oneDigit(value, sign) {\n        const result = new JSBI(1, sign);\n        result.__setDigit(0, value);\n        return result;\n    }\n    __copy() {\n        const result = new JSBI(this.length, this.sign);\n        for (let i = 0; i < this.length; i++) {\n            result[i] = this[i];\n        }\n        return result;\n    }\n    __trim() {\n        let newLength = this.length;\n        let last = this[newLength - 1];\n        while (last === 0) {\n            newLength--;\n            last = this[newLength - 1];\n            this.pop();\n        }\n        if (newLength === 0)\n            this.sign = false;\n        return this;\n    }\n    __initializeDigits() {\n        for (let i = 0; i < this.length; i++) {\n            this[i] = 0;\n        }\n    }\n    static __decideRounding(x, mantissaBitsUnset, digitIndex, currentDigit) {\n        if (mantissaBitsUnset > 0)\n            return -1;\n        let topUnconsumedBit;\n        if (mantissaBitsUnset < 0) {\n            topUnconsumedBit = -mantissaBitsUnset - 1;\n        }\n        else {\n            // {currentDigit} fit the mantissa exactly; look at the next digit.\n            if (digitIndex === 0)\n                return -1;\n            digitIndex--;\n            currentDigit = x.__digit(digitIndex);\n            topUnconsumedBit = 29;\n        }\n        // If the most significant remaining bit is 0, round down.\n        let mask = 1 << topUnconsumedBit;\n        if ((currentDigit & mask) === 0)\n            return -1;\n        // If any other remaining bit is set, round up.\n        mask -= 1;\n        if ((currentDigit & mask) !== 0)\n            return 1;\n        while (digitIndex > 0) {\n            digitIndex--;\n            if (x.__digit(digitIndex) !== 0)\n                return 1;\n        }\n        return 0;\n    }\n    static __fromDouble(value) {\n        const sign = value < 0;\n        JSBI.__kBitConversionDouble[0] = value;\n        const rawExponent = (JSBI.__kBitConversionInts[1] >>> 20) & 0x7FF;\n        const exponent = rawExponent - 0x3FF;\n        const digits = ((exponent / 30) | 0) + 1;\n        const result = new JSBI(digits, sign);\n        const kHiddenBit = 0x00100000;\n        let mantissaHigh = (JSBI.__kBitConversionInts[1] & 0xFFFFF) | kHiddenBit;\n        let mantissaLow = JSBI.__kBitConversionInts[0];\n        const kMantissaHighTopBit = 20;\n        // 0-indexed position of most significant bit in most significant digit.\n        const msdTopBit = exponent % 30;\n        // Number of unused bits in the mantissa. We'll keep them shifted to the\n        // left (i.e. most significant part).\n        let remainingMantissaBits = 0;\n        // Next digit under construction.\n        let digit;\n        // First, build the MSD by shifting the mantissa appropriately.\n        if (msdTopBit < kMantissaHighTopBit) {\n            const shift = kMantissaHighTopBit - msdTopBit;\n            remainingMantissaBits = shift + 32;\n            digit = mantissaHigh >>> shift;\n            mantissaHigh = (mantissaHigh << (32 - shift)) | (mantissaLow >>> shift);\n            mantissaLow = mantissaLow << (32 - shift);\n        }\n        else if (msdTopBit === kMantissaHighTopBit) {\n            remainingMantissaBits = 32;\n            digit = mantissaHigh;\n            mantissaHigh = mantissaLow;\n            mantissaLow = 0;\n        }\n        else {\n            const shift = msdTopBit - kMantissaHighTopBit;\n            remainingMantissaBits = 32 - shift;\n            digit = (mantissaHigh << shift) | (mantissaLow >>> (32 - shift));\n            mantissaHigh = mantissaLow << shift;\n            mantissaLow = 0;\n        }\n        result.__setDigit(digits - 1, digit);\n        // Then fill in the rest of the digits.\n        for (let digitIndex = digits - 2; digitIndex >= 0; digitIndex--) {\n            if (remainingMantissaBits > 0) {\n                remainingMantissaBits -= 30;\n                digit = mantissaHigh >>> 2;\n                mantissaHigh = (mantissaHigh << 30) | (mantissaLow >>> 2);\n                mantissaLow = (mantissaLow << 30);\n            }\n            else {\n                digit = 0;\n            }\n            result.__setDigit(digitIndex, digit);\n        }\n        return result.__trim();\n    }\n    static __isWhitespace(c) {\n        if (c <= 0x0D && c >= 0x09)\n            return true;\n        if (c <= 0x9F)\n            return c === 0x20;\n        if (c <= 0x01FFFF) {\n            return c === 0xA0 || c === 0x1680;\n        }\n        if (c <= 0x02FFFF) {\n            c &= 0x01FFFF;\n            return c <= 0x0A || c === 0x28 || c === 0x29 || c === 0x2F ||\n                c === 0x5F || c === 0x1000;\n        }\n        return c === 0xFEFF;\n    }\n    static __fromString(string, radix = 0) {\n        let sign = 0;\n        let leadingZero = false;\n        const length = string.length;\n        let cursor = 0;\n        if (cursor === length)\n            return JSBI.__zero();\n        let current = string.charCodeAt(cursor);\n        // Skip whitespace.\n        while (JSBI.__isWhitespace(current)) {\n            if (++cursor === length)\n                return JSBI.__zero();\n            current = string.charCodeAt(cursor);\n        }\n        // Detect radix.\n        if (current === 0x2B) { // '+'\n            if (++cursor === length)\n                return null;\n            current = string.charCodeAt(cursor);\n            sign = 1;\n        }\n        else if (current === 0x2D) { // '-'\n            if (++cursor === length)\n                return null;\n            current = string.charCodeAt(cursor);\n            sign = -1;\n        }\n        if (radix === 0) {\n            radix = 10;\n            if (current === 0x30) { // '0'\n                if (++cursor === length)\n                    return JSBI.__zero();\n                current = string.charCodeAt(cursor);\n                if (current === 0x58 || current === 0x78) { // 'X' or 'x'\n                    radix = 16;\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else if (current === 0x4F || current === 0x6F) { // 'O' or 'o'\n                    radix = 8;\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else if (current === 0x42 || current === 0x62) { // 'B' or 'b'\n                    radix = 2;\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else {\n                    leadingZero = true;\n                }\n            }\n        }\n        else if (radix === 16) {\n            if (current === 0x30) { // '0'\n                // Allow \"0x\" prefix.\n                if (++cursor === length)\n                    return JSBI.__zero();\n                current = string.charCodeAt(cursor);\n                if (current === 0x58 || current === 0x78) { // 'X' or 'x'\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else {\n                    leadingZero = true;\n                }\n            }\n        }\n        if (sign !== 0 && radix !== 10)\n            return null;\n        // Skip leading zeros.\n        while (current === 0x30) {\n            leadingZero = true;\n            if (++cursor === length)\n                return JSBI.__zero();\n            current = string.charCodeAt(cursor);\n        }\n        // Allocate result.\n        const chars = length - cursor;\n        let bitsPerChar = JSBI.__kMaxBitsPerChar[radix];\n        let roundup = JSBI.__kBitsPerCharTableMultiplier - 1;\n        if (chars > (1 << 30) / bitsPerChar)\n            return null;\n        const bitsMin = (bitsPerChar * chars + roundup) >>> JSBI.__kBitsPerCharTableShift;\n        const resultLength = ((bitsMin + 29) / 30) | 0;\n        const result = new JSBI(resultLength, false);\n        // Parse.\n        const limDigit = radix < 10 ? radix : 10;\n        const limAlpha = radix > 10 ? radix - 10 : 0;\n        if ((radix & (radix - 1)) === 0) {\n            // Power-of-two radix.\n            bitsPerChar >>= JSBI.__kBitsPerCharTableShift;\n            const parts = [];\n            const partsBits = [];\n            let done = false;\n            do {\n                let part = 0;\n                let bits = 0;\n                while (true) {\n                    let d;\n                    if (((current - 48) >>> 0) < limDigit) {\n                        d = current - 48;\n                    }\n                    else if ((((current | 32) - 97) >>> 0) < limAlpha) {\n                        d = (current | 32) - 87;\n                    }\n                    else {\n                        done = true;\n                        break;\n                    }\n                    bits += bitsPerChar;\n                    part = (part << bitsPerChar) | d;\n                    if (++cursor === length) {\n                        done = true;\n                        break;\n                    }\n                    current = string.charCodeAt(cursor);\n                    if (bits + bitsPerChar > 30)\n                        break;\n                }\n                parts.push(part);\n                partsBits.push(bits);\n            } while (!done);\n            JSBI.__fillFromParts(result, parts, partsBits);\n        }\n        else {\n            result.__initializeDigits();\n            let done = false;\n            let charsSoFar = 0;\n            do {\n                let part = 0;\n                let multiplier = 1;\n                while (true) {\n                    let d;\n                    if (((current - 48) >>> 0) < limDigit) {\n                        d = current - 48;\n                    }\n                    else if ((((current | 32) - 97) >>> 0) < limAlpha) {\n                        d = (current | 32) - 87;\n                    }\n                    else {\n                        done = true;\n                        break;\n                    }\n                    const m = multiplier * radix;\n                    if (m > 0x3FFFFFFF)\n                        break;\n                    multiplier = m;\n                    part = part * radix + d;\n                    charsSoFar++;\n                    if (++cursor === length) {\n                        done = true;\n                        break;\n                    }\n                    current = string.charCodeAt(cursor);\n                }\n                roundup = JSBI.__kBitsPerCharTableMultiplier * 30 - 1;\n                const digitsSoFar = (((bitsPerChar * charsSoFar + roundup) >>>\n                    JSBI.__kBitsPerCharTableShift) / 30) | 0;\n                result.__inplaceMultiplyAdd(multiplier, part, digitsSoFar);\n            } while (!done);\n        }\n        if (cursor !== length) {\n            if (!JSBI.__isWhitespace(current))\n                return null;\n            for (cursor++; cursor < length; cursor++) {\n                current = string.charCodeAt(cursor);\n                if (!JSBI.__isWhitespace(current))\n                    return null;\n            }\n        }\n        // Get result.\n        result.sign = (sign === -1);\n        return result.__trim();\n    }\n    static __fillFromParts(result, parts, partsBits) {\n        let digitIndex = 0;\n        let digit = 0;\n        let bitsInDigit = 0;\n        for (let i = parts.length - 1; i >= 0; i--) {\n            const part = parts[i];\n            const partBits = partsBits[i];\n            digit |= (part << bitsInDigit);\n            bitsInDigit += partBits;\n            if (bitsInDigit === 30) {\n                result.__setDigit(digitIndex++, digit);\n                bitsInDigit = 0;\n                digit = 0;\n            }\n            else if (bitsInDigit > 30) {\n                result.__setDigit(digitIndex++, digit & 0x3FFFFFFF);\n                bitsInDigit -= 30;\n                digit = part >>> (partBits - bitsInDigit);\n            }\n        }\n        if (digit !== 0) {\n            if (digitIndex >= result.length)\n                throw new Error('implementation bug');\n            result.__setDigit(digitIndex++, digit);\n        }\n        for (; digitIndex < result.length; digitIndex++) {\n            result.__setDigit(digitIndex, 0);\n        }\n    }\n    static __toStringBasePowerOfTwo(x, radix) {\n        const length = x.length;\n        let bits = radix - 1;\n        bits = ((bits >>> 1) & 0x55) + (bits & 0x55);\n        bits = ((bits >>> 2) & 0x33) + (bits & 0x33);\n        bits = ((bits >>> 4) & 0x0F) + (bits & 0x0F);\n        const bitsPerChar = bits;\n        const charMask = radix - 1;\n        const msd = x.__digit(length - 1);\n        const msdLeadingZeros = JSBI.__clz30(msd);\n        const bitLength = length * 30 - msdLeadingZeros;\n        let charsRequired = ((bitLength + bitsPerChar - 1) / bitsPerChar) | 0;\n        if (x.sign)\n            charsRequired++;\n        if (charsRequired > (1 << 28))\n            throw new Error('string too long');\n        const result = new Array(charsRequired);\n        let pos = charsRequired - 1;\n        let digit = 0;\n        let availableBits = 0;\n        for (let i = 0; i < length - 1; i++) {\n            const newDigit = x.__digit(i);\n            const current = (digit | (newDigit << availableBits)) & charMask;\n            result[pos--] = JSBI.__kConversionChars[current];\n            const consumedBits = bitsPerChar - availableBits;\n            digit = newDigit >>> consumedBits;\n            availableBits = 30 - consumedBits;\n            while (availableBits >= bitsPerChar) {\n                result[pos--] = JSBI.__kConversionChars[digit & charMask];\n                digit >>>= bitsPerChar;\n                availableBits -= bitsPerChar;\n            }\n        }\n        const current = (digit | (msd << availableBits)) & charMask;\n        result[pos--] = JSBI.__kConversionChars[current];\n        digit = msd >>> (bitsPerChar - availableBits);\n        while (digit !== 0) {\n            result[pos--] = JSBI.__kConversionChars[digit & charMask];\n            digit >>>= bitsPerChar;\n        }\n        if (x.sign)\n            result[pos--] = '-';\n        if (pos !== -1)\n            throw new Error('implementation bug');\n        return result.join('');\n    }\n    static __toStringGeneric(x, radix, isRecursiveCall) {\n        const length = x.length;\n        if (length === 0)\n            return '';\n        if (length === 1) {\n            let result = x.__unsignedDigit(0).toString(radix);\n            if (isRecursiveCall === false && x.sign) {\n                result = '-' + result;\n            }\n            return result;\n        }\n        const bitLength = length * 30 - JSBI.__clz30(x.__digit(length - 1));\n        const maxBitsPerChar = JSBI.__kMaxBitsPerChar[radix];\n        const minBitsPerChar = maxBitsPerChar - 1;\n        let charsRequired = bitLength * JSBI.__kBitsPerCharTableMultiplier;\n        charsRequired += minBitsPerChar - 1;\n        charsRequired = (charsRequired / minBitsPerChar) | 0;\n        const secondHalfChars = (charsRequired + 1) >> 1;\n        // Divide-and-conquer: split by a power of {radix} that's approximately\n        // the square root of {x}, then recurse.\n        const conqueror = JSBI.exponentiate(JSBI.__oneDigit(radix, false), JSBI.__oneDigit(secondHalfChars, false));\n        let quotient;\n        let secondHalf;\n        const divisor = conqueror.__unsignedDigit(0);\n        if (conqueror.length === 1 && divisor <= 0x7FFF) {\n            quotient = new JSBI(x.length, false);\n            quotient.__initializeDigits();\n            let remainder = 0;\n            for (let i = x.length * 2 - 1; i >= 0; i--) {\n                const input = (remainder << 15) | x.__halfDigit(i);\n                quotient.__setHalfDigit(i, (input / divisor) | 0);\n                remainder = (input % divisor) | 0;\n            }\n            secondHalf = remainder.toString(radix);\n        }\n        else {\n            const divisionResult = JSBI.__absoluteDivLarge(x, conqueror, true, true);\n            quotient = divisionResult.quotient;\n            const remainder = divisionResult.remainder.__trim();\n            secondHalf = JSBI.__toStringGeneric(remainder, radix, true);\n        }\n        quotient.__trim();\n        let firstHalf = JSBI.__toStringGeneric(quotient, radix, true);\n        while (secondHalf.length < secondHalfChars) {\n            secondHalf = '0' + secondHalf;\n        }\n        if (isRecursiveCall === false && x.sign) {\n            firstHalf = '-' + firstHalf;\n        }\n        return firstHalf + secondHalf;\n    }\n    static __unequalSign(leftNegative) {\n        return leftNegative ? -1 : 1;\n    }\n    static __absoluteGreater(bothNegative) {\n        return bothNegative ? -1 : 1;\n    }\n    static __absoluteLess(bothNegative) {\n        return bothNegative ? 1 : -1;\n    }\n    static __compareToBigInt(x, y) {\n        const xSign = x.sign;\n        if (xSign !== y.sign)\n            return JSBI.__unequalSign(xSign);\n        const result = JSBI.__absoluteCompare(x, y);\n        if (result > 0)\n            return JSBI.__absoluteGreater(xSign);\n        if (result < 0)\n            return JSBI.__absoluteLess(xSign);\n        return 0;\n    }\n    static __compareToNumber(x, y) {\n        if (JSBI.__isOneDigitInt(y)) {\n            const xSign = x.sign;\n            const ySign = (y < 0);\n            if (xSign !== ySign)\n                return JSBI.__unequalSign(xSign);\n            if (x.length === 0) {\n                if (ySign)\n                    throw new Error('implementation bug');\n                return y === 0 ? 0 : -1;\n            }\n            // Any multi-digit BigInt is bigger than an int32.\n            if (x.length > 1)\n                return JSBI.__absoluteGreater(xSign);\n            const yAbs = Math.abs(y);\n            const xDigit = x.__unsignedDigit(0);\n            if (xDigit > yAbs)\n                return JSBI.__absoluteGreater(xSign);\n            if (xDigit < yAbs)\n                return JSBI.__absoluteLess(xSign);\n            return 0;\n        }\n        return JSBI.__compareToDouble(x, y);\n    }\n    static __compareToDouble(x, y) {\n        if (y !== y)\n            return y; // NaN.\n        if (y === Infinity)\n            return -1;\n        if (y === -Infinity)\n            return 1;\n        const xSign = x.sign;\n        const ySign = (y < 0);\n        if (xSign !== ySign)\n            return JSBI.__unequalSign(xSign);\n        if (y === 0) {\n            throw new Error('implementation bug: should be handled elsewhere');\n        }\n        if (x.length === 0)\n            return -1;\n        JSBI.__kBitConversionDouble[0] = y;\n        const rawExponent = (JSBI.__kBitConversionInts[1] >>> 20) & 0x7FF;\n        if (rawExponent === 0x7FF) {\n            throw new Error('implementation bug: handled elsewhere');\n        }\n        const exponent = rawExponent - 0x3FF;\n        if (exponent < 0) {\n            // The absolute value of y is less than 1. Only 0n has an absolute\n            // value smaller than that, but we've already covered that case.\n            return JSBI.__absoluteGreater(xSign);\n        }\n        const xLength = x.length;\n        let xMsd = x.__digit(xLength - 1);\n        const msdLeadingZeros = JSBI.__clz30(xMsd);\n        const xBitLength = xLength * 30 - msdLeadingZeros;\n        const yBitLength = exponent + 1;\n        if (xBitLength < yBitLength)\n            return JSBI.__absoluteLess(xSign);\n        if (xBitLength > yBitLength)\n            return JSBI.__absoluteGreater(xSign);\n        // Same sign, same bit length. Shift mantissa to align with x and compare\n        // bit for bit.\n        const kHiddenBit = 0x00100000;\n        let mantissaHigh = (JSBI.__kBitConversionInts[1] & 0xFFFFF) | kHiddenBit;\n        let mantissaLow = JSBI.__kBitConversionInts[0];\n        const kMantissaHighTopBit = 20;\n        const msdTopBit = 29 - msdLeadingZeros;\n        if (msdTopBit !== (((xBitLength - 1) % 30) | 0)) {\n            throw new Error('implementation bug');\n        }\n        let compareMantissa; // Shifted chunk of mantissa.\n        let remainingMantissaBits = 0;\n        // First, compare most significant digit against beginning of mantissa.\n        if (msdTopBit < kMantissaHighTopBit) {\n            const shift = kMantissaHighTopBit - msdTopBit;\n            remainingMantissaBits = shift + 32;\n            compareMantissa = mantissaHigh >>> shift;\n            mantissaHigh = (mantissaHigh << (32 - shift)) | (mantissaLow >>> shift);\n            mantissaLow = mantissaLow << (32 - shift);\n        }\n        else if (msdTopBit === kMantissaHighTopBit) {\n            remainingMantissaBits = 32;\n            compareMantissa = mantissaHigh;\n            mantissaHigh = mantissaLow;\n            mantissaLow = 0;\n        }\n        else {\n            const shift = msdTopBit - kMantissaHighTopBit;\n            remainingMantissaBits = 32 - shift;\n            compareMantissa =\n                (mantissaHigh << shift) | (mantissaLow >>> (32 - shift));\n            mantissaHigh = mantissaLow << shift;\n            mantissaLow = 0;\n        }\n        xMsd = xMsd >>> 0;\n        compareMantissa = compareMantissa >>> 0;\n        if (xMsd > compareMantissa)\n            return JSBI.__absoluteGreater(xSign);\n        if (xMsd < compareMantissa)\n            return JSBI.__absoluteLess(xSign);\n        // Then, compare additional digits against remaining mantissa bits.\n        for (let digitIndex = xLength - 2; digitIndex >= 0; digitIndex--) {\n            if (remainingMantissaBits > 0) {\n                remainingMantissaBits -= 30;\n                compareMantissa = mantissaHigh >>> 2;\n                mantissaHigh = (mantissaHigh << 30) | (mantissaLow >>> 2);\n                mantissaLow = (mantissaLow << 30);\n            }\n            else {\n                compareMantissa = 0;\n            }\n            const digit = x.__unsignedDigit(digitIndex);\n            if (digit > compareMantissa)\n                return JSBI.__absoluteGreater(xSign);\n            if (digit < compareMantissa)\n                return JSBI.__absoluteLess(xSign);\n        }\n        // Integer parts are equal; check whether {y} has a fractional part.\n        if (mantissaHigh !== 0 || mantissaLow !== 0) {\n            if (remainingMantissaBits === 0)\n                throw new Error('implementation bug');\n            return JSBI.__absoluteLess(xSign);\n        }\n        return 0;\n    }\n    static __equalToNumber(x, y) {\n        if (JSBI.__isOneDigitInt(y)) {\n            if (y === 0)\n                return x.length === 0;\n            // Any multi-digit BigInt is bigger than an int32.\n            return (x.length === 1) && (x.sign === (y < 0)) &&\n                (x.__unsignedDigit(0) === Math.abs(y));\n        }\n        return JSBI.__compareToDouble(x, y) === 0;\n    }\n    // Comparison operations, chosen such that \"op ^ 2\" reverses direction:\n    // 0 - lessThan\n    // 1 - lessThanOrEqual\n    // 2 - greaterThan\n    // 3 - greaterThanOrEqual\n    static __comparisonResultToBool(result, op) {\n        switch (op) {\n            case 0: return result < 0;\n            case 1: return result <= 0;\n            case 2: return result > 0;\n            case 3: return result >= 0;\n        }\n    }\n    static __compare(x, y, op) {\n        x = JSBI.__toPrimitive(x);\n        y = JSBI.__toPrimitive(y);\n        if (typeof x === 'string' && typeof y === 'string') {\n            switch (op) {\n                case 0: return x < y;\n                case 1: return x <= y;\n                case 2: return x > y;\n                case 3: return x >= y;\n            }\n        }\n        if (JSBI.__isBigInt(x) && typeof y === 'string') {\n            y = JSBI.__fromString(y);\n            if (y === null)\n                return false;\n            return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n        }\n        if (typeof x === 'string' && JSBI.__isBigInt(y)) {\n            x = JSBI.__fromString(x);\n            if (x === null)\n                return false;\n            return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n        }\n        x = JSBI.__toNumeric(x);\n        y = JSBI.__toNumeric(y);\n        if (JSBI.__isBigInt(x)) {\n            if (JSBI.__isBigInt(y)) {\n                return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n            }\n            if (typeof y !== 'number')\n                throw new Error('implementation bug');\n            return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(x, y), op);\n        }\n        if (typeof x !== 'number')\n            throw new Error('implementation bug');\n        if (JSBI.__isBigInt(y)) {\n            // Note that \"op ^ 2\" reverses the op's direction.\n            return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(y, x), (op ^ 2));\n        }\n        if (typeof y !== 'number')\n            throw new Error('implementation bug');\n        switch (op) {\n            case 0: return x < y;\n            case 1: return x <= y;\n            case 2: return x > y;\n            case 3: return x >= y;\n        }\n    }\n    __clzmsd() {\n        return JSBI.__clz30(this.__digit(this.length - 1));\n    }\n    static __absoluteAdd(x, y, resultSign) {\n        if (x.length < y.length)\n            return JSBI.__absoluteAdd(y, x, resultSign);\n        if (x.length === 0)\n            return x;\n        if (y.length === 0)\n            return x.sign === resultSign ? x : JSBI.unaryMinus(x);\n        let resultLength = x.length;\n        if (x.__clzmsd() === 0 || (y.length === x.length && y.__clzmsd() === 0)) {\n            resultLength++;\n        }\n        const result = new JSBI(resultLength, resultSign);\n        let carry = 0;\n        let i = 0;\n        for (; i < y.length; i++) {\n            const r = x.__digit(i) + y.__digit(i) + carry;\n            carry = r >>> 30;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        for (; i < x.length; i++) {\n            const r = x.__digit(i) + carry;\n            carry = r >>> 30;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (i < result.length) {\n            result.__setDigit(i, carry);\n        }\n        return result.__trim();\n    }\n    static __absoluteSub(x, y, resultSign) {\n        if (x.length === 0)\n            return x;\n        if (y.length === 0)\n            return x.sign === resultSign ? x : JSBI.unaryMinus(x);\n        const result = new JSBI(x.length, resultSign);\n        let borrow = 0;\n        let i = 0;\n        for (; i < y.length; i++) {\n            const r = x.__digit(i) - y.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        for (; i < x.length; i++) {\n            const r = x.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        return result.__trim();\n    }\n    static __absoluteAddOne(x, sign, result = null) {\n        const inputLength = x.length;\n        if (result === null) {\n            result = new JSBI(inputLength, sign);\n        }\n        else {\n            result.sign = sign;\n        }\n        let carry = 1;\n        for (let i = 0; i < inputLength; i++) {\n            const r = x.__digit(i) + carry;\n            carry = r >>> 30;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (carry !== 0) {\n            result.__setDigitGrow(inputLength, 1);\n        }\n        return result;\n    }\n    static __absoluteSubOne(x, resultLength) {\n        const length = x.length;\n        resultLength = resultLength || length;\n        const result = new JSBI(resultLength, false);\n        let borrow = 1;\n        for (let i = 0; i < length; i++) {\n            const r = x.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (borrow !== 0)\n            throw new Error('implementation bug');\n        for (let i = length; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteAnd(x, y, result = null) {\n        let xLength = x.length;\n        let yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n            const tmp = x;\n            const tmpLength = xLength;\n            x = y;\n            xLength = yLength;\n            y = tmp;\n            yLength = tmpLength;\n        }\n        let resultLength = numPairs;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) & y.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteAndNot(x, y, result = null) {\n        const xLength = x.length;\n        const yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n        }\n        let resultLength = xLength;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) & ~y.__digit(i));\n        }\n        for (; i < xLength; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteOr(x, y, result = null) {\n        let xLength = x.length;\n        let yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n            const tmp = x;\n            const tmpLength = xLength;\n            x = y;\n            xLength = yLength;\n            y = tmp;\n            yLength = tmpLength;\n        }\n        let resultLength = xLength;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) | y.__digit(i));\n        }\n        for (; i < xLength; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteXor(x, y, result = null) {\n        let xLength = x.length;\n        let yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n            const tmp = x;\n            const tmpLength = xLength;\n            x = y;\n            xLength = yLength;\n            y = tmp;\n            yLength = tmpLength;\n        }\n        let resultLength = xLength;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) ^ y.__digit(i));\n        }\n        for (; i < xLength; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteCompare(x, y) {\n        const diff = x.length - y.length;\n        if (diff !== 0)\n            return diff;\n        let i = x.length - 1;\n        while (i >= 0 && x.__digit(i) === y.__digit(i))\n            i--;\n        if (i < 0)\n            return 0;\n        return x.__unsignedDigit(i) > y.__unsignedDigit(i) ? 1 : -1;\n    }\n    static __multiplyAccumulate(multiplicand, multiplier, accumulator, accumulatorIndex) {\n        if (multiplier === 0)\n            return;\n        const m2Low = multiplier & 0x7FFF;\n        const m2High = multiplier >>> 15;\n        let carry = 0;\n        let high = 0;\n        for (let i = 0; i < multiplicand.length; i++, accumulatorIndex++) {\n            let acc = accumulator.__digit(accumulatorIndex);\n            const m1 = multiplicand.__digit(i);\n            const m1Low = m1 & 0x7FFF;\n            const m1High = m1 >>> 15;\n            const rLow = JSBI.__imul(m1Low, m2Low);\n            const rMid1 = JSBI.__imul(m1Low, m2High);\n            const rMid2 = JSBI.__imul(m1High, m2Low);\n            const rHigh = JSBI.__imul(m1High, m2High);\n            acc += high + rLow + carry;\n            carry = acc >>> 30;\n            acc &= 0x3FFFFFFF;\n            acc += ((rMid1 & 0x7FFF) << 15) + ((rMid2 & 0x7FFF) << 15);\n            carry += acc >>> 30;\n            high = rHigh + (rMid1 >>> 15) + (rMid2 >>> 15);\n            accumulator.__setDigit(accumulatorIndex, acc & 0x3FFFFFFF);\n        }\n        for (; carry !== 0 || high !== 0; accumulatorIndex++) {\n            let acc = accumulator.__digit(accumulatorIndex);\n            acc += carry + high;\n            high = 0;\n            carry = acc >>> 30;\n            accumulator.__setDigit(accumulatorIndex, acc & 0x3FFFFFFF);\n        }\n    }\n    static __internalMultiplyAdd(source, factor, summand, n, result) {\n        let carry = summand;\n        let high = 0;\n        for (let i = 0; i < n; i++) {\n            const digit = source.__digit(i);\n            const rx = JSBI.__imul(digit & 0x7FFF, factor);\n            const ry = JSBI.__imul(digit >>> 15, factor);\n            const r = rx + ((ry & 0x7FFF) << 15) + high + carry;\n            carry = r >>> 30;\n            high = ry >>> 15;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (result.length > n) {\n            result.__setDigit(n++, carry + high);\n            while (n < result.length) {\n                result.__setDigit(n++, 0);\n            }\n        }\n        else {\n            if (carry + high !== 0)\n                throw new Error('implementation bug');\n        }\n    }\n    __inplaceMultiplyAdd(multiplier, summand, length) {\n        if (length > this.length)\n            length = this.length;\n        const mLow = multiplier & 0x7FFF;\n        const mHigh = multiplier >>> 15;\n        let carry = 0;\n        let high = summand;\n        for (let i = 0; i < length; i++) {\n            const d = this.__digit(i);\n            const dLow = d & 0x7FFF;\n            const dHigh = d >>> 15;\n            const pLow = JSBI.__imul(dLow, mLow);\n            const pMid1 = JSBI.__imul(dLow, mHigh);\n            const pMid2 = JSBI.__imul(dHigh, mLow);\n            const pHigh = JSBI.__imul(dHigh, mHigh);\n            let result = high + pLow + carry;\n            carry = result >>> 30;\n            result &= 0x3FFFFFFF;\n            result += ((pMid1 & 0x7FFF) << 15) + ((pMid2 & 0x7FFF) << 15);\n            carry += result >>> 30;\n            high = pHigh + (pMid1 >>> 15) + (pMid2 >>> 15);\n            this.__setDigit(i, result & 0x3FFFFFFF);\n        }\n        if (carry !== 0 || high !== 0) {\n            throw new Error('implementation bug');\n        }\n    }\n    static __absoluteDivSmall(x, divisor, quotient = null) {\n        if (quotient === null)\n            quotient = new JSBI(x.length, false);\n        let remainder = 0;\n        for (let i = x.length * 2 - 1; i >= 0; i -= 2) {\n            let input = ((remainder << 15) | x.__halfDigit(i)) >>> 0;\n            const upperHalf = (input / divisor) | 0;\n            remainder = (input % divisor) | 0;\n            input = ((remainder << 15) | x.__halfDigit(i - 1)) >>> 0;\n            const lowerHalf = (input / divisor) | 0;\n            remainder = (input % divisor) | 0;\n            quotient.__setDigit(i >>> 1, (upperHalf << 15) | lowerHalf);\n        }\n        return quotient;\n    }\n    static __absoluteModSmall(x, divisor) {\n        let remainder = 0;\n        for (let i = x.length * 2 - 1; i >= 0; i--) {\n            const input = ((remainder << 15) | x.__halfDigit(i)) >>> 0;\n            remainder = (input % divisor) | 0;\n        }\n        return remainder;\n    }\n    static __absoluteDivLarge(dividend, divisor, wantQuotient, wantRemainder) {\n        const n = divisor.__halfDigitLength();\n        const n2 = divisor.length;\n        const m = dividend.__halfDigitLength() - n;\n        let q = null;\n        if (wantQuotient) {\n            q = new JSBI((m + 2) >>> 1, false);\n            q.__initializeDigits();\n        }\n        const qhatv = new JSBI((n + 2) >>> 1, false);\n        qhatv.__initializeDigits();\n        // D1.\n        const shift = JSBI.__clz15(divisor.__halfDigit(n - 1));\n        if (shift > 0) {\n            divisor = JSBI.__specialLeftShift(divisor, shift, 0 /* add no digits*/);\n        }\n        const u = JSBI.__specialLeftShift(dividend, shift, 1 /* add one digit */);\n        // D2.\n        const vn1 = divisor.__halfDigit(n - 1);\n        let halfDigitBuffer = 0;\n        for (let j = m; j >= 0; j--) {\n            // D3.\n            let qhat = 0x7FFF;\n            const ujn = u.__halfDigit(j + n);\n            if (ujn !== vn1) {\n                const input = ((ujn << 15) | u.__halfDigit(j + n - 1)) >>> 0;\n                qhat = (input / vn1) | 0;\n                let rhat = (input % vn1) | 0;\n                const vn2 = divisor.__halfDigit(n - 2);\n                const ujn2 = u.__halfDigit(j + n - 2);\n                while ((JSBI.__imul(qhat, vn2) >>> 0) > (((rhat << 16) | ujn2) >>> 0)) {\n                    qhat--;\n                    rhat += vn1;\n                    if (rhat > 0x7FFF)\n                        break;\n                }\n            }\n            // D4.\n            JSBI.__internalMultiplyAdd(divisor, qhat, 0, n2, qhatv);\n            let c = u.__inplaceSub(qhatv, j, n + 1);\n            if (c !== 0) {\n                c = u.__inplaceAdd(divisor, j, n);\n                u.__setHalfDigit(j + n, (u.__halfDigit(j + n) + c) & 0x7FFF);\n                qhat--;\n            }\n            if (wantQuotient) {\n                if (j & 1) {\n                    halfDigitBuffer = qhat << 15;\n                }\n                else {\n                    // TODO make this statically determinable\n                    q.__setDigit(j >>> 1, halfDigitBuffer | qhat);\n                }\n            }\n        }\n        if (wantRemainder) {\n            u.__inplaceRightShift(shift);\n            if (wantQuotient) {\n                return { quotient: q, remainder: u };\n            }\n            return u;\n        }\n        if (wantQuotient)\n            return q;\n        // TODO find a way to make this statically unreachable?\n        throw new Error('unreachable');\n    }\n    static __clz15(value) {\n        return JSBI.__clz30(value) - 15;\n    }\n    // TODO: work on full digits, like __inplaceSub?\n    __inplaceAdd(summand, startIndex, halfDigits) {\n        let carry = 0;\n        for (let i = 0; i < halfDigits; i++) {\n            const sum = this.__halfDigit(startIndex + i) +\n                summand.__halfDigit(i) +\n                carry;\n            carry = sum >>> 15;\n            this.__setHalfDigit(startIndex + i, sum & 0x7FFF);\n        }\n        return carry;\n    }\n    __inplaceSub(subtrahend, startIndex, halfDigits) {\n        const fullSteps = (halfDigits - 1) >>> 1;\n        let borrow = 0;\n        if (startIndex & 1) {\n            // this:   [..][..][..]\n            // subtr.:   [..][..]\n            startIndex >>= 1;\n            let current = this.__digit(startIndex);\n            let r0 = current & 0x7FFF;\n            let i = 0;\n            for (; i < fullSteps; i++) {\n                const sub = subtrahend.__digit(i);\n                const r15 = (current >>> 15) - (sub & 0x7FFF) - borrow;\n                borrow = (r15 >>> 15) & 1;\n                this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n                current = this.__digit(startIndex + i + 1);\n                r0 = (current & 0x7FFF) - (sub >>> 15) - borrow;\n                borrow = (r0 >>> 15) & 1;\n            }\n            // Unrolling the last iteration gives a 5% performance benefit!\n            const sub = subtrahend.__digit(i);\n            const r15 = (current >>> 15) - (sub & 0x7FFF) - borrow;\n            borrow = (r15 >>> 15) & 1;\n            this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n            const subTop = sub >>> 15;\n            if (startIndex + i + 1 >= this.length) {\n                throw new RangeError('out of bounds');\n            }\n            if ((halfDigits & 1) === 0) {\n                current = this.__digit(startIndex + i + 1);\n                r0 = (current & 0x7FFF) - subTop - borrow;\n                borrow = (r0 >>> 15) & 1;\n                this.__setDigit(startIndex + subtrahend.length, (current & 0x3FFF8000) | (r0 & 0x7FFF));\n            }\n        }\n        else {\n            startIndex >>= 1;\n            let i = 0;\n            for (; i < subtrahend.length - 1; i++) {\n                const current = this.__digit(startIndex + i);\n                const sub = subtrahend.__digit(i);\n                const r0 = (current & 0x7FFF) - (sub & 0x7FFF) - borrow;\n                borrow = (r0 >>> 15) & 1;\n                const r15 = (current >>> 15) - (sub >>> 15) - borrow;\n                borrow = (r15 >>> 15) & 1;\n                this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n            }\n            const current = this.__digit(startIndex + i);\n            const sub = subtrahend.__digit(i);\n            const r0 = (current & 0x7FFF) - (sub & 0x7FFF) - borrow;\n            borrow = (r0 >>> 15) & 1;\n            let r15 = 0;\n            if ((halfDigits & 1) === 0) {\n                r15 = (current >>> 15) - (sub >>> 15) - borrow;\n                borrow = (r15 >>> 15) & 1;\n            }\n            this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n        }\n        return borrow;\n    }\n    __inplaceRightShift(shift) {\n        if (shift === 0)\n            return;\n        let carry = this.__digit(0) >>> shift;\n        const last = this.length - 1;\n        for (let i = 0; i < last; i++) {\n            const d = this.__digit(i + 1);\n            this.__setDigit(i, ((d << (30 - shift)) & 0x3FFFFFFF) | carry);\n            carry = d >>> shift;\n        }\n        this.__setDigit(last, carry);\n    }\n    static __specialLeftShift(x, shift, addDigit) {\n        const n = x.length;\n        const resultLength = n + addDigit;\n        const result = new JSBI(resultLength, false);\n        if (shift === 0) {\n            for (let i = 0; i < n; i++)\n                result.__setDigit(i, x.__digit(i));\n            if (addDigit > 0)\n                result.__setDigit(n, 0);\n            return result;\n        }\n        let carry = 0;\n        for (let i = 0; i < n; i++) {\n            const d = x.__digit(i);\n            result.__setDigit(i, ((d << shift) & 0x3FFFFFFF) | carry);\n            carry = d >>> (30 - shift);\n        }\n        if (addDigit > 0) {\n            result.__setDigit(n, carry);\n        }\n        return result;\n    }\n    static __leftShiftByAbsolute(x, y) {\n        const shift = JSBI.__toShiftAmount(y);\n        if (shift < 0)\n            throw new RangeError('BigInt too big');\n        const digitShift = (shift / 30) | 0;\n        const bitsShift = shift % 30;\n        const length = x.length;\n        const grow = bitsShift !== 0 &&\n            (x.__digit(length - 1) >>> (30 - bitsShift)) !== 0;\n        const resultLength = length + digitShift + (grow ? 1 : 0);\n        const result = new JSBI(resultLength, x.sign);\n        if (bitsShift === 0) {\n            let i = 0;\n            for (; i < digitShift; i++)\n                result.__setDigit(i, 0);\n            for (; i < resultLength; i++) {\n                result.__setDigit(i, x.__digit(i - digitShift));\n            }\n        }\n        else {\n            let carry = 0;\n            for (let i = 0; i < digitShift; i++)\n                result.__setDigit(i, 0);\n            for (let i = 0; i < length; i++) {\n                const d = x.__digit(i);\n                result.__setDigit(i + digitShift, ((d << bitsShift) & 0x3FFFFFFF) | carry);\n                carry = d >>> (30 - bitsShift);\n            }\n            if (grow) {\n                result.__setDigit(length + digitShift, carry);\n            }\n            else {\n                if (carry !== 0)\n                    throw new Error('implementation bug');\n            }\n        }\n        return result.__trim();\n    }\n    static __rightShiftByAbsolute(x, y) {\n        const length = x.length;\n        const sign = x.sign;\n        const shift = JSBI.__toShiftAmount(y);\n        if (shift < 0)\n            return JSBI.__rightShiftByMaximum(sign);\n        const digitShift = (shift / 30) | 0;\n        const bitsShift = shift % 30;\n        let resultLength = length - digitShift;\n        if (resultLength <= 0)\n            return JSBI.__rightShiftByMaximum(sign);\n        // For negative numbers, round down if any bit was shifted out (so that\n        // e.g. -5n >> 1n == -3n and not -2n). Check now whether this will happen\n        // and whether itc an cause overflow into a new digit. If we allocate the\n        // result large enough up front, it avoids having to do grow it later.\n        let mustRoundDown = false;\n        if (sign) {\n            const mask = (1 << bitsShift) - 1;\n            if ((x.__digit(digitShift) & mask) !== 0) {\n                mustRoundDown = true;\n            }\n            else {\n                for (let i = 0; i < digitShift; i++) {\n                    if (x.__digit(i) !== 0) {\n                        mustRoundDown = true;\n                        break;\n                    }\n                }\n            }\n        }\n        // If bitsShift is non-zero, it frees up bits, preventing overflow.\n        if (mustRoundDown && bitsShift === 0) {\n            // Overflow cannot happen if the most significant digit has unset bits.\n            const msd = x.__digit(length - 1);\n            const roundingCanOverflow = ~msd === 0;\n            if (roundingCanOverflow)\n                resultLength++;\n        }\n        let result = new JSBI(resultLength, sign);\n        if (bitsShift === 0) {\n            // Zero out any overflow digit (see \"roundingCanOverflow\" above).\n            result.__setDigit(resultLength - 1, 0);\n            for (let i = digitShift; i < length; i++) {\n                result.__setDigit(i - digitShift, x.__digit(i));\n            }\n        }\n        else {\n            let carry = x.__digit(digitShift) >>> bitsShift;\n            const last = length - digitShift - 1;\n            for (let i = 0; i < last; i++) {\n                const d = x.__digit(i + digitShift + 1);\n                result.__setDigit(i, ((d << (30 - bitsShift)) & 0x3FFFFFFF) | carry);\n                carry = d >>> bitsShift;\n            }\n            result.__setDigit(last, carry);\n        }\n        if (mustRoundDown) {\n            // Since the result is negative, rounding down means adding one to its\n            // absolute value. This cannot overflow.\n            result = JSBI.__absoluteAddOne(result, true, result);\n        }\n        return result.__trim();\n    }\n    static __rightShiftByMaximum(sign) {\n        if (sign) {\n            return JSBI.__oneDigit(1, true);\n        }\n        return JSBI.__zero();\n    }\n    static __toShiftAmount(x) {\n        if (x.length > 1)\n            return -1;\n        const value = x.__unsignedDigit(0);\n        if (value > JSBI.__kMaxLengthBits)\n            return -1;\n        return value;\n    }\n    static __toPrimitive(obj, hint = 'default') {\n        if (typeof obj !== 'object')\n            return obj;\n        if (obj.constructor === JSBI)\n            return obj;\n        if (typeof Symbol !== 'undefined' &&\n            typeof Symbol.toPrimitive === 'symbol') {\n            const exoticToPrim = obj[Symbol.toPrimitive];\n            if (exoticToPrim) {\n                const primitive = exoticToPrim(hint);\n                if (typeof primitive !== 'object')\n                    return primitive;\n                throw new TypeError('Cannot convert object to primitive value');\n            }\n        }\n        const valueOf = obj.valueOf;\n        if (valueOf) {\n            const primitive = valueOf.call(obj);\n            if (typeof primitive !== 'object')\n                return primitive;\n        }\n        const toString = obj.toString;\n        if (toString) {\n            const primitive = toString.call(obj);\n            if (typeof primitive !== 'object')\n                return primitive;\n        }\n        throw new TypeError('Cannot convert object to primitive value');\n    }\n    static __toNumeric(value) {\n        if (JSBI.__isBigInt(value))\n            return value;\n        return +value;\n    }\n    static __isBigInt(value) {\n        return typeof value === 'object' && value !== null &&\n            value.constructor === JSBI;\n    }\n    static __truncateToNBits(n, x) {\n        const neededDigits = ((n + 29) / 30) | 0;\n        const result = new JSBI(neededDigits, x.sign);\n        const last = neededDigits - 1;\n        for (let i = 0; i < last; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        let msd = x.__digit(last);\n        if ((n % 30) !== 0) {\n            const drop = 32 - (n % 30);\n            msd = (msd << drop) >>> drop;\n        }\n        result.__setDigit(last, msd);\n        return result.__trim();\n    }\n    static __truncateAndSubFromPowerOfTwo(n, x, resultSign) {\n        const neededDigits = ((n + 29) / 30) | 0;\n        const result = new JSBI(neededDigits, resultSign);\n        let i = 0;\n        const last = neededDigits - 1;\n        let borrow = 0;\n        const limit = Math.min(last, x.length);\n        for (; i < limit; i++) {\n            const r = 0 - x.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        for (; i < last; i++) {\n            result.__setDigit(i, (-borrow & 0x3FFFFFFF) | 0);\n        }\n        let msd = last < x.length ? x.__digit(last) : 0;\n        const msdBitsConsumed = n % 30;\n        let resultMsd;\n        if (msdBitsConsumed === 0) {\n            resultMsd = 0 - msd - borrow;\n            resultMsd &= 0x3FFFFFFF;\n        }\n        else {\n            const drop = 32 - msdBitsConsumed;\n            msd = (msd << drop) >>> drop;\n            const minuendMsd = 1 << (32 - drop);\n            resultMsd = minuendMsd - msd - borrow;\n            resultMsd &= (minuendMsd - 1);\n        }\n        result.__setDigit(last, resultMsd);\n        return result.__trim();\n    }\n    // Digit helpers.\n    __digit(i) {\n        return this[i];\n    }\n    __unsignedDigit(i) {\n        return this[i] >>> 0;\n    }\n    __setDigit(i, digit) {\n        this[i] = digit | 0;\n    }\n    __setDigitGrow(i, digit) {\n        this[i] = digit | 0;\n    }\n    __halfDigitLength() {\n        const len = this.length;\n        if (this.__unsignedDigit(len - 1) <= 0x7FFF)\n            return len * 2 - 1;\n        return len * 2;\n    }\n    __halfDigit(i) {\n        return (this[i >>> 1] >>> ((i & 1) * 15)) & 0x7FFF;\n    }\n    __setHalfDigit(i, value) {\n        const digitIndex = i >>> 1;\n        const previous = this.__digit(digitIndex);\n        const updated = (i & 1) ? (previous & 0x7FFF) | (value << 15)\n            : (previous & 0x3FFF8000) | (value & 0x7FFF);\n        this.__setDigit(digitIndex, updated);\n    }\n    static __digitPow(base, exponent) {\n        let result = 1;\n        while (exponent > 0) {\n            if (exponent & 1)\n                result *= base;\n            exponent >>>= 1;\n            base *= base;\n        }\n        return result;\n    }\n    static __isOneDigitInt(x) {\n        return (x & 0x3FFFFFFF) === x;\n    }\n}\nJSBI.__kMaxLength = 1 << 25;\nJSBI.__kMaxLengthBits = JSBI.__kMaxLength << 5;\n// Lookup table for the maximum number of bits required per character of a\n// base-N string representation of a number. To increase accuracy, the array\n// value is the actual value multiplied by 32. To generate this table:\n//\n// for (let i = 0; i <= 36; i++) {\n//   console.log(Math.ceil(Math.log2(i) * 32) + ',');\n// }\nJSBI.__kMaxBitsPerChar = [\n    0, 0, 32, 51, 64, 75, 83, 90, 96,\n    102, 107, 111, 115, 119, 122, 126, 128,\n    131, 134, 136, 139, 141, 143, 145, 147,\n    149, 151, 153, 154, 156, 158, 159, 160,\n    162, 163, 165, 166, // 33..36\n];\nJSBI.__kBitsPerCharTableShift = 5;\nJSBI.__kBitsPerCharTableMultiplier = 1 << JSBI.__kBitsPerCharTableShift;\nJSBI.__kConversionChars = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nJSBI.__kBitConversionBuffer = new ArrayBuffer(8);\nJSBI.__kBitConversionDouble = new Float64Array(JSBI.__kBitConversionBuffer);\nJSBI.__kBitConversionInts = new Int32Array(JSBI.__kBitConversionBuffer);\n// For IE11 compatibility.\n// Note that the custom replacements are tailored for JSBI's needs, and as\n// such are not reusable as general-purpose polyfills.\nJSBI.__clz30 = Math.clz32 ? function (x) {\n    return Math.clz32(x) - 2;\n} : function (x) {\n    if (x === 0)\n        return 30;\n    return 29 - (Math.log(x >>> 0) / Math.LN2 | 0) | 0;\n};\nJSBI.__imul = Math.imul || function (a, b) {\n    return (a * b) | 0;\n};\nexport default JSBI;\n//# sourceMappingURL=jsbi.js.map", "'use strict'\n\nexports.supports = function supports (...manifests) {\n  const manifest = manifests.reduce((acc, m) => Object.assign(acc, m), {})\n\n  return Object.assign(manifest, {\n    snapshots: manifest.snapshots || false,\n    permanence: manifest.permanence || false,\n    seek: manifest.seek || false,\n    clear: manifest.clear || false,\n    getMany: manifest.getMany || false,\n    keyIterator: manifest.keyIterator || false,\n    valueIterator: manifest.valueIterator || false,\n    iteratorNextv: manifest.iteratorNextv || false,\n    iteratorAll: manifest.iteratorAll || false,\n    status: manifest.status || false,\n    createIfMissing: manifest.createIfMissing || false,\n    errorIfExists: manifest.errorIfExists || false,\n    deferredOpen: manifest.deferredOpen || false,\n    promises: manifest.promises || false,\n    streams: manifest.streams || false,\n    encodings: Object.assign({}, manifest.encodings),\n    events: Object.assign({}, manifest.events),\n    additionalMethods: Object.assign({}, manifest.additionalMethods)\n  })\n}\n", "'use strict'\n\nmodule.exports = class ModuleError extends Error {\n  /**\n   * @param {string} message Error message\n   * @param {{ code?: string, cause?: Error, expected?: boolean, transient?: boolean }} [options]\n   */\n  constructor (message, options) {\n    super(message || '')\n\n    if (typeof options === 'object' && options !== null) {\n      if (options.code) this.code = String(options.code)\n      if (options.expected) this.expected = true\n      if (options.transient) this.transient = true\n      if (options.cause) this.cause = options.cause\n    }\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor)\n    }\n  }\n}\n", "'use strict'\n\n/** @type {{ textEncoder: TextEncoder, textDecoder: TextDecoder }|null} */\nlet lazy = null\n\n/**\n * Get semi-global instances of TextEncoder and TextDecoder.\n * @returns {{ textEncoder: TextEncoder, textDecoder: TextDecoder }}\n */\nmodule.exports = function () {\n  if (lazy === null) {\n    lazy = {\n      textEncoder: new TextEncoder(),\n      textDecoder: new TextDecoder()\n    }\n  }\n\n  return lazy\n}\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst formats = new Set(['buffer', 'view', 'utf8'])\n\n/**\n * @template TIn, TFormat, TOut\n * @abstract\n */\nclass Encoding {\n  /**\n   * @param {IEncoding<TIn,TFormat,TOut>} options\n   */\n  constructor (options) {\n    /** @type {(data: TIn) => TFormat} */\n    this.encode = options.encode || this.encode\n\n    /** @type {(data: TFormat) => TOut} */\n    this.decode = options.decode || this.decode\n\n    /** @type {string} */\n    this.name = options.name || this.name\n\n    /** @type {string} */\n    this.format = options.format || this.format\n\n    if (typeof this.encode !== 'function') {\n      throw new TypeError(\"The 'encode' property must be a function\")\n    }\n\n    if (typeof this.decode !== 'function') {\n      throw new TypeError(\"The 'decode' property must be a function\")\n    }\n\n    this.encode = this.encode.bind(this)\n    this.decode = this.decode.bind(this)\n\n    if (typeof this.name !== 'string' || this.name === '') {\n      throw new TypeError(\"The 'name' property must be a string\")\n    }\n\n    if (typeof this.format !== 'string' || !formats.has(this.format)) {\n      throw new TypeError(\"The 'format' property must be one of 'buffer', 'view', 'utf8'\")\n    }\n\n    if (options.createViewTranscoder) {\n      this.createViewTranscoder = options.createViewTranscoder\n    }\n\n    if (options.createBufferTranscoder) {\n      this.createBufferTranscoder = options.createBufferTranscoder\n    }\n\n    if (options.createUTF8Transcoder) {\n      this.createUTF8Transcoder = options.createUTF8Transcoder\n    }\n  }\n\n  get commonName () {\n    return /** @type {string} */ (this.name.split('+')[0])\n  }\n\n  /** @return {BufferFormat<TIn,TOut>} */\n  createBufferTranscoder () {\n    throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'buffer'`, {\n      code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n    })\n  }\n\n  /** @return {ViewFormat<TIn,TOut>} */\n  createViewTranscoder () {\n    throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'view'`, {\n      code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n    })\n  }\n\n  /** @return {UTF8Format<TIn,TOut>} */\n  createUTF8Transcoder () {\n    throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'utf8'`, {\n      code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n    })\n  }\n}\n\nexports.Encoding = Encoding\n\n/**\n * @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @typedef {import('./formats').BufferFormat<TIn,TOut>} BufferFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').ViewFormat<TIn,TOut>} ViewFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').UTF8Format<TIn,TOut>} UTF8Format\n * @template TIn, TOut\n */\n", "'use strict'\n\nconst { Buffer } = require('buffer') || {}\nconst { Encoding } = require('./encoding')\nconst textEndec = require('./text-endec')\n\n/**\n * @template TIn, TOut\n * @extends {Encoding<TIn,Buffer,TOut>}\n */\nclass BufferFormat extends Encoding {\n  /**\n   * @param {Omit<IEncoding<TIn, Buffer, TOut>, 'format'>} options\n   */\n  constructor (options) {\n    super({ ...options, format: 'buffer' })\n  }\n\n  /** @override */\n  createViewTranscoder () {\n    return new ViewFormat({\n      encode: this.encode, // Buffer is a view (UInt8Array)\n      decode: (data) => this.decode(\n        Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n      ),\n      name: `${this.name}+view`\n    })\n  }\n\n  /** @override */\n  createBufferTranscoder () {\n    return this\n  }\n}\n\n/**\n * @extends {Encoding<TIn,Uint8Array,TOut>}\n * @template TIn, TOut\n */\nclass ViewFormat extends Encoding {\n  /**\n   * @param {Omit<IEncoding<TIn, Uint8Array, TOut>, 'format'>} options\n   */\n  constructor (options) {\n    super({ ...options, format: 'view' })\n  }\n\n  /** @override */\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: (data) => {\n        const view = this.encode(data)\n        return Buffer.from(view.buffer, view.byteOffset, view.byteLength)\n      },\n      decode: this.decode, // Buffer is a view (UInt8Array)\n      name: `${this.name}+buffer`\n    })\n  }\n\n  /** @override */\n  createViewTranscoder () {\n    return this\n  }\n}\n\n/**\n * @extends {Encoding<TIn,string,TOut>}\n * @template TIn, TOut\n */\nclass UTF8Format extends Encoding {\n  /**\n   * @param {Omit<IEncoding<TIn, string, TOut>, 'format'>} options\n   */\n  constructor (options) {\n    super({ ...options, format: 'utf8' })\n  }\n\n  /** @override */\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: (data) => Buffer.from(this.encode(data), 'utf8'),\n      decode: (data) => this.decode(data.toString('utf8')),\n      name: `${this.name}+buffer`\n    })\n  }\n\n  /** @override */\n  createViewTranscoder () {\n    const { textEncoder, textDecoder } = textEndec()\n\n    return new ViewFormat({\n      encode: (data) => textEncoder.encode(this.encode(data)),\n      decode: (data) => this.decode(textDecoder.decode(data)),\n      name: `${this.name}+view`\n    })\n  }\n\n  /** @override */\n  createUTF8Transcoder () {\n    return this\n  }\n}\n\nexports.BufferFormat = BufferFormat\nexports.ViewFormat = ViewFormat\nexports.UTF8Format = UTF8Format\n\n/**\n * @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding\n * @template TIn, TFormat, TOut\n */\n", "'use strict'\n\nconst { Buffer } = require('buffer') || { Buffer: { isBuffer: () => false } }\nconst { textEncoder, textDecoder } = require('./text-endec')()\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./formats')\n\n/** @type {<T>(v: T) => v} */\nconst identity = (v) => v\n\n/**\n * @type {typeof import('./encodings').utf8}\n */\nexports.utf8 = new UTF8Format({\n  encode: function (data) {\n    // On node 16.9.1 buffer.toString() is 5x faster than TextDecoder\n    return Buffer.isBuffer(data)\n      ? data.toString('utf8')\n      : ArrayBuffer.isView(data)\n        ? textDecoder.decode(data)\n        : String(data)\n  },\n  decode: identity,\n  name: 'utf8',\n  createViewTranscoder () {\n    return new ViewFormat({\n      encode: function (data) {\n        return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n      },\n      decode: function (data) {\n        return textDecoder.decode(data)\n      },\n      name: `${this.name}+view`\n    })\n  },\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: function (data) {\n        return Buffer.isBuffer(data)\n          ? data\n          : ArrayBuffer.isView(data)\n            ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n            : Buffer.from(String(data), 'utf8')\n      },\n      decode: function (data) {\n        return data.toString('utf8')\n      },\n      name: `${this.name}+buffer`\n    })\n  }\n})\n\n/**\n * @type {typeof import('./encodings').json}\n */\nexports.json = new UTF8Format({\n  encode: JSON.stringify,\n  decode: JSON.parse,\n  name: 'json'\n})\n\n/**\n * @type {typeof import('./encodings').buffer}\n */\nexports.buffer = new BufferFormat({\n  encode: function (data) {\n    return Buffer.isBuffer(data)\n      ? data\n      : ArrayBuffer.isView(data)\n        ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n        : Buffer.from(String(data), 'utf8')\n  },\n  decode: identity,\n  name: 'buffer',\n  createViewTranscoder () {\n    return new ViewFormat({\n      encode: function (data) {\n        return ArrayBuffer.isView(data) ? data : Buffer.from(String(data), 'utf8')\n      },\n      decode: function (data) {\n        return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n      },\n      name: `${this.name}+view`\n    })\n  }\n})\n\n/**\n * @type {typeof import('./encodings').view}\n */\nexports.view = new ViewFormat({\n  encode: function (data) {\n    return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n  },\n  decode: identity,\n  name: 'view',\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: function (data) {\n        return Buffer.isBuffer(data)\n          ? data\n          : ArrayBuffer.isView(data)\n            ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n            : Buffer.from(String(data), 'utf8')\n      },\n      decode: identity,\n      name: `${this.name}+buffer`\n    })\n  }\n})\n\n/**\n * @type {typeof import('./encodings').hex}\n */\nexports.hex = new BufferFormat({\n  encode: function (data) {\n    return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'hex')\n  },\n  decode: function (buffer) {\n    return buffer.toString('hex')\n  },\n  name: 'hex'\n})\n\n/**\n * @type {typeof import('./encodings').base64}\n */\nexports.base64 = new BufferFormat({\n  encode: function (data) {\n    return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'base64')\n  },\n  decode: function (buffer) {\n    return buffer.toString('base64')\n  },\n  name: 'base64'\n})\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst encodings = require('./lib/encodings')\nconst { Encoding } = require('./lib/encoding')\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./lib/formats')\n\nconst kFormats = Symbol('formats')\nconst kEncodings = Symbol('encodings')\nconst validFormats = new Set(['buffer', 'view', 'utf8'])\n\n/** @template T */\nclass Transcoder {\n  /**\n   * @param {Array<'buffer'|'view'|'utf8'>} formats\n   */\n  constructor (formats) {\n    if (!Array.isArray(formats)) {\n      throw new TypeError(\"The first argument 'formats' must be an array\")\n    } else if (!formats.every(f => validFormats.has(f))) {\n      // Note: we only only support aliases in key- and valueEncoding options (where we already did)\n      throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n    }\n\n    /** @type {Map<string|MixedEncoding<any, any, any>, Encoding<any, any, any>>} */\n    this[kEncodings] = new Map()\n    this[kFormats] = new Set(formats)\n\n    // Register encodings (done early in order to populate encodings())\n    for (const k in encodings) {\n      try {\n        this.encoding(k)\n      } catch (err) {\n        /* istanbul ignore if: assertion */\n        if (err.code !== 'LEVEL_ENCODING_NOT_SUPPORTED') throw err\n      }\n    }\n  }\n\n  /**\n   * @returns {Array<Encoding<any,T,any>>}\n   */\n  encodings () {\n    return Array.from(new Set(this[kEncodings].values()))\n  }\n\n  /**\n   * @param {string|MixedEncoding<any, any, any>} encoding\n   * @returns {Encoding<any, T, any>}\n   */\n  encoding (encoding) {\n    let resolved = this[kEncodings].get(encoding)\n\n    if (resolved === undefined) {\n      if (typeof encoding === 'string' && encoding !== '') {\n        resolved = lookup[encoding]\n\n        if (!resolved) {\n          throw new ModuleError(`Encoding '${encoding}' is not found`, {\n            code: 'LEVEL_ENCODING_NOT_FOUND'\n          })\n        }\n      } else if (typeof encoding !== 'object' || encoding === null) {\n        throw new TypeError(\"First argument 'encoding' must be a string or object\")\n      } else {\n        resolved = from(encoding)\n      }\n\n      const { name, format } = resolved\n\n      if (!this[kFormats].has(format)) {\n        if (this[kFormats].has('view')) {\n          resolved = resolved.createViewTranscoder()\n        } else if (this[kFormats].has('buffer')) {\n          resolved = resolved.createBufferTranscoder()\n        } else if (this[kFormats].has('utf8')) {\n          resolved = resolved.createUTF8Transcoder()\n        } else {\n          throw new ModuleError(`Encoding '${name}' cannot be transcoded`, {\n            code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n          })\n        }\n      }\n\n      for (const k of [encoding, name, resolved.name, resolved.commonName]) {\n        this[kEncodings].set(k, resolved)\n      }\n    }\n\n    return resolved\n  }\n}\n\nexports.Transcoder = Transcoder\n\n/**\n * @param {MixedEncoding<any, any, any>} options\n * @returns {Encoding<any, any, any>}\n */\nfunction from (options) {\n  if (options instanceof Encoding) {\n    return options\n  }\n\n  // Loosely typed for ecosystem compatibility\n  const maybeType = 'type' in options && typeof options.type === 'string' ? options.type : undefined\n  const name = options.name || maybeType || `anonymous-${anonymousCount++}`\n\n  switch (detectFormat(options)) {\n    case 'view': return new ViewFormat({ ...options, name })\n    case 'utf8': return new UTF8Format({ ...options, name })\n    case 'buffer': return new BufferFormat({ ...options, name })\n    default: {\n      throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n    }\n  }\n}\n\n/**\n * If format is not provided, fallback to detecting `level-codec`\n * or `multiformats` encodings, else assume a format of buffer.\n * @param {MixedEncoding<any, any, any>} options\n * @returns {string}\n */\nfunction detectFormat (options) {\n  if ('format' in options && options.format !== undefined) {\n    return options.format\n  } else if ('buffer' in options && typeof options.buffer === 'boolean') {\n    return options.buffer ? 'buffer' : 'utf8' // level-codec\n  } else if ('code' in options && Number.isInteger(options.code)) {\n    return 'view' // multiformats\n  } else {\n    return 'buffer'\n  }\n}\n\n/**\n * @typedef {import('./lib/encoding').MixedEncoding<TIn,TFormat,TOut>} MixedEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @type {Object.<string, Encoding<any, any, any>>}\n */\nconst aliases = {\n  binary: encodings.buffer,\n  'utf-8': encodings.utf8\n}\n\n/**\n * @type {Object.<string, Encoding<any, any, any>>}\n */\nconst lookup = {\n  ...encodings,\n  ...aliases\n}\n\nlet anonymousCount = 0\n", "module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n", "'use strict'\n\nvar nextTick = require('./next-tick')\n\nexports.fromCallback = function (callback, symbol) {\n  if (callback === undefined) {\n    var promise = new Promise(function (resolve, reject) {\n      callback = function (err, res) {\n        if (err) reject(err)\n        else resolve(res)\n      }\n    })\n\n    callback[symbol !== undefined ? symbol : 'promise'] = promise\n  } else if (typeof callback !== 'function') {\n    throw new TypeError('Callback must be a function')\n  }\n\n  return callback\n}\n\nexports.fromPromise = function (promise, callback) {\n  if (callback === undefined) return promise\n\n  promise\n    .then(function (res) { nextTick(() => callback(null, res)) })\n    .catch(function (err) { nextTick(() => callback(err)) })\n}\n", "'use strict'\n\nexports.getCallback = function (options, callback) {\n  return typeof options === 'function' ? options : callback\n}\n\nexports.getOptions = function (options, def) {\n  if (typeof options === 'object' && options !== null) {\n    return options\n  }\n\n  if (def !== undefined) {\n    return def\n  }\n\n  return {}\n}\n", "'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getOptions, getCallback } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kCallback = Symbol('callback')\nconst kWorking = Symbol('working')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kAutoClose = Symbol('autoClose')\nconst kFinishWork = Symbol('finishWork')\nconst kReturnMany = Symbol('returnMany')\nconst kClosing = Symbol('closing')\nconst kHandleClose = Symbol('handleClose')\nconst kClosed = Symbol('closed')\nconst kCloseCallbacks = Symbol('closeCallbacks')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst kAbortOnClose = Symbol('abortOnClose')\nconst kLegacy = Symbol('legacy')\nconst kKeys = Symbol('keys')\nconst kValues = Symbol('values')\nconst kLimit = Symbol('limit')\nconst kCount = Symbol('count')\n\nconst emptyOptions = Object.freeze({})\nconst noop = () => {}\nlet warnedEnd = false\n\n// This class is an internal utility for common functionality between AbstractIterator,\n// AbstractKeyIterator and AbstractValueIterator. It's not exported.\nclass CommonIterator {\n  constructor (db, options, legacy) {\n    if (typeof db !== 'object' || db === null) {\n      const hint = db === null ? 'null' : typeof db\n      throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n    }\n\n    if (typeof options !== 'object' || options === null) {\n      throw new TypeError('The second argument must be an options object')\n    }\n\n    this[kClosed] = false\n    this[kCloseCallbacks] = []\n    this[kWorking] = false\n    this[kClosing] = false\n    this[kAutoClose] = false\n    this[kCallback] = null\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n    this[kHandleClose] = this[kHandleClose].bind(this)\n    this[kKeyEncoding] = options[kKeyEncoding]\n    this[kValueEncoding] = options[kValueEncoding]\n    this[kLegacy] = legacy\n    this[kLimit] = Number.isInteger(options.limit) && options.limit >= 0 ? options.limit : Infinity\n    this[kCount] = 0\n\n    // Undocumented option to abort pending work on close(). Used by the\n    // many-level module as a temporary solution to a blocked close().\n    // TODO (next major): consider making this the default behavior. Native\n    // implementations should have their own logic to safely close iterators.\n    this[kAbortOnClose] = !!options.abortOnClose\n\n    this.db = db\n    this.db.attachResource(this)\n    this.nextTick = db.nextTick\n  }\n\n  get count () {\n    return this[kCount]\n  }\n\n  get limit () {\n    return this[kLimit]\n  }\n\n  next (callback) {\n    let promise\n\n    if (callback === undefined) {\n      promise = new Promise((resolve, reject) => {\n        callback = (err, key, value) => {\n          if (err) reject(err)\n          else if (!this[kLegacy]) resolve(key)\n          else if (key === undefined && value === undefined) resolve()\n          else resolve([key, value])\n        }\n      })\n    } else if (typeof callback !== 'function') {\n      throw new TypeError('Callback must be a function')\n    }\n\n    if (this[kClosing]) {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    } else if (this[kWorking]) {\n      this.nextTick(callback, new ModuleError('Iterator is busy: cannot call next() until previous call has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      }))\n    } else {\n      this[kWorking] = true\n      this[kCallback] = callback\n\n      if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleOne], null)\n      else this._next(this[kHandleOne])\n    }\n\n    return promise\n  }\n\n  _next (callback) {\n    this.nextTick(callback)\n  }\n\n  nextv (size, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, emptyOptions)\n\n    if (!Number.isInteger(size)) {\n      this.nextTick(callback, new TypeError(\"The first argument 'size' must be an integer\"))\n      return callback[kPromise]\n    }\n\n    if (this[kClosing]) {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    } else if (this[kWorking]) {\n      this.nextTick(callback, new ModuleError('Iterator is busy: cannot call nextv() until previous call has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      }))\n    } else {\n      if (size < 1) size = 1\n      if (this[kLimit] < Infinity) size = Math.min(size, this[kLimit] - this[kCount])\n\n      this[kWorking] = true\n      this[kCallback] = callback\n\n      if (size <= 0) this.nextTick(this[kHandleMany], null, [])\n      else this._nextv(size, options, this[kHandleMany])\n    }\n\n    return callback[kPromise]\n  }\n\n  _nextv (size, options, callback) {\n    const acc = []\n    const onnext = (err, key, value) => {\n      if (err) {\n        return callback(err)\n      } else if (this[kLegacy] ? key === undefined && value === undefined : key === undefined) {\n        return callback(null, acc)\n      }\n\n      acc.push(this[kLegacy] ? [key, value] : key)\n\n      if (acc.length === size) {\n        callback(null, acc)\n      } else {\n        this._next(onnext)\n      }\n    }\n\n    this._next(onnext)\n  }\n\n  all (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, emptyOptions)\n\n    if (this[kClosing]) {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    } else if (this[kWorking]) {\n      this.nextTick(callback, new ModuleError('Iterator is busy: cannot call all() until previous call has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      }))\n    } else {\n      this[kWorking] = true\n      this[kCallback] = callback\n      this[kAutoClose] = true\n\n      if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleMany], null, [])\n      else this._all(options, this[kHandleMany])\n    }\n\n    return callback[kPromise]\n  }\n\n  _all (options, callback) {\n    // Must count here because we're directly calling _nextv()\n    let count = this[kCount]\n    const acc = []\n\n    const nextv = () => {\n      // Not configurable, because implementations should optimize _all().\n      const size = this[kLimit] < Infinity ? Math.min(1e3, this[kLimit] - count) : 1e3\n\n      if (size <= 0) {\n        this.nextTick(callback, null, acc)\n      } else {\n        this._nextv(size, emptyOptions, onnextv)\n      }\n    }\n\n    const onnextv = (err, items) => {\n      if (err) {\n        callback(err)\n      } else if (items.length === 0) {\n        callback(null, acc)\n      } else {\n        acc.push.apply(acc, items)\n        count += items.length\n        nextv()\n      }\n    }\n\n    nextv()\n  }\n\n  [kFinishWork] () {\n    const cb = this[kCallback]\n\n    // Callback will be null if work was aborted on close\n    if (this[kAbortOnClose] && cb === null) return noop\n\n    this[kWorking] = false\n    this[kCallback] = null\n\n    if (this[kClosing]) this._close(this[kHandleClose])\n\n    return cb\n  }\n\n  [kReturnMany] (cb, err, items) {\n    if (this[kAutoClose]) {\n      this.close(cb.bind(null, err, items))\n    } else {\n      cb(err, items)\n    }\n  }\n\n  seek (target, options) {\n    options = getOptions(options, emptyOptions)\n\n    if (this[kClosing]) {\n      // Don't throw here, to be kind to implementations that wrap\n      // another db and don't necessarily control when the db is closed\n    } else if (this[kWorking]) {\n      throw new ModuleError('Iterator is busy: cannot call seek() until next() has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      })\n    } else {\n      const keyEncoding = this.db.keyEncoding(options.keyEncoding || this[kKeyEncoding])\n      const keyFormat = keyEncoding.format\n\n      if (options.keyEncoding !== keyFormat) {\n        options = { ...options, keyEncoding: keyFormat }\n      }\n\n      const mapped = this.db.prefixKey(keyEncoding.encode(target), keyFormat)\n      this._seek(mapped, options)\n    }\n  }\n\n  _seek (target, options) {\n    throw new ModuleError('Iterator does not support seek()', {\n      code: 'LEVEL_NOT_SUPPORTED'\n    })\n  }\n\n  close (callback) {\n    callback = fromCallback(callback, kPromise)\n\n    if (this[kClosed]) {\n      this.nextTick(callback)\n    } else if (this[kClosing]) {\n      this[kCloseCallbacks].push(callback)\n    } else {\n      this[kClosing] = true\n      this[kCloseCallbacks].push(callback)\n\n      if (!this[kWorking]) {\n        this._close(this[kHandleClose])\n      } else if (this[kAbortOnClose]) {\n        // Don't wait for work to finish. Subsequently ignore the result.\n        const cb = this[kFinishWork]()\n\n        cb(new ModuleError('Aborted on iterator close()', {\n          code: 'LEVEL_ITERATOR_NOT_OPEN'\n        }))\n      }\n    }\n\n    return callback[kPromise]\n  }\n\n  _close (callback) {\n    this.nextTick(callback)\n  }\n\n  [kHandleClose] () {\n    this[kClosed] = true\n    this.db.detachResource(this)\n\n    const callbacks = this[kCloseCallbacks]\n    this[kCloseCallbacks] = []\n\n    for (const cb of callbacks) {\n      cb()\n    }\n  }\n\n  async * [Symbol.asyncIterator] () {\n    try {\n      let item\n\n      while ((item = (await this.next())) !== undefined) {\n        yield item\n      }\n    } finally {\n      if (!this[kClosed]) await this.close()\n    }\n  }\n}\n\n// For backwards compatibility this class is not (yet) called AbstractEntryIterator.\nclass AbstractIterator extends CommonIterator {\n  constructor (db, options) {\n    super(db, options, true)\n    this[kKeys] = options.keys !== false\n    this[kValues] = options.values !== false\n  }\n\n  [kHandleOne] (err, key, value) {\n    const cb = this[kFinishWork]()\n    if (err) return cb(err)\n\n    try {\n      key = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n      value = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n    } catch (err) {\n      return cb(new IteratorDecodeError('entry', err))\n    }\n\n    if (!(key === undefined && value === undefined)) {\n      this[kCount]++\n    }\n\n    cb(null, key, value)\n  }\n\n  [kHandleMany] (err, entries) {\n    const cb = this[kFinishWork]()\n    if (err) return this[kReturnMany](cb, err)\n\n    try {\n      for (const entry of entries) {\n        const key = entry[0]\n        const value = entry[1]\n\n        entry[0] = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n        entry[1] = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n      }\n    } catch (err) {\n      return this[kReturnMany](cb, new IteratorDecodeError('entries', err))\n    }\n\n    this[kCount] += entries.length\n    this[kReturnMany](cb, null, entries)\n  }\n\n  end (callback) {\n    if (!warnedEnd && typeof console !== 'undefined') {\n      warnedEnd = true\n      console.warn(new ModuleError(\n        'The iterator.end() method was renamed to close() and end() is an alias that will be removed in a future version',\n        { code: 'LEVEL_LEGACY' }\n      ))\n    }\n\n    return this.close(callback)\n  }\n}\n\nclass AbstractKeyIterator extends CommonIterator {\n  constructor (db, options) {\n    super(db, options, false)\n  }\n\n  [kHandleOne] (err, key) {\n    const cb = this[kFinishWork]()\n    if (err) return cb(err)\n\n    try {\n      key = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n    } catch (err) {\n      return cb(new IteratorDecodeError('key', err))\n    }\n\n    if (key !== undefined) this[kCount]++\n    cb(null, key)\n  }\n\n  [kHandleMany] (err, keys) {\n    const cb = this[kFinishWork]()\n    if (err) return this[kReturnMany](cb, err)\n\n    try {\n      for (let i = 0; i < keys.length; i++) {\n        const key = keys[i]\n        keys[i] = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n      }\n    } catch (err) {\n      return this[kReturnMany](cb, new IteratorDecodeError('keys', err))\n    }\n\n    this[kCount] += keys.length\n    this[kReturnMany](cb, null, keys)\n  }\n}\n\nclass AbstractValueIterator extends CommonIterator {\n  constructor (db, options) {\n    super(db, options, false)\n  }\n\n  [kHandleOne] (err, value) {\n    const cb = this[kFinishWork]()\n    if (err) return cb(err)\n\n    try {\n      value = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n    } catch (err) {\n      return cb(new IteratorDecodeError('value', err))\n    }\n\n    if (value !== undefined) this[kCount]++\n    cb(null, value)\n  }\n\n  [kHandleMany] (err, values) {\n    const cb = this[kFinishWork]()\n    if (err) return this[kReturnMany](cb, err)\n\n    try {\n      for (let i = 0; i < values.length; i++) {\n        const value = values[i]\n        values[i] = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n      }\n    } catch (err) {\n      return this[kReturnMany](cb, new IteratorDecodeError('values', err))\n    }\n\n    this[kCount] += values.length\n    this[kReturnMany](cb, null, values)\n  }\n}\n\n// Internal utility, not typed or exported\nclass IteratorDecodeError extends ModuleError {\n  constructor (subject, cause) {\n    super(`Iterator could not decode ${subject}`, {\n      code: 'LEVEL_DECODE_ERROR',\n      cause\n    })\n  }\n}\n\n// To help migrating to abstract-level\nfor (const k of ['_ended property', '_nexting property', '_end method']) {\n  Object.defineProperty(AbstractIterator.prototype, k.split(' ')[0], {\n    get () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) },\n    set () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) }\n  })\n}\n\n// Exposed so that AbstractLevel can set these options\nAbstractIterator.keyEncoding = kKeyEncoding\nAbstractIterator.valueEncoding = kValueEncoding\n\nexports.AbstractIterator = AbstractIterator\nexports.AbstractKeyIterator = AbstractKeyIterator\nexports.AbstractValueIterator = AbstractValueIterator\n", "'use strict'\n\nconst { AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kIterator = Symbol('iterator')\nconst kCallback = Symbol('callback')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\n\nclass DefaultKeyIterator extends AbstractKeyIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kIterator] = db.iterator({ ...options, keys: true, values: false })\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n  }\n}\n\nclass DefaultValueIterator extends AbstractValueIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kIterator] = db.iterator({ ...options, keys: false, values: true })\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n  }\n}\n\nfor (const Iterator of [DefaultKeyIterator, DefaultValueIterator]) {\n  const keys = Iterator === DefaultKeyIterator\n  const mapEntry = keys ? (entry) => entry[0] : (entry) => entry[1]\n\n  Iterator.prototype._next = function (callback) {\n    this[kCallback] = callback\n    this[kIterator].next(this[kHandleOne])\n  }\n\n  Iterator.prototype[kHandleOne] = function (err, key, value) {\n    const callback = this[kCallback]\n    if (err) callback(err)\n    else callback(null, keys ? key : value)\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    this[kCallback] = callback\n    this[kIterator].nextv(size, options, this[kHandleMany])\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    this[kCallback] = callback\n    this[kIterator].all(options, this[kHandleMany])\n  }\n\n  Iterator.prototype[kHandleMany] = function (err, entries) {\n    const callback = this[kCallback]\n    if (err) callback(err)\n    else callback(null, entries.map(mapEntry))\n  }\n\n  Iterator.prototype._seek = function (target, options) {\n    this[kIterator].seek(target, options)\n  }\n\n  Iterator.prototype._close = function (callback) {\n    this[kIterator].close(callback)\n  }\n}\n\n// Internal utilities, should be typed as AbstractKeyIterator and AbstractValueIterator\nexports.DefaultKeyIterator = DefaultKeyIterator\nexports.DefaultValueIterator = DefaultValueIterator\n", "'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\nconst ModuleError = require('module-error')\n\nconst kNut = Symbol('nut')\nconst kUndefer = Symbol('undefer')\nconst kFactory = Symbol('factory')\n\nclass DeferredIterator extends AbstractIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kNut] = null\n    this[kFactory] = () => db.iterator(options)\n\n    this.db.defer(() => this[kUndefer]())\n  }\n}\n\nclass DeferredKeyIterator extends AbstractKeyIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kNut] = null\n    this[kFactory] = () => db.keys(options)\n\n    this.db.defer(() => this[kUndefer]())\n  }\n}\n\nclass DeferredValueIterator extends AbstractValueIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kNut] = null\n    this[kFactory] = () => db.values(options)\n\n    this.db.defer(() => this[kUndefer]())\n  }\n}\n\nfor (const Iterator of [DeferredIterator, DeferredKeyIterator, DeferredValueIterator]) {\n  Iterator.prototype[kUndefer] = function () {\n    if (this.db.status === 'open') {\n      this[kNut] = this[kFactory]()\n    }\n  }\n\n  Iterator.prototype._next = function (callback) {\n    if (this[kNut] !== null) {\n      this[kNut].next(callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._next(callback))\n    } else {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    }\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    if (this[kNut] !== null) {\n      this[kNut].nextv(size, options, callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._nextv(size, options, callback))\n    } else {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    }\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    if (this[kNut] !== null) {\n      this[kNut].all(callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._all(options, callback))\n    } else {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    }\n  }\n\n  Iterator.prototype._seek = function (target, options) {\n    if (this[kNut] !== null) {\n      // TODO: explain why we need _seek() rather than seek() here\n      this[kNut]._seek(target, options)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._seek(target, options))\n    }\n  }\n\n  Iterator.prototype._close = function (callback) {\n    if (this[kNut] !== null) {\n      this[kNut].close(callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._close(callback))\n    } else {\n      this.nextTick(callback)\n    }\n  }\n}\n\nexports.DeferredIterator = DeferredIterator\nexports.DeferredKeyIterator = DeferredKeyIterator\nexports.DeferredValueIterator = DeferredValueIterator\n", "'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getCallback, getOptions } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kStatus = Symbol('status')\nconst kOperations = Symbol('operations')\nconst kFinishClose = Symbol('finishClose')\nconst kCloseCallbacks = Symbol('closeCallbacks')\n\nclass AbstractChainedBatch {\n  constructor (db) {\n    if (typeof db !== 'object' || db === null) {\n      const hint = db === null ? 'null' : typeof db\n      throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n    }\n\n    this[kOperations] = []\n    this[kCloseCallbacks] = []\n    this[kStatus] = 'open'\n    this[kFinishClose] = this[kFinishClose].bind(this)\n\n    this.db = db\n    this.db.attachResource(this)\n    this.nextTick = db.nextTick\n  }\n\n  get length () {\n    return this[kOperations].length\n  }\n\n  put (key, value, options) {\n    if (this[kStatus] !== 'open') {\n      throw new ModuleError('Batch is not open: cannot call put() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      })\n    }\n\n    const err = this.db._checkKey(key) || this.db._checkValue(value)\n    if (err) throw err\n\n    const db = options && options.sublevel != null ? options.sublevel : this.db\n    const original = options\n    const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = db.valueEncoding(options && options.valueEncoding)\n    const keyFormat = keyEncoding.format\n\n    // Forward encoding options\n    options = { ...options, keyEncoding: keyFormat, valueEncoding: valueEncoding.format }\n\n    // Prevent double prefixing\n    if (db !== this.db) {\n      options.sublevel = null\n    }\n\n    const mappedKey = db.prefixKey(keyEncoding.encode(key), keyFormat)\n    const mappedValue = valueEncoding.encode(value)\n\n    this._put(mappedKey, mappedValue, options)\n    this[kOperations].push({ ...original, type: 'put', key, value })\n\n    return this\n  }\n\n  _put (key, value, options) {}\n\n  del (key, options) {\n    if (this[kStatus] !== 'open') {\n      throw new ModuleError('Batch is not open: cannot call del() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      })\n    }\n\n    const err = this.db._checkKey(key)\n    if (err) throw err\n\n    const db = options && options.sublevel != null ? options.sublevel : this.db\n    const original = options\n    const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n    const keyFormat = keyEncoding.format\n\n    // Forward encoding options\n    options = { ...options, keyEncoding: keyFormat }\n\n    // Prevent double prefixing\n    if (db !== this.db) {\n      options.sublevel = null\n    }\n\n    this._del(db.prefixKey(keyEncoding.encode(key), keyFormat), options)\n    this[kOperations].push({ ...original, type: 'del', key })\n\n    return this\n  }\n\n  _del (key, options) {}\n\n  clear () {\n    if (this[kStatus] !== 'open') {\n      throw new ModuleError('Batch is not open: cannot call clear() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      })\n    }\n\n    this._clear()\n    this[kOperations] = []\n\n    return this\n  }\n\n  _clear () {}\n\n  write (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options)\n\n    if (this[kStatus] !== 'open') {\n      this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      }))\n    } else if (this.length === 0) {\n      this.close(callback)\n    } else {\n      this[kStatus] = 'writing'\n      this._write(options, (err) => {\n        this[kStatus] = 'closing'\n        this[kCloseCallbacks].push(() => callback(err))\n\n        // Emit after setting 'closing' status, because event may trigger a\n        // db close which in turn triggers (idempotently) closing this batch.\n        if (!err) this.db.emit('batch', this[kOperations])\n\n        this._close(this[kFinishClose])\n      })\n    }\n\n    return callback[kPromise]\n  }\n\n  _write (options, callback) {}\n\n  close (callback) {\n    callback = fromCallback(callback, kPromise)\n\n    if (this[kStatus] === 'closing') {\n      this[kCloseCallbacks].push(callback)\n    } else if (this[kStatus] === 'closed') {\n      this.nextTick(callback)\n    } else {\n      this[kCloseCallbacks].push(callback)\n\n      if (this[kStatus] !== 'writing') {\n        this[kStatus] = 'closing'\n        this._close(this[kFinishClose])\n      }\n    }\n\n    return callback[kPromise]\n  }\n\n  _close (callback) {\n    this.nextTick(callback)\n  }\n\n  [kFinishClose] () {\n    this[kStatus] = 'closed'\n    this.db.detachResource(this)\n\n    const callbacks = this[kCloseCallbacks]\n    this[kCloseCallbacks] = []\n\n    for (const cb of callbacks) {\n      cb()\n    }\n  }\n}\n\nexports.AbstractChainedBatch = AbstractChainedBatch\n", "'use strict'\n\nconst { AbstractChainedBatch } = require('../abstract-chained-batch')\nconst ModuleError = require('module-error')\nconst kEncoded = Symbol('encoded')\n\n// Functional default for chained batch, with support of deferred open\nclass DefaultChainedBatch extends AbstractChainedBatch {\n  constructor (db) {\n    super(db)\n    this[kEncoded] = []\n  }\n\n  _put (key, value, options) {\n    this[kEncoded].push({ ...options, type: 'put', key, value })\n  }\n\n  _del (key, options) {\n    this[kEncoded].push({ ...options, type: 'del', key })\n  }\n\n  _clear () {\n    this[kEncoded] = []\n  }\n\n  // Assumes this[kEncoded] cannot change after write()\n  _write (options, callback) {\n    if (this.db.status === 'opening') {\n      this.db.defer(() => this._write(options, callback))\n    } else if (this.db.status === 'open') {\n      if (this[kEncoded].length === 0) this.nextTick(callback)\n      else this.db._batch(this[kEncoded], options, callback)\n    } else {\n      this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      }))\n    }\n  }\n}\n\nexports.DefaultChainedBatch = DefaultChainedBatch\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst rangeOptions = new Set(['lt', 'lte', 'gt', 'gte'])\n\nmodule.exports = function (options, keyEncoding) {\n  const result = {}\n\n  for (const k in options) {\n    if (!hasOwnProperty.call(options, k)) continue\n    if (k === 'keyEncoding' || k === 'valueEncoding') continue\n\n    if (k === 'start' || k === 'end') {\n      throw new ModuleError(`The legacy range option '${k}' has been removed`, {\n        code: 'LEVEL_LEGACY'\n      })\n    } else if (k === 'encoding') {\n      // To help migrating to abstract-level\n      throw new ModuleError(\"The levelup-style 'encoding' alias has been removed, use 'valueEncoding' instead\", {\n        code: 'LEVEL_LEGACY'\n      })\n    }\n\n    if (rangeOptions.has(k)) {\n      // Note that we don't reject nullish and empty options here. While\n      // those types are invalid as keys, they are valid as range options.\n      result[k] = keyEncoding.encode(options[k])\n    } else {\n      result[k] = options[k]\n    }\n  }\n\n  result.reverse = !!result.reverse\n  result.limit = Number.isInteger(result.limit) && result.limit >= 0 ? result.limit : -1\n\n  return result\n}\n", "/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n  ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n  // reuse resolved promise, and allocate it lazily\n  : cb => (promise || (promise = Promise.resolve()))\n    .then(cb)\n    .catch(err => setTimeout(() => { throw err }, 0))\n", "'use strict'\n\nconst queueMicrotask = require('queue-microtask')\n\nmodule.exports = function (fn, ...args) {\n  if (args.length === 0) {\n    queueMicrotask(fn)\n  } else {\n    queueMicrotask(() => fn(...args))\n  }\n}\n", "'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kUnfix = Symbol('unfix')\nconst kIterator = Symbol('iterator')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kCallback = Symbol('callback')\n\n// TODO: unfix natively if db supports it\nclass AbstractSublevelIterator extends AbstractIterator {\n  constructor (db, options, iterator, unfix) {\n    super(db, options)\n\n    this[kIterator] = iterator\n    this[kUnfix] = unfix\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n    this[kCallback] = null\n  }\n\n  [kHandleOne] (err, key, value) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n    if (key !== undefined) key = this[kUnfix](key)\n    callback(err, key, value)\n  }\n\n  [kHandleMany] (err, entries) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n\n    for (const entry of entries) {\n      const key = entry[0]\n      if (key !== undefined) entry[0] = this[kUnfix](key)\n    }\n\n    callback(err, entries)\n  }\n}\n\nclass AbstractSublevelKeyIterator extends AbstractKeyIterator {\n  constructor (db, options, iterator, unfix) {\n    super(db, options)\n\n    this[kIterator] = iterator\n    this[kUnfix] = unfix\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n    this[kCallback] = null\n  }\n\n  [kHandleOne] (err, key) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n    if (key !== undefined) key = this[kUnfix](key)\n    callback(err, key)\n  }\n\n  [kHandleMany] (err, keys) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i]\n      if (key !== undefined) keys[i] = this[kUnfix](key)\n    }\n\n    callback(err, keys)\n  }\n}\n\nclass AbstractSublevelValueIterator extends AbstractValueIterator {\n  constructor (db, options, iterator) {\n    super(db, options)\n    this[kIterator] = iterator\n  }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator]) {\n  Iterator.prototype._next = function (callback) {\n    this[kCallback] = callback\n    this[kIterator].next(this[kHandleOne])\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    this[kCallback] = callback\n    this[kIterator].nextv(size, options, this[kHandleMany])\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    this[kCallback] = callback\n    this[kIterator].all(options, this[kHandleMany])\n  }\n}\n\nfor (const Iterator of [AbstractSublevelValueIterator]) {\n  Iterator.prototype._next = function (callback) {\n    this[kIterator].next(callback)\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    this[kIterator].nextv(size, options, callback)\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    this[kIterator].all(options, callback)\n  }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator, AbstractSublevelValueIterator]) {\n  Iterator.prototype._seek = function (target, options) {\n    this[kIterator].seek(target, options)\n  }\n\n  Iterator.prototype._close = function (callback) {\n    this[kIterator].close(callback)\n  }\n}\n\nexports.AbstractSublevelIterator = AbstractSublevelIterator\nexports.AbstractSublevelKeyIterator = AbstractSublevelKeyIterator\nexports.AbstractSublevelValueIterator = AbstractSublevelValueIterator\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst { Buffer } = require('buffer') || {}\nconst {\n  AbstractSublevelIterator,\n  AbstractSublevelKeyIterator,\n  AbstractSublevelValueIterator\n} = require('./abstract-sublevel-iterator')\n\nconst kPrefix = Symbol('prefix')\nconst kUpperBound = Symbol('upperBound')\nconst kPrefixRange = Symbol('prefixRange')\nconst kParent = Symbol('parent')\nconst kUnfix = Symbol('unfix')\n\nconst textEncoder = new TextEncoder()\nconst defaults = { separator: '!' }\n\n// Wrapped to avoid circular dependency\nmodule.exports = function ({ AbstractLevel }) {\n  class AbstractSublevel extends AbstractLevel {\n    static defaults (options) {\n      // To help migrating from subleveldown to abstract-level\n      if (typeof options === 'string') {\n        throw new ModuleError('The subleveldown string shorthand for { separator } has been removed', {\n          code: 'LEVEL_LEGACY'\n        })\n      } else if (options && options.open) {\n        throw new ModuleError('The subleveldown open option has been removed', {\n          code: 'LEVEL_LEGACY'\n        })\n      }\n\n      if (options == null) {\n        return defaults\n      } else if (!options.separator) {\n        return { ...options, separator: '!' }\n      } else {\n        return options\n      }\n    }\n\n    // TODO: add autoClose option, which if true, does parent.attachResource(this)\n    constructor (db, name, options) {\n      // Don't forward AbstractSublevel options to AbstractLevel\n      const { separator, manifest, ...forward } = AbstractSublevel.defaults(options)\n      name = trim(name, separator)\n\n      // Reserve one character between separator and name to give us an upper bound\n      const reserved = separator.charCodeAt(0) + 1\n      const parent = db[kParent] || db\n\n      // Keys should sort like ['!a!', '!a!!a!', '!a\"', '!aa!', '!b!'].\n      // Use ASCII for consistent length between string, Buffer and Uint8Array\n      if (!textEncoder.encode(name).every(x => x > reserved && x < 127)) {\n        throw new ModuleError(`Prefix must use bytes > ${reserved} < ${127}`, {\n          code: 'LEVEL_INVALID_PREFIX'\n        })\n      }\n\n      super(mergeManifests(parent, manifest), forward)\n\n      const prefix = (db.prefix || '') + separator + name + separator\n      const upperBound = prefix.slice(0, -1) + String.fromCharCode(reserved)\n\n      this[kParent] = parent\n      this[kPrefix] = new MultiFormat(prefix)\n      this[kUpperBound] = new MultiFormat(upperBound)\n      this[kUnfix] = new Unfixer()\n\n      this.nextTick = parent.nextTick\n    }\n\n    prefixKey (key, keyFormat) {\n      if (keyFormat === 'utf8') {\n        return this[kPrefix].utf8 + key\n      } else if (key.byteLength === 0) {\n        // Fast path for empty key (no copy)\n        return this[kPrefix][keyFormat]\n      } else if (keyFormat === 'view') {\n        const view = this[kPrefix].view\n        const result = new Uint8Array(view.byteLength + key.byteLength)\n\n        result.set(view, 0)\n        result.set(key, view.byteLength)\n\n        return result\n      } else {\n        const buffer = this[kPrefix].buffer\n        return Buffer.concat([buffer, key], buffer.byteLength + key.byteLength)\n      }\n    }\n\n    // Not exposed for now.\n    [kPrefixRange] (range, keyFormat) {\n      if (range.gte !== undefined) {\n        range.gte = this.prefixKey(range.gte, keyFormat)\n      } else if (range.gt !== undefined) {\n        range.gt = this.prefixKey(range.gt, keyFormat)\n      } else {\n        range.gte = this[kPrefix][keyFormat]\n      }\n\n      if (range.lte !== undefined) {\n        range.lte = this.prefixKey(range.lte, keyFormat)\n      } else if (range.lt !== undefined) {\n        range.lt = this.prefixKey(range.lt, keyFormat)\n      } else {\n        range.lte = this[kUpperBound][keyFormat]\n      }\n    }\n\n    get prefix () {\n      return this[kPrefix].utf8\n    }\n\n    get db () {\n      return this[kParent]\n    }\n\n    _open (options, callback) {\n      // The parent db must open itself or be (re)opened by the user because\n      // a sublevel should not initiate state changes on the rest of the db.\n      this[kParent].open({ passive: true }, callback)\n    }\n\n    _put (key, value, options, callback) {\n      this[kParent].put(key, value, options, callback)\n    }\n\n    _get (key, options, callback) {\n      this[kParent].get(key, options, callback)\n    }\n\n    _getMany (keys, options, callback) {\n      this[kParent].getMany(keys, options, callback)\n    }\n\n    _del (key, options, callback) {\n      this[kParent].del(key, options, callback)\n    }\n\n    _batch (operations, options, callback) {\n      this[kParent].batch(operations, options, callback)\n    }\n\n    _clear (options, callback) {\n      // TODO (refactor): move to AbstractLevel\n      this[kPrefixRange](options, options.keyEncoding)\n      this[kParent].clear(options, callback)\n    }\n\n    _iterator (options) {\n      // TODO (refactor): move to AbstractLevel\n      this[kPrefixRange](options, options.keyEncoding)\n      const iterator = this[kParent].iterator(options)\n      const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n      return new AbstractSublevelIterator(this, options, iterator, unfix)\n    }\n\n    _keys (options) {\n      this[kPrefixRange](options, options.keyEncoding)\n      const iterator = this[kParent].keys(options)\n      const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n      return new AbstractSublevelKeyIterator(this, options, iterator, unfix)\n    }\n\n    _values (options) {\n      this[kPrefixRange](options, options.keyEncoding)\n      const iterator = this[kParent].values(options)\n      return new AbstractSublevelValueIterator(this, options, iterator)\n    }\n  }\n\n  return { AbstractSublevel }\n}\n\nconst mergeManifests = function (parent, manifest) {\n  return {\n    // Inherit manifest of parent db\n    ...parent.supports,\n\n    // Disable unsupported features\n    createIfMissing: false,\n    errorIfExists: false,\n\n    // Unset additional events because we're not forwarding them\n    events: {},\n\n    // Unset additional methods (like approximateSize) which we can't support here unless\n    // the AbstractSublevel class is overridden by an implementation of `abstract-level`.\n    additionalMethods: {},\n\n    // Inherit manifest of custom AbstractSublevel subclass. Such a class is not\n    // allowed to override encodings.\n    ...manifest,\n\n    encodings: {\n      utf8: supportsEncoding(parent, 'utf8'),\n      buffer: supportsEncoding(parent, 'buffer'),\n      view: supportsEncoding(parent, 'view')\n    }\n  }\n}\n\nconst supportsEncoding = function (parent, encoding) {\n  // Prefer a non-transcoded encoding for optimal performance\n  return parent.supports.encodings[encoding]\n    ? parent.keyEncoding(encoding).name === encoding\n    : false\n}\n\nclass MultiFormat {\n  constructor (key) {\n    this.utf8 = key\n    this.view = textEncoder.encode(key)\n    this.buffer = Buffer ? Buffer.from(this.view.buffer, 0, this.view.byteLength) : {}\n  }\n}\n\nclass Unfixer {\n  constructor () {\n    this.cache = new Map()\n  }\n\n  get (prefixLength, keyFormat) {\n    let unfix = this.cache.get(keyFormat)\n\n    if (unfix === undefined) {\n      if (keyFormat === 'view') {\n        unfix = function (prefixLength, key) {\n          // Avoid Uint8Array#slice() because it copies\n          return key.subarray(prefixLength)\n        }.bind(null, prefixLength)\n      } else {\n        unfix = function (prefixLength, key) {\n          // Avoid Buffer#subarray() because it's slow\n          return key.slice(prefixLength)\n        }.bind(null, prefixLength)\n      }\n\n      this.cache.set(keyFormat, unfix)\n    }\n\n    return unfix\n  }\n}\n\nconst trim = function (str, char) {\n  let start = 0\n  let end = str.length\n\n  while (start < end && str[start] === char) start++\n  while (end > start && str[end - 1] === char) end--\n\n  return str.slice(start, end)\n}\n", "'use strict'\n\nconst { supports } = require('level-supports')\nconst { Transcoder } = require('level-transcoder')\nconst { EventEmitter } = require('events')\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { AbstractIterator } = require('./abstract-iterator')\nconst { DefaultKeyIterator, DefaultValueIterator } = require('./lib/default-kv-iterator')\nconst { DeferredIterator, DeferredKeyIterator, DeferredValueIterator } = require('./lib/deferred-iterator')\nconst { DefaultChainedBatch } = require('./lib/default-chained-batch')\nconst { getCallback, getOptions } = require('./lib/common')\nconst rangeOptions = require('./lib/range-options')\n\nconst kPromise = Symbol('promise')\nconst kLanded = Symbol('landed')\nconst kResources = Symbol('resources')\nconst kCloseResources = Symbol('closeResources')\nconst kOperations = Symbol('operations')\nconst kUndefer = Symbol('undefer')\nconst kDeferOpen = Symbol('deferOpen')\nconst kOptions = Symbol('options')\nconst kStatus = Symbol('status')\nconst kDefaultOptions = Symbol('defaultOptions')\nconst kTranscoder = Symbol('transcoder')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst noop = () => {}\n\nclass AbstractLevel extends EventEmitter {\n  constructor (manifest, options) {\n    super()\n\n    if (typeof manifest !== 'object' || manifest === null) {\n      throw new TypeError(\"The first argument 'manifest' must be an object\")\n    }\n\n    options = getOptions(options)\n    const { keyEncoding, valueEncoding, passive, ...forward } = options\n\n    this[kResources] = new Set()\n    this[kOperations] = []\n    this[kDeferOpen] = true\n    this[kOptions] = forward\n    this[kStatus] = 'opening'\n\n    this.supports = supports(manifest, {\n      status: true,\n      promises: true,\n      clear: true,\n      getMany: true,\n      deferredOpen: true,\n\n      // TODO (next major): add seek\n      snapshots: manifest.snapshots !== false,\n      permanence: manifest.permanence !== false,\n\n      // TODO: remove from level-supports because it's always supported\n      keyIterator: true,\n      valueIterator: true,\n      iteratorNextv: true,\n      iteratorAll: true,\n\n      encodings: manifest.encodings || {},\n      events: Object.assign({}, manifest.events, {\n        opening: true,\n        open: true,\n        closing: true,\n        closed: true,\n        put: true,\n        del: true,\n        batch: true,\n        clear: true\n      })\n    })\n\n    this[kTranscoder] = new Transcoder(formats(this))\n    this[kKeyEncoding] = this[kTranscoder].encoding(keyEncoding || 'utf8')\n    this[kValueEncoding] = this[kTranscoder].encoding(valueEncoding || 'utf8')\n\n    // Add custom and transcoder encodings to manifest\n    for (const encoding of this[kTranscoder].encodings()) {\n      if (!this.supports.encodings[encoding.commonName]) {\n        this.supports.encodings[encoding.commonName] = true\n      }\n    }\n\n    this[kDefaultOptions] = {\n      empty: Object.freeze({}),\n      entry: Object.freeze({\n        keyEncoding: this[kKeyEncoding].commonName,\n        valueEncoding: this[kValueEncoding].commonName\n      }),\n      key: Object.freeze({\n        keyEncoding: this[kKeyEncoding].commonName\n      })\n    }\n\n    // Let subclass finish its constructor\n    this.nextTick(() => {\n      if (this[kDeferOpen]) {\n        this.open({ passive: false }, noop)\n      }\n    })\n  }\n\n  get status () {\n    return this[kStatus]\n  }\n\n  keyEncoding (encoding) {\n    return this[kTranscoder].encoding(encoding != null ? encoding : this[kKeyEncoding])\n  }\n\n  valueEncoding (encoding) {\n    return this[kTranscoder].encoding(encoding != null ? encoding : this[kValueEncoding])\n  }\n\n  open (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n\n    options = { ...this[kOptions], ...getOptions(options) }\n\n    options.createIfMissing = options.createIfMissing !== false\n    options.errorIfExists = !!options.errorIfExists\n\n    const maybeOpened = (err) => {\n      if (this[kStatus] === 'closing' || this[kStatus] === 'opening') {\n        // Wait until pending state changes are done\n        this.once(kLanded, err ? () => maybeOpened(err) : maybeOpened)\n      } else if (this[kStatus] !== 'open') {\n        callback(new ModuleError('Database is not open', {\n          code: 'LEVEL_DATABASE_NOT_OPEN',\n          cause: err\n        }))\n      } else {\n        callback()\n      }\n    }\n\n    if (options.passive) {\n      if (this[kStatus] === 'opening') {\n        this.once(kLanded, maybeOpened)\n      } else {\n        this.nextTick(maybeOpened)\n      }\n    } else if (this[kStatus] === 'closed' || this[kDeferOpen]) {\n      this[kDeferOpen] = false\n      this[kStatus] = 'opening'\n      this.emit('opening')\n\n      this._open(options, (err) => {\n        if (err) {\n          this[kStatus] = 'closed'\n\n          // Resources must be safe to close in any db state\n          this[kCloseResources](() => {\n            this.emit(kLanded)\n            maybeOpened(err)\n          })\n\n          this[kUndefer]()\n          return\n        }\n\n        this[kStatus] = 'open'\n        this[kUndefer]()\n        this.emit(kLanded)\n\n        // Only emit public event if pending state changes are done\n        if (this[kStatus] === 'open') this.emit('open')\n\n        // TODO (next major): remove this alias\n        if (this[kStatus] === 'open') this.emit('ready')\n\n        maybeOpened()\n      })\n    } else if (this[kStatus] === 'open') {\n      this.nextTick(maybeOpened)\n    } else {\n      this.once(kLanded, () => this.open(options, callback))\n    }\n\n    return callback[kPromise]\n  }\n\n  _open (options, callback) {\n    this.nextTick(callback)\n  }\n\n  close (callback) {\n    callback = fromCallback(callback, kPromise)\n\n    const maybeClosed = (err) => {\n      if (this[kStatus] === 'opening' || this[kStatus] === 'closing') {\n        // Wait until pending state changes are done\n        this.once(kLanded, err ? maybeClosed(err) : maybeClosed)\n      } else if (this[kStatus] !== 'closed') {\n        callback(new ModuleError('Database is not closed', {\n          code: 'LEVEL_DATABASE_NOT_CLOSED',\n          cause: err\n        }))\n      } else {\n        callback()\n      }\n    }\n\n    if (this[kStatus] === 'open') {\n      this[kStatus] = 'closing'\n      this.emit('closing')\n\n      const cancel = (err) => {\n        this[kStatus] = 'open'\n        this[kUndefer]()\n        this.emit(kLanded)\n        maybeClosed(err)\n      }\n\n      this[kCloseResources](() => {\n        this._close((err) => {\n          if (err) return cancel(err)\n\n          this[kStatus] = 'closed'\n          this[kUndefer]()\n          this.emit(kLanded)\n\n          // Only emit public event if pending state changes are done\n          if (this[kStatus] === 'closed') this.emit('closed')\n\n          maybeClosed()\n        })\n      })\n    } else if (this[kStatus] === 'closed') {\n      this.nextTick(maybeClosed)\n    } else {\n      this.once(kLanded, () => this.close(callback))\n    }\n\n    return callback[kPromise]\n  }\n\n  [kCloseResources] (callback) {\n    if (this[kResources].size === 0) {\n      return this.nextTick(callback)\n    }\n\n    let pending = this[kResources].size\n    let sync = true\n\n    const next = () => {\n      if (--pending === 0) {\n        // We don't have tests for generic resources, so dezalgo\n        if (sync) this.nextTick(callback)\n        else callback()\n      }\n    }\n\n    // In parallel so that all resources know they are closed\n    for (const resource of this[kResources]) {\n      resource.close(next)\n    }\n\n    sync = false\n    this[kResources].clear()\n  }\n\n  _close (callback) {\n    this.nextTick(callback)\n  }\n\n  get (key, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].entry)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.get(key, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const err = this._checkKey(key)\n\n    if (err) {\n      this.nextTick(callback, err)\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options.valueEncoding)\n    const keyFormat = keyEncoding.format\n    const valueFormat = valueEncoding.format\n\n    // Forward encoding options to the underlying store\n    if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n      // Avoid spread operator because of https://bugs.chromium.org/p/chromium/issues/detail?id=1204540\n      options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n    }\n\n    this._get(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err, value) => {\n      if (err) {\n        // Normalize not found error for backwards compatibility with abstract-leveldown and level(up)\n        if (err.code === 'LEVEL_NOT_FOUND' || err.notFound || /NotFound/i.test(err)) {\n          if (!err.code) err.code = 'LEVEL_NOT_FOUND' // Preferred way going forward\n          if (!err.notFound) err.notFound = true // Same as level-errors\n          if (!err.status) err.status = 404 // Same as level-errors\n        }\n\n        return callback(err)\n      }\n\n      try {\n        value = valueEncoding.decode(value)\n      } catch (err) {\n        return callback(new ModuleError('Could not decode value', {\n          code: 'LEVEL_DECODE_ERROR',\n          cause: err\n        }))\n      }\n\n      callback(null, value)\n    })\n\n    return callback[kPromise]\n  }\n\n  _get (key, options, callback) {\n    this.nextTick(callback, new Error('NotFound'))\n  }\n\n  getMany (keys, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].entry)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.getMany(keys, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    if (!Array.isArray(keys)) {\n      this.nextTick(callback, new TypeError(\"The first argument 'keys' must be an array\"))\n      return callback[kPromise]\n    }\n\n    if (keys.length === 0) {\n      this.nextTick(callback, null, [])\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options.valueEncoding)\n    const keyFormat = keyEncoding.format\n    const valueFormat = valueEncoding.format\n\n    // Forward encoding options\n    if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n      options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n    }\n\n    const mappedKeys = new Array(keys.length)\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i]\n      const err = this._checkKey(key)\n\n      if (err) {\n        this.nextTick(callback, err)\n        return callback[kPromise]\n      }\n\n      mappedKeys[i] = this.prefixKey(keyEncoding.encode(key), keyFormat)\n    }\n\n    this._getMany(mappedKeys, options, (err, values) => {\n      if (err) return callback(err)\n\n      try {\n        for (let i = 0; i < values.length; i++) {\n          if (values[i] !== undefined) {\n            values[i] = valueEncoding.decode(values[i])\n          }\n        }\n      } catch (err) {\n        return callback(new ModuleError(`Could not decode one or more of ${values.length} value(s)`, {\n          code: 'LEVEL_DECODE_ERROR',\n          cause: err\n        }))\n      }\n\n      callback(null, values)\n    })\n\n    return callback[kPromise]\n  }\n\n  _getMany (keys, options, callback) {\n    this.nextTick(callback, null, new Array(keys.length).fill(undefined))\n  }\n\n  put (key, value, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].entry)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.put(key, value, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const err = this._checkKey(key) || this._checkValue(value)\n\n    if (err) {\n      this.nextTick(callback, err)\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options.valueEncoding)\n    const keyFormat = keyEncoding.format\n    const valueFormat = valueEncoding.format\n\n    // Forward encoding options\n    if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n      options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n    }\n\n    const mappedKey = this.prefixKey(keyEncoding.encode(key), keyFormat)\n    const mappedValue = valueEncoding.encode(value)\n\n    this._put(mappedKey, mappedValue, options, (err) => {\n      if (err) return callback(err)\n      this.emit('put', key, value)\n      callback()\n    })\n\n    return callback[kPromise]\n  }\n\n  _put (key, value, options, callback) {\n    this.nextTick(callback)\n  }\n\n  del (key, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].key)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.del(key, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const err = this._checkKey(key)\n\n    if (err) {\n      this.nextTick(callback, err)\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const keyFormat = keyEncoding.format\n\n    // Forward encoding options\n    if (options.keyEncoding !== keyFormat) {\n      options = Object.assign({}, options, { keyEncoding: keyFormat })\n    }\n\n    this._del(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err) => {\n      if (err) return callback(err)\n      this.emit('del', key)\n      callback()\n    })\n\n    return callback[kPromise]\n  }\n\n  _del (key, options, callback) {\n    this.nextTick(callback)\n  }\n\n  batch (operations, options, callback) {\n    if (!arguments.length) {\n      if (this[kStatus] === 'opening') return new DefaultChainedBatch(this)\n      if (this[kStatus] !== 'open') {\n        throw new ModuleError('Database is not open', {\n          code: 'LEVEL_DATABASE_NOT_OPEN'\n        })\n      }\n      return this._chainedBatch()\n    }\n\n    if (typeof operations === 'function') callback = operations\n    else callback = getCallback(options, callback)\n\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].empty)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.batch(operations, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    if (!Array.isArray(operations)) {\n      this.nextTick(callback, new TypeError(\"The first argument 'operations' must be an array\"))\n      return callback[kPromise]\n    }\n\n    if (operations.length === 0) {\n      this.nextTick(callback)\n      return callback[kPromise]\n    }\n\n    const mapped = new Array(operations.length)\n    const { keyEncoding: ke, valueEncoding: ve, ...forward } = options\n\n    for (let i = 0; i < operations.length; i++) {\n      if (typeof operations[i] !== 'object' || operations[i] === null) {\n        this.nextTick(callback, new TypeError('A batch operation must be an object'))\n        return callback[kPromise]\n      }\n\n      const op = Object.assign({}, operations[i])\n\n      if (op.type !== 'put' && op.type !== 'del') {\n        this.nextTick(callback, new TypeError(\"A batch operation must have a type property that is 'put' or 'del'\"))\n        return callback[kPromise]\n      }\n\n      const err = this._checkKey(op.key)\n\n      if (err) {\n        this.nextTick(callback, err)\n        return callback[kPromise]\n      }\n\n      const db = op.sublevel != null ? op.sublevel : this\n      const keyEncoding = db.keyEncoding(op.keyEncoding || ke)\n      const keyFormat = keyEncoding.format\n\n      op.key = db.prefixKey(keyEncoding.encode(op.key), keyFormat)\n      op.keyEncoding = keyFormat\n\n      if (op.type === 'put') {\n        const valueErr = this._checkValue(op.value)\n\n        if (valueErr) {\n          this.nextTick(callback, valueErr)\n          return callback[kPromise]\n        }\n\n        const valueEncoding = db.valueEncoding(op.valueEncoding || ve)\n\n        op.value = valueEncoding.encode(op.value)\n        op.valueEncoding = valueEncoding.format\n      }\n\n      // Prevent double prefixing\n      if (db !== this) {\n        op.sublevel = null\n      }\n\n      mapped[i] = op\n    }\n\n    this._batch(mapped, forward, (err) => {\n      if (err) return callback(err)\n      this.emit('batch', operations)\n      callback()\n    })\n\n    return callback[kPromise]\n  }\n\n  _batch (operations, options, callback) {\n    this.nextTick(callback)\n  }\n\n  sublevel (name, options) {\n    return this._sublevel(name, AbstractSublevel.defaults(options))\n  }\n\n  _sublevel (name, options) {\n    return new AbstractSublevel(this, name, options)\n  }\n\n  prefixKey (key, keyFormat) {\n    return key\n  }\n\n  clear (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].empty)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.clear(options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const original = options\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n    options.keyEncoding = keyEncoding.format\n\n    if (options.limit === 0) {\n      this.nextTick(callback)\n    } else {\n      this._clear(options, (err) => {\n        if (err) return callback(err)\n        this.emit('clear', original)\n        callback()\n      })\n    }\n\n    return callback[kPromise]\n  }\n\n  _clear (options, callback) {\n    this.nextTick(callback)\n  }\n\n  iterator (options) {\n    const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n    options.keys = options.keys !== false\n    options.values = options.values !== false\n\n    // We need the original encoding options in AbstractIterator in order to decode data\n    options[AbstractIterator.keyEncoding] = keyEncoding\n    options[AbstractIterator.valueEncoding] = valueEncoding\n\n    // Forward encoding options to private API\n    options.keyEncoding = keyEncoding.format\n    options.valueEncoding = valueEncoding.format\n\n    if (this[kStatus] === 'opening') {\n      return new DeferredIterator(this, options)\n    } else if (this[kStatus] !== 'open') {\n      throw new ModuleError('Database is not open', {\n        code: 'LEVEL_DATABASE_NOT_OPEN'\n      })\n    }\n\n    return this._iterator(options)\n  }\n\n  _iterator (options) {\n    return new AbstractIterator(this, options)\n  }\n\n  keys (options) {\n    // Also include valueEncoding (though unused) because we may fallback to _iterator()\n    const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n\n    // We need the original encoding options in AbstractKeyIterator in order to decode data\n    options[AbstractIterator.keyEncoding] = keyEncoding\n    options[AbstractIterator.valueEncoding] = valueEncoding\n\n    // Forward encoding options to private API\n    options.keyEncoding = keyEncoding.format\n    options.valueEncoding = valueEncoding.format\n\n    if (this[kStatus] === 'opening') {\n      return new DeferredKeyIterator(this, options)\n    } else if (this[kStatus] !== 'open') {\n      throw new ModuleError('Database is not open', {\n        code: 'LEVEL_DATABASE_NOT_OPEN'\n      })\n    }\n\n    return this._keys(options)\n  }\n\n  _keys (options) {\n    return new DefaultKeyIterator(this, options)\n  }\n\n  values (options) {\n    const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n\n    // We need the original encoding options in AbstractValueIterator in order to decode data\n    options[AbstractIterator.keyEncoding] = keyEncoding\n    options[AbstractIterator.valueEncoding] = valueEncoding\n\n    // Forward encoding options to private API\n    options.keyEncoding = keyEncoding.format\n    options.valueEncoding = valueEncoding.format\n\n    if (this[kStatus] === 'opening') {\n      return new DeferredValueIterator(this, options)\n    } else if (this[kStatus] !== 'open') {\n      throw new ModuleError('Database is not open', {\n        code: 'LEVEL_DATABASE_NOT_OPEN'\n      })\n    }\n\n    return this._values(options)\n  }\n\n  _values (options) {\n    return new DefaultValueIterator(this, options)\n  }\n\n  defer (fn) {\n    if (typeof fn !== 'function') {\n      throw new TypeError('The first argument must be a function')\n    }\n\n    this[kOperations].push(fn)\n  }\n\n  [kUndefer] () {\n    if (this[kOperations].length === 0) {\n      return\n    }\n\n    const operations = this[kOperations]\n    this[kOperations] = []\n\n    for (const op of operations) {\n      op()\n    }\n  }\n\n  // TODO: docs and types\n  attachResource (resource) {\n    if (typeof resource !== 'object' || resource === null ||\n      typeof resource.close !== 'function') {\n      throw new TypeError('The first argument must be a resource object')\n    }\n\n    this[kResources].add(resource)\n  }\n\n  // TODO: docs and types\n  detachResource (resource) {\n    this[kResources].delete(resource)\n  }\n\n  _chainedBatch () {\n    return new DefaultChainedBatch(this)\n  }\n\n  _checkKey (key) {\n    if (key === null || key === undefined) {\n      return new ModuleError('Key cannot be null or undefined', {\n        code: 'LEVEL_INVALID_KEY'\n      })\n    }\n  }\n\n  _checkValue (value) {\n    if (value === null || value === undefined) {\n      return new ModuleError('Value cannot be null or undefined', {\n        code: 'LEVEL_INVALID_VALUE'\n      })\n    }\n  }\n}\n\n// Expose browser-compatible nextTick for dependents\n// TODO: after we drop node 10, also use queueMicrotask in node\nAbstractLevel.prototype.nextTick = require('./lib/next-tick')\n\nconst { AbstractSublevel } = require('./lib/abstract-sublevel')({ AbstractLevel })\n\nexports.AbstractLevel = AbstractLevel\nexports.AbstractSublevel = AbstractSublevel\n\nconst maybeError = function (db, callback) {\n  if (db[kStatus] !== 'open') {\n    db.nextTick(callback, new ModuleError('Database is not open', {\n      code: 'LEVEL_DATABASE_NOT_OPEN'\n    }))\n    return true\n  }\n\n  return false\n}\n\nconst formats = function (db) {\n  return Object.keys(db.supports.encodings)\n    .filter(k => !!db.supports.encodings[k])\n}\n", "'use strict'\n\nexports.AbstractLevel = require('./abstract-level').AbstractLevel\nexports.AbstractSublevel = require('./abstract-level').AbstractSublevel\nexports.AbstractIterator = require('./abstract-iterator').AbstractIterator\nexports.AbstractKeyIterator = require('./abstract-iterator').AbstractKeyIterator\nexports.AbstractValueIterator = require('./abstract-iterator').AbstractValueIterator\nexports.AbstractChainedBatch = require('./abstract-chained-batch').AbstractChainedBatch\n", "/*! run-parallel-limit. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nmodule.exports = runParallelLimit\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallelLimit (tasks, limit, cb) {\n  if (typeof limit !== 'number') throw new Error('second argument must be a Number')\n  let results, len, pending, keys, isErrored\n  let isSync = true\n  let next\n\n  if (Array.isArray(tasks)) {\n    results = []\n    pending = len = tasks.length\n  } else {\n    keys = Object.keys(tasks)\n    results = {}\n    pending = len = keys.length\n  }\n\n  function done (err) {\n    function end () {\n      if (cb) cb(err, results)\n      cb = null\n    }\n    if (isSync) queueMicrotask(end)\n    else end()\n  }\n\n  function each (i, err, result) {\n    results[i] = result\n    if (err) isErrored = true\n    if (--pending === 0 || err) {\n      done(err)\n    } else if (!isErrored && next < len) {\n      let key\n      if (keys) {\n        key = keys[next]\n        next += 1\n        tasks[key](function (err, result) { each(key, err, result) })\n      } else {\n        key = next\n        next += 1\n        tasks[key](function (err, result) { each(key, err, result) })\n      }\n    }\n  }\n\n  next = limit\n  if (!pending) {\n    // empty\n    done(null)\n  } else if (keys) {\n    // object\n    keys.some(function (key, i) {\n      tasks[key](function (err, result) { each(key, err, result) })\n      if (i === limit - 1) return true // early return\n      return false\n    })\n  } else {\n    // array\n    tasks.some(function (task, i) {\n      task(function (err, result) { each(i, err, result) })\n      if (i === limit - 1) return true // early return\n      return false\n    })\n  }\n\n  isSync = false\n}\n", "/* global IDBKeyRange */\n\n'use strict'\n\nmodule.exports = function createKeyRange (options) {\n  const lower = options.gte !== undefined ? options.gte : options.gt !== undefined ? options.gt : undefined\n  const upper = options.lte !== undefined ? options.lte : options.lt !== undefined ? options.lt : undefined\n  const lowerExclusive = options.gte === undefined\n  const upperExclusive = options.lte === undefined\n\n  if (lower !== undefined && upper !== undefined) {\n    return IDBKeyRange.bound(lower, upper, lowerExclusive, upperExclusive)\n  } else if (lower !== undefined) {\n    return IDBKeyRange.lowerBound(lower, lowerExclusive)\n  } else if (upper !== undefined) {\n    return IDBKeyRange.upperBound(upper, upperExclusive)\n  } else {\n    return null\n  }\n}\n", "'use strict'\n\nconst textEncoder = new TextEncoder()\n\nmodule.exports = function (data) {\n  if (data instanceof Uint8Array) {\n    return data\n  } else if (data instanceof ArrayBuffer) {\n    return new Uint8Array(data)\n  } else {\n    // Non-binary data stored with an old version (level-js < 5.0.0)\n    return textEncoder.encode(data)\n  }\n}\n", "'use strict'\n\nconst { AbstractIterator } = require('abstract-level')\nconst createKeyRange = require('./util/key-range')\nconst deserialize = require('./util/deserialize')\n\nconst kCache = Symbol('cache')\nconst kFinished = Symbol('finished')\nconst kOptions = Symbol('options')\nconst kCurrentOptions = Symbol('currentOptions')\nconst kPosition = Symbol('position')\nconst kLocation = Symbol('location')\nconst kFirst = Symbol('first')\nconst emptyOptions = {}\n\nclass Iterator extends AbstractIterator {\n  constructor (db, location, options) {\n    super(db, options)\n\n    this[kCache] = []\n    this[kFinished] = this.limit === 0\n    this[kOptions] = options\n    this[kCurrentOptions] = { ...options }\n    this[kPosition] = undefined\n    this[kLocation] = location\n    this[kFirst] = true\n  }\n\n  // Note: if called by _all() then size can be Infinity. This is an internal\n  // detail; by design AbstractIterator.nextv() does not support Infinity.\n  _nextv (size, options, callback) {\n    this[kFirst] = false\n\n    if (this[kFinished]) {\n      return this.nextTick(callback, null, [])\n    } else if (this[kCache].length > 0) {\n      // TODO: mixing next and nextv is not covered by test suite\n      size = Math.min(size, this[kCache].length)\n      return this.nextTick(callback, null, this[kCache].splice(0, size))\n    }\n\n    // Adjust range by what we already visited\n    if (this[kPosition] !== undefined) {\n      if (this[kOptions].reverse) {\n        this[kCurrentOptions].lt = this[kPosition]\n        this[kCurrentOptions].lte = undefined\n      } else {\n        this[kCurrentOptions].gt = this[kPosition]\n        this[kCurrentOptions].gte = undefined\n      }\n    }\n\n    let keyRange\n\n    try {\n      keyRange = createKeyRange(this[kCurrentOptions])\n    } catch (_) {\n      // The lower key is greater than the upper key.\n      // IndexedDB throws an error, but we'll just return 0 results.\n      this[kFinished] = true\n      return this.nextTick(callback, null, [])\n    }\n\n    const transaction = this.db.db.transaction([this[kLocation]], 'readonly')\n    const store = transaction.objectStore(this[kLocation])\n    const entries = []\n\n    if (!this[kOptions].reverse) {\n      let keys\n      let values\n\n      const complete = () => {\n        // Wait for both requests to complete\n        if (keys === undefined || values === undefined) return\n\n        const length = Math.max(keys.length, values.length)\n\n        if (length === 0 || size === Infinity) {\n          this[kFinished] = true\n        } else {\n          this[kPosition] = keys[length - 1]\n        }\n\n        // Resize\n        entries.length = length\n\n        // Merge keys and values\n        for (let i = 0; i < length; i++) {\n          const key = keys[i]\n          const value = values[i]\n\n          entries[i] = [\n            this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n            this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n          ]\n        }\n\n        maybeCommit(transaction)\n      }\n\n      // If keys were not requested and size is Infinity, we don't have to keep\n      // track of position and can thus skip getting keys.\n      if (this[kOptions].keys || size < Infinity) {\n        store.getAllKeys(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n          keys = ev.target.result\n          complete()\n        }\n      } else {\n        keys = []\n        this.nextTick(complete)\n      }\n\n      if (this[kOptions].values) {\n        store.getAll(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n          values = ev.target.result\n          complete()\n        }\n      } else {\n        values = []\n        this.nextTick(complete)\n      }\n    } else {\n      // Can't use getAll() in reverse, so use a slower cursor that yields one item at a time\n      // TODO: test if all target browsers support openKeyCursor\n      const method = !this[kOptions].values && store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n\n      store[method](keyRange, 'prev').onsuccess = (ev) => {\n        const cursor = ev.target.result\n\n        if (cursor) {\n          const { key, value } = cursor\n          this[kPosition] = key\n\n          entries.push([\n            this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n            this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n          ])\n\n          if (entries.length < size) {\n            cursor.continue()\n          } else {\n            maybeCommit(transaction)\n          }\n        } else {\n          this[kFinished] = true\n        }\n      }\n    }\n\n    // If an error occurs (on the request), the transaction will abort.\n    transaction.onabort = () => {\n      callback(transaction.error || new Error('aborted by user'))\n      callback = null\n    }\n\n    transaction.oncomplete = () => {\n      callback(null, entries)\n      callback = null\n    }\n  }\n\n  _next (callback) {\n    if (this[kCache].length > 0) {\n      const [key, value] = this[kCache].shift()\n      this.nextTick(callback, null, key, value)\n    } else if (this[kFinished]) {\n      this.nextTick(callback)\n    } else {\n      let size = Math.min(100, this.limit - this.count)\n\n      if (this[kFirst]) {\n        // It's common to only want one entry initially or after a seek()\n        this[kFirst] = false\n        size = 1\n      }\n\n      this._nextv(size, emptyOptions, (err, entries) => {\n        if (err) return callback(err)\n        this[kCache] = entries\n        this._next(callback)\n      })\n    }\n  }\n\n  _all (options, callback) {\n    this[kFirst] = false\n\n    // TODO: mixing next and all is not covered by test suite\n    const cache = this[kCache].splice(0, this[kCache].length)\n    const size = this.limit - this.count - cache.length\n\n    if (size <= 0) {\n      return this.nextTick(callback, null, cache)\n    }\n\n    this._nextv(size, emptyOptions, (err, entries) => {\n      if (err) return callback(err)\n      if (cache.length > 0) entries = cache.concat(entries)\n      callback(null, entries)\n    })\n  }\n\n  _seek (target, options) {\n    this[kFirst] = true\n    this[kCache] = []\n    this[kFinished] = false\n    this[kPosition] = undefined\n\n    // TODO: not covered by test suite\n    this[kCurrentOptions] = { ...this[kOptions] }\n\n    let keyRange\n\n    try {\n      keyRange = createKeyRange(this[kOptions])\n    } catch (_) {\n      this[kFinished] = true\n      return\n    }\n\n    if (keyRange !== null && !keyRange.includes(target)) {\n      this[kFinished] = true\n    } else if (this[kOptions].reverse) {\n      this[kCurrentOptions].lte = target\n    } else {\n      this[kCurrentOptions].gte = target\n    }\n  }\n}\n\nexports.Iterator = Iterator\n\nfunction maybeCommit (transaction) {\n  // Commit (meaning close) now instead of waiting for auto-commit\n  if (typeof transaction.commit === 'function') {\n    transaction.commit()\n  }\n}\n", "'use strict'\n\nmodule.exports = function clear (db, location, keyRange, options, callback) {\n  if (options.limit === 0) return db.nextTick(callback)\n\n  const transaction = db.db.transaction([location], 'readwrite')\n  const store = transaction.objectStore(location)\n  let count = 0\n\n  transaction.oncomplete = function () {\n    callback()\n  }\n\n  transaction.onabort = function () {\n    callback(transaction.error || new Error('aborted by user'))\n  }\n\n  // A key cursor is faster (skips reading values) but not supported by IE\n  // TODO: we no longer support IE. Test others\n  const method = store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n  const direction = options.reverse ? 'prev' : 'next'\n\n  store[method](keyRange, direction).onsuccess = function (ev) {\n    const cursor = ev.target.result\n\n    if (cursor) {\n      // Wait for a request to complete before continuing, saving CPU.\n      store.delete(cursor.key).onsuccess = function () {\n        if (options.limit <= 0 || ++count < options.limit) {\n          cursor.continue()\n        }\n      }\n    }\n  }\n}\n", "/* global indexedDB */\n\n'use strict'\n\nconst { AbstractLevel } = require('abstract-level')\nconst ModuleError = require('module-error')\nconst parallel = require('run-parallel-limit')\nconst { fromCallback } = require('catering')\nconst { Iterator } = require('./iterator')\nconst deserialize = require('./util/deserialize')\nconst clear = require('./util/clear')\nconst createKeyRange = require('./util/key-range')\n\n// Keep as-is for compatibility with existing level-js databases\nconst DEFAULT_PREFIX = 'level-js-'\n\nconst kIDB = Symbol('idb')\nconst kNamePrefix = Symbol('namePrefix')\nconst kLocation = Symbol('location')\nconst kVersion = Symbol('version')\nconst kStore = Symbol('store')\nconst kOnComplete = Symbol('onComplete')\nconst kPromise = Symbol('promise')\n\nclass BrowserLevel extends AbstractLevel {\n  constructor (location, options, _) {\n    // To help migrating to abstract-level\n    if (typeof options === 'function' || typeof _ === 'function') {\n      throw new ModuleError('The levelup-style callback argument has been removed', {\n        code: 'LEVEL_LEGACY'\n      })\n    }\n\n    const { prefix, version, ...forward } = options || {}\n\n    super({\n      encodings: { view: true },\n      snapshots: false,\n      createIfMissing: false,\n      errorIfExists: false,\n      seek: true\n    }, forward)\n\n    if (typeof location !== 'string') {\n      throw new Error('constructor requires a location string argument')\n    }\n\n    // TODO (next major): remove default prefix\n    this[kLocation] = location\n    this[kNamePrefix] = prefix == null ? DEFAULT_PREFIX : prefix\n    this[kVersion] = parseInt(version || 1, 10)\n    this[kIDB] = null\n  }\n\n  get location () {\n    return this[kLocation]\n  }\n\n  get namePrefix () {\n    return this[kNamePrefix]\n  }\n\n  get version () {\n    return this[kVersion]\n  }\n\n  // Exposed for backwards compat and unit tests\n  get db () {\n    return this[kIDB]\n  }\n\n  get type () {\n    return 'browser-level'\n  }\n\n  _open (options, callback) {\n    const req = indexedDB.open(this[kNamePrefix] + this[kLocation], this[kVersion])\n\n    req.onerror = function () {\n      callback(req.error || new Error('unknown error'))\n    }\n\n    req.onsuccess = () => {\n      this[kIDB] = req.result\n      callback()\n    }\n\n    req.onupgradeneeded = (ev) => {\n      const db = ev.target.result\n\n      if (!db.objectStoreNames.contains(this[kLocation])) {\n        db.createObjectStore(this[kLocation])\n      }\n    }\n  }\n\n  [kStore] (mode) {\n    const transaction = this[kIDB].transaction([this[kLocation]], mode)\n    return transaction.objectStore(this[kLocation])\n  }\n\n  [kOnComplete] (request, callback) {\n    const transaction = request.transaction\n\n    // Take advantage of the fact that a non-canceled request error aborts\n    // the transaction. I.e. no need to listen for \"request.onerror\".\n    transaction.onabort = function () {\n      callback(transaction.error || new Error('aborted by user'))\n    }\n\n    transaction.oncomplete = function () {\n      callback(null, request.result)\n    }\n  }\n\n  _get (key, options, callback) {\n    const store = this[kStore]('readonly')\n    let req\n\n    try {\n      req = store.get(key)\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, function (err, value) {\n      if (err) return callback(err)\n\n      if (value === undefined) {\n        return callback(new ModuleError('Entry not found', {\n          code: 'LEVEL_NOT_FOUND'\n        }))\n      }\n\n      callback(null, deserialize(value))\n    })\n  }\n\n  _getMany (keys, options, callback) {\n    const store = this[kStore]('readonly')\n    const tasks = keys.map((key) => (next) => {\n      let request\n\n      try {\n        request = store.get(key)\n      } catch (err) {\n        return next(err)\n      }\n\n      request.onsuccess = () => {\n        const value = request.result\n        next(null, value === undefined ? value : deserialize(value))\n      }\n\n      request.onerror = (ev) => {\n        ev.stopPropagation()\n        next(request.error)\n      }\n    })\n\n    parallel(tasks, 16, callback)\n  }\n\n  _del (key, options, callback) {\n    const store = this[kStore]('readwrite')\n    let req\n\n    try {\n      req = store.delete(key)\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, callback)\n  }\n\n  _put (key, value, options, callback) {\n    const store = this[kStore]('readwrite')\n    let req\n\n    try {\n      // Will throw a DataError or DataCloneError if the environment\n      // does not support serializing the key or value respectively.\n      req = store.put(value, key)\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, callback)\n  }\n\n  // TODO: implement key and value iterators\n  _iterator (options) {\n    return new Iterator(this, this[kLocation], options)\n  }\n\n  _batch (operations, options, callback) {\n    const store = this[kStore]('readwrite')\n    const transaction = store.transaction\n    let index = 0\n    let error\n\n    transaction.onabort = function () {\n      callback(error || transaction.error || new Error('aborted by user'))\n    }\n\n    transaction.oncomplete = function () {\n      callback()\n    }\n\n    // Wait for a request to complete before making the next, saving CPU.\n    function loop () {\n      const op = operations[index++]\n      const key = op.key\n\n      let req\n\n      try {\n        req = op.type === 'del' ? store.delete(key) : store.put(op.value, key)\n      } catch (err) {\n        error = err\n        transaction.abort()\n        return\n      }\n\n      if (index < operations.length) {\n        req.onsuccess = loop\n      } else if (typeof transaction.commit === 'function') {\n        // Commit now instead of waiting for auto-commit\n        transaction.commit()\n      }\n    }\n\n    loop()\n  }\n\n  _clear (options, callback) {\n    let keyRange\n    let req\n\n    try {\n      keyRange = createKeyRange(options)\n    } catch (e) {\n      // The lower key is greater than the upper key.\n      // IndexedDB throws an error, but we'll just do nothing.\n      return this.nextTick(callback)\n    }\n\n    if (options.limit >= 0) {\n      // IDBObjectStore#delete(range) doesn't have such an option.\n      // Fall back to cursor-based implementation.\n      return clear(this, this[kLocation], keyRange, options, callback)\n    }\n\n    try {\n      const store = this[kStore]('readwrite')\n      req = keyRange ? store.delete(keyRange) : store.clear()\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, callback)\n  }\n\n  _close (callback) {\n    this[kIDB].close()\n    this.nextTick(callback)\n  }\n}\n\nBrowserLevel.destroy = function (location, prefix, callback) {\n  if (typeof prefix === 'function') {\n    callback = prefix\n    prefix = DEFAULT_PREFIX\n  }\n\n  callback = fromCallback(callback, kPromise)\n  const request = indexedDB.deleteDatabase(prefix + location)\n\n  request.onsuccess = function () {\n    callback()\n  }\n\n  request.onerror = function (err) {\n    callback(err)\n  }\n\n  return callback[kPromise]\n}\n\nexports.BrowserLevel = BrowserLevel\n", "exports.Level = require('browser-level').BrowserLevel\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n", "'use strict'\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n  https://github.com/nodejs/node/blob/master/lib/internal/per_context/primordials.js\n\n  Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n  ArrayIsArray(self) {\n    return Array.isArray(self)\n  },\n  ArrayPrototypeIncludes(self, el) {\n    return self.includes(el)\n  },\n  ArrayPrototypeIndexOf(self, el) {\n    return self.indexOf(el)\n  },\n  ArrayPrototypeJoin(self, sep) {\n    return self.join(sep)\n  },\n  ArrayPrototypeMap(self, fn) {\n    return self.map(fn)\n  },\n  ArrayPrototypePop(self, el) {\n    return self.pop(el)\n  },\n  ArrayPrototypePush(self, el) {\n    return self.push(el)\n  },\n  ArrayPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  Error,\n  FunctionPrototypeCall(fn, thisArgs, ...args) {\n    return fn.call(thisArgs, ...args)\n  },\n  FunctionPrototypeSymbolHasInstance(self, instance) {\n    return Function.prototype[Symbol.hasInstance].call(self, instance)\n  },\n  MathFloor: Math.floor,\n  Number,\n  NumberIsInteger: Number.isInteger,\n  NumberIsNaN: Number.isNaN,\n  NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n  NumberParseInt: Number.parseInt,\n  ObjectDefineProperties(self, props) {\n    return Object.defineProperties(self, props)\n  },\n  ObjectDefineProperty(self, name, prop) {\n    return Object.defineProperty(self, name, prop)\n  },\n  ObjectGetOwnPropertyDescriptor(self, name) {\n    return Object.getOwnPropertyDescriptor(self, name)\n  },\n  ObjectKeys(obj) {\n    return Object.keys(obj)\n  },\n  ObjectSetPrototypeOf(target, proto) {\n    return Object.setPrototypeOf(target, proto)\n  },\n  Promise,\n  PromisePrototypeCatch(self, fn) {\n    return self.catch(fn)\n  },\n  PromisePrototypeThen(self, thenFn, catchFn) {\n    return self.then(thenFn, catchFn)\n  },\n  PromiseReject(err) {\n    return Promise.reject(err)\n  },\n  ReflectApply: Reflect.apply,\n  RegExpPrototypeTest(self, value) {\n    return self.test(value)\n  },\n  SafeSet: Set,\n  String,\n  StringPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  StringPrototypeToLowerCase(self) {\n    return self.toLowerCase()\n  },\n  StringPrototypeToUpperCase(self) {\n    return self.toUpperCase()\n  },\n  StringPrototypeTrim(self) {\n    return self.trim()\n  },\n  Symbol,\n  SymbolAsyncIterator: Symbol.asyncIterator,\n  SymbolHasInstance: Symbol.hasInstance,\n  SymbolIterator: Symbol.iterator,\n  TypedArrayPrototypeSet(self, buf, len) {\n    return self.set(buf, len)\n  },\n  Uint8Array\n}\n", "'use strict'\n\nconst bufferModule = require('buffer')\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        // eslint-disable-next-line indent\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\n/* eslint-enable indent */\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n  constructor(errors) {\n    if (!Array.isArray(errors)) {\n      throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n    }\n    let message = ''\n    for (let i = 0; i < errors.length; i++) {\n      message += `    ${errors[i].stack}\\n`\n    }\n    super(message)\n    this.name = 'AggregateError'\n    this.errors = errors\n  }\n}\nmodule.exports = {\n  AggregateError,\n  kEmptyObject: Object.freeze({}),\n  once(callback) {\n    let called = false\n    return function (...args) {\n      if (called) {\n        return\n      }\n      called = true\n      callback.apply(this, args)\n    }\n  },\n  createDeferredPromise: function () {\n    let resolve\n    let reject\n\n    // eslint-disable-next-line promise/param-names\n    const promise = new Promise((res, rej) => {\n      resolve = res\n      reject = rej\n    })\n    return {\n      promise,\n      resolve,\n      reject\n    }\n  },\n  promisify(fn) {\n    return new Promise((resolve, reject) => {\n      fn((err, ...args) => {\n        if (err) {\n          return reject(err)\n        }\n        return resolve(...args)\n      })\n    })\n  },\n  debuglog() {\n    return function () {}\n  },\n  format(format, ...args) {\n    // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n    return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n      const replacement = args.shift()\n      if (type === 'f') {\n        return replacement.toFixed(6)\n      } else if (type === 'j') {\n        return JSON.stringify(replacement)\n      } else if (type === 's' && typeof replacement === 'object') {\n        const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n        return `${ctor} {}`.trim()\n      } else {\n        return replacement.toString()\n      }\n    })\n  },\n  inspect(value) {\n    // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n    switch (typeof value) {\n      case 'string':\n        if (value.includes(\"'\")) {\n          if (!value.includes('\"')) {\n            return `\"${value}\"`\n          } else if (!value.includes('`') && !value.includes('${')) {\n            return `\\`${value}\\``\n          }\n        }\n        return `'${value}'`\n      case 'number':\n        if (isNaN(value)) {\n          return 'NaN'\n        } else if (Object.is(value, -0)) {\n          return String(value)\n        }\n        return value\n      case 'bigint':\n        return `${String(value)}n`\n      case 'boolean':\n      case 'undefined':\n        return String(value)\n      case 'object':\n        return '{}'\n    }\n  },\n  types: {\n    isAsyncFunction(fn) {\n      return fn instanceof AsyncFunction\n    },\n    isArrayBufferView(arr) {\n      return ArrayBuffer.isView(arr)\n    }\n  },\n  isBlob\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n", "/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n    typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n", "'use strict'\n\nconst { format, inspect, AggregateError: CustomAggregateError } = require('./util')\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n  https://github.com/nodejs/node/blob/master/lib/internal/errors.js\n\n  Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n  with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n  'string',\n  'function',\n  'number',\n  'object',\n  // Accept 'Function' and 'Object' as alternative to the lower cased version.\n  'Function',\n  'Object',\n  'boolean',\n  'bigint',\n  'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n  if (!value) {\n    throw new codes.ERR_INTERNAL_ASSERTION(message)\n  }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n  if (typeof msg === 'function') {\n    assert(\n      msg.length <= args.length,\n      // Default options do not count.\n      `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n    )\n    return msg(...args)\n  }\n  const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n  assert(\n    expectedLength === args.length,\n    `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n  )\n  if (args.length === 0) {\n    return msg\n  }\n  return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n  class NodeError extends Base {\n    constructor(...args) {\n      super(getMessage(code, message, args))\n    }\n    toString() {\n      return `${this.name} [${code}]: ${this.message}`\n    }\n  }\n  Object.defineProperties(NodeError.prototype, {\n    name: {\n      value: Base.name,\n      writable: true,\n      enumerable: false,\n      configurable: true\n    },\n    toString: {\n      value() {\n        return `${this.name} [${code}]: ${this.message}`\n      },\n      writable: true,\n      enumerable: false,\n      configurable: true\n    }\n  })\n  NodeError.prototype.code = code\n  NodeError.prototype[kIsNodeError] = true\n  codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n  // We rename the functions that will be hidden to cut off the stacktrace\n  // at the outermost one\n  const hidden = nodeInternalPrefix + fn.name\n  Object.defineProperty(fn, 'name', {\n    value: hidden\n  })\n  return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n  if (innerError && outerError && innerError !== outerError) {\n    if (Array.isArray(outerError.errors)) {\n      // If `outerError` is already an `AggregateError`.\n      outerError.errors.push(innerError)\n      return outerError\n    }\n    const err = new AggregateError([outerError, innerError], outerError.message)\n    err.code = outerError.code\n    return err\n  }\n  return innerError || outerError\n}\nclass AbortError extends Error {\n  constructor(message = 'The operation was aborted', options = undefined) {\n    if (options !== undefined && typeof options !== 'object') {\n      throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n    }\n    super(message, options)\n    this.code = 'ABORT_ERR'\n    this.name = 'AbortError'\n  }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n  'ERR_INVALID_ARG_TYPE',\n  (name, expected, actual) => {\n    assert(typeof name === 'string', \"'name' must be a string\")\n    if (!Array.isArray(expected)) {\n      expected = [expected]\n    }\n    let msg = 'The '\n    if (name.endsWith(' argument')) {\n      // For cases like 'first argument'\n      msg += `${name} `\n    } else {\n      msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n    }\n    msg += 'must be '\n    const types = []\n    const instances = []\n    const other = []\n    for (const value of expected) {\n      assert(typeof value === 'string', 'All expected entries have to be of type string')\n      if (kTypes.includes(value)) {\n        types.push(value.toLowerCase())\n      } else if (classRegExp.test(value)) {\n        instances.push(value)\n      } else {\n        assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n        other.push(value)\n      }\n    }\n\n    // Special handle `object` in case other instances are allowed to outline\n    // the differences between each other.\n    if (instances.length > 0) {\n      const pos = types.indexOf('object')\n      if (pos !== -1) {\n        types.splice(types, pos, 1)\n        instances.push('Object')\n      }\n    }\n    if (types.length > 0) {\n      switch (types.length) {\n        case 1:\n          msg += `of type ${types[0]}`\n          break\n        case 2:\n          msg += `one of type ${types[0]} or ${types[1]}`\n          break\n        default: {\n          const last = types.pop()\n          msg += `one of type ${types.join(', ')}, or ${last}`\n        }\n      }\n      if (instances.length > 0 || other.length > 0) {\n        msg += ' or '\n      }\n    }\n    if (instances.length > 0) {\n      switch (instances.length) {\n        case 1:\n          msg += `an instance of ${instances[0]}`\n          break\n        case 2:\n          msg += `an instance of ${instances[0]} or ${instances[1]}`\n          break\n        default: {\n          const last = instances.pop()\n          msg += `an instance of ${instances.join(', ')}, or ${last}`\n        }\n      }\n      if (other.length > 0) {\n        msg += ' or '\n      }\n    }\n    switch (other.length) {\n      case 0:\n        break\n      case 1:\n        if (other[0].toLowerCase() !== other[0]) {\n          msg += 'an '\n        }\n        msg += `${other[0]}`\n        break\n      case 2:\n        msg += `one of ${other[0]} or ${other[1]}`\n        break\n      default: {\n        const last = other.pop()\n        msg += `one of ${other.join(', ')}, or ${last}`\n      }\n    }\n    if (actual == null) {\n      msg += `. Received ${actual}`\n    } else if (typeof actual === 'function' && actual.name) {\n      msg += `. Received function ${actual.name}`\n    } else if (typeof actual === 'object') {\n      var _actual$constructor\n      if (\n        (_actual$constructor = actual.constructor) !== null &&\n        _actual$constructor !== undefined &&\n        _actual$constructor.name\n      ) {\n        msg += `. Received an instance of ${actual.constructor.name}`\n      } else {\n        const inspected = inspect(actual, {\n          depth: -1\n        })\n        msg += `. Received ${inspected}`\n      }\n    } else {\n      let inspected = inspect(actual, {\n        colors: false\n      })\n      if (inspected.length > 25) {\n        inspected = `${inspected.slice(0, 25)}...`\n      }\n      msg += `. Received type ${typeof actual} (${inspected})`\n    }\n    return msg\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_ARG_VALUE',\n  (name, value, reason = 'is invalid') => {\n    let inspected = inspect(value)\n    if (inspected.length > 128) {\n      inspected = inspected.slice(0, 128) + '...'\n    }\n    const type = name.includes('.') ? 'property' : 'argument'\n    return `The ${type} '${name}' ${reason}. Received ${inspected}`\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_RETURN_VALUE',\n  (input, name, value) => {\n    var _value$constructor\n    const type =\n      value !== null &&\n      value !== undefined &&\n      (_value$constructor = value.constructor) !== null &&\n      _value$constructor !== undefined &&\n      _value$constructor.name\n        ? `instance of ${value.constructor.name}`\n        : `type ${typeof value}`\n    return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n  },\n  TypeError\n)\nE(\n  'ERR_MISSING_ARGS',\n  (...args) => {\n    assert(args.length > 0, 'At least one arg needs to be specified')\n    let msg\n    const len = args.length\n    args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n    switch (len) {\n      case 1:\n        msg += `The ${args[0]} argument`\n        break\n      case 2:\n        msg += `The ${args[0]} and ${args[1]} arguments`\n        break\n      default:\n        {\n          const last = args.pop()\n          msg += `The ${args.join(', ')}, and ${last} arguments`\n        }\n        break\n    }\n    return `${msg} must be specified`\n  },\n  TypeError\n)\nE(\n  'ERR_OUT_OF_RANGE',\n  (str, range, input) => {\n    assert(range, 'Missing \"range\" argument')\n    let received\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > 2n ** 32n || input < -(2n ** 32n)) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    } else {\n      received = inspect(input)\n    }\n    return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n  },\n  RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n  AbortError,\n  aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n  hideStackFrames,\n  codes\n}\n", "'use strict'\n\nconst {\n  ArrayIsArray,\n  ArrayPrototypeIncludes,\n  ArrayPrototypeJoin,\n  ArrayPrototypeMap,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberMAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER,\n  NumberParseInt,\n  ObjectPrototypeHasOwnProperty,\n  RegExpPrototypeExec,\n  String,\n  StringPrototypeToUpperCase,\n  StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n  hideStackFrames,\n  codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n  return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n  return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n *\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n  if (typeof value === 'undefined') {\n    value = def\n  }\n  if (typeof value === 'string') {\n    if (RegExpPrototypeExec(octalReg, value) === null) {\n      throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n    }\n    value = NumberParseInt(value, 8)\n  }\n  validateUint32(value, name)\n  return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n  // The defaults for min and max correspond to the limits of 32-bit integers.\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  const min = positive ? 1 : 0\n  // 2 ** 32 === 4294967296\n  const max = 4294967295\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n  if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (\n    (min != null && value < min) ||\n    (max != null && value > max) ||\n    ((min != null || max != null) && NumberIsNaN(value))\n  ) {\n    throw new ERR_OUT_OF_RANGE(\n      name,\n      `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n      value\n    )\n  }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n  if (!ArrayPrototypeIncludes(oneOf, value)) {\n    const allowed = ArrayPrototypeJoin(\n      ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n      ', '\n    )\n    const reason = 'must be one of: ' + allowed\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n  if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n  return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n *   allowArray?: boolean,\n *   allowFunction?: boolean,\n *   nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n  const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n  const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n  const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n  if (\n    (!nullable && value === null) ||\n    (!allowArray && ArrayIsArray(value)) ||\n    (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n  ) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n  }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n  if (!ArrayIsArray(value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n  }\n  if (value.length < minLength) {\n    const reason = `must be longer than ${minLength}`\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n  validateString(signal, name)\n  if (signals[signal] === undefined) {\n    if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n      throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n    }\n    throw new ERR_UNKNOWN_SIGNAL(signal)\n  }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n  if (!isArrayBufferView(buffer)) {\n    throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n  }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n  const normalizedEncoding = normalizeEncoding(encoding)\n  const length = data.length\n  if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n    throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n  }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n  if (\n    (typeof port !== 'number' && typeof port !== 'string') ||\n    (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n    +port !== +port >>> 0 ||\n    port > 0xffff ||\n    (port === 0 && !allowZero)\n  ) {\n    throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n  }\n  return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n  if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n  if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n  if (!ArrayPrototypeIncludes(union, value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n  }\n}\nmodule.exports = {\n  isInt32,\n  isUint32,\n  parseFileMode,\n  validateArray,\n  validateBoolean,\n  validateBuffer,\n  validateEncoding,\n  validateFunction,\n  validateInt32,\n  validateInteger,\n  validateNumber,\n  validateObject,\n  validateOneOf,\n  validatePlainFunction,\n  validatePort,\n  validateSignalName,\n  validateString,\n  validateUint32,\n  validateUndefined,\n  validateUnion,\n  validateAbortSignal\n}\n", "'use strict'\n\nconst { Symbol, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst kDestroyed = Symbol('kDestroyed')\nconst kIsErrored = Symbol('kIsErrored')\nconst kIsReadable = Symbol('kIsReadable')\nconst kIsDisturbed = Symbol('kIsDisturbed')\nfunction isReadableNodeStream(obj, strict = false) {\n  var _obj$_readableState\n  return !!(\n    (\n      obj &&\n      typeof obj.pipe === 'function' &&\n      typeof obj.on === 'function' &&\n      (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n      (!obj._writableState ||\n        ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n          ? undefined\n          : _obj$_readableState.readable) !== false) &&\n      // Duplex\n      (!obj._writableState || obj._readableState)\n    ) // Writable has .pipe.\n  )\n}\n\nfunction isWritableNodeStream(obj) {\n  var _obj$_writableState\n  return !!(\n    (\n      obj &&\n      typeof obj.write === 'function' &&\n      typeof obj.on === 'function' &&\n      (!obj._readableState ||\n        ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n          ? undefined\n          : _obj$_writableState.writable) !== false)\n    ) // Duplex\n  )\n}\n\nfunction isDuplexNodeStream(obj) {\n  return !!(\n    obj &&\n    typeof obj.pipe === 'function' &&\n    obj._readableState &&\n    typeof obj.on === 'function' &&\n    typeof obj.write === 'function'\n  )\n}\nfunction isNodeStream(obj) {\n  return (\n    obj &&\n    (obj._readableState ||\n      obj._writableState ||\n      (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n      (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n  )\n}\nfunction isIterable(obj, isAsync) {\n  if (obj == null) return false\n  if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n  if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n  return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return !!(stream.destroyed || stream[kDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableEnded === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n  return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableFinished === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n  return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n  if (!isReadableNodeStream(stream)) return null\n  if (stream.readableEnded === true) return true\n  const rState = stream._readableState\n  if (!rState || rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n  return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n  if (!isReadableNodeStream(stream)) return null\n  const rState = stream._readableState\n  if (rState !== null && rState !== undefined && rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n  return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n  if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n  if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n  if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (isDestroyed(stream)) {\n    return true\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n    return false\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n    return false\n  }\n  return true\n}\nfunction isWritableErrored(stream) {\n  var _stream$_writableStat, _stream$_writableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.writableErrored) {\n    return stream.writableErrored\n  }\n  return (_stream$_writableStat =\n    (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n      ? undefined\n      : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n    ? _stream$_writableStat\n    : null\n}\nfunction isReadableErrored(stream) {\n  var _stream$_readableStat, _stream$_readableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.readableErrored) {\n    return stream.readableErrored\n  }\n  return (_stream$_readableStat =\n    (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n      ? undefined\n      : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n    ? _stream$_readableStat\n    : null\n}\nfunction isClosed(stream) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (typeof stream.closed === 'boolean') {\n    return stream.closed\n  }\n  const wState = stream._writableState\n  const rState = stream._readableState\n  if (\n    typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n    typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n  ) {\n    return (\n      (wState === null || wState === undefined ? undefined : wState.closed) ||\n      (rState === null || rState === undefined ? undefined : rState.closed)\n    )\n  }\n  if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n    return stream._closed\n  }\n  return null\n}\nfunction isOutgoingMessage(stream) {\n  return (\n    typeof stream._closed === 'boolean' &&\n    typeof stream._defaultKeepAlive === 'boolean' &&\n    typeof stream._removedConnection === 'boolean' &&\n    typeof stream._removedContLen === 'boolean'\n  )\n}\nfunction isServerResponse(stream) {\n  return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n  var _stream$req\n  return (\n    typeof stream._consuming === 'boolean' &&\n    typeof stream._dumped === 'boolean' &&\n    ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n      undefined\n  )\n}\nfunction willEmitClose(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return (\n    (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n  )\n}\nfunction isDisturbed(stream) {\n  var _stream$kIsDisturbed\n  return !!(\n    stream &&\n    ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n      ? _stream$kIsDisturbed\n      : stream.readableDidRead || stream.readableAborted)\n  )\n}\nfunction isErrored(stream) {\n  var _ref,\n    _ref2,\n    _ref3,\n    _ref4,\n    _ref5,\n    _stream$kIsErrored,\n    _stream$_readableStat3,\n    _stream$_writableStat3,\n    _stream$_readableStat4,\n    _stream$_writableStat4\n  return !!(\n    stream &&\n    ((_ref =\n      (_ref2 =\n        (_ref3 =\n          (_ref4 =\n            (_ref5 =\n              (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n                ? _stream$kIsErrored\n                : stream.readableErrored) !== null && _ref5 !== undefined\n              ? _ref5\n              : stream.writableErrored) !== null && _ref4 !== undefined\n            ? _ref4\n            : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n            ? undefined\n            : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n          ? _ref3\n          : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n          ? undefined\n          : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n        ? _ref2\n        : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n        ? undefined\n        : _stream$_readableStat4.errored) !== null && _ref !== undefined\n      ? _ref\n      : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n      ? undefined\n      : _stream$_writableStat4.errored)\n  )\n}\nmodule.exports = {\n  kDestroyed,\n  isDisturbed,\n  kIsDisturbed,\n  isErrored,\n  kIsErrored,\n  isReadable,\n  kIsReadable,\n  isClosed,\n  isDestroyed,\n  isDuplexNodeStream,\n  isFinished,\n  isIterable,\n  isReadableNodeStream,\n  isReadableEnded,\n  isReadableFinished,\n  isReadableErrored,\n  isNodeStream,\n  isWritable,\n  isWritableNodeStream,\n  isWritableEnded,\n  isWritableFinished,\n  isWritableErrored,\n  isServerRequest,\n  isServerResponse,\n  willEmitClose\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject } = require('../validators')\nconst { Promise } = require('../../ours/primordials')\nconst {\n  isClosed,\n  isReadable,\n  isReadableNodeStream,\n  isReadableFinished,\n  isReadableErrored,\n  isWritable,\n  isWritableNodeStream,\n  isWritableFinished,\n  isWritableErrored,\n  isNodeStream,\n  willEmitClose: _willEmitClose\n} = require('./utils')\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n  var _options$readable, _options$writable\n  if (arguments.length === 2) {\n    callback = options\n    options = kEmptyObject\n  } else if (options == null) {\n    options = kEmptyObject\n  } else {\n    validateObject(options, 'options')\n  }\n  validateFunction(callback, 'callback')\n  validateAbortSignal(options.signal, 'options.signal')\n  callback = once(callback)\n  const readable =\n    (_options$readable = options.readable) !== null && _options$readable !== undefined\n      ? _options$readable\n      : isReadableNodeStream(stream)\n  const writable =\n    (_options$writable = options.writable) !== null && _options$writable !== undefined\n      ? _options$writable\n      : isWritableNodeStream(stream)\n  if (!isNodeStream(stream)) {\n    // TODO: Webstreams.\n    throw new ERR_INVALID_ARG_TYPE('stream', 'Stream', stream)\n  }\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const onlegacyfinish = () => {\n    if (!stream.writable) {\n      onfinish()\n    }\n  }\n\n  // TODO (ronag): Improve soft detection to include core modules and\n  // common ecosystem modules that do properly emit 'close' but fail\n  // this generic check.\n  let willEmitClose =\n    _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n  let writableFinished = isWritableFinished(stream, false)\n  const onfinish = () => {\n    writableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.readable || readable)) {\n      return\n    }\n    if (!readable || readableFinished) {\n      callback.call(stream)\n    }\n  }\n  let readableFinished = isReadableFinished(stream, false)\n  const onend = () => {\n    readableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.writable || writable)) {\n      return\n    }\n    if (!writable || writableFinished) {\n      callback.call(stream)\n    }\n  }\n  const onerror = (err) => {\n    callback.call(stream, err)\n  }\n  let closed = isClosed(stream)\n  const onclose = () => {\n    closed = true\n    const errored = isWritableErrored(stream) || isReadableErrored(stream)\n    if (errored && typeof errored !== 'boolean') {\n      return callback.call(stream, errored)\n    }\n    if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n      if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    if (writable && !writableFinished) {\n      if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    callback.call(stream)\n  }\n  const onrequest = () => {\n    stream.req.on('finish', onfinish)\n  }\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish)\n    if (!willEmitClose) {\n      stream.on('abort', onclose)\n    }\n    if (stream.req) {\n      onrequest()\n    } else {\n      stream.on('request', onrequest)\n    }\n  } else if (writable && !wState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish)\n    stream.on('close', onlegacyfinish)\n  }\n\n  // Not all streams will emit 'close' after 'aborted'.\n  if (!willEmitClose && typeof stream.aborted === 'boolean') {\n    stream.on('aborted', onclose)\n  }\n  stream.on('end', onend)\n  stream.on('finish', onfinish)\n  if (options.error !== false) {\n    stream.on('error', onerror)\n  }\n  stream.on('close', onclose)\n  if (closed) {\n    process.nextTick(onclose)\n  } else if (\n    (wState !== null && wState !== undefined && wState.errorEmitted) ||\n    (rState !== null && rState !== undefined && rState.errorEmitted)\n  ) {\n    if (!willEmitClose) {\n      process.nextTick(onclose)\n    }\n  } else if (\n    !readable &&\n    (!willEmitClose || isReadable(stream)) &&\n    (writableFinished || isWritable(stream) === false)\n  ) {\n    process.nextTick(onclose)\n  } else if (\n    !writable &&\n    (!willEmitClose || isWritable(stream)) &&\n    (readableFinished || isReadable(stream) === false)\n  ) {\n    process.nextTick(onclose)\n  } else if (rState && stream.req && stream.aborted) {\n    process.nextTick(onclose)\n  }\n  const cleanup = () => {\n    callback = nop\n    stream.removeListener('aborted', onclose)\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  if (options.signal && !closed) {\n    const abort = () => {\n      // Keep it because cleanup removes it.\n      const endCallback = callback\n      cleanup()\n      endCallback.call(\n        stream,\n        new AbortError(undefined, {\n          cause: options.signal.reason\n        })\n      )\n    }\n    if (options.signal.aborted) {\n      process.nextTick(abort)\n    } else {\n      const originalCallback = callback\n      callback = once((...args) => {\n        options.signal.removeEventListener('abort', abort)\n        originalCallback.apply(stream, args)\n      })\n      options.signal.addEventListener('abort', abort)\n    }\n  }\n  return cleanup\n}\nfunction finished(stream, opts) {\n  return new Promise((resolve, reject) => {\n    eos(stream, opts, (err) => {\n      if (err) {\n        reject(err)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n", "'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n  codes: { ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n  AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst { finished } = require('./end-of-stream')\nconst {\n  ArrayPrototypePush,\n  MathFloor,\n  Number,\n  NumberIsNaN,\n  Promise,\n  PromiseReject,\n  PromisePrototypeThen,\n  Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction map(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let concurrency = 1\n  if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n    concurrency = MathFloor(options.concurrency)\n  }\n  validateInteger(concurrency, 'concurrency', 1)\n  return async function* map() {\n    var _options$signal, _options$signal2\n    const ac = new AbortController()\n    const stream = this\n    const queue = []\n    const signal = ac.signal\n    const signalOpt = {\n      signal\n    }\n    const abort = () => ac.abort()\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal = options.signal) !== null &&\n      _options$signal !== undefined &&\n      _options$signal.aborted\n    ) {\n      abort()\n    }\n    options === null || options === undefined\n      ? undefined\n      : (_options$signal2 = options.signal) === null || _options$signal2 === undefined\n      ? undefined\n      : _options$signal2.addEventListener('abort', abort)\n    let next\n    let resume\n    let done = false\n    function onDone() {\n      done = true\n    }\n    async function pump() {\n      try {\n        for await (let val of stream) {\n          var _val\n          if (done) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          try {\n            val = fn(val, signalOpt)\n          } catch (err) {\n            val = PromiseReject(err)\n          }\n          if (val === kEmpty) {\n            continue\n          }\n          if (typeof ((_val = val) === null || _val === undefined ? undefined : _val.catch) === 'function') {\n            val.catch(onDone)\n          }\n          queue.push(val)\n          if (next) {\n            next()\n            next = null\n          }\n          if (!done && queue.length && queue.length >= concurrency) {\n            await new Promise((resolve) => {\n              resume = resolve\n            })\n          }\n        }\n        queue.push(kEof)\n      } catch (err) {\n        const val = PromiseReject(err)\n        PromisePrototypeThen(val, undefined, onDone)\n        queue.push(val)\n      } finally {\n        var _options$signal3\n        done = true\n        if (next) {\n          next()\n          next = null\n        }\n        options === null || options === undefined\n          ? undefined\n          : (_options$signal3 = options.signal) === null || _options$signal3 === undefined\n          ? undefined\n          : _options$signal3.removeEventListener('abort', abort)\n      }\n    }\n    pump()\n    try {\n      while (true) {\n        while (queue.length > 0) {\n          const val = await queue[0]\n          if (val === kEof) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          if (val !== kEmpty) {\n            yield val\n          }\n          queue.shift()\n          if (resume) {\n            resume()\n            resume = null\n          }\n        }\n        await new Promise((resolve) => {\n          next = resolve\n        })\n      }\n    } finally {\n      ac.abort()\n      done = true\n      if (resume) {\n        resume()\n        resume = null\n      }\n    }\n  }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  return async function* asIndexedPairs() {\n    let index = 0\n    for await (const val of this) {\n      var _options$signal4\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal4 = options.signal) !== null &&\n        _options$signal4 !== undefined &&\n        _options$signal4.aborted\n      ) {\n        throw new AbortError({\n          cause: options.signal.reason\n        })\n      }\n      yield [index++, val]\n    }\n  }.call(this)\n}\nasync function some(fn, options = undefined) {\n  for await (const unused of filter.call(this, fn, options)) {\n    return true\n  }\n  return false\n}\nasync function every(fn, options = undefined) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n  return !(await some.call(\n    this,\n    async (...args) => {\n      return !(await fn(...args))\n    },\n    options\n  ))\n}\nasync function find(fn, options) {\n  for await (const result of filter.call(this, fn, options)) {\n    return result\n  }\n  return undefined\n}\nasync function forEach(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function forEachFn(value, options) {\n    await fn(value, options)\n    return kEmpty\n  }\n  // eslint-disable-next-line no-unused-vars\n  for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function filterFn(value, options) {\n    if (await fn(value, options)) {\n      return value\n    }\n    return kEmpty\n  }\n  return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n  constructor() {\n    super('reduce')\n    this.message = 'Reduce of an empty stream requires an initial value'\n  }\n}\nasync function reduce(reducer, initialValue, options) {\n  var _options$signal5\n  if (typeof reducer !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let hasInitialValue = arguments.length > 1\n  if (\n    options !== null &&\n    options !== undefined &&\n    (_options$signal5 = options.signal) !== null &&\n    _options$signal5 !== undefined &&\n    _options$signal5.aborted\n  ) {\n    const err = new AbortError(undefined, {\n      cause: options.signal.reason\n    })\n    this.once('error', () => {}) // The error is already propagated\n    await finished(this.destroy(err))\n    throw err\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  if (options !== null && options !== undefined && options.signal) {\n    const opts = {\n      once: true,\n      [kWeakHandler]: this\n    }\n    options.signal.addEventListener('abort', () => ac.abort(), opts)\n  }\n  let gotAnyItemFromStream = false\n  try {\n    for await (const value of this) {\n      var _options$signal6\n      gotAnyItemFromStream = true\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal6 = options.signal) !== null &&\n        _options$signal6 !== undefined &&\n        _options$signal6.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (!hasInitialValue) {\n        initialValue = value\n        hasInitialValue = true\n      } else {\n        initialValue = await reducer(initialValue, value, {\n          signal\n        })\n      }\n    }\n    if (!gotAnyItemFromStream && !hasInitialValue) {\n      throw new ReduceAwareErrMissingArgs()\n    }\n  } finally {\n    ac.abort()\n  }\n  return initialValue\n}\nasync function toArray(options) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  const result = []\n  for await (const val of this) {\n    var _options$signal7\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal7 = options.signal) !== null &&\n      _options$signal7 !== undefined &&\n      _options$signal7.aborted\n    ) {\n      throw new AbortError(undefined, {\n        cause: options.signal.reason\n      })\n    }\n    ArrayPrototypePush(result, val)\n  }\n  return result\n}\nfunction flatMap(fn, options) {\n  const values = map.call(this, fn, options)\n  return async function* flatMap() {\n    for await (const val of values) {\n      yield* val\n    }\n  }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n  // We coerce here to align with the spec\n  // https://github.com/tc39/proposal-iterator-helpers/issues/169\n  number = Number(number)\n  if (NumberIsNaN(number)) {\n    return 0\n  }\n  if (number < 0) {\n    throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n  }\n  return number\n}\nfunction drop(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* drop() {\n    var _options$signal8\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal8 = options.signal) !== null &&\n      _options$signal8 !== undefined &&\n      _options$signal8.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal9\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal9 = options.signal) !== null &&\n        _options$signal9 !== undefined &&\n        _options$signal9.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- <= 0) {\n        yield val\n      }\n    }\n  }.call(this)\n}\nfunction take(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* take() {\n    var _options$signal10\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal10 = options.signal) !== null &&\n      _options$signal10 !== undefined &&\n      _options$signal10.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal11\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal11 = options.signal) !== null &&\n        _options$signal11 !== undefined &&\n        _options$signal11.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- > 0) {\n        yield val\n      } else {\n        return\n      }\n    }\n  }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n  asIndexedPairs,\n  drop,\n  filter,\n  flatMap,\n  map,\n  take\n}\nmodule.exports.promiseReturningOperators = {\n  every,\n  forEach,\n  reduce,\n  toArray,\n  some,\n  find\n}\n", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n  aggregateTwoErrors,\n  codes: { ERR_MULTIPLE_CALLBACK },\n  AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n  if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n  }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n  const r = this._readableState\n  const w = this._writableState\n  // With duplex streams we use the writable side for state.\n  const s = w || r\n  if ((w && w.destroyed) || (r && r.destroyed)) {\n    if (typeof cb === 'function') {\n      cb()\n    }\n    return this\n  }\n\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  checkError(err, w, r)\n  if (w) {\n    w.destroyed = true\n  }\n  if (r) {\n    r.destroyed = true\n  }\n\n  // If still constructing then defer calling _destroy.\n  if (!s.constructed) {\n    this.once(kDestroy, function (er) {\n      _destroy(this, aggregateTwoErrors(er, err), cb)\n    })\n  } else {\n    _destroy(this, err, cb)\n  }\n  return this\n}\nfunction _destroy(self, err, cb) {\n  let called = false\n  function onDestroy(err) {\n    if (called) {\n      return\n    }\n    called = true\n    const r = self._readableState\n    const w = self._writableState\n    checkError(err, w, r)\n    if (w) {\n      w.closed = true\n    }\n    if (r) {\n      r.closed = true\n    }\n    if (typeof cb === 'function') {\n      cb(err)\n    }\n    if (err) {\n      process.nextTick(emitErrorCloseNT, self, err)\n    } else {\n      process.nextTick(emitCloseNT, self)\n    }\n  }\n  try {\n    self._destroy(err || null, onDestroy)\n  } catch (err) {\n    onDestroy(err)\n  }\n}\nfunction emitErrorCloseNT(self, err) {\n  emitErrorNT(self, err)\n  emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n  const r = self._readableState\n  const w = self._writableState\n  if (w) {\n    w.closeEmitted = true\n  }\n  if (r) {\n    r.closeEmitted = true\n  }\n  if ((w && w.emitClose) || (r && r.emitClose)) {\n    self.emit('close')\n  }\n}\nfunction emitErrorNT(self, err) {\n  const r = self._readableState\n  const w = self._writableState\n  if ((w && w.errorEmitted) || (r && r.errorEmitted)) {\n    return\n  }\n  if (w) {\n    w.errorEmitted = true\n  }\n  if (r) {\n    r.errorEmitted = true\n  }\n  self.emit('error', err)\n}\nfunction undestroy() {\n  const r = this._readableState\n  const w = this._writableState\n  if (r) {\n    r.constructed = true\n    r.closed = false\n    r.closeEmitted = false\n    r.destroyed = false\n    r.errored = null\n    r.errorEmitted = false\n    r.reading = false\n    r.ended = r.readable === false\n    r.endEmitted = r.readable === false\n  }\n  if (w) {\n    w.constructed = true\n    w.destroyed = false\n    w.closed = false\n    w.closeEmitted = false\n    w.errored = null\n    w.errorEmitted = false\n    w.finalCalled = false\n    w.prefinished = false\n    w.ended = w.writable === false\n    w.ending = w.writable === false\n    w.finished = w.writable === false\n  }\n}\nfunction errorOrDestroy(stream, err, sync) {\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\n  const r = stream._readableState\n  const w = stream._writableState\n  if ((w && w.destroyed) || (r && r.destroyed)) {\n    return this\n  }\n  if ((r && r.autoDestroy) || (w && w.autoDestroy)) stream.destroy(err)\n  else if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n    if (sync) {\n      process.nextTick(emitErrorNT, stream, err)\n    } else {\n      emitErrorNT(stream, err)\n    }\n  }\n}\nfunction construct(stream, cb) {\n  if (typeof stream._construct !== 'function') {\n    return\n  }\n  const r = stream._readableState\n  const w = stream._writableState\n  if (r) {\n    r.constructed = false\n  }\n  if (w) {\n    w.constructed = false\n  }\n  stream.once(kConstruct, cb)\n  if (stream.listenerCount(kConstruct) > 1) {\n    // Duplex\n    return\n  }\n  process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n  let called = false\n  function onConstruct(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    const r = stream._readableState\n    const w = stream._writableState\n    const s = w || r\n    if (r) {\n      r.constructed = true\n    }\n    if (w) {\n      w.constructed = true\n    }\n    if (s.destroyed) {\n      stream.emit(kDestroy, err)\n    } else if (err) {\n      errorOrDestroy(stream, err, true)\n    } else {\n      process.nextTick(emitConstructNT, stream)\n    }\n  }\n  try {\n    stream._construct(onConstruct)\n  } catch (err) {\n    onConstruct(err)\n  }\n}\nfunction emitConstructNT(stream) {\n  stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n  return stream && stream.setHeader && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n  stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n  stream.emit('error', err)\n  process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n  if (!stream || isDestroyed(stream)) {\n    return\n  }\n  if (!err && !isFinished(stream)) {\n    err = new AbortError()\n  }\n\n  // TODO: Remove isRequest branches.\n  if (isServerRequest(stream)) {\n    stream.socket = null\n    stream.destroy(err)\n  } else if (isRequest(stream)) {\n    stream.abort()\n  } else if (isRequest(stream.req)) {\n    stream.req.abort()\n  } else if (typeof stream.destroy === 'function') {\n    stream.destroy(err)\n  } else if (typeof stream.close === 'function') {\n    // TODO: Don't lose err?\n    stream.close()\n  } else if (err) {\n    process.nextTick(emitErrorCloseLegacy, stream, err)\n  } else {\n    process.nextTick(emitCloseLegacy, stream)\n  }\n  if (!stream.destroyed) {\n    stream[kDestroyed] = true\n  }\n}\nmodule.exports = {\n  construct,\n  destroyer,\n  destroy,\n  undestroy,\n  errorOrDestroy\n}\n", "'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n  EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n  const source = this\n  function ondata(chunk) {\n    if (dest.writable && dest.write(chunk) === false && source.pause) {\n      source.pause()\n    }\n  }\n  source.on('data', ondata)\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume()\n    }\n  }\n  dest.on('drain', ondrain)\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend)\n    source.on('close', onclose)\n  }\n  let didOnEnd = false\n  function onend() {\n    if (didOnEnd) return\n    didOnEnd = true\n    dest.end()\n  }\n  function onclose() {\n    if (didOnEnd) return\n    didOnEnd = true\n    if (typeof dest.destroy === 'function') dest.destroy()\n  }\n\n  // Don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup()\n    if (EE.listenerCount(this, 'error') === 0) {\n      this.emit('error', er)\n    }\n  }\n  prependListener(source, 'error', onerror)\n  prependListener(dest, 'error', onerror)\n\n  // Remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata)\n    dest.removeListener('drain', ondrain)\n    source.removeListener('end', onend)\n    source.removeListener('close', onclose)\n    source.removeListener('error', onerror)\n    dest.removeListener('error', onerror)\n    source.removeListener('end', cleanup)\n    source.removeListener('close', cleanup)\n    dest.removeListener('close', cleanup)\n  }\n  source.on('end', cleanup)\n  source.on('close', cleanup)\n  dest.on('close', cleanup)\n  dest.emit('pipe', source)\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest\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)\n\n  // 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  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n  else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n  else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n  Stream,\n  prependListener\n}\n", "'use strict'\n\nconst { AbortError, codes } = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n}\nfunction isNodeStream(obj) {\n  return !!(obj && typeof obj.pipe === 'function')\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n  validateAbortSignal(signal, 'signal')\n  if (!isNodeStream(stream)) {\n    throw new ERR_INVALID_ARG_TYPE('stream', 'stream.Stream', stream)\n  }\n  return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    return stream\n  }\n  const onAbort = () => {\n    stream.destroy(\n      new AbortError(undefined, {\n        cause: signal.reason\n      })\n    )\n  }\n  if (signal.aborted) {\n    onAbort()\n  } else {\n    signal.addEventListener('abort', onAbort)\n    eos(stream, () => signal.removeEventListener('abort', onAbort))\n  }\n  return stream\n}\n", "'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n  constructor() {\n    this.head = null\n    this.tail = null\n    this.length = 0\n  }\n  push(v) {\n    const entry = {\n      data: v,\n      next: null\n    }\n    if (this.length > 0) this.tail.next = entry\n    else this.head = entry\n    this.tail = entry\n    ++this.length\n  }\n  unshift(v) {\n    const 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  shift() {\n    if (this.length === 0) return\n    const ret = this.head.data\n    if (this.length === 1) this.head = this.tail = null\n    else this.head = this.head.next\n    --this.length\n    return ret\n  }\n  clear() {\n    this.head = this.tail = null\n    this.length = 0\n  }\n  join(s) {\n    if (this.length === 0) return ''\n    let p = this.head\n    let ret = '' + p.data\n    while ((p = p.next) !== null) ret += s + p.data\n    return ret\n  }\n  concat(n) {\n    if (this.length === 0) return Buffer.alloc(0)\n    const ret = Buffer.allocUnsafe(n >>> 0)\n    let p = this.head\n    let i = 0\n    while (p) {\n      TypedArrayPrototypeSet(ret, p.data, i)\n      i += p.data.length\n      p = p.next\n    }\n    return ret\n  }\n\n  // Consumes a specified amount of bytes or characters from the buffered data.\n  consume(n, hasStrings) {\n    const data = this.head.data\n    if (n < data.length) {\n      // `slice` is the same for buffers and strings.\n      const slice = data.slice(0, n)\n      this.head.data = data.slice(n)\n      return slice\n    }\n    if (n === data.length) {\n      // First chunk is a perfect match.\n      return this.shift()\n    }\n    // Result spans more than one buffer.\n    return hasStrings ? this._getString(n) : this._getBuffer(n)\n  }\n  first() {\n    return this.head.data\n  }\n  *[SymbolIterator]() {\n    for (let p = this.head; p; p = p.next) {\n      yield p.data\n    }\n  }\n\n  // Consumes a specified amount of characters from the buffered data.\n  _getString(n) {\n    let ret = ''\n    let p = this.head\n    let c = 0\n    do {\n      const str = p.data\n      if (n > str.length) {\n        ret += str\n        n -= str.length\n      } else {\n        if (n === str.length) {\n          ret += str\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          ret += StringPrototypeSlice(str, 0, n)\n          this.head = p\n          p.data = StringPrototypeSlice(str, n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Consumes a specified amount of bytes from the buffered data.\n  _getBuffer(n) {\n    const ret = Buffer.allocUnsafe(n)\n    const retLen = n\n    let p = this.head\n    let c = 0\n    do {\n      const buf = p.data\n      if (n > buf.length) {\n        TypedArrayPrototypeSet(ret, buf, retLen - n)\n        n -= buf.length\n      } else {\n        if (n === buf.length) {\n          TypedArrayPrototypeSet(ret, buf, retLen - n)\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n          this.head = p\n          p.data = buf.slice(n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Make sure the linked list only shows the minimal necessary information.\n  [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n    return inspect(this, {\n      ...options,\n      // Only inspect one level.\n      depth: 0,\n      // It should not recurse.\n      customInspect: false\n    })\n  }\n}\n", "'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n  return objectMode ? 16 : 16 * 1024\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n  if (hwm != null) {\n    if (!NumberIsInteger(hwm) || hwm < 0) {\n      const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n      throw new ERR_INVALID_ARG_VALUE(name, hwm)\n    }\n    return MathFloor(hwm)\n  }\n\n  // Default value\n  return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n  getHighWaterMark,\n  getDefaultHighWaterMark\n}\n", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n  let iterator\n  if (typeof iterable === 'string' || iterable instanceof Buffer) {\n    return new Readable({\n      objectMode: true,\n      ...opts,\n      read() {\n        this.push(iterable)\n        this.push(null)\n      }\n    })\n  }\n  let isAsync\n  if (iterable && iterable[SymbolAsyncIterator]) {\n    isAsync = true\n    iterator = iterable[SymbolAsyncIterator]()\n  } else if (iterable && iterable[SymbolIterator]) {\n    isAsync = false\n    iterator = iterable[SymbolIterator]()\n  } else {\n    throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n  }\n  const readable = new Readable({\n    objectMode: true,\n    highWaterMark: 1,\n    // TODO(ronag): What options should be allowed?\n    ...opts\n  })\n\n  // Flag to protect against _read\n  // being called before last iteration completion.\n  let reading = false\n  readable._read = function () {\n    if (!reading) {\n      reading = true\n      next()\n    }\n  }\n  readable._destroy = function (error, cb) {\n    PromisePrototypeThen(\n      close(error),\n      () => process.nextTick(cb, error),\n      // nextTick is here in case cb throws\n      (e) => process.nextTick(cb, e || error)\n    )\n  }\n  async function close(error) {\n    const hadError = error !== undefined && error !== null\n    const hasThrow = typeof iterator.throw === 'function'\n    if (hadError && hasThrow) {\n      const { value, done } = await iterator.throw(error)\n      await value\n      if (done) {\n        return\n      }\n    }\n    if (typeof iterator.return === 'function') {\n      const { value } = await iterator.return()\n      await value\n    }\n  }\n  async function next() {\n    for (;;) {\n      try {\n        const { value, done } = isAsync ? await iterator.next() : iterator.next()\n        if (done) {\n          readable.push(null)\n        } else {\n          const res = value && typeof value.then === 'function' ? await value : value\n          if (res === null) {\n            reading = false\n            throw new ERR_STREAM_NULL_VALUES()\n          } else if (readable.push(res)) {\n            continue\n          } else {\n            reading = false\n          }\n        }\n      } catch (err) {\n        readable.destroy(err)\n      }\n      break\n    }\n  }\n  return readable\n}\nmodule.exports = from\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\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')\nconst {\n  ArrayPrototypeIndexOf,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberParseInt,\n  ObjectDefineProperties,\n  ObjectKeys,\n  ObjectSetPrototypeOf,\n  Promise,\n  SafeSet,\n  SymbolAsyncIterator,\n  Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n  debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_OUT_OF_RANGE,\n    ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n  }\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nfunction ReadableState(options, stream, isDuplex) {\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away.\n  this.objectMode = !!(options && options.objectMode)\n  if (isDuplex) this.objectMode = this.objectMode || !!(options && options.readableObjectMode)\n\n  // 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  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // 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  this.buffer = new BufferList()\n  this.length = 0\n  this.pipes = []\n  this.flowing = null\n  this.ended = false\n  this.endEmitted = false\n  this.reading = false\n\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  this.constructed = true\n\n  // 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  this.sync = true\n\n  // Whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false\n  this.emittedReadable = false\n  this.readableListening = false\n  this.resumeScheduled = false\n  this[kPaused] = null\n\n  // True if the error was already emitted and should not be thrown again.\n  this.errorEmitted = false\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = !options || options.emitClose !== false\n\n  // Should .destroy() be called after 'end' (and potentially 'finish').\n  this.autoDestroy = !options || options.autoDestroy !== false\n\n  // Has it been destroyed.\n  this.destroyed = false\n\n  // Indicates whether the stream has errored. When true no further\n  // _read calls, 'data' or 'readable' events should occur. This is needed\n  // since when autoDestroy is disabled we need a way to tell whether the\n  // stream has failed.\n  this.errored = null\n\n  // Indicates whether the stream has finished destroying.\n  this.closed = false\n\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  this.closeEmitted = false\n\n  // 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  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // Ref the piped dest which we need a drain event on it\n  // type: null | Writable | Set<Writable>.\n  this.awaitDrainWriters = null\n  this.multiAwaitDrain = false\n\n  // If true, a maybeReadMore has been scheduled.\n  this.readingMore = false\n  this.dataEmitted = false\n  this.decoder = null\n  this.encoding = null\n  if (options && options.encoding) {\n    this.decoder = new StringDecoder(options.encoding)\n    this.encoding = options.encoding\n  }\n}\nfunction Readable(options) {\n  if (!(this instanceof Readable)) return new Readable(options)\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  this._readableState = new ReadableState(options, this, isDuplex)\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read\n    if (typeof options.destroy === 'function') this._destroy = options.destroy\n    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    if (this._readableState.needReadable) {\n      maybeReadMore(this, this._readableState)\n    }\n  })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n  debug('readableAddChunk', chunk)\n  const state = stream._readableState\n  let err\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding\n      if (state.encoding !== encoding) {\n        if (addToFront && state.encoding) {\n          // When unshifting, if state.encoding is set, we have to save\n          // the string in the BufferList with the state encoding.\n          chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n        } else {\n          chunk = Buffer.from(chunk, encoding)\n          encoding = ''\n        }\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = ''\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = ''\n    } else if (chunk != null) {\n      err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  if (err) {\n    errorOrDestroy(stream, err)\n  } else if (chunk === null) {\n    state.reading = false\n    onEofChunk(stream, state)\n  } else if (state.objectMode || (chunk && chunk.length > 0)) {\n    if (addToFront) {\n      if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n      else if (state.destroyed || state.errored) return false\n      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 || state.errored) {\n      return false\n    } else {\n      state.reading = false\n      if (state.decoder && !encoding) {\n        chunk = state.decoder.write(chunk)\n        if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n        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\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n    // Use the guard to avoid creating `Set()` repeatedly\n    // when we have multiple pipes.\n    if (state.multiAwaitDrain) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\n    }\n    state.dataEmitted = true\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)\n    else state.buffer.push(chunk)\n    if (state.needReadable) emitReadable(stream)\n  }\n  maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n  const state = this._readableState\n  return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  const decoder = new StringDecoder(enc)\n  this._readableState.decoder = decoder\n  // If setEncoding(null), decoder.encoding equals utf8.\n  this._readableState.encoding = this._readableState.decoder.encoding\n  const buffer = this._readableState.buffer\n  // Iterate over current buffer to convert already stored Buffers:\n  let content = ''\n  for (const data of buffer) {\n    content += decoder.write(data)\n  }\n  buffer.clear()\n  if (content !== '') buffer.push(content)\n  this._readableState.length = content.length\n  return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n  if (n > MAX_HWM) {\n    throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\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  return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || (state.length === 0 && state.ended)) return 0\n  if (state.objectMode) return 1\n  if (NumberIsNaN(n)) {\n    // Only flow one buffer at a time.\n    if (state.flowing && state.length) return state.buffer.first().length\n    return state.length\n  }\n  if (n <= state.length) return n\n  return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n)\n  // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n  // in this scenario, so we are doing it manually.\n  if (n === undefined) {\n    n = NaN\n  } else if (!NumberIsInteger(n)) {\n    n = NumberParseInt(n, 10)\n  }\n  const state = this._readableState\n  const nOrig = n\n\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n  if (n !== 0) state.emittedReadable = false\n\n  // 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  if (\n    n === 0 &&\n    state.needReadable &&\n    ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n  ) {\n    debug('read: emitReadable', state.length, state.ended)\n    if (state.length === 0 && state.ended) endReadable(this)\n    else emitReadable(this)\n    return null\n  }\n  n = howMuchToRead(n, state)\n\n  // If we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this)\n    return null\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  let doRead = state.needReadable\n  debug('need readable', doRead)\n\n  // If we currently have less than the highWaterMark, then also read some.\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true\n    debug('length less than watermark', doRead)\n  }\n\n  // However, if we've ended, then there's no point, if we're already\n  // reading, then it's unnecessary, if we're constructing we have to wait,\n  // and if we're destroyed or errored, then it's not allowed,\n  if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n    doRead = false\n    debug('reading, ended or constructing', doRead)\n  } else if (doRead) {\n    debug('do read')\n    state.reading = true\n    state.sync = true\n    // If the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true\n\n    // Call internal read method\n    try {\n      this._read(state.highWaterMark)\n    } catch (err) {\n      errorOrDestroy(this, err)\n    }\n    state.sync = false\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state)\n  }\n  let ret\n  if (n > 0) ret = fromList(n, state)\n  else ret = null\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark\n    n = 0\n  } else {\n    state.length -= n\n    if (state.multiAwaitDrain) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\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\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this)\n  }\n  if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n    state.dataEmitted = true\n    this.emit('data', ret)\n  }\n  return ret\n}\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk')\n  if (state.ended) return\n  if (state.decoder) {\n    const chunk = state.decoder.end()\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk)\n      state.length += state.objectMode ? 1 : chunk.length\n    }\n  }\n  state.ended = true\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    state.emittedReadable = true\n    // We have to emit readable now that we are EOF. Modules\n    // in the ecosystem (e.g. dicer) rely on this event being sync.\n    emitReadable_(stream)\n  }\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.\nfunction emitReadable(stream) {\n  const state = stream._readableState\n  debug('emitReadable', state.needReadable, state.emittedReadable)\n  state.needReadable = false\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing)\n    state.emittedReadable = true\n    process.nextTick(emitReadable_, stream)\n  }\n}\nfunction emitReadable_(stream) {\n  const state = stream._readableState\n  debug('emitReadable_', state.destroyed, state.length, state.ended)\n  if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n    stream.emit('readable')\n    state.emittedReadable = false\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n  flow(stream)\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore && state.constructed) {\n    state.readingMore = true\n    process.nextTick(maybeReadMore_, stream, state)\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 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 (\n    !state.reading &&\n    !state.ended &&\n    (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n  ) {\n    const len = state.length\n    debug('maybeReadMore read 0')\n    stream.read(0)\n    if (len === state.length)\n      // Didn't get any data, stop spinning.\n      break\n  }\n  state.readingMore = false\n}\n\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.\nReadable.prototype._read = function (n) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  const src = this\n  const state = this._readableState\n  if (state.pipes.length === 1) {\n    if (!state.multiAwaitDrain) {\n      state.multiAwaitDrain = true\n      state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n    }\n  }\n  state.pipes.push(dest)\n  debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n  const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n  const endFn = doEnd ? onend : unpipe\n  if (state.endEmitted) process.nextTick(endFn)\n  else src.once('end', endFn)\n  dest.on('unpipe', onunpipe)\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe')\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true\n        cleanup()\n      }\n    }\n  }\n  function onend() {\n    debug('onend')\n    dest.end()\n  }\n  let ondrain\n  let cleanedUp = false\n  function cleanup() {\n    debug('cleanup')\n    // Cleanup event handlers once the pipe is broken.\n    dest.removeListener('close', onclose)\n    dest.removeListener('finish', onfinish)\n    if (ondrain) {\n      dest.removeListener('drain', ondrain)\n    }\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\n\n    // 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    if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n  }\n  function pause() {\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 (!cleanedUp) {\n      if (state.pipes.length === 1 && state.pipes[0] === dest) {\n        debug('false write response, pause', 0)\n        state.awaitDrainWriters = dest\n        state.multiAwaitDrain = false\n      } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n        debug('false write response, pause', state.awaitDrainWriters.size)\n        state.awaitDrainWriters.add(dest)\n      }\n      src.pause()\n    }\n    if (!ondrain) {\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      ondrain = pipeOnDrain(src, dest)\n      dest.on('drain', ondrain)\n    }\n  }\n  src.on('data', ondata)\n  function ondata(chunk) {\n    debug('ondata')\n    const ret = dest.write(chunk)\n    debug('dest.write', ret)\n    if (ret === false) {\n      pause()\n    }\n  }\n\n  // If the dest has an error, then stop piping into it.\n  // However, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er)\n    unpipe()\n    dest.removeListener('error', onerror)\n    if (dest.listenerCount('error') === 0) {\n      const s = dest._writableState || dest._readableState\n      if (s && !s.errorEmitted) {\n        // User incorrectly emitted 'error' directly on the stream.\n        errorOrDestroy(dest, er)\n      } else {\n        dest.emit('error', er)\n      }\n    }\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror)\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish)\n    unpipe()\n  }\n  dest.once('close', onclose)\n  function onfinish() {\n    debug('onfinish')\n    dest.removeListener('close', onclose)\n    unpipe()\n  }\n  dest.once('finish', onfinish)\n  function unpipe() {\n    debug('unpipe')\n    src.unpipe(dest)\n  }\n\n  // Tell the dest that it's being piped to.\n  dest.emit('pipe', src)\n\n  // Start the flow if it hasn't been started already.\n\n  if (dest.writableNeedDrain === true) {\n    if (state.flowing) {\n      pause()\n    }\n  } else if (!state.flowing) {\n    debug('pipe resume')\n    src.resume()\n  }\n  return dest\n}\nfunction pipeOnDrain(src, dest) {\n  return function pipeOnDrainFunctionResult() {\n    const state = src._readableState\n\n    // `ondrain` will call directly,\n    // `this` maybe not a reference to dest,\n    // so we use the real dest here.\n    if (state.awaitDrainWriters === dest) {\n      debug('pipeOnDrain', 1)\n      state.awaitDrainWriters = null\n    } else if (state.multiAwaitDrain) {\n      debug('pipeOnDrain', state.awaitDrainWriters.size)\n      state.awaitDrainWriters.delete(dest)\n    }\n    if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n      src.resume()\n    }\n  }\n}\nReadable.prototype.unpipe = function (dest) {\n  const state = this._readableState\n  const unpipeInfo = {\n    hasUnpiped: false\n  }\n\n  // If we're not piping anywhere, then do nothing.\n  if (state.pipes.length === 0) return this\n  if (!dest) {\n    // remove all.\n    const dests = state.pipes\n    state.pipes = []\n    this.pause()\n    for (let i = 0; i < dests.length; i++)\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      })\n    return this\n  }\n\n  // Try to find the right one.\n  const index = ArrayPrototypeIndexOf(state.pipes, dest)\n  if (index === -1) return this\n  state.pipes.splice(index, 1)\n  if (state.pipes.length === 0) this.pause()\n  dest.emit('unpipe', this, unpipeInfo)\n  return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n  const res = Stream.prototype.on.call(this, ev, fn)\n  const state = this._readableState\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\n\n    // Try start flowing on next tick if stream isn't explicitly paused.\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      if (state.length) {\n        emitReadable(this)\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this)\n      }\n    }\n  }\n  return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n  const res = Stream.prototype.removeListener.call(this, ev, fn)\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  return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n  const res = Stream.prototype.removeAllListeners.apply(this, arguments)\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  return res\n}\nfunction updateReadableListening(self) {\n  const state = self._readableState\n  state.readableListening = self.listenerCount('readable') > 0\n  if (state.resumeScheduled && state[kPaused] === false) {\n    // Flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true\n\n    // Crude way to check if we should resume.\n  } else if (self.listenerCount('data') > 0) {\n    self.resume()\n  } else if (!state.readableListening) {\n    state.flowing = null\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0')\n  self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  const state = this._readableState\n  if (!state.flowing) {\n    debug('resume')\n    // We flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume().\n    state.flowing = !state.readableListening\n    resume(this, state)\n  }\n  state[kPaused] = false\n  return this\n}\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true\n    process.nextTick(resume_, stream, state)\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading)\n  if (!state.reading) {\n    stream.read(0)\n  }\n  state.resumeScheduled = false\n  stream.emit('resume')\n  flow(stream)\n  if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing)\n  if (this._readableState.flowing !== false) {\n    debug('pause')\n    this._readableState.flowing = false\n    this.emit('pause')\n  }\n  this._readableState[kPaused] = true\n  return this\n}\nfunction flow(stream) {\n  const state = stream._readableState\n  debug('flow', state.flowing)\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.\nReadable.prototype.wrap = function (stream) {\n  let paused = false\n\n  // TODO (ronag): Should this.destroy(err) emit\n  // 'error' on the wrapped stream? Would require\n  // a static factory method, e.g. Readable.wrap(stream).\n\n  stream.on('data', (chunk) => {\n    if (!this.push(chunk) && stream.pause) {\n      paused = true\n      stream.pause()\n    }\n  })\n  stream.on('end', () => {\n    this.push(null)\n  })\n  stream.on('error', (err) => {\n    errorOrDestroy(this, err)\n  })\n  stream.on('close', () => {\n    this.destroy()\n  })\n  stream.on('destroy', () => {\n    this.destroy()\n  })\n  this._read = () => {\n    if (paused && stream.resume) {\n      paused = false\n      stream.resume()\n    }\n  }\n\n  // Proxy all the other methods. Important when wrapping filters and duplexes.\n  const streamKeys = ObjectKeys(stream)\n  for (let j = 1; j < streamKeys.length; j++) {\n    const i = streamKeys[j]\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = stream[i].bind(stream)\n    }\n  }\n  return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n  return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n  if (options !== undefined) {\n    validateObject(options, 'options')\n  }\n  return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n  if (typeof stream.read !== 'function') {\n    stream = Readable.wrap(stream, {\n      objectMode: true\n    })\n  }\n  const iter = createAsyncIterator(stream, options)\n  iter.stream = stream\n  return iter\n}\nasync function* createAsyncIterator(stream, options) {\n  let callback = nop\n  function next(resolve) {\n    if (this === stream) {\n      callback()\n      callback = nop\n    } else {\n      callback = resolve\n    }\n  }\n  stream.on('readable', next)\n  let error\n  const cleanup = eos(\n    stream,\n    {\n      writable: false\n    },\n    (err) => {\n      error = err ? aggregateTwoErrors(error, err) : null\n      callback()\n      callback = nop\n    }\n  )\n  try {\n    while (true) {\n      const chunk = stream.destroyed ? null : stream.read()\n      if (chunk !== null) {\n        yield chunk\n      } else if (error) {\n        throw error\n      } else if (error === null) {\n        return\n      } else {\n        await new Promise(next)\n      }\n    }\n  } catch (err) {\n    error = aggregateTwoErrors(error, err)\n    throw error\n  } finally {\n    if (\n      (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n      (error === undefined || stream._readableState.autoDestroy)\n    ) {\n      destroyImpl.destroyer(stream, null)\n    } else {\n      stream.off('readable', next)\n      cleanup()\n    }\n  }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n  readable: {\n    __proto__: null,\n    get() {\n      const r = this._readableState\n      // r.readable === false means that this is part of a Duplex stream\n      // where the readable side was disabled upon construction.\n      // Compat. The user might manually disable readable side through\n      // deprecated setter.\n      return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n    },\n    set(val) {\n      // Backwards compat.\n      if (this._readableState) {\n        this._readableState.readable = !!val\n      }\n    }\n  },\n  readableDidRead: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.dataEmitted\n    }\n  },\n  readableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._readableState.readable !== false &&\n        (this._readableState.destroyed || this._readableState.errored) &&\n        !this._readableState.endEmitted\n      )\n    }\n  },\n  readableHighWaterMark: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.highWaterMark\n    }\n  },\n  readableBuffer: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState && this._readableState.buffer\n    }\n  },\n  readableFlowing: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.flowing\n    },\n    set: function (state) {\n      if (this._readableState) {\n        this._readableState.flowing = state\n      }\n    }\n  },\n  readableLength: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState.length\n    }\n  },\n  readableObjectMode: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.objectMode : false\n    }\n  },\n  readableEncoding: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.encoding : null\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.errored : null\n    }\n  },\n  closed: {\n    __proto__: null,\n    get() {\n      return this._readableState ? this._readableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.destroyed : false\n    },\n    set(value) {\n      // We ignore the value if the stream\n      // has not been initialized yet.\n      if (!this._readableState) {\n        return\n      }\n\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      this._readableState.destroyed = value\n    }\n  },\n  readableEnded: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.endEmitted : false\n    }\n  }\n})\nObjectDefineProperties(ReadableState.prototype, {\n  // Legacy getter for `pipesCount`.\n  pipesCount: {\n    __proto__: null,\n    get() {\n      return this.pipes.length\n    }\n  },\n  // Legacy property for `paused`.\n  paused: {\n    __proto__: null,\n    get() {\n      return this[kPaused] !== false\n    },\n    set(value) {\n      this[kPaused] = !!value\n    }\n  }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\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.\nfunction fromList(n, state) {\n  // nothing buffered.\n  if (state.length === 0) return null\n  let ret\n  if (state.objectMode) ret = state.buffer.shift()\n  else if (!n || n >= state.length) {\n    // Read it all, truncate the list.\n    if (state.decoder) ret = state.buffer.join('')\n    else if (state.buffer.length === 1) ret = state.buffer.first()\n    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}\nfunction endReadable(stream) {\n  const state = stream._readableState\n  debug('endReadable', state.endEmitted)\n  if (!state.endEmitted) {\n    state.ended = true\n    process.nextTick(endReadableNT, state, stream)\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length)\n\n  // Check that we didn't get one last unshift.\n  if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n    state.endEmitted = true\n    stream.emit('end')\n    if (stream.writable && stream.allowHalfOpen === false) {\n      process.nextTick(endWritableNT, stream)\n    } else 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      const wState = stream._writableState\n      const autoDestroy =\n        !wState ||\n        (wState.autoDestroy &&\n          // We don't expect the writable to ever 'finish'\n          // if writable is explicitly set to false.\n          (wState.finished || wState.writable === false))\n      if (autoDestroy) {\n        stream.destroy()\n      }\n    }\n  }\n}\nfunction endWritableNT(stream) {\n  const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n  if (writable) {\n    stream.end()\n  }\n}\nReadable.from = function (iterable, opts) {\n  return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n  return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n  return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n  var _ref, _src$readableObjectMo\n  return new Readable({\n    objectMode:\n      (_ref =\n        (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n          ? _src$readableObjectMo\n          : src.objectMode) !== null && _ref !== undefined\n        ? _ref\n        : true,\n    ...options,\n    destroy(err, callback) {\n      destroyImpl.destroyer(src, err)\n      callback(err)\n    }\n  }).wrap(src)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\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// 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\n;('use strict')\nconst {\n  ArrayPrototypeSlice,\n  Error,\n  FunctionPrototypeSymbolHasInstance,\n  ObjectDefineProperty,\n  ObjectDefineProperties,\n  ObjectSetPrototypeOf,\n  StringPrototypeToLowerCase,\n  Symbol,\n  SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED,\n  ERR_STREAM_ALREADY_FINISHED,\n  ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!(options && options.objectMode)\n  if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n  // 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  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // if _final has been called.\n  this.finalCalled = false\n\n  // drain event flag.\n  this.needDrain = false\n  // At the start of calling end()\n  this.ending = false\n  // When end() has been called, and returned.\n  this.ended = false\n  // When 'finish' is emitted.\n  this.finished = false\n\n  // Has it been destroyed\n  this.destroyed = false\n\n  // 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  const noDecode = !!(options && options.decodeStrings === false)\n  this.decodeStrings = !noDecode\n\n  // 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  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // 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  this.length = 0\n\n  // A flag to see when we're in the middle of a write.\n  this.writing = false\n\n  // When true all writes will be buffered until .uncork() call.\n  this.corked = 0\n\n  // 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  this.sync = true\n\n  // 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  this.bufferProcessing = false\n\n  // The callback that's passed to _write(chunk, cb).\n  this.onwrite = onwrite.bind(undefined, stream)\n\n  // The callback that the user supplies to write(chunk, encoding, cb).\n  this.writecb = null\n\n  // The amount that is being written when _write is called.\n  this.writelen = 0\n\n  // Storage for data passed to the afterWrite() callback in case of\n  // synchronous _write() completion.\n  this.afterWriteTickInfo = null\n  resetBuffer(this)\n\n  // Number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted.\n  this.pendingcb = 0\n\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  this.constructed = true\n\n  // Emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams.\n  this.prefinished = false\n\n  // True if the error was already emitted and should not be thrown again.\n  this.errorEmitted = false\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = !options || options.emitClose !== false\n\n  // Should .destroy() be called after 'finish' (and potentially 'end').\n  this.autoDestroy = !options || options.autoDestroy !== false\n\n  // Indicates whether the stream has errored. When true all write() calls\n  // should return false. This is needed since when autoDestroy\n  // is disabled we need a way to tell whether the stream has failed.\n  this.errored = null\n\n  // Indicates whether the stream has finished destroying.\n  this.closed = false\n\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  this.closeEmitted = false\n  this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n  state.buffered = []\n  state.bufferedIndex = 0\n  state.allBuffers = true\n  state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n  __proto__: null,\n  get() {\n    return this.buffered.length - this.bufferedIndex\n  }\n})\nfunction Writable(options) {\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n  this._writableState = new WritableState(options, this, isDuplex)\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    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    const state = this._writableState\n    if (!state.writing) {\n      clearBuffer(this, state)\n    }\n    finishMaybe(this, state)\n  })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n  __proto__: null,\n  value: function (object) {\n    if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n    if (this !== Writable) return false\n    return object && object._writableState instanceof WritableState\n  }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n  const state = stream._writableState\n  if (typeof encoding === 'function') {\n    cb = encoding\n    encoding = state.defaultEncoding\n  } else {\n    if (!encoding) encoding = state.defaultEncoding\n    else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n    if (typeof cb !== 'function') cb = nop\n  }\n  if (chunk === null) {\n    throw new ERR_STREAM_NULL_VALUES()\n  } else if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      if (state.decodeStrings !== false) {\n        chunk = Buffer.from(chunk, encoding)\n        encoding = 'buffer'\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = 'buffer'\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = 'buffer'\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  let err\n  if (state.ending) {\n    err = new ERR_STREAM_WRITE_AFTER_END()\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('write')\n  }\n  if (err) {\n    process.nextTick(cb, err)\n    errorOrDestroy(stream, err, true)\n    return err\n  }\n  state.pendingcb++\n  return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n  this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n  const state = this._writableState\n  if (state.corked) {\n    state.corked--\n    if (!state.writing) clearBuffer(this, state)\n  }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n  if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n  this._writableState.defaultEncoding = encoding\n  return this\n}\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.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n  const len = state.objectMode ? 1 : chunk.length\n  state.length += len\n\n  // stream._write resets state.length\n  const ret = state.length < state.highWaterMark\n  // We must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true\n  if (state.writing || state.corked || state.errored || !state.constructed) {\n    state.buffered.push({\n      chunk,\n      encoding,\n      callback\n    })\n    if (state.allBuffers && encoding !== 'buffer') {\n      state.allBuffers = false\n    }\n    if (state.allNoop && callback !== nop) {\n      state.allNoop = false\n    }\n  } else {\n    state.writelen = len\n    state.writecb = callback\n    state.writing = true\n    state.sync = true\n    stream._write(chunk, encoding, state.onwrite)\n    state.sync = false\n  }\n\n  // Return false if errored or destroyed in order to break\n  // any synchronous while(stream.write(data)) loops.\n  return ret && !state.errored && !state.destroyed\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'))\n  else if (writev) stream._writev(chunk, state.onwrite)\n  else stream._write(chunk, encoding, state.onwrite)\n  state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n  --state.pendingcb\n  cb(er)\n  // Ensure callbacks are invoked even when autoDestroy is\n  // not enabled. Passing `er` here doesn't make sense since\n  // it's related to one specific write, not to the buffered\n  // writes.\n  errorBuffer(state)\n  // This can emit error, but error must always follow cb.\n  errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n  const state = stream._writableState\n  const sync = state.sync\n  const cb = state.writecb\n  if (typeof cb !== 'function') {\n    errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n    return\n  }\n  state.writing = false\n  state.writecb = null\n  state.length -= state.writelen\n  state.writelen = 0\n  if (er) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    er.stack // eslint-disable-line no-unused-expressions\n\n    if (!state.errored) {\n      state.errored = er\n    }\n\n    // In case of duplex streams we need to notify the readable side of the\n    // error.\n    if (stream._readableState && !stream._readableState.errored) {\n      stream._readableState.errored = er\n    }\n    if (sync) {\n      process.nextTick(onwriteError, stream, state, er, cb)\n    } else {\n      onwriteError(stream, state, er, cb)\n    }\n  } else {\n    if (state.buffered.length > state.bufferedIndex) {\n      clearBuffer(stream, state)\n    }\n    if (sync) {\n      // It is a common case that the callback passed to .write() is always\n      // the same. In that case, we do not schedule a new nextTick(), but\n      // rather just increase a counter, to improve performance and avoid\n      // memory allocations.\n      if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n        state.afterWriteTickInfo.count++\n      } else {\n        state.afterWriteTickInfo = {\n          count: 1,\n          cb,\n          stream,\n          state\n        }\n        process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n      }\n    } else {\n      afterWrite(stream, state, 1, cb)\n    }\n  }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n  state.afterWriteTickInfo = null\n  return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n  const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n  if (needDrain) {\n    state.needDrain = false\n    stream.emit('drain')\n  }\n  while (count-- > 0) {\n    state.pendingcb--\n    cb()\n  }\n  if (state.destroyed) {\n    errorBuffer(state)\n  }\n  finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n  if (state.writing) {\n    return\n  }\n  for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n    var _state$errored\n    const { chunk, callback } = state.buffered[n]\n    const len = state.objectMode ? 1 : chunk.length\n    state.length -= len\n    callback(\n      (_state$errored = state.errored) !== null && _state$errored !== undefined\n        ? _state$errored\n        : new ERR_STREAM_DESTROYED('write')\n    )\n  }\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    var _state$errored2\n    onfinishCallbacks[i](\n      (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n        ? _state$errored2\n        : new ERR_STREAM_DESTROYED('end')\n    )\n  }\n  resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n  if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n    return\n  }\n  const { buffered, bufferedIndex, objectMode } = state\n  const bufferedLength = buffered.length - bufferedIndex\n  if (!bufferedLength) {\n    return\n  }\n  let i = bufferedIndex\n  state.bufferProcessing = true\n  if (bufferedLength > 1 && stream._writev) {\n    state.pendingcb -= bufferedLength - 1\n    const callback = state.allNoop\n      ? nop\n      : (err) => {\n          for (let n = i; n < buffered.length; ++n) {\n            buffered[n].callback(err)\n          }\n        }\n    // Make a copy of `buffered` if it's going to be used by `callback` above,\n    // since `doWrite` will mutate the array.\n    const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n    chunks.allBuffers = state.allBuffers\n    doWrite(stream, state, true, state.length, chunks, '', callback)\n    resetBuffer(state)\n  } else {\n    do {\n      const { chunk, encoding, callback } = buffered[i]\n      buffered[i++] = null\n      const len = objectMode ? 1 : chunk.length\n      doWrite(stream, state, false, len, chunk, encoding, callback)\n    } while (i < buffered.length && !state.writing)\n    if (i === buffered.length) {\n      resetBuffer(state)\n    } else if (i > 256) {\n      buffered.splice(0, i)\n      state.bufferedIndex = 0\n    } else {\n      state.bufferedIndex = i\n    }\n  }\n  state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  if (this._writev) {\n    this._writev(\n      [\n        {\n          chunk,\n          encoding\n        }\n      ],\n      cb\n    )\n  } else {\n    throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n  }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n  const state = this._writableState\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  let err\n  if (chunk !== null && chunk !== undefined) {\n    const ret = _write(this, chunk, encoding)\n    if (ret instanceof Error) {\n      err = ret\n    }\n  }\n\n  // .end() fully uncorks.\n  if (state.corked) {\n    state.corked = 1\n    this.uncork()\n  }\n  if (err) {\n    // Do nothing...\n  } else if (!state.errored && !state.ending) {\n    // This is forgiving in terms of unnecessary calls to end() and can hide\n    // logic errors. However, usually such errors are harmless and causing a\n    // hard error can be disproportionately destructive. It is not always\n    // trivial for the user to determine whether end() needs to be called\n    // or not.\n\n    state.ending = true\n    finishMaybe(this, state, true)\n    state.ended = true\n  } else if (state.finished) {\n    err = new ERR_STREAM_ALREADY_FINISHED('end')\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('end')\n  }\n  if (typeof cb === 'function') {\n    if (err || state.finished) {\n      process.nextTick(cb, err)\n    } else {\n      state[kOnFinished].push(cb)\n    }\n  }\n  return this\n}\nfunction needFinish(state) {\n  return (\n    state.ending &&\n    !state.destroyed &&\n    state.constructed &&\n    state.length === 0 &&\n    !state.errored &&\n    state.buffered.length === 0 &&\n    !state.finished &&\n    !state.writing &&\n    !state.errorEmitted &&\n    !state.closeEmitted\n  )\n}\nfunction callFinal(stream, state) {\n  let called = false\n  function onFinish(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    state.pendingcb--\n    if (err) {\n      const onfinishCallbacks = state[kOnFinished].splice(0)\n      for (let i = 0; i < onfinishCallbacks.length; i++) {\n        onfinishCallbacks[i](err)\n      }\n      errorOrDestroy(stream, err, state.sync)\n    } else if (needFinish(state)) {\n      state.prefinished = true\n      stream.emit('prefinish')\n      // Backwards compat. Don't check state.sync here.\n      // Some streams assume 'finish' will be emitted\n      // asynchronously relative to _final callback.\n      state.pendingcb++\n      process.nextTick(finish, stream, state)\n    }\n  }\n  state.sync = true\n  state.pendingcb++\n  try {\n    stream._final(onFinish)\n  } catch (err) {\n    onFinish(err)\n  }\n  state.sync = false\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.finalCalled = true\n      callFinal(stream, state)\n    } else {\n      state.prefinished = true\n      stream.emit('prefinish')\n    }\n  }\n}\nfunction finishMaybe(stream, state, sync) {\n  if (needFinish(state)) {\n    prefinish(stream, state)\n    if (state.pendingcb === 0) {\n      if (sync) {\n        state.pendingcb++\n        process.nextTick(\n          (stream, state) => {\n            if (needFinish(state)) {\n              finish(stream, state)\n            } else {\n              state.pendingcb--\n            }\n          },\n          stream,\n          state\n        )\n      } else if (needFinish(state)) {\n        state.pendingcb++\n        finish(stream, state)\n      }\n    }\n  }\n}\nfunction finish(stream, state) {\n  state.pendingcb--\n  state.finished = true\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    onfinishCallbacks[i]()\n  }\n  stream.emit('finish')\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    const rState = stream._readableState\n    const autoDestroy =\n      !rState ||\n      (rState.autoDestroy &&\n        // We don't expect the readable to ever 'end'\n        // if readable is explicitly set to false.\n        (rState.endEmitted || rState.readable === false))\n    if (autoDestroy) {\n      stream.destroy()\n    }\n  }\n}\nObjectDefineProperties(Writable.prototype, {\n  closed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.destroyed : false\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly managing destroyed.\n      if (this._writableState) {\n        this._writableState.destroyed = value\n      }\n    }\n  },\n  writable: {\n    __proto__: null,\n    get() {\n      const w = this._writableState\n      // w.writable === false means that this is part of a Duplex stream\n      // where the writable side was disabled upon construction.\n      // Compat. The user might manually disable writable side through\n      // deprecated setter.\n      return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n    },\n    set(val) {\n      // Backwards compatible.\n      if (this._writableState) {\n        this._writableState.writable = !!val\n      }\n    }\n  },\n  writableFinished: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.finished : false\n    }\n  },\n  writableObjectMode: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.objectMode : false\n    }\n  },\n  writableBuffer: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.getBuffer()\n    }\n  },\n  writableEnded: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.ending : false\n    }\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    get() {\n      const wState = this._writableState\n      if (!wState) return false\n      return !wState.destroyed && !wState.ending && wState.needDrain\n    }\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.highWaterMark\n    }\n  },\n  writableCorked: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.corked : 0\n    }\n  },\n  writableLength: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.length\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._writableState ? this._writableState.errored : null\n    }\n  },\n  writableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._writableState.writable !== false &&\n        (this._writableState.destroyed || this._writableState.errored) &&\n        !this._writableState.finished\n      )\n    }\n  }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n  const state = this._writableState\n\n  // Invoke pending callbacks.\n  if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n    process.nextTick(errorBuffer, state)\n  }\n  destroy.call(this, err, cb)\n  return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n  return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n  return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n  isReadable,\n  isWritable,\n  isIterable,\n  isNodeStream,\n  isReadableNodeStream,\n  isWritableNodeStream,\n  isDuplexNodeStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n  constructor(options) {\n    super(options)\n\n    // https://github.com/nodejs/node/pull/34385\n\n    if ((options === null || options === undefined ? undefined : options.readable) === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if ((options === null || options === undefined ? undefined : options.writable) === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  }\n}\nmodule.exports = function duplexify(body, name) {\n  if (isDuplexNodeStream(body)) {\n    return body\n  }\n  if (isReadableNodeStream(body)) {\n    return _duplexify({\n      readable: body\n    })\n  }\n  if (isWritableNodeStream(body)) {\n    return _duplexify({\n      writable: body\n    })\n  }\n  if (isNodeStream(body)) {\n    return _duplexify({\n      writable: false,\n      readable: false\n    })\n  }\n\n  // TODO: Webstreams\n  // if (isReadableStream(body)) {\n  //   return _duplexify({ readable: Readable.fromWeb(body) });\n  // }\n\n  // TODO: Webstreams\n  // if (isWritableStream(body)) {\n  //   return _duplexify({ writable: Writable.fromWeb(body) });\n  // }\n\n  if (typeof body === 'function') {\n    const { value, write, final, destroy } = fromAsyncGen(body)\n    if (isIterable(value)) {\n      return from(Duplexify, value, {\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        write,\n        final,\n        destroy\n      })\n    }\n    const then = value === null || value === undefined ? undefined : value.then\n    if (typeof then === 'function') {\n      let d\n      const promise = FunctionPrototypeCall(\n        then,\n        value,\n        (val) => {\n          if (val != null) {\n            throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n          }\n        },\n        (err) => {\n          destroyer(d, err)\n        }\n      )\n      return (d = new Duplexify({\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        readable: false,\n        write,\n        final(cb) {\n          final(async () => {\n            try {\n              await promise\n              process.nextTick(cb, null)\n            } catch (err) {\n              process.nextTick(cb, err)\n            }\n          })\n        },\n        destroy\n      }))\n    }\n    throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n  }\n  if (isBlob(body)) {\n    return duplexify(body.arrayBuffer())\n  }\n  if (isIterable(body)) {\n    return from(Duplexify, body, {\n      // TODO (ronag): highWaterMark?\n      objectMode: true,\n      writable: false\n    })\n  }\n\n  // TODO: Webstreams.\n  // if (\n  //   isReadableStream(body?.readable) &&\n  //   isWritableStream(body?.writable)\n  // ) {\n  //   return Duplexify.fromWeb(body);\n  // }\n\n  if (\n    typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n    typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n  ) {\n    const readable =\n      body !== null && body !== undefined && body.readable\n        ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.readable\n          : duplexify(body.readable)\n        : undefined\n    const writable =\n      body !== null && body !== undefined && body.writable\n        ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.writable\n          : duplexify(body.writable)\n        : undefined\n    return _duplexify({\n      readable,\n      writable\n    })\n  }\n  const then = body === null || body === undefined ? undefined : body.then\n  if (typeof then === 'function') {\n    let d\n    FunctionPrototypeCall(\n      then,\n      body,\n      (val) => {\n        if (val != null) {\n          d.push(val)\n        }\n        d.push(null)\n      },\n      (err) => {\n        destroyer(d, err)\n      }\n    )\n    return (d = new Duplexify({\n      objectMode: true,\n      writable: false,\n      read() {}\n    }))\n  }\n  throw new ERR_INVALID_ARG_TYPE(\n    name,\n    [\n      'Blob',\n      'ReadableStream',\n      'WritableStream',\n      'Stream',\n      'Iterable',\n      'AsyncIterable',\n      'Function',\n      '{ readable, writable } pair',\n      'Promise'\n    ],\n    body\n  )\n}\nfunction fromAsyncGen(fn) {\n  let { promise, resolve } = createDeferredPromise()\n  const ac = new AbortController()\n  const signal = ac.signal\n  const value = fn(\n    (async function* () {\n      while (true) {\n        const _promise = promise\n        promise = null\n        const { chunk, done, cb } = await _promise\n        process.nextTick(cb)\n        if (done) return\n        if (signal.aborted)\n          throw new AbortError(undefined, {\n            cause: signal.reason\n          })\n        ;({ promise, resolve } = createDeferredPromise())\n        yield chunk\n      }\n    })(),\n    {\n      signal\n    }\n  )\n  return {\n    value,\n    write(chunk, encoding, cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        chunk,\n        done: false,\n        cb\n      })\n    },\n    final(cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        done: true,\n        cb\n      })\n    },\n    destroy(err, cb) {\n      ac.abort()\n      cb(err)\n    }\n  }\n}\nfunction _duplexify(pair) {\n  const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n  const w = pair.writable\n  let readable = !!isReadable(r)\n  let writable = !!isWritable(w)\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    } else if (!readable && !writable) {\n      d.destroy()\n    }\n  }\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplexify({\n    // TODO (ronag): highWaterMark?\n    readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n    writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n    readable,\n    writable\n  })\n  if (writable) {\n    eos(w, (err) => {\n      writable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    d._write = function (chunk, encoding, callback) {\n      if (w.write(chunk, encoding)) {\n        callback()\n      } else {\n        ondrain = callback\n      }\n    }\n    d._final = function (callback) {\n      w.end()\n      onfinish = callback\n    }\n    w.on('drain', function () {\n      if (ondrain) {\n        const cb = ondrain\n        ondrain = null\n        cb()\n      }\n    })\n    w.on('finish', function () {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    eos(r, (err) => {\n      readable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    r.on('readable', function () {\n      if (onreadable) {\n        const cb = onreadable\n        onreadable = null\n        cb()\n      }\n    })\n    r.on('end', function () {\n      d.push(null)\n    })\n    d._read = function () {\n      while (true) {\n        const buf = r.read()\n        if (buf === null) {\n          onreadable = d._read\n          return\n        }\n        if (!d.push(buf)) {\n          return\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      destroyer(w, err)\n      destroyer(r, err)\n    }\n  }\n  return d\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n  ObjectDefineProperties,\n  ObjectGetOwnPropertyDescriptor,\n  ObjectKeys,\n  ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n  const keys = ObjectKeys(Writable.prototype)\n  // Allow the keys array to be GC'ed.\n  for (let i = 0; i < keys.length; i++) {\n    const method = keys[i]\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\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  if (options) {\n    this.allowHalfOpen = options.allowHalfOpen !== false\n    if (options.readable === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if (options.writable === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  } else {\n    this.allowHalfOpen = true\n  }\n}\nObjectDefineProperties(Duplex.prototype, {\n  writable: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n  },\n  writableObjectMode: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n  },\n  writableBuffer: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n  },\n  writableLength: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n  },\n  writableFinished: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n  },\n  writableCorked: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n  },\n  writableEnded: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      if (this._readableState === undefined || this._writableState === undefined) {\n        return false\n      }\n      return this._readableState.destroyed && this._writableState.destroyed\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      if (this._readableState && this._writableState) {\n        this._readableState.destroyed = value\n        this._writableState.destroyed = value\n      }\n    }\n  }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n  return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n  return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n  if (!duplexify) {\n    duplexify = require('./duplexify')\n  }\n  return duplexify(body, 'body')\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// 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\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options)\n\n  // TODO (ronag): This should preferably always be\n  // applied but would be semver-major. Or even better;\n  // make Transform a Readable with the Writable interface.\n  const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n  if (readableHighWaterMark === 0) {\n    // A Duplex will buffer both on the writable and readable side while\n    // a Transform just wants to buffer hwm number of elements. To avoid\n    // buffering twice we disable buffering on the writable side.\n    options = {\n      ...options,\n      highWaterMark: null,\n      readableHighWaterMark,\n      // TODO (ronag): 0 is not optimal since we have\n      // a \"bug\" where we check needDrain before calling _write and not after.\n      // Refs: https://github.com/nodejs/node/pull/32887\n      // Refs: https://github.com/nodejs/node/pull/35941\n      writableHighWaterMark: options.writableHighWaterMark || 0\n    }\n  }\n  Duplex.call(this, options)\n\n  // 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  this._readableState.sync = false\n  this[kCallback] = null\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform\n    if (typeof options.flush === 'function') this._flush = options.flush\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  // Backwards compat. Some Transform streams incorrectly implement _final\n  // instead of or in addition to _flush. By using 'prefinish' instead of\n  // implementing _final we continue supporting this unfortunate use case.\n  this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n  if (typeof this._flush === 'function' && !this.destroyed) {\n    this._flush((er, data) => {\n      if (er) {\n        if (cb) {\n          cb(er)\n        } else {\n          this.destroy(er)\n        }\n        return\n      }\n      if (data != null) {\n        this.push(data)\n      }\n      this.push(null)\n      if (cb) {\n        cb()\n      }\n    })\n  } else {\n    this.push(null)\n    if (cb) {\n      cb()\n    }\n  }\n}\nfunction prefinish() {\n  if (this._final !== final) {\n    final.call(this)\n  }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n  const rState = this._readableState\n  const wState = this._writableState\n  const length = rState.length\n  this._transform(chunk, encoding, (err, val) => {\n    if (err) {\n      callback(err)\n      return\n    }\n    if (val != null) {\n      this.push(val)\n    }\n    if (\n      wState.ended ||\n      // Backwards compat.\n      length === rState.length ||\n      // Backwards compat.\n      rState.length < rState.highWaterMark\n    ) {\n      callback()\n    } else {\n      this[kCallback] = callback\n    }\n  })\n}\nTransform.prototype._read = function () {\n  if (this[kCallback]) {\n    const callback = this[kCallback]\n    this[kCallback] = null\n    callback()\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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options)\n  Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_INVALID_RETURN_VALUE,\n    ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED,\n    ERR_STREAM_PREMATURE_CLOSE\n  },\n  AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst { isIterable, isReadable, isReadableNodeStream, isNodeStream } = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nfunction destroyer(stream, reading, writing) {\n  let finished = false\n  stream.on('close', () => {\n    finished = true\n  })\n  const cleanup = eos(\n    stream,\n    {\n      readable: reading,\n      writable: writing\n    },\n    (err) => {\n      finished = !err\n    }\n  )\n  return {\n    destroy: (err) => {\n      if (finished) return\n      finished = true\n      destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n    },\n    cleanup\n  }\n}\nfunction popCallback(streams) {\n  // Streams should never be an empty array. It should always contain at least\n  // a single stream. Therefore optimize for the average case instead of\n  // checking for length === 0 as well.\n  validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n  return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n  if (isIterable(val)) {\n    return val\n  } else if (isReadableNodeStream(val)) {\n    // Legacy streams are not Iterable.\n    return fromReadable(val)\n  }\n  throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n  if (!Readable) {\n    Readable = require('./readable')\n  }\n  yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pump(iterable, writable, finish, { end }) {\n  let error\n  let onresolve = null\n  const resume = (err) => {\n    if (err) {\n      error = err\n    }\n    if (onresolve) {\n      const callback = onresolve\n      onresolve = null\n      callback()\n    }\n  }\n  const wait = () =>\n    new Promise((resolve, reject) => {\n      if (error) {\n        reject(error)\n      } else {\n        onresolve = () => {\n          if (error) {\n            reject(error)\n          } else {\n            resolve()\n          }\n        }\n      }\n    })\n  writable.on('drain', resume)\n  const cleanup = eos(\n    writable,\n    {\n      readable: false\n    },\n    resume\n  )\n  try {\n    if (writable.writableNeedDrain) {\n      await wait()\n    }\n    for await (const chunk of iterable) {\n      if (!writable.write(chunk)) {\n        await wait()\n      }\n    }\n    if (end) {\n      writable.end()\n    }\n    await wait()\n    finish()\n  } catch (err) {\n    finish(error !== err ? aggregateTwoErrors(error, err) : err)\n  } finally {\n    cleanup()\n    writable.off('drain', resume)\n  }\n}\nfunction pipeline(...streams) {\n  return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n  if (streams.length === 1 && ArrayIsArray(streams[0])) {\n    streams = streams[0]\n  }\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n  // Need to cleanup event listeners if last stream is readable\n  // https://github.com/nodejs/node/issues/35452\n  const lastStreamCleanup = []\n  validateAbortSignal(outerSignal, 'options.signal')\n  function abort() {\n    finishImpl(new AbortError())\n  }\n  outerSignal === null || outerSignal === undefined ? undefined : outerSignal.addEventListener('abort', abort)\n  let error\n  let value\n  const destroys = []\n  let finishCount = 0\n  function finish(err) {\n    finishImpl(err, --finishCount === 0)\n  }\n  function finishImpl(err, final) {\n    if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n      error = err\n    }\n    if (!error && !final) {\n      return\n    }\n    while (destroys.length) {\n      destroys.shift()(error)\n    }\n    outerSignal === null || outerSignal === undefined ? undefined : outerSignal.removeEventListener('abort', abort)\n    ac.abort()\n    if (final) {\n      if (!error) {\n        lastStreamCleanup.forEach((fn) => fn())\n      }\n      process.nextTick(callback, error, value)\n    }\n  }\n  let ret\n  for (let i = 0; i < streams.length; i++) {\n    const stream = streams[i]\n    const reading = i < streams.length - 1\n    const writing = i > 0\n    const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n    const isLastStream = i === streams.length - 1\n    if (isNodeStream(stream)) {\n      if (end) {\n        const { destroy, cleanup } = destroyer(stream, reading, writing)\n        destroys.push(destroy)\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n\n      // Catch stream errors that occur after pipe/pump has completed.\n      function onError(err) {\n        if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n          finish(err)\n        }\n      }\n      stream.on('error', onError)\n      if (isReadable(stream) && isLastStream) {\n        lastStreamCleanup.push(() => {\n          stream.removeListener('error', onError)\n        })\n      }\n    }\n    if (i === 0) {\n      if (typeof stream === 'function') {\n        ret = stream({\n          signal\n        })\n        if (!isIterable(ret)) {\n          throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n        }\n      } else if (isIterable(stream) || isReadableNodeStream(stream)) {\n        ret = stream\n      } else {\n        ret = Duplex.from(stream)\n      }\n    } else if (typeof stream === 'function') {\n      ret = makeAsyncIterable(ret)\n      ret = stream(ret, {\n        signal\n      })\n      if (reading) {\n        if (!isIterable(ret, true)) {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n        }\n      } else {\n        var _ret\n        if (!PassThrough) {\n          PassThrough = require('./passthrough')\n        }\n\n        // If the last argument to pipeline is not a stream\n        // we must create a proxy stream so that pipeline(...)\n        // always returns a stream which can be further\n        // composed through `.pipe(stream)`.\n\n        const pt = new PassThrough({\n          objectMode: true\n        })\n\n        // Handle Promises/A+ spec, `then` could be a getter that throws on\n        // second use.\n        const then = (_ret = ret) === null || _ret === undefined ? undefined : _ret.then\n        if (typeof then === 'function') {\n          finishCount++\n          then.call(\n            ret,\n            (val) => {\n              value = val\n              if (val != null) {\n                pt.write(val)\n              }\n              if (end) {\n                pt.end()\n              }\n              process.nextTick(finish)\n            },\n            (err) => {\n              pt.destroy(err)\n              process.nextTick(finish, err)\n            }\n          )\n        } else if (isIterable(ret, true)) {\n          finishCount++\n          pump(ret, pt, finish, {\n            end\n          })\n        } else {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n        }\n        ret = pt\n        const { destroy, cleanup } = destroyer(ret, false, true)\n        destroys.push(destroy)\n        if (isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n    } else if (isNodeStream(stream)) {\n      if (isReadableNodeStream(ret)) {\n        finishCount += 2\n        const cleanup = pipe(ret, stream, finish, {\n          end\n        })\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      } else if (isIterable(ret)) {\n        finishCount++\n        pump(ret, stream, finish, {\n          end\n        })\n      } else {\n        throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], ret)\n      }\n      ret = stream\n    } else {\n      ret = Duplex.from(stream)\n    }\n  }\n  if (\n    (signal !== null && signal !== undefined && signal.aborted) ||\n    (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n  ) {\n    process.nextTick(abort)\n  }\n  return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n  let ended = false\n  dst.on('close', () => {\n    if (!ended) {\n      // Finish if the destination closes before the source has completed.\n      finish(new ERR_STREAM_PREMATURE_CLOSE())\n    }\n  })\n  src.pipe(dst, {\n    end\n  })\n  if (end) {\n    // Compat. Before node v10.12.0 stdio used to throw an error so\n    // pipe() did/does not end() stdio destinations.\n    // Now they allow it but \"secretly\" don't close the underlying fd.\n    src.once('end', () => {\n      ended = true\n      dst.end()\n    })\n  } else {\n    finish()\n  }\n  eos(\n    src,\n    {\n      readable: true,\n      writable: false\n    },\n    (err) => {\n      const rState = src._readableState\n      if (\n        err &&\n        err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n        rState &&\n        rState.ended &&\n        !rState.errored &&\n        !rState.errorEmitted\n      ) {\n        // Some readable streams will emit 'close' before 'end'. However, since\n        // this is on the readable side 'end' should still be emitted if the\n        // stream has been ended and no error emitted. This should be allowed in\n        // favor of backwards compatibility. Since the stream is piped to a\n        // destination this should not result in any observable difference.\n        // We don't need to check if this is a writable premature close since\n        // eos will only fail with premature close on the reading side for\n        // duplex streams.\n        src.once('end', finish).once('error', finish)\n      } else {\n        finish(err)\n      }\n    }\n  )\n  return eos(\n    dst,\n    {\n      readable: false,\n      writable: true\n    },\n    finish\n  )\n}\nmodule.exports = {\n  pipelineImpl,\n  pipeline\n}\n", "'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst { isNodeStream, isReadable, isWritable } = require('./utils')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nmodule.exports = function compose(...streams) {\n  if (streams.length === 0) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  if (streams.length === 1) {\n    return Duplex.from(streams[0])\n  }\n  const orgStreams = [...streams]\n  if (typeof streams[0] === 'function') {\n    streams[0] = Duplex.from(streams[0])\n  }\n  if (typeof streams[streams.length - 1] === 'function') {\n    const idx = streams.length - 1\n    streams[idx] = Duplex.from(streams[idx])\n  }\n  for (let n = 0; n < streams.length; ++n) {\n    if (!isNodeStream(streams[n])) {\n      // TODO(ronag): Add checks for non streams.\n      continue\n    }\n    if (n < streams.length - 1 && !isReadable(streams[n])) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n    }\n    if (n > 0 && !isWritable(streams[n])) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n    }\n  }\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    } else if (!readable && !writable) {\n      d.destroy()\n    }\n  }\n  const head = streams[0]\n  const tail = pipeline(streams, onfinished)\n  const writable = !!isWritable(head)\n  const readable = !!isReadable(tail)\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplex({\n    // TODO (ronag): highWaterMark?\n    writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n    readableObjectMode: !!(tail !== null && tail !== undefined && tail.writableObjectMode),\n    writable,\n    readable\n  })\n  if (writable) {\n    d._write = function (chunk, encoding, callback) {\n      if (head.write(chunk, encoding)) {\n        callback()\n      } else {\n        ondrain = callback\n      }\n    }\n    d._final = function (callback) {\n      head.end()\n      onfinish = callback\n    }\n    head.on('drain', function () {\n      if (ondrain) {\n        const cb = ondrain\n        ondrain = null\n        cb()\n      }\n    })\n    tail.on('finish', function () {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    tail.on('readable', function () {\n      if (onreadable) {\n        const cb = onreadable\n        onreadable = null\n        cb()\n      }\n    })\n    tail.on('end', function () {\n      d.push(null)\n    })\n    d._read = function () {\n      while (true) {\n        const buf = tail.read()\n        if (buf === null) {\n          onreadable = d._read\n          return\n        }\n        if (!d.push(buf)) {\n          return\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      destroyer(tail, err)\n    }\n  }\n  return d\n}\n", "'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nfunction pipeline(...streams) {\n  return new Promise((resolve, reject) => {\n    let signal\n    let end\n    const lastArg = streams[streams.length - 1]\n    if (lastArg && typeof lastArg === 'object' && !isNodeStream(lastArg) && !isIterable(lastArg)) {\n      const options = ArrayPrototypePop(streams)\n      signal = options.signal\n      end = options.end\n    }\n    pl(\n      streams,\n      (err, value) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(value)\n        }\n      },\n      {\n        signal,\n        end\n      }\n    )\n  })\n}\nmodule.exports = {\n  finished,\n  pipeline\n}\n", "/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\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')\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n  promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n  codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n  const op = streamReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return Stream.Readable.from(ReflectApply(op, this, args))\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n  const op = promiseReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return ReflectApply(op, this, args)\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nObjectDefineProperty(Stream, 'promises', {\n  __proto__: null,\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.pipeline\n  }\n})\nObjectDefineProperty(eos, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.finished\n  }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n  return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n", "'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\n", "const errors = {\n  IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n  TWEAK_ADD:\n    'The tweak was out of range or the resulted private key is invalid',\n  TWEAK_MUL: 'The tweak was out of range or equal to zero',\n  CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n  SECKEY_INVALID: 'Private Key is invalid',\n  PUBKEY_PARSE: 'Public Key could not be parsed',\n  PUBKEY_SERIALIZE: 'Public Key serialization error',\n  PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n  SIG_PARSE: 'Signature could not be parsed',\n  SIGN: 'The nonce generation function failed, or the private key was invalid',\n  RECOVER: 'Public key could not be recover',\n  ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n  if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n  assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n  if (length !== undefined) {\n    if (Array.isArray(length)) {\n      const numbers = length.join(', ')\n      const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n      assert(length.includes(value.length), msg)\n    } else {\n      const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n      assert(value.length === length, msg)\n    }\n  }\n}\n\nfunction isCompressed (value) {\n  assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n  if (typeof output === 'function') output = output(length)\n  isUint8Array('output', output, length)\n  return output\n}\n\nfunction toTypeString (value) {\n  return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n  return {\n    contextRandomize (seed) {\n      assert(\n        seed === null || seed instanceof Uint8Array,\n        'Expected seed to be an Uint8Array or null'\n      )\n      if (seed !== null) isUint8Array('seed', seed, 32)\n\n      switch (secp256k1.contextRandomize(seed)) {\n        case 1:\n          throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n      }\n    },\n\n    privateKeyVerify (seckey) {\n      isUint8Array('private key', seckey, 32)\n\n      return secp256k1.privateKeyVerify(seckey) === 0\n    },\n\n    privateKeyNegate (seckey) {\n      isUint8Array('private key', seckey, 32)\n\n      switch (secp256k1.privateKeyNegate(seckey)) {\n        case 0:\n          return seckey\n        case 1:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    privateKeyTweakAdd (seckey, tweak) {\n      isUint8Array('private key', seckey, 32)\n      isUint8Array('tweak', tweak, 32)\n\n      switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n        case 0:\n          return seckey\n        case 1:\n          throw new Error(errors.TWEAK_ADD)\n      }\n    },\n\n    privateKeyTweakMul (seckey, tweak) {\n      isUint8Array('private key', seckey, 32)\n      isUint8Array('tweak', tweak, 32)\n\n      switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n        case 0:\n          return seckey\n        case 1:\n          throw new Error(errors.TWEAK_MUL)\n      }\n    },\n\n    publicKeyVerify (pubkey) {\n      isUint8Array('public key', pubkey, [33, 65])\n\n      return secp256k1.publicKeyVerify(pubkey) === 0\n    },\n\n    publicKeyCreate (seckey, compressed = true, output) {\n      isUint8Array('private key', seckey, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyCreate(output, seckey)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.SECKEY_INVALID)\n        case 2:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyConvert (pubkey, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyConvert(output, pubkey)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyNegate (pubkey, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyNegate(output, pubkey)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n        case 3:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyCombine (pubkeys, compressed = true, output) {\n      assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n      assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n      for (const pubkey of pubkeys) {\n        isUint8Array('public key', pubkey, [33, 65])\n      }\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.PUBKEY_COMBINE)\n        case 3:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isUint8Array('tweak', tweak, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.TWEAK_ADD)\n      }\n    },\n\n    publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isUint8Array('tweak', tweak, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.TWEAK_MUL)\n      }\n    },\n\n    signatureNormalize (sig) {\n      isUint8Array('signature', sig, 64)\n\n      switch (secp256k1.signatureNormalize(sig)) {\n        case 0:\n          return sig\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n      }\n    },\n\n    signatureExport (sig, output) {\n      isUint8Array('signature', sig, 64)\n      output = getAssertedOutput(output, 72)\n\n      const obj = { output, outputlen: 72 }\n      switch (secp256k1.signatureExport(obj, sig)) {\n        case 0:\n          return output.slice(0, obj.outputlen)\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    signatureImport (sig, output) {\n      isUint8Array('signature', sig)\n      output = getAssertedOutput(output, 64)\n\n      switch (secp256k1.signatureImport(output, sig)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    ecdsaSign (msg32, seckey, options = {}, output) {\n      isUint8Array('message', msg32, 32)\n      isUint8Array('private key', seckey, 32)\n      assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n      if (options.data !== undefined) isUint8Array('options.data', options.data)\n      if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n      output = getAssertedOutput(output, 64)\n\n      const obj = { signature: output, recid: null }\n      switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n        case 0:\n          return obj\n        case 1:\n          throw new Error(errors.SIGN)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    ecdsaVerify (sig, msg32, pubkey) {\n      isUint8Array('signature', sig, 64)\n      isUint8Array('message', msg32, 32)\n      isUint8Array('public key', pubkey, [33, 65])\n\n      switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n        case 0:\n          return true\n        case 3:\n          return false\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.PUBKEY_PARSE)\n      }\n    },\n\n    ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n      isUint8Array('signature', sig, 64)\n      assert(\n        toTypeString(recid) === 'Number' &&\n          recid >= 0 &&\n          recid <= 3,\n        'Expected recovery id to be a Number within interval [0, 3]'\n      )\n      isUint8Array('message', msg32, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.RECOVER)\n        case 3:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    ecdh (pubkey, seckey, options = {}, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isUint8Array('private key', seckey, 32)\n      assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n      if (options.data !== undefined) isUint8Array('options.data', options.data)\n      if (options.hashfn !== undefined) {\n        assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n        if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n        if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n        isUint8Array('output', output)\n      } else {\n        output = getAssertedOutput(output, 32)\n      }\n\n      switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.ECDH)\n      }\n    }\n  }\n}\n", "const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n  let x = new BN(xbuf)\n\n  // overflow\n  if (x.cmp(ecparams.p) >= 0) return null\n  x = x.toRed(ecparams.red)\n\n  // compute corresponding Y\n  let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n  if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n  return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n  let x = new BN(xbuf)\n  let y = new BN(ybuf)\n\n  // overflow\n  if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n  x = x.toRed(ecparams.red)\n  y = y.toRed(ecparams.red)\n\n  // is odd flag\n  if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n  // x*x*x + b = y*y\n  const x3 = x.redSqr().redIMul(x)\n  if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n  return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n  // length should be validated in interface\n  const first = pubkey[0]\n  switch (first) {\n    case 0x02:\n    case 0x03:\n      if (pubkey.length !== 33) return null\n      return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n    case 0x04:\n    case 0x06:\n    case 0x07:\n      if (pubkey.length !== 65) return null\n      return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n    default:\n      return null\n  }\n}\n\nfunction savePublicKey (output, point) {\n  const pubkey = point.encode(null, output.length === 33)\n  // Loop should be faster because we do not need create extra Uint8Array\n  // output.set(new Uint8Array(pubkey))\n  for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n  contextRandomize () {\n    return 0\n  },\n\n  privateKeyVerify (seckey) {\n    const bn = new BN(seckey)\n    return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n  },\n\n  privateKeyNegate (seckey) {\n    const bn = new BN(seckey)\n    const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n    seckey.set(negate)\n    return 0\n  },\n\n  privateKeyTweakAdd (seckey, tweak) {\n    const bn = new BN(tweak)\n    if (bn.cmp(ecparams.n) >= 0) return 1\n\n    bn.iadd(new BN(seckey))\n    if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n    if (bn.isZero()) return 1\n\n    const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n    seckey.set(tweaked)\n\n    return 0\n  },\n\n  privateKeyTweakMul (seckey, tweak) {\n    let bn = new BN(tweak)\n    if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n    bn.imul(new BN(seckey))\n    if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n    const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n    seckey.set(tweaked)\n\n    return 0\n  },\n\n  publicKeyVerify (pubkey) {\n    const pair = loadPublicKey(pubkey)\n    return pair === null ? 1 : 0\n  },\n\n  publicKeyCreate (output, seckey) {\n    const bn = new BN(seckey)\n    if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n    const point = ec.keyFromPrivate(seckey).getPublic()\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyConvert (output, pubkey) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    const point = pair.getPublic()\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyNegate (output, pubkey) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    const point = pair.getPublic()\n    point.y = point.y.redNeg()\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyCombine (output, pubkeys) {\n    const pairs = new Array(pubkeys.length)\n    for (let i = 0; i < pubkeys.length; ++i) {\n      pairs[i] = loadPublicKey(pubkeys[i])\n      if (pairs[i] === null) return 1\n    }\n\n    let point = pairs[0].getPublic()\n    for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n    if (point.isInfinity()) return 2\n\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyTweakAdd (output, pubkey, tweak) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    tweak = new BN(tweak)\n    if (tweak.cmp(ecparams.n) >= 0) return 2\n\n    const point = pair.getPublic().add(ecparams.g.mul(tweak))\n    if (point.isInfinity()) return 2\n\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyTweakMul (output, pubkey, tweak) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    tweak = new BN(tweak)\n    if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n    const point = pair.getPublic().mul(tweak)\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  signatureNormalize (sig) {\n    const r = new BN(sig.subarray(0, 32))\n    const s = new BN(sig.subarray(32, 64))\n    if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n    if (s.cmp(ec.nh) === 1) {\n      sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n    }\n\n    return 0\n  },\n\n  // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n  // Adapted for Uint8Array instead Buffer\n  signatureExport (obj, sig) {\n    const sigR = sig.subarray(0, 32)\n    const sigS = sig.subarray(32, 64)\n    if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n    if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n    const { output } = obj\n\n    // Prepare R\n    let r = output.subarray(4, 4 + 33)\n    r[0] = 0x00\n    r.set(sigR, 1)\n\n    let lenR = 33\n    let posR = 0\n    for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n    r = r.subarray(posR)\n    if (r[0] & 0x80) return 1\n    if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n    // Prepare S\n    let s = output.subarray(6 + 33, 6 + 33 + 33)\n    s[0] = 0x00\n    s.set(sigS, 1)\n\n    let lenS = 33\n    let posS = 0\n    for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n    s = s.subarray(posS)\n    if (s[0] & 0x80) return 1\n    if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n    // Set output length for return\n    obj.outputlen = 6 + lenR + lenS\n\n    // Output in specified format\n    // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n    output[0] = 0x30\n    output[1] = obj.outputlen - 2\n    output[2] = 0x02\n    output[3] = r.length\n    output.set(r, 4)\n    output[4 + lenR] = 0x02\n    output[5 + lenR] = s.length\n    output.set(s, 6 + lenR)\n\n    return 0\n  },\n\n  // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n  // Adapted for Uint8Array instead Buffer\n  signatureImport (output, sig) {\n    if (sig.length < 8) return 1\n    if (sig.length > 72) return 1\n    if (sig[0] !== 0x30) return 1\n    if (sig[1] !== sig.length - 2) return 1\n    if (sig[2] !== 0x02) return 1\n\n    const lenR = sig[3]\n    if (lenR === 0) return 1\n    if (5 + lenR >= sig.length) return 1\n    if (sig[4 + lenR] !== 0x02) return 1\n\n    const lenS = sig[5 + lenR]\n    if (lenS === 0) return 1\n    if ((6 + lenR + lenS) !== sig.length) return 1\n\n    if (sig[4] & 0x80) return 1\n    if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n    if (sig[lenR + 6] & 0x80) return 1\n    if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n    let sigR = sig.subarray(4, 4 + lenR)\n    if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n    if (sigR.length > 32) return 1\n\n    let sigS = sig.subarray(6 + lenR)\n    if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n    if (sigS.length > 32) throw new Error('S length is too long')\n\n    let r = new BN(sigR)\n    if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n    let s = new BN(sig.subarray(6 + lenR))\n    if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n    output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n    output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n    return 0\n  },\n\n  ecdsaSign (obj, message, seckey, data, noncefn) {\n    if (noncefn) {\n      const _noncefn = noncefn\n      noncefn = (counter) => {\n        const nonce = _noncefn(message, seckey, null, data, counter)\n\n        const isValid = nonce instanceof Uint8Array && nonce.length === 32\n        if (!isValid) throw new Error('This is the way')\n\n        return new BN(nonce)\n      }\n    }\n\n    const d = new BN(seckey)\n    if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n    let sig\n    try {\n      sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n    } catch (err) {\n      return 1\n    }\n\n    obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n    obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n    obj.recid = sig.recoveryParam\n\n    return 0\n  },\n\n  ecdsaVerify (sig, msg32, pubkey) {\n    const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n    const sigr = new BN(sigObj.r)\n    const sigs = new BN(sigObj.s)\n    if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n    if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 2\n\n    const point = pair.getPublic()\n    const isValid = ec.verify(msg32, sigObj, point)\n    return isValid ? 0 : 3\n  },\n\n  ecdsaRecover (output, sig, recid, msg32) {\n    const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n    const sigr = new BN(sigObj.r)\n    const sigs = new BN(sigObj.s)\n    if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n    if (sigr.isZero() || sigs.isZero()) return 2\n\n    // Can throw `throw new Error('Unable to find sencond key candinate');`\n    let point\n    try {\n      point = ec.recoverPubKey(msg32, sigObj, recid)\n    } catch (err) {\n      return 2\n    }\n\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    const scalar = new BN(seckey)\n    if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n    const point = pair.getPublic().mul(scalar)\n\n    if (hashfn === undefined) {\n      const data = point.encode(null, true)\n      const sha256 = ec.hash().update(data).digest()\n      for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n    } else {\n      if (!xbuf) xbuf = new Uint8Array(32)\n      const x = point.getX().toArray('be', 32)\n      for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n      if (!ybuf) ybuf = new Uint8Array(32)\n      const y = point.getY().toArray('be', 32)\n      for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n      const hash = hashfn(xbuf, ybuf, data)\n\n      const isValid = hash instanceof Uint8Array && hash.length === output.length\n      if (!isValid) return 2\n\n      output.set(hash)\n    }\n\n    return 0\n  }\n}\n", "module.exports = require('./lib')(require('./lib/elliptic'))\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n", "module.exports = flatten\nflatten.flatten = flatten\nflatten.unflatten = unflatten\n\nfunction isBuffer (obj) {\n  return obj &&\n    obj.constructor &&\n    (typeof obj.constructor.isBuffer === 'function') &&\n    obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n  return key\n}\n\nfunction flatten (target, opts) {\n  opts = opts || {}\n\n  const delimiter = opts.delimiter || '.'\n  const maxDepth = opts.maxDepth\n  const transformKey = opts.transformKey || keyIdentity\n  const output = {}\n\n  function step (object, prev, currentDepth) {\n    currentDepth = currentDepth || 1\n    Object.keys(object).forEach(function (key) {\n      const value = object[key]\n      const isarray = opts.safe && Array.isArray(value)\n      const type = Object.prototype.toString.call(value)\n      const isbuffer = isBuffer(value)\n      const isobject = (\n        type === '[object Object]' ||\n        type === '[object Array]'\n      )\n\n      const newKey = prev\n        ? prev + delimiter + transformKey(key)\n        : transformKey(key)\n\n      if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n        (!opts.maxDepth || currentDepth < maxDepth)) {\n        return step(value, newKey, currentDepth + 1)\n      }\n\n      output[newKey] = value\n    })\n  }\n\n  step(target)\n\n  return output\n}\n\nfunction unflatten (target, opts) {\n  opts = opts || {}\n\n  const delimiter = opts.delimiter || '.'\n  const overwrite = opts.overwrite || false\n  const transformKey = opts.transformKey || keyIdentity\n  const result = {}\n\n  const isbuffer = isBuffer(target)\n  if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n    return target\n  }\n\n  // safely ensure that the key is\n  // an integer.\n  function getkey (key) {\n    const parsedKey = Number(key)\n\n    return (\n      isNaN(parsedKey) ||\n      key.indexOf('.') !== -1 ||\n      opts.object\n    ) ? key\n      : parsedKey\n  }\n\n  function addKeys (keyPrefix, recipient, target) {\n    return Object.keys(target).reduce(function (result, key) {\n      result[keyPrefix + delimiter + key] = target[key]\n\n      return result\n    }, recipient)\n  }\n\n  function isEmpty (val) {\n    const type = Object.prototype.toString.call(val)\n    const isArray = type === '[object Array]'\n    const isObject = type === '[object Object]'\n\n    if (!val) {\n      return true\n    } else if (isArray) {\n      return !val.length\n    } else if (isObject) {\n      return !Object.keys(val).length\n    }\n  }\n\n  target = Object.keys(target).reduce(function (result, key) {\n    const type = Object.prototype.toString.call(target[key])\n    const isObject = (type === '[object Object]' || type === '[object Array]')\n    if (!isObject || isEmpty(target[key])) {\n      result[key] = target[key]\n      return result\n    } else {\n      return addKeys(\n        key,\n        result,\n        flatten(target[key], opts)\n      )\n    }\n  }, {})\n\n  Object.keys(target).forEach(function (key) {\n    const split = key.split(delimiter).map(transformKey)\n    let key1 = getkey(split.shift())\n    let key2 = getkey(split[0])\n    let recipient = result\n\n    while (key2 !== undefined) {\n      if (key1 === '__proto__') {\n        return\n      }\n\n      const type = Object.prototype.toString.call(recipient[key1])\n      const isobject = (\n        type === '[object Object]' ||\n        type === '[object Array]'\n      )\n\n      // do not write over falsey, non-undefined values if overwrite is false\n      if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n        return\n      }\n\n      if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n        recipient[key1] = (\n          typeof key2 === 'number' &&\n          !opts.object ? [] : {}\n        )\n      }\n\n      recipient = recipient[key1]\n      if (split.length > 0) {\n        key1 = getkey(split.shift())\n        key2 = getkey(split[0])\n      }\n    }\n\n    // unflatten again for 'messy objects'\n    recipient[key1] = unflatten(target[key], opts)\n  })\n\n  return result\n}\n", "const perf =\n  typeof performance === 'object' &&\n  performance &&\n  typeof performance.now === 'function'\n    ? performance\n    : Date\n\nconst hasAbortController = typeof AbortController === 'function'\n\n// minimal backwards-compatibility polyfill\n// this doesn't have nearly all the checks and whatnot that\n// actual AbortController/Signal has, but it's enough for\n// our purposes, and if used properly, behaves the same.\nconst AC = hasAbortController\n  ? AbortController\n  : class AbortController {\n      constructor() {\n        this.signal = new AS()\n      }\n      abort() {\n        this.signal.dispatchEvent('abort')\n      }\n    }\n\nconst hasAbortSignal = typeof AbortSignal === 'function'\n// Some polyfills put this on the AC class, not global\nconst hasACAbortSignal = typeof AC.AbortSignal === 'function'\nconst AS = hasAbortSignal\n  ? AbortSignal\n  : hasACAbortSignal\n  ? AC.AbortController\n  : class AbortSignal {\n      constructor() {\n        this.aborted = false\n        this._listeners = []\n      }\n      dispatchEvent(type) {\n        if (type === 'abort') {\n          this.aborted = true\n          const e = { type, target: this }\n          this.onabort(e)\n          this._listeners.forEach(f => f(e), this)\n        }\n      }\n      onabort() {}\n      addEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners.push(fn)\n        }\n      }\n      removeEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners = this._listeners.filter(f => f !== fn)\n        }\n      }\n    }\n\nconst warned = new Set()\nconst deprecatedOption = (opt, instead) => {\n  const code = `LRU_CACHE_OPTION_${opt}`\n  if (shouldWarn(code)) {\n    warn(code, `${opt} option`, `options.${instead}`, LRUCache)\n  }\n}\nconst deprecatedMethod = (method, instead) => {\n  const code = `LRU_CACHE_METHOD_${method}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, method)\n    warn(code, `${method} method`, `cache.${instead}()`, get)\n  }\n}\nconst deprecatedProperty = (field, instead) => {\n  const code = `LRU_CACHE_PROPERTY_${field}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, field)\n    warn(code, `${field} property`, `cache.${instead}`, get)\n  }\n}\n\nconst emitWarning = (...a) => {\n  typeof process === 'object' &&\n  process &&\n  typeof process.emitWarning === 'function'\n    ? process.emitWarning(...a)\n    : console.error(...a)\n}\n\nconst shouldWarn = code => !warned.has(code)\n\nconst warn = (code, what, instead, fn) => {\n  warned.add(code)\n  const msg = `The ${what} is deprecated. Please use ${instead} instead.`\n  emitWarning(msg, 'DeprecationWarning', code, fn)\n}\n\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\n\n/* istanbul ignore next - This is a little bit ridiculous, tbh.\n * The maximum array length is 2^32-1 or thereabouts on most JS impls.\n * And well before that point, you're caching the entire world, I mean,\n * that's ~32GB of just integers for the next/prev links, plus whatever\n * else to hold that many keys and values.  Just filling the memory with\n * zeroes at init time is brutal when you get that big.\n * But why not be complete?\n * Maybe in the future, these limits will have expanded. */\nconst getUintArray = max =>\n  !isPosInt(max)\n    ? null\n    : max <= Math.pow(2, 8)\n    ? Uint8Array\n    : max <= Math.pow(2, 16)\n    ? Uint16Array\n    : max <= Math.pow(2, 32)\n    ? Uint32Array\n    : max <= Number.MAX_SAFE_INTEGER\n    ? ZeroArray\n    : null\n\nclass ZeroArray extends Array {\n  constructor(size) {\n    super(size)\n    this.fill(0)\n  }\n}\n\nclass Stack {\n  constructor(max) {\n    if (max === 0) {\n      return []\n    }\n    const UintArray = getUintArray(max)\n    this.heap = new UintArray(max)\n    this.length = 0\n  }\n  push(n) {\n    this.heap[this.length++] = n\n  }\n  pop() {\n    return this.heap[--this.length]\n  }\n}\n\nclass LRUCache {\n  constructor(options = {}) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      sizeCalculation,\n      fetchMethod,\n      fetchContext,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n    } = options\n\n    // deprecated options, don't trigger a warning for getting them if\n    // the thing being passed in is another LRUCache we're copying.\n    const { length, maxAge, stale } =\n      options instanceof LRUCache ? {} : options\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.max = max\n    this.maxSize = maxSize\n    this.sizeCalculation = sizeCalculation || length\n    if (this.sizeCalculation) {\n      if (!this.maxSize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize'\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    this.fetchMethod = fetchMethod || null\n    if (this.fetchMethod && typeof this.fetchMethod !== 'function') {\n      throw new TypeError(\n        'fetchMethod must be a function if specified'\n      )\n    }\n\n    this.fetchContext = fetchContext\n    if (!this.fetchMethod && fetchContext !== undefined) {\n      throw new TypeError(\n        'cannot set fetchContext without fetchMethod'\n      )\n    }\n\n    this.keyMap = new Map()\n    this.keyList = new Array(max).fill(null)\n    this.valList = new Array(max).fill(null)\n    this.next = new UintArray(max)\n    this.prev = new UintArray(max)\n    this.head = 0\n    this.tail = 0\n    this.free = new Stack(max)\n    this.initialFill = 1\n    this.size = 0\n\n    if (typeof dispose === 'function') {\n      this.dispose = dispose\n    }\n    if (typeof disposeAfter === 'function') {\n      this.disposeAfter = disposeAfter\n      this.disposed = []\n    } else {\n      this.disposeAfter = null\n      this.disposed = null\n    }\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n\n    if (this.maxSize !== 0) {\n      if (!isPosInt(this.maxSize)) {\n        throw new TypeError(\n          'maxSize must be a positive integer if specified'\n        )\n      }\n      this.initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale || !!stale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0\n        ? ttlResolution\n        : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || maxAge || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError(\n          'ttl must be a positive integer if specified'\n        )\n      }\n      this.initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required'\n      )\n    }\n    if (!this.ttlAutopurge && !this.max && !this.maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n\n    if (stale) {\n      deprecatedOption('stale', 'allowStale')\n    }\n    if (maxAge) {\n      deprecatedOption('maxAge', 'ttl')\n    }\n    if (length) {\n      deprecatedOption('length', 'sizeCalculation')\n    }\n  }\n\n  getRemainingTTL(key) {\n    return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0\n  }\n\n  initializeTTLTracking() {\n    this.ttls = new ZeroArray(this.max)\n    this.starts = new ZeroArray(this.max)\n\n    this.setItemTTL = (index, ttl, start = perf.now()) => {\n      this.starts[index] = ttl !== 0 ? start : 0\n      this.ttls[index] = ttl\n      if (ttl !== 0 && this.ttlAutopurge) {\n        const t = setTimeout(() => {\n          if (this.isStale(index)) {\n            this.delete(this.keyList[index])\n          }\n        }, ttl + 1)\n        /* istanbul ignore else - unref() not supported on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n    }\n\n    this.updateItemAge = index => {\n      this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(\n          () => (cachedNow = 0),\n          this.ttlResolution\n        )\n        /* istanbul ignore else - not available on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      return this.ttls[index] === 0 || this.starts[index] === 0\n        ? Infinity\n        : this.starts[index] +\n            this.ttls[index] -\n            (cachedNow || getNow())\n    }\n\n    this.isStale = index => {\n      return (\n        this.ttls[index] !== 0 &&\n        this.starts[index] !== 0 &&\n        (cachedNow || getNow()) - this.starts[index] >\n          this.ttls[index]\n      )\n    }\n  }\n  updateItemAge(index) {}\n  setItemTTL(index, ttl, start) {}\n  isStale(index) {\n    return false\n  }\n\n  initializeSizeTracking() {\n    this.calculatedSize = 0\n    this.sizes = new ZeroArray(this.max)\n    this.removeItemSize = index =>\n      (this.calculatedSize -= this.sizes[index])\n    this.requireSize = (k, v, size, sizeCalculation) => {\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)'\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer)'\n          )\n        }\n      }\n      return size\n    }\n    this.addItemSize = (index, v, k, size) => {\n      this.sizes[index] = size\n      const maxSize = this.maxSize - this.sizes[index]\n      while (this.calculatedSize > maxSize) {\n        this.evict(true)\n      }\n      this.calculatedSize += this.sizes[index]\n    }\n  }\n  removeItemSize(index) {}\n  addItemSize(index, v, k, size) {}\n  requireSize(k, v, size, sizeCalculation) {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize on cache'\n      )\n    }\n  }\n\n  *indexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.tail; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.head) {\n          break\n        } else {\n          i = this.prev[i]\n        }\n      }\n    }\n  }\n\n  *rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.head; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.tail) {\n          break\n        } else {\n          i = this.next[i]\n        }\n      }\n    }\n  }\n\n  isValidIndex(index) {\n    return this.keyMap.get(this.keyList[index]) === index\n  }\n\n  *entries() {\n    for (const i of this.indexes()) {\n      yield [this.keyList[i], this.valList[i]]\n    }\n  }\n  *rentries() {\n    for (const i of this.rindexes()) {\n      yield [this.keyList[i], this.valList[i]]\n    }\n  }\n\n  *keys() {\n    for (const i of this.indexes()) {\n      yield this.keyList[i]\n    }\n  }\n  *rkeys() {\n    for (const i of this.rindexes()) {\n      yield this.keyList[i]\n    }\n  }\n\n  *values() {\n    for (const i of this.indexes()) {\n      yield this.valList[i]\n    }\n  }\n  *rvalues() {\n    for (const i of this.rindexes()) {\n      yield this.valList[i]\n    }\n  }\n\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  find(fn, getOptions = {}) {\n    for (const i of this.indexes()) {\n      if (fn(this.valList[i], this.keyList[i], this)) {\n        return this.get(this.keyList[i], getOptions)\n      }\n    }\n  }\n\n  forEach(fn, thisp = this) {\n    for (const i of this.indexes()) {\n      fn.call(thisp, this.valList[i], this.keyList[i], this)\n    }\n  }\n\n  rforEach(fn, thisp = this) {\n    for (const i of this.rindexes()) {\n      fn.call(thisp, this.valList[i], this.keyList[i], this)\n    }\n  }\n\n  get prune() {\n    deprecatedMethod('prune', 'purgeStale')\n    return this.purgeStale\n  }\n\n  purgeStale() {\n    let deleted = false\n    for (const i of this.rindexes({ allowStale: true })) {\n      if (this.isStale(i)) {\n        this.delete(this.keyList[i])\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  dump() {\n    const arr = []\n    for (const i of this.indexes({ allowStale: true })) {\n      const key = this.keyList[i]\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      const entry = { value }\n      if (this.ttls) {\n        entry.ttl = this.ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = perf.now() - this.starts[i]\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.sizes) {\n        entry.size = this.sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  load(arr) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset.\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  dispose(v, k, reason) {}\n\n  set(\n    k,\n    v,\n    {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n    } = {}\n  ) {\n    size = this.requireSize(k, v, size, sizeCalculation)\n    let index = this.size === 0 ? undefined : this.keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = this.newIndex()\n      this.keyList[index] = k\n      this.valList[index] = v\n      this.keyMap.set(k, index)\n      this.next[this.tail] = index\n      this.prev[index] = this.tail\n      this.tail = index\n      this.size++\n      this.addItemSize(index, v, k, size)\n      noUpdateTTL = false\n    } else {\n      // update\n      const oldVal = this.valList[index]\n      if (v !== oldVal) {\n        if (this.isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort()\n        } else {\n          if (!noDisposeOnSet) {\n            this.dispose(oldVal, k, 'set')\n            if (this.disposeAfter) {\n              this.disposed.push([oldVal, k, 'set'])\n            }\n          }\n        }\n        this.removeItemSize(index)\n        this.valList[index] = v\n        this.addItemSize(index, v, k, size)\n      }\n      this.moveToTail(index)\n    }\n    if (ttl !== 0 && this.ttl === 0 && !this.ttls) {\n      this.initializeTTLTracking()\n    }\n    if (!noUpdateTTL) {\n      this.setItemTTL(index, ttl, start)\n    }\n    if (this.disposeAfter) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return this\n  }\n\n  newIndex() {\n    if (this.size === 0) {\n      return this.tail\n    }\n    if (this.size === this.max && this.max !== 0) {\n      return this.evict(false)\n    }\n    if (this.free.length !== 0) {\n      return this.free.pop()\n    }\n    // initial fill, just keep writing down the list\n    return this.initialFill++\n  }\n\n  pop() {\n    if (this.size) {\n      const val = this.valList[this.head]\n      this.evict(true)\n      return val\n    }\n  }\n\n  evict(free) {\n    const head = this.head\n    const k = this.keyList[head]\n    const v = this.valList[head]\n    if (this.isBackgroundFetch(v)) {\n      v.__abortController.abort()\n    } else {\n      this.dispose(v, k, 'evict')\n      if (this.disposeAfter) {\n        this.disposed.push([v, k, 'evict'])\n      }\n    }\n    this.removeItemSize(head)\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.keyList[head] = null\n      this.valList[head] = null\n      this.free.push(head)\n    }\n    this.head = this.next[head]\n    this.keyMap.delete(k)\n    this.size--\n    return head\n  }\n\n  has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      if (!this.isStale(index)) {\n        if (updateAgeOnHas) {\n          this.updateItemAge(index)\n        }\n        return true\n      }\n    }\n    return false\n  }\n\n  // like get(), but without any LRU updating or TTL expiration\n  peek(k, { allowStale = this.allowStale } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined && (allowStale || !this.isStale(index))) {\n      return this.valList[index]\n    }\n  }\n\n  backgroundFetch(k, index, options, context) {\n    const v = index === undefined ? undefined : this.valList[index]\n    if (this.isBackgroundFetch(v)) {\n      return v\n    }\n    const ac = new AC()\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n    const cb = v => {\n      if (!ac.signal.aborted) {\n        this.set(k, v, fetchOpts.options)\n      }\n      return v\n    }\n    const eb = er => {\n      if (this.valList[index] === p) {\n        const del =\n          !options.noDeleteOnFetchRejection ||\n          p.__staleWhileFetching === undefined\n        if (del) {\n          this.delete(k)\n        } else {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          this.valList[index] = p.__staleWhileFetching\n        }\n      }\n      if (p.__returned === p) {\n        throw er\n      }\n    }\n    const pcall = res => res(this.fetchMethod(k, v, fetchOpts))\n    const p = new Promise(pcall).then(cb, eb)\n    p.__abortController = ac\n    p.__staleWhileFetching = v\n    p.__returned = null\n    if (index === undefined) {\n      this.set(k, p, fetchOpts.options)\n      index = this.keyMap.get(k)\n    } else {\n      this.valList[index] = p\n    }\n    return p\n  }\n\n  isBackgroundFetch(p) {\n    return (\n      p &&\n      typeof p === 'object' &&\n      typeof p.then === 'function' &&\n      Object.prototype.hasOwnProperty.call(\n        p,\n        '__staleWhileFetching'\n      ) &&\n      Object.prototype.hasOwnProperty.call(p, '__returned') &&\n      (p.__returned === p || p.__returned === null)\n    )\n  }\n\n  // this takes the union of get() and set() opts, because it does both\n  async fetch(\n    k,\n    {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      fetchContext = this.fetchContext,\n    } = {}\n  ) {\n    if (!this.fetchMethod) {\n      return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n    }\n\n    let index = this.keyMap.get(k)\n    if (index === undefined) {\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        return allowStale && v.__staleWhileFetching !== undefined\n          ? v.__staleWhileFetching\n          : (v.__returned = v)\n      }\n\n      if (!this.isStale(index)) {\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return v\n      }\n\n      // ok, it is stale, and not already fetching\n      // refresh the cache.\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return allowStale && p.__staleWhileFetching !== undefined\n        ? p.__staleWhileFetching\n        : (p.__returned = p)\n    }\n  }\n\n  get(\n    k,\n    {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n    } = {}\n  ) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.valList[index]\n      const fetching = this.isBackgroundFetch(value)\n      if (this.isStale(index)) {\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.delete(k)\n          }\n          return allowStale ? value : undefined\n        } else {\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching,\n        // so we just return undefined\n        if (fetching) {\n          return undefined\n        }\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return value\n      }\n    }\n  }\n\n  connect(p, n) {\n    this.prev[n] = p\n    this.next[p] = n\n  }\n\n  moveToTail(index) {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.tail) {\n      if (index === this.head) {\n        this.head = this.next[index]\n      } else {\n        this.connect(this.prev[index], this.next[index])\n      }\n      this.connect(this.tail, index)\n      this.tail = index\n    }\n  }\n\n  get del() {\n    deprecatedMethod('del', 'delete')\n    return this.delete\n  }\n\n  delete(k) {\n    let deleted = false\n    if (this.size !== 0) {\n      const index = this.keyMap.get(k)\n      if (index !== undefined) {\n        deleted = true\n        if (this.size === 1) {\n          this.clear()\n        } else {\n          this.removeItemSize(index)\n          const v = this.valList[index]\n          if (this.isBackgroundFetch(v)) {\n            v.__abortController.abort()\n          } else {\n            this.dispose(v, k, 'delete')\n            if (this.disposeAfter) {\n              this.disposed.push([v, k, 'delete'])\n            }\n          }\n          this.keyMap.delete(k)\n          this.keyList[index] = null\n          this.valList[index] = null\n          if (index === this.tail) {\n            this.tail = this.prev[index]\n          } else if (index === this.head) {\n            this.head = this.next[index]\n          } else {\n            this.next[this.prev[index]] = this.next[index]\n            this.prev[this.next[index]] = this.prev[index]\n          }\n          this.size--\n          this.free.push(index)\n        }\n      }\n    }\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return deleted\n  }\n\n  clear() {\n    for (const index of this.rindexes({ allowStale: true })) {\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        v.__abortController.abort()\n      } else {\n        const k = this.keyList[index]\n        this.dispose(v, k, 'delete')\n        if (this.disposeAfter) {\n          this.disposed.push([v, k, 'delete'])\n        }\n      }\n    }\n\n    this.keyMap.clear()\n    this.valList.fill(null)\n    this.keyList.fill(null)\n    if (this.ttls) {\n      this.ttls.fill(0)\n      this.starts.fill(0)\n    }\n    if (this.sizes) {\n      this.sizes.fill(0)\n    }\n    this.head = 0\n    this.tail = 0\n    this.initialFill = 1\n    this.free.length = 0\n    this.calculatedSize = 0\n    this.size = 0\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n  }\n\n  get reset() {\n    deprecatedMethod('reset', 'clear')\n    return this.clear\n  }\n\n  get length() {\n    deprecatedProperty('length', 'size')\n    return this.size\n  }\n\n  static get AbortController() {\n    return AC\n  }\n  static get AbortSignal() {\n    return AS\n  }\n}\n\nmodule.exports = LRUCache\n", "module.exports = encode\n\nvar MSB = 0x80\n  , REST = 0x7F\n  , MSBALL = ~REST\n  , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n  if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n    encode.bytes = 0\n    throw new RangeError('Could not encode varint')\n  }\n  out = out || []\n  offset = offset || 0\n  var oldOffset = offset\n\n  while(num >= INT) {\n    out[offset++] = (num & 0xFF) | MSB\n    num /= 128\n  }\n  while(num & MSBALL) {\n    out[offset++] = (num & 0xFF) | MSB\n    num >>>= 7\n  }\n  out[offset] = num | 0\n  \n  encode.bytes = offset - oldOffset + 1\n  \n  return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n  , REST = 0x7F\n\nfunction read(buf, offset) {\n  var res    = 0\n    , offset = offset || 0\n    , shift  = 0\n    , counter = offset\n    , b\n    , l = buf.length\n\n  do {\n    if (counter >= l || shift > 49) {\n      read.bytes = 0\n      throw new RangeError('Could not decode varint')\n    }\n    b = buf[counter++]\n    res += shift < 28\n      ? (b & REST) << shift\n      : (b & REST) * Math.pow(2, shift)\n    shift += 7\n  } while (b >= MSB)\n\n  read.bytes = counter - offset\n\n  return res\n}\n", "\nvar N1 = Math.pow(2,  7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n  return (\n    value < N1 ? 1\n  : value < N2 ? 2\n  : value < N3 ? 3\n  : value < N4 ? 4\n  : value < N5 ? 5\n  : value < N6 ? 6\n  : value < N7 ? 7\n  : value < N8 ? 8\n  : value < N9 ? 9\n  :              10\n  )\n}\n", "module.exports = {\n    encode: require('./encode.js')\n  , decode: require('./decode.js')\n  , encodingLength: require('./length.js')\n}\n", "\"use strict\";\n\nvar EC = require(\"elliptic\").ec;\n\nvar ec = new EC(\"secp256k1\");\nvar browserCrypto = global.crypto || global.msCrypto || {};\nvar subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n\nvar nodeCrypto = require('crypto');\n\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex');\nconst ZERO32 = Buffer.alloc(32, 0);\n\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || \"Assertion failed\");\n  }\n}\n\nfunction isScalar (x) {\n  return Buffer.isBuffer(x) && x.length === 32;\n}\n\nfunction isValidPrivateKey(privateKey) {\n  if (!isScalar(privateKey))\n  {\n    return false;\n  }\n  return privateKey.compare(ZERO32) > 0 && // > 0\n  privateKey.compare(EC_GROUP_ORDER) < 0; // < G\n}\n\n// Compare two buffers in constant time to prevent timing attacks.\nfunction equalConstTime(b1, b2) {\n  if (b1.length !== b2.length) {\n    return false;\n  }\n  var res = 0;\n  for (var i = 0; i < b1.length; i++) {\n    res |= b1[i] ^ b2[i];  // jshint ignore:line\n  }\n  return res === 0;\n}\n\n/* This must check if we're in the browser or\nnot, since the functions are different and does\nnot convert using browserify */\nfunction randomBytes(size) {\n  var arr = new Uint8Array(size);\n  if (typeof browserCrypto.getRandomValues === 'undefined') {\n    return Buffer.from(nodeCrypto.randomBytes(size));\n  } else {\n    browserCrypto.getRandomValues(arr);\n  }\n  return Buffer.from(arr);\n}\n\nfunction sha512(msg) {\n  return new Promise(function(resolve) {\n    var hash = nodeCrypto.createHash('sha512');\n    var result = hash.update(msg).digest();\n    resolve(new Uint8Array(result));\n  });\n}\n\nfunction getAes(op) {\n  return function(iv, key, data) {\n    return new Promise(function(resolve) {\n      if (subtle) {\n        var importAlgorithm = {name: \"AES-CBC\"};\n        var keyp = subtle.importKey(\"raw\", key, importAlgorithm, false, [op]);\n        return keyp.then(function(cryptoKey) {\n          var encAlgorithm = {name: \"AES-CBC\", iv: iv};\n          return subtle[op](encAlgorithm, cryptoKey, data);\n        }).then(function(result) {\n          resolve(Buffer.from(new Uint8Array(result)));\n        });\n      } else {\n        if (op === 'encrypt') {\n          var cipher = nodeCrypto.createCipheriv('aes-256-cbc', key, iv);\n          let firstChunk = cipher.update(data);\n          let secondChunk = cipher.final();\n          resolve(Buffer.concat([firstChunk, secondChunk]));\n        }\n        else if (op === 'decrypt') {\n          var decipher = nodeCrypto.createDecipheriv('aes-256-cbc', key, iv);\n          let firstChunk = decipher.update(data);\n          let secondChunk = decipher.final();\n          resolve(Buffer.concat([firstChunk, secondChunk]));\n        }\n      }\n    });\n  };\n}\n\nvar aesCbcEncrypt = getAes(\"encrypt\");\nvar aesCbcDecrypt = getAes(\"decrypt\");\n\nfunction hmacSha256Sign(key, msg) {\n  return new Promise(function(resolve) {\n    var hmac = nodeCrypto.createHmac('sha256', Buffer.from(key));\n    hmac.update(msg);\n    var result = hmac.digest();\n    resolve(result);\n  });\n}\n\nfunction hmacSha256Verify(key, msg, sig) {\n  return new Promise(function(resolve) {\n    var hmac = nodeCrypto.createHmac('sha256', Buffer.from(key));\n    hmac.update(msg);\n    var expectedSig = hmac.digest();\n    resolve(equalConstTime(expectedSig, sig));\n  });\n}\n\n/**\n  * Generate a new valid private key. Will use the window.crypto or window.msCrypto as source\n  * depending on your browser.\n  * @return {Buffer} A 32-byte private key.\n  * @function\n  */\nexports.generatePrivate = function () {\n  var privateKey = randomBytes(32);\n  while (!isValidPrivateKey(privateKey)) {\n    privateKey = randomBytes(32);\n  }\n  return privateKey;\n};\n\nvar getPublic = exports.getPublic = function(privateKey) {\n  // This function has sync API so we throw an error immediately.\n  assert(privateKey.length === 32, \"Bad private key\");\n  assert(isValidPrivateKey(privateKey), \"Bad private key\");\n  // XXX(Kagami): `elliptic.utils.encode` returns array for every\n  // encoding except `hex`.\n  return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(\"arr\"));\n};\n\n/**\n * Get compressed version of public key.\n */\nvar getPublicCompressed = exports.getPublicCompressed = function(privateKey) { // jshint ignore:line\n  assert(privateKey.length === 32, \"Bad private key\");\n  assert(isValidPrivateKey(privateKey), \"Bad private key\");\n  // See https://github.com/wanderer/secp256k1-node/issues/46\n  let compressed = true;\n  return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, \"arr\"));\n};\n\n// NOTE(Kagami): We don't use promise shim in Browser implementation\n// because it's supported natively in new browsers (see\n// <http://caniuse.com/#feat=promises>) and we can use only new browsers\n// because of the WebCryptoAPI (see\n// <http://caniuse.com/#feat=cryptography>).\nexports.sign = function(privateKey, msg) {\n  return new Promise(function(resolve) {\n    assert(privateKey.length === 32, \"Bad private key\");\n    assert(isValidPrivateKey(privateKey), \"Bad private key\");\n    assert(msg.length > 0, \"Message should not be empty\");\n    assert(msg.length <= 32, \"Message is too long\");\n    resolve(Buffer.from(ec.sign(msg, privateKey, {canonical: true}).toDER()));\n  });\n};\n\nexports.verify = function(publicKey, msg, sig) {\n  return new Promise(function(resolve, reject) {\n    assert(publicKey.length === 65 || publicKey.length === 33, \"Bad public key\");\n    if (publicKey.length === 65)\n    {\n      assert(publicKey[0] === 4, \"Bad public key\");\n    }\n    if (publicKey.length === 33)\n    {\n      assert(publicKey[0] === 2 || publicKey[0] === 3, \"Bad public key\");\n    }\n    assert(msg.length > 0, \"Message should not be empty\");\n    assert(msg.length <= 32, \"Message is too long\");\n    if (ec.verify(msg, sig, publicKey)) {\n      resolve(null);\n    } else {\n      reject(new Error(\"Bad signature\"));\n    }\n  });\n};\n\nvar derive = exports.derive = function(privateKeyA, publicKeyB) {\n  return new Promise(function(resolve) {\n    assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n    assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n    assert(privateKeyA.length === 32, \"Bad private key\");\n    assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n    assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n    if (publicKeyB.length === 65)\n    {\n      assert(publicKeyB[0] === 4, \"Bad public key\");\n    }\n    if (publicKeyB.length === 33)\n    {\n      assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n    }\n    var keyA = ec.keyFromPrivate(privateKeyA);\n    var keyB = ec.keyFromPublic(publicKeyB);\n    var Px = keyA.derive(keyB.getPublic());  // BN instance\n    resolve(Buffer.from(Px.toArray()));\n  });\n};\n\nexports.encrypt = function(publicKeyTo, msg, opts) {\n  opts = opts || {};\n  // Tmp variables to save context from flat promises;\n  var iv, ephemPublicKey, ciphertext, macKey;\n  return new Promise(function(resolve) {\n    var ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n    // There is a very unlikely possibility that it is not a valid key\n    while(!isValidPrivateKey(ephemPrivateKey))\n    {\n      ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n    }\n    ephemPublicKey = getPublic(ephemPrivateKey);\n    resolve(derive(ephemPrivateKey, publicKeyTo));\n  }).then(function(Px) {\n    return sha512(Px);\n  }).then(function(hash) {\n    iv = opts.iv || randomBytes(16);\n    var encryptionKey = hash.slice(0, 32);\n    macKey = hash.slice(32);\n    return aesCbcEncrypt(iv, encryptionKey, msg);\n  }).then(function(data) {\n    ciphertext = data;\n    var dataToMac = Buffer.concat([iv, ephemPublicKey, ciphertext]);\n    return hmacSha256Sign(macKey, dataToMac);\n  }).then(function(mac) {\n    return {\n      iv: iv,\n      ephemPublicKey: ephemPublicKey,\n      ciphertext: ciphertext,\n      mac: mac,\n    };\n  });\n};\n\nexports.decrypt = function(privateKey, opts) {\n  // Tmp variable to save context from flat promises;\n  var encryptionKey;\n  return derive(privateKey, opts.ephemPublicKey).then(function(Px) {\n    return sha512(Px);\n  }).then(function(hash) {\n    encryptionKey = hash.slice(0, 32);\n    var macKey = hash.slice(32);\n    var dataToMac = Buffer.concat([\n      opts.iv,\n      opts.ephemPublicKey,\n      opts.ciphertext\n    ]);\n    return hmacSha256Verify(macKey, dataToMac, opts.mac);\n  }).then(function(macGood) {\n    assert(macGood, \"Bad MAC\");\n    return aesCbcDecrypt(opts.iv, encryptionKey, opts.ciphertext);\n  }).then(function(msg) {\n    return Buffer.from(new Uint8Array(msg));\n  });\n};\n\n", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableWebToNodeStream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Converts a Web-API stream into Node stream.Readable class\n * Node stream readable: https://nodejs.org/api/stream.html#stream_readable_streams\n * Web API readable-stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * Node readable stream: https://nodejs.org/api/stream.html#stream_readable_streams\n */\nclass ReadableWebToNodeStream extends readable_stream_1.Readable {\n    /**\n     *\n     * @param stream Readable\u200BStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n     */\n    constructor(stream) {\n        super();\n        this.bytesRead = 0;\n        this.released = false;\n        this.reader = stream.getReader();\n    }\n    /**\n     * Implementation of readable._read(size).\n     * When readable._read() is called, if data is available from the resource,\n     * the implementation should begin pushing that data into the read queue\n     * https://nodejs.org/api/stream.html#stream_readable_read_size_1\n     */\n    async _read() {\n        // Should start pushing data into the queue\n        // Read data from the underlying Web-API-readable-stream\n        if (this.released) {\n            this.push(null); // Signal EOF\n            return;\n        }\n        this.pendingRead = this.reader.read();\n        const data = await this.pendingRead;\n        // clear the promise before pushing pushing new data to the queue and allow sequential calls to _read()\n        delete this.pendingRead;\n        if (data.done || this.released) {\n            this.push(null); // Signal EOF\n        }\n        else {\n            this.bytesRead += data.value.length;\n            this.push(data.value); // Push new data to the queue\n        }\n    }\n    /**\n     * If there is no unresolved read call to Web-API Readable\u200BStream immediately returns;\n     * otherwise will wait until the read is resolved.\n     */\n    async waitForReadToComplete() {\n        if (this.pendingRead) {\n            await this.pendingRead;\n        }\n    }\n    /**\n     * Close wrapper\n     */\n    async close() {\n        await this.syncAndRelease();\n    }\n    async syncAndRelease() {\n        this.released = true;\n        await this.waitForReadToComplete();\n        await this.reader.releaseLock();\n    }\n}\nexports.ReadableWebToNodeStream = ReadableWebToNodeStream;\n//# sourceMappingURL=index.js.map", "export * from './web5.js';", "import type { DidState, DidMethodApi, DidResolverCache } from '@tbd54566975/dids';\nimport type { Web5Agent } from '@tbd54566975/web5-agent';\n\n// import  { Web5ProxyAgent } from '@tbd54566975/web5-proxy-agent';\nimport { DidIonApi, DidKeyApi } from '@tbd54566975/dids';\nimport  { Web5UserAgent, ProfileApi } from '@tbd54566975/web5-user-agent';\n\nimport { DwnApi } from './dwn-api.js';\nimport { DidApi } from './did-api.js';\nimport { AppStorage } from './app-storage.js';\n\n// TODO: discuss what other options we want\nexport type Web5ConnectOptions = {\n  web5Agent?: Web5Agent;\n  didMethodApis?: DidMethodApi[];\n  didResolutionCache?: DidResolverCache;\n}\n\ntype Web5Options = {\n  web5Agent: Web5Agent;\n  appStorage?: AppStorage;\n  connectedDid: string;\n};\n\nexport class Web5 {\n  appStorage: AppStorage;\n  dwn: DwnApi;\n  #connectedDid: string;\n\n  static did = new DidApi({\n    didMethodApis: [new DidIonApi(), new DidKeyApi()]\n  });\n\n  get did() {\n    return Web5.did;\n  }\n\n  private static APP_DID_KEY = 'WEB5_APP_DID';\n\n  private constructor(options: Web5Options) {\n    this.#connectedDid = options.connectedDid;\n    this.dwn = new DwnApi(options.web5Agent, this.#connectedDid);\n    this.appStorage ||= new AppStorage();\n  }\n\n  static async connect(_options: Web5ConnectOptions = {}) {\n    // load app's did\n    const appStorage = new AppStorage();\n    const cachedAppDidState = await appStorage.get(Web5.APP_DID_KEY);\n    let appDidState: DidState;\n\n    if (cachedAppDidState) {\n      appDidState = JSON.parse(cachedAppDidState);\n    } else {\n      appDidState = await this.did.create('key');\n      appStorage.set(Web5.APP_DID_KEY, JSON.stringify(appDidState));\n    }\n\n    // TODO: sniff to see if remote agent is available\n    // TODO: if available,connect to remote agent using Web5ProxyAgent\n\n    // fall back to instantiating local agent\n    const profileApi = new ProfileApi();\n    let [ profile ] = await profileApi.listProfiles();\n\n    // create enc. keys\n\n    if (!profile) {\n      // TODO: add good samaritan nodes here when they're ready\n\n      const defaultProfileDid = await this.did.create('ion');\n      // setting id & name as the app's did to make migration easier\n      profile = await profileApi.createProfile({\n        name        : appDidState.id,\n        did         : defaultProfileDid,\n        connections : [appDidState.id],\n      });\n    }\n\n    const agent = await Web5UserAgent.create({ profileManager: profileApi, didResolver: Web5.did.resolver });\n    const connectedDid = profile.did.id;\n\n    const web5 = new Web5({ appStorage: appStorage, web5Agent: agent, connectedDid });\n\n    return { web5, did: connectedDid };\n  }\n}", "export { DID } from './did.js';\r\nexport { anchor, generateKeyPair, resolve, sign, verify } from './utils.js';", "import { IonDid, IonRequest, LocalSigner } from '@decentralized-identity/ion-sdk';\r\nimport { generateKeyPair } from './utils.js';\r\n\r\nexport class DID {\r\n  #ops;\r\n  #opQueue = Promise.resolve();\r\n  #longForm;\r\n  #longFormPromise;\r\n  #generateKeyPair;\r\n\r\n  constructor(options = { }) {\r\n    this.#ops = options.ops || [ ];\r\n    this.#generateKeyPair = options.generateKeyPair || generateKeyPair;\r\n    if (!this.#ops.length) {\r\n      this.#ops.push(this.generateOperation('create', options.content || { }, false));\r\n    }\r\n  }\r\n\r\n  async generateOperation(type, content, commit = true) {\r\n    return this.#addToOpQueue(() => this.#generateOperation(type, content, commit));\r\n  }\r\n\r\n  async #addToOpQueue(callback = () => Promise.resolve()) {\r\n    const opQueue = this.#opQueue;\r\n    this.#opQueue = new Promise((resolve, reject) => {\r\n      opQueue.finally(() => callback().then(resolve, reject));\r\n    });\r\n    return this.#opQueue;\r\n  }\r\n\r\n  async #generateOperation(type, content, commit) {\r\n    let lastOp = this.#ops[this.#ops.length - 1];\r\n    if (lastOp && lastOp.operation === 'deactivate') {\r\n      throw 'Cannot perform further operations on a deactivated DID';\r\n    }\r\n    let op = {\r\n      operation: type,\r\n      content\r\n    };\r\n    if (type !== 'create') {\r\n      op.previous = this.#ops.reduce((last, op) => {\r\n        return op.operation === type || (op.operation === 'recover' && (type === 'deactivate' || type === 'update')) ? op : last;\r\n      }, this.#ops[0]);\r\n    }\r\n    if (type === 'create' || type === 'recover') {\r\n      op.recovery = await this.#generateKeyPair();\r\n    }\r\n    if (type !== 'deactivate') {\r\n      op.update = await this.#generateKeyPair();\r\n    }\r\n    if (commit) {\r\n      this.#ops.push(op);\r\n    }\r\n\r\n    return op;\r\n  }\r\n\r\n  async generateRequest(payload = 0, options = { }) {\r\n    let op;\r\n    if (typeof payload === 'number') {\r\n      await this.#addToOpQueue();\r\n      op = await this.getOperation(payload);\r\n    } else {\r\n      op = payload;\r\n    }\r\n\r\n    switch (op.operation) {\r\n      case 'update':\r\n        return IonRequest.createUpdateRequest({\r\n          didSuffix: await this.getSuffix(),\r\n          signer: options.signer || LocalSigner.create(op.previous.update.privateJwk),\r\n          updatePublicKey: op.previous.update.publicJwk,\r\n          nextUpdatePublicKey: op.update.publicJwk,\r\n          servicesToAdd: op.content?.addServices,\r\n          idsOfServicesToRemove: op.content?.removeServices,\r\n          publicKeysToAdd: op.content?.addPublicKeys,\r\n          idsOfPublicKeysToRemove: op.content?.removePublicKeys\r\n        });\r\n\r\n      case 'recover':\r\n        return IonRequest.createRecoverRequest({\r\n          didSuffix: await this.getSuffix(),\r\n          signer: options.signer || LocalSigner.create(op.previous.recovery.privateJwk),\r\n          recoveryPublicKey: op.previous.recovery.publicJwk,\r\n          nextRecoveryPublicKey: op.recovery.publicJwk,\r\n          nextUpdatePublicKey: op.update.publicJwk,\r\n          document: op.content\r\n        });\r\n\r\n      case 'deactivate':\r\n        return IonRequest.createDeactivateRequest({\r\n          didSuffix: await this.getSuffix(),\r\n          recoveryPublicKey: op.previous.recovery.publicJwk,\r\n          signer: options.signer || LocalSigner.create(op.previous.recovery.privateJwk)\r\n        });\r\n\r\n      case 'create':\r\n      default:\r\n        return IonRequest.createCreateRequest({\r\n          recoveryKey: op.recovery.publicJwk,\r\n          updateKey: op.update.publicJwk,\r\n          document: op.content\r\n        });\r\n    }\r\n  }\r\n\r\n  async getAllOperations() {\r\n    return Promise.all(this.#ops);\r\n  }\r\n\r\n  async getOperation(index) {\r\n    return this.#ops[index];\r\n  }\r\n\r\n  async getState() {\r\n    const [ shortForm, longForm, ops ] = await Promise.all([\r\n      this.getURI('short'),\r\n      this.getURI(),\r\n      this.getAllOperations()\r\n    ]);\r\n    return { shortForm, longForm, ops };\r\n  }\r\n\r\n  /**\r\n   * returns the suffix portion of the DID string for the DID URI the class instance represents\r\n   * @example\r\n   * <caption>example DID URI: `did:ion:EiCZws6U61LV3YmvxmOIlt4Ap5RSJdIkb_lJXhuUPqQYBg`</caption>\r\n   *\r\n   * // returns: EiCZws6U61LV3YmvxmOIlt4Ap5RSJdIkb_lJXhuUPqQYBg\r\n   * did.getSuffix()\r\n   * @returns {string} suffix\r\n   */\r\n  async getSuffix() {\r\n    const uri = await this.getURI('short');\r\n    return uri.split(':').pop();\r\n  }\r\n\r\n  /**\r\n   * returns either the long or short form URI for the DID based on the form provided\r\n   * @param {'long' | 'short'} form - There are two forms of ION DID URI, the Long-Form URI, which can\r\n   * be used instantly without anchoring an ION DID, and the Short-Form URI, which is only\r\n   * resolvable after a DID has been published to the ION network.\r\n   * @returns {Promise<string>}\r\n   */\r\n  async getURI(form = 'long') {\r\n    if (this.#longFormPromise) {\r\n      await this.#longFormPromise;\r\n    }\r\n\r\n    if (!this.#longForm) {\r\n      this.#longFormPromise = this.#addToOpQueue(async () => {\r\n        const create = await this.getOperation(0);\r\n        return IonDid.createLongFormDid({\r\n          recoveryKey: create.recovery.publicJwk,\r\n          updateKey: create.update.publicJwk,\r\n          document: create.content\r\n        });\r\n      });\r\n      this.#longForm = await this.#longFormPromise;\r\n      this.#longFormPromise = undefined;\r\n    }\r\n\r\n    return !form || form === 'long' ? this.#longForm : this.#longForm.split(':').slice(0, -1).join(':');\r\n  }\r\n}", "import crossFetch from 'cross-fetch';\r\nimport ProofOfWorkSDK from '@decentralized-identity/ion-pow-sdk';\r\n\r\nimport * as ed25519 from '@noble/ed25519';\r\nimport * as secp256k1 from '@noble/secp256k1';\r\n\r\nimport { base64url } from 'multiformats/bases/base64';\r\nimport { IonKey } from '@decentralized-identity/ion-sdk';\r\nimport { sha256 } from 'multiformats/hashes/sha2';\r\n\r\n// supports fetch in: node, browsers, and browser extensions.\r\n// uses native fetch if available in environment or falls back to a ponyfill.\r\n// 'cross-fetch' is a ponyfill that uses `XMLHTTPRequest` under the hood.\r\n// `XMLHTTPRequest` cannot be used in browser extension background service workers.\r\n// browser extensions get even more strict with `fetch` in that it cannot be referenced\r\n// indirectly.\r\nconst fetch = globalThis.fetch ?? crossFetch;\r\n\r\n/**\r\n * @typedef {object} PrivateJWK\r\n * @property {'Ed25519'|'secp256k1'} privateJWK.crv\r\n * @property {string} privateJWK.d\r\n */\r\n\r\n/**\r\n * @typedef {object} PublicJWK\r\n * @property {'Ed25519'|'secp256k1'} publicJWK.crv\r\n * @property {string} publicJWK.x\r\n * @property {string} [publicJWK.y]\r\n */\r\n\r\n/**\r\n * @typedef {object} KeyPair\r\n * @property {PrivateJWK} privateJwk\r\n * @property {PublicJWK} publicJwk\r\n */\r\n\r\nconst keyGenerators = {\r\n  'Ed25519': IonKey.generateEd25519OperationKeyPair,\r\n  'EdDSA': IonKey.generateEd25519OperationKeyPair,\r\n  'secp256k1': IonKey.generateEs256kOperationKeyPair,\r\n  'ES256K': IonKey.generateEs256kOperationKeyPair\r\n};\r\n\r\n/**\r\n * generates a keypair of the type provided\r\n * @param {'Ed25519'| 'EdDSA' | 'secp256k1' | 'ES256K'} type\r\n * @returns {KeyPair}\r\n */\r\nexport async function generateKeyPair(type = 'secp256k1') {\r\n  const keyGeneratorFn = keyGenerators[type];\r\n\r\n  if (!keyGeneratorFn) {\r\n    throw new Error('Unsupported key type');\r\n  }\r\n\r\n  const [ publicJwk, privateJwk ] = await keyGeneratorFn();\r\n  return { publicJwk, privateJwk };\r\n}\r\n\r\n/**\r\n * signs the payload provided using the key provided\r\n * @param {object} params\r\n * @param {any} params.payload - anything JSON stringifiable.\r\n * @param {object} [params.header] - any properties you want included in the header. `alg` will be included for you\r\n * @param {PrivateJWK} params.privateJwk - the key to sign with\r\n * @returns {string} compact JWS\r\n */\r\nexport async function sign(params = { }) {\r\n  const { header = { }, payload, privateJwk } = params;\r\n  let signer;\r\n  let signerOpts;\r\n\r\n  switch (privateJwk.crv) {\r\n    case 'Ed25519':\r\n      header.alg = 'EdDSA';\r\n      signer = ed25519;\r\n      break;\r\n\r\n    case 'secp256k1':\r\n      header.alg = 'ES256K';\r\n      signer = secp256k1;\r\n      signerOpts = { der: false };\r\n      break;\r\n\r\n    default:\r\n      throw new Error('Unsupported cryptographic type');\r\n  }\r\n\r\n  const textEncoder = new TextEncoder();\r\n\r\n  const headerStr = JSON.stringify(header);\r\n  const headerBytes = textEncoder.encode(headerStr);\r\n  const headerBase64Url = base64url.baseEncode(headerBytes);\r\n\r\n  const payloadStr = JSON.stringify(payload);\r\n  const payloadBytes = textEncoder.encode(payloadStr);\r\n  const payloadBase64Url = base64url.baseEncode(payloadBytes);\r\n\r\n  // this is what's going to get signed\r\n  const message = `${headerBase64Url}.${payloadBase64Url}`;\r\n  let messageBytes = textEncoder.encode(message);\r\n\r\n  if (privateJwk.crv === 'secp256k1') {\r\n    messageBytes = await sha256.encode(messageBytes);\r\n  }\r\n\r\n  const privateKeyBytes = base64url.baseDecode(privateJwk.d);\r\n\r\n  const signatureBytes = await signer.sign(messageBytes, privateKeyBytes, signerOpts);\r\n  const signature = base64url.baseEncode(signatureBytes);\r\n\r\n  return `${message}.${signature}`;\r\n}\r\n\r\n/**\r\n *  verifies the provided JWS with the provided public key\r\n * @param {object} params\r\n * @param {string} params.jws - the compact jws to verify\r\n * @param {PublicJWK} params.publicJwk - the public key used to verify the signature\r\n * @returns {boolean}\r\n */\r\nexport async function verify(params = { }) {\r\n  const { jws, publicJwk } = params;\r\n  const [ headerBase64Url, payloadBase64Url, signatureBase64Url ] = jws.split('.');\r\n\r\n  const message = `${headerBase64Url}.${payloadBase64Url}`;\r\n  const messageBytes = new TextEncoder().encode(message);\r\n\r\n  const signatureBytes = base64url.baseDecode(signatureBase64Url);\r\n\r\n  switch (publicJwk.crv) {\r\n    case 'secp256k1': {\r\n      const xBytes = base64url.baseDecode(publicJwk.x);\r\n      const yBytes = base64url.baseDecode(publicJwk.y);\r\n\r\n      const publicKeyBytes = new Uint8Array(xBytes.length + yBytes.length + 1);\r\n\r\n      // create an uncompressed public key using the x and y values from the provided JWK.\r\n      // a leading byte of 0x04 indicates that the public key is uncompressed\r\n      // (e.g. x and y values are both present)\r\n      publicKeyBytes.set([ 0x04 ], 0);\r\n      publicKeyBytes.set(xBytes, 1);\r\n      publicKeyBytes.set(yBytes, xBytes.length + 1);\r\n\r\n      const hashedMessage = await sha256.encode(messageBytes);\r\n\r\n      return secp256k1.verify(signatureBytes, hashedMessage, publicKeyBytes);\r\n    }\r\n\r\n    case 'Ed25519': {\r\n      const publicKeyBytes = base64url.baseDecode(publicJwk.x);\r\n\r\n      return ed25519.verify(signatureBytes, messageBytes, publicKeyBytes);\r\n    }\r\n\r\n    default:\r\n      throw new Error('Unsupported cryptographic type');\r\n  }\r\n}\r\n\r\n/**\r\n * resolves the ION DID provided\r\n * @param {string} didUri\r\n * @param {object} options\r\n * @param {string} [nodeEndpoint] - the resolver node\r\n * @returns\r\n */\r\nexport async function resolve(didUri, options = { }) {\r\n  const { nodeEndpoint = 'https://beta.discover.did.microsoft.com/1.0/identifiers' } = options;\r\n\r\n  const response = await fetch(`${nodeEndpoint}/${didUri}`);\r\n\r\n  if (response.status >= 400) {\r\n    throw new Error(response.statusText);\r\n  }\r\n\r\n  return response.json();\r\n}\r\n\r\nexport async function anchor(anchorRequest, options = { }) {\r\n  const {\r\n    challengeEndpoint = 'https://beta.ion.msidentity.com/api/v1.0/proof-of-work-challenge',\r\n    solutionEndpoint = 'https://beta.ion.msidentity.com/api/v1.0/operations'\r\n  } = options;\r\n\r\n  return ProofOfWorkSDK.submitIonRequest(challengeEndpoint, solutionEndpoint, JSON.stringify(anchorRequest));\r\n};", "/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _255n = BigInt(255);\nconst CURVE_ORDER = _2n ** BigInt(252) + BigInt('27742317777372353535851937790883648493');\nconst CURVE = {\n    a: BigInt(-1),\n    d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n    P: _2n ** _255n - BigInt(19),\n    l: CURVE_ORDER,\n    n: CURVE_ORDER,\n    h: BigInt(8),\n    Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n    Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n};\nexport { CURVE };\nconst MAX_256B = _2n ** BigInt(256);\nconst SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\nconst SQRT_D = BigInt('6853475219497561581579357271197624642482790079785650197046958215289687604742');\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\nclass ExtendedPoint {\n    constructor(x, y, z, t) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.t = t;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('ExtendedPoint#fromAffine: expected Point');\n        }\n        if (p.equals(Point.ZERO))\n            return ExtendedPoint.ZERO;\n        return new ExtendedPoint(p.x, p.y, _1n, mod(p.x * p.y));\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return this.toAffineBatch(points).map(this.fromAffine);\n    }\n    equals(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const X1Z2 = mod(X1 * Z2);\n        const X2Z1 = mod(X2 * Z1);\n        const Y1Z2 = mod(Y1 * Z2);\n        const Y2Z1 = mod(Y2 * Z1);\n        return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n    }\n    negate() {\n        return new ExtendedPoint(mod(-this.x), this.y, this.z, mod(-this.t));\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { a } = CURVE;\n        const A = mod(X1 ** _2n);\n        const B = mod(Y1 ** _2n);\n        const C = mod(_2n * mod(Z1 ** _2n));\n        const D = mod(a * A);\n        const E = mod(mod((X1 + Y1) ** _2n) - A - B);\n        const G = D + B;\n        const F = G - C;\n        const H = D - B;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    add(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1, t: T1 } = this;\n        const { x: X2, y: Y2, z: Z2, t: T2 } = other;\n        const A = mod((Y1 - X1) * (Y2 + X2));\n        const B = mod((Y1 + X1) * (Y2 - X2));\n        const F = mod(B - A);\n        if (F === _0n)\n            return this.double();\n        const C = mod(Z1 * _2n * T2);\n        const D = mod(T1 * _2n * Z2);\n        const E = D + C;\n        const G = B + A;\n        const H = D - C;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    precomputeWindow(W) {\n        const windows = 1 + 256 / W;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(ExtendedPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = ExtendedPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = ExtendedPoint.ZERO;\n        let f = ExtendedPoint.ZERO;\n        const windows = 1 + 256 / W;\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            if (wbits === 0) {\n                let pr = precomputes[offset];\n                if (window % 2)\n                    pr = pr.negate();\n                f = f.add(pr);\n            }\n            else {\n                let cached = precomputes[offset + Math.abs(wbits) - 1];\n                if (wbits < 0)\n                    cached = cached.negate();\n                p = p.add(cached);\n            }\n        }\n        return ExtendedPoint.normalizeZ([p, f])[0];\n    }\n    multiply(scalar, affinePoint) {\n        return this.wNAF(normalizeScalar(scalar, CURVE.l), affinePoint);\n    }\n    multiplyUnsafe(scalar) {\n        let n = normalizeScalar(scalar, CURVE.l, false);\n        const G = ExtendedPoint.BASE;\n        const P0 = ExtendedPoint.ZERO;\n        if (n === _0n)\n            return P0;\n        if (this.equals(P0) || n === _1n)\n            return this;\n        if (this.equals(G))\n            return this.wNAF(n);\n        let p = P0;\n        let d = this;\n        while (n > _0n) {\n            if (n & _1n)\n                p = p.add(d);\n            d = d.double();\n            n >>= _1n;\n        }\n        return p;\n    }\n    isSmallOrder() {\n        return this.multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n    }\n    isTorsionFree() {\n        return this.multiplyUnsafe(CURVE.l).equals(ExtendedPoint.ZERO);\n    }\n    toAffine(invZ = invert(this.z)) {\n        const { x, y, z } = this;\n        const ax = mod(x * invZ);\n        const ay = mod(y * invZ);\n        const zz = mod(z * invZ);\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n    fromRistrettoBytes() {\n        legacyRist();\n    }\n    toRistrettoBytes() {\n        legacyRist();\n    }\n    fromRistrettoHash() {\n        legacyRist();\n    }\n}\nExtendedPoint.BASE = new ExtendedPoint(CURVE.Gx, CURVE.Gy, _1n, mod(CURVE.Gx * CURVE.Gy));\nExtendedPoint.ZERO = new ExtendedPoint(_0n, _1n, _1n, _0n);\nfunction assertExtPoint(other) {\n    if (!(other instanceof ExtendedPoint))\n        throw new TypeError('ExtendedPoint expected');\n}\nfunction assertRstPoint(other) {\n    if (!(other instanceof RistrettoPoint))\n        throw new TypeError('RistrettoPoint expected');\n}\nfunction legacyRist() {\n    throw new Error('Legacy method: switch to RistrettoPoint');\n}\nclass RistrettoPoint {\n    constructor(ep) {\n        this.ep = ep;\n    }\n    static calcElligatorRistrettoMap(r0) {\n        const { d } = CURVE;\n        const r = mod(SQRT_M1 * r0 * r0);\n        const Ns = mod((r + _1n) * ONE_MINUS_D_SQ);\n        let c = BigInt(-1);\n        const D = mod((c - d * r) * mod(r + d));\n        let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D);\n        let s_ = mod(s * r0);\n        if (!edIsNegative(s_))\n            s_ = mod(-s_);\n        if (!Ns_D_is_sq)\n            s = s_;\n        if (!Ns_D_is_sq)\n            c = r;\n        const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D);\n        const s2 = s * s;\n        const W0 = mod((s + s) * D);\n        const W1 = mod(Nt * SQRT_AD_MINUS_ONE);\n        const W2 = mod(_1n - s2);\n        const W3 = mod(_1n + s2);\n        return new ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n    }\n    static hashToCurve(hex) {\n        hex = ensureBytes(hex, 64);\n        const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n        const R1 = this.calcElligatorRistrettoMap(r1);\n        const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n        const R2 = this.calcElligatorRistrettoMap(r2);\n        return new RistrettoPoint(R1.add(R2));\n    }\n    static fromHex(hex) {\n        hex = ensureBytes(hex, 32);\n        const { a, d } = CURVE;\n        const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n        const s = bytes255ToNumberLE(hex);\n        if (!equalBytes(numberTo32BytesLE(s), hex) || edIsNegative(s))\n            throw new Error(emsg);\n        const s2 = mod(s * s);\n        const u1 = mod(_1n + a * s2);\n        const u2 = mod(_1n - a * s2);\n        const u1_2 = mod(u1 * u1);\n        const u2_2 = mod(u2 * u2);\n        const v = mod(a * d * u1_2 - u2_2);\n        const { isValid, value: I } = invertSqrt(mod(v * u2_2));\n        const Dx = mod(I * u2);\n        const Dy = mod(I * Dx * v);\n        let x = mod((s + s) * Dx);\n        if (edIsNegative(x))\n            x = mod(-x);\n        const y = mod(u1 * Dy);\n        const t = mod(x * y);\n        if (!isValid || edIsNegative(t) || y === _0n)\n            throw new Error(emsg);\n        return new RistrettoPoint(new ExtendedPoint(x, y, _1n, t));\n    }\n    toRawBytes() {\n        let { x, y, z, t } = this.ep;\n        const u1 = mod(mod(z + y) * mod(z - y));\n        const u2 = mod(x * y);\n        const { value: invsqrt } = invertSqrt(mod(u1 * u2 ** _2n));\n        const D1 = mod(invsqrt * u1);\n        const D2 = mod(invsqrt * u2);\n        const zInv = mod(D1 * D2 * t);\n        let D;\n        if (edIsNegative(t * zInv)) {\n            let _x = mod(y * SQRT_M1);\n            let _y = mod(x * SQRT_M1);\n            x = _x;\n            y = _y;\n            D = mod(D1 * INVSQRT_A_MINUS_D);\n        }\n        else {\n            D = D2;\n        }\n        if (edIsNegative(x * zInv))\n            y = mod(-y);\n        let s = mod((z - y) * D);\n        if (edIsNegative(s))\n            s = mod(-s);\n        return numberTo32BytesLE(s);\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toString() {\n        return this.toHex();\n    }\n    equals(other) {\n        assertRstPoint(other);\n        const a = this.ep;\n        const b = other.ep;\n        const one = mod(a.x * b.y) === mod(a.y * b.x);\n        const two = mod(a.y * b.y) === mod(a.x * b.x);\n        return one || two;\n    }\n    add(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.add(other.ep));\n    }\n    subtract(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.subtract(other.ep));\n    }\n    multiply(scalar) {\n        return new RistrettoPoint(this.ep.multiply(scalar));\n    }\n    multiplyUnsafe(scalar) {\n        return new RistrettoPoint(this.ep.multiplyUnsafe(scalar));\n    }\n}\nRistrettoPoint.BASE = new RistrettoPoint(ExtendedPoint.BASE);\nRistrettoPoint.ZERO = new RistrettoPoint(ExtendedPoint.ZERO);\nconst pointPrecomputes = new WeakMap();\nclass Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    static fromHex(hex, strict = true) {\n        const { d, P } = CURVE;\n        hex = ensureBytes(hex, 32);\n        const normed = hex.slice();\n        normed[31] = hex[31] & ~0x80;\n        const y = bytesToNumberLE(normed);\n        if (strict && y >= P)\n            throw new Error('Expected 0 < hex < P');\n        if (!strict && y >= MAX_256B)\n            throw new Error('Expected 0 < hex < 2**256');\n        const y2 = mod(y * y);\n        const u = mod(y2 - _1n);\n        const v = mod(d * y2 + _1n);\n        let { isValid, value: x } = uvRatio(u, v);\n        if (!isValid)\n            throw new Error('Point.fromHex: invalid y coordinate');\n        const isXOdd = (x & _1n) === _1n;\n        const isLastByteOdd = (hex[31] & 0x80) !== 0;\n        if (isLastByteOdd !== isXOdd) {\n            x = mod(-x);\n        }\n        return new Point(x, y);\n    }\n    static async fromPrivateKey(privateKey) {\n        return (await getExtendedPublicKey(privateKey)).point;\n    }\n    toRawBytes() {\n        const bytes = numberTo32BytesLE(this.y);\n        bytes[31] |= this.x & _1n ? 0x80 : 0;\n        return bytes;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toX25519() {\n        const { y } = this;\n        const u = mod((_1n + y) * invert(_1n - y));\n        return numberTo32BytesLE(u);\n    }\n    isTorsionFree() {\n        return ExtendedPoint.fromAffine(this).isTorsionFree();\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(mod(-this.x), this.y);\n    }\n    add(other) {\n        return ExtendedPoint.fromAffine(this).add(ExtendedPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return ExtendedPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _1n);\nclass Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex, 64);\n        const r = Point.fromHex(bytes.slice(0, 32), false);\n        const s = bytesToNumberLE(bytes.slice(32, 64));\n        return new Signature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!(r instanceof Point))\n            throw new Error('Expected Point instance');\n        normalizeScalar(s, CURVE.l, false);\n        return this;\n    }\n    toRawBytes() {\n        const u8 = new Uint8Array(64);\n        u8.set(this.r.toRawBytes());\n        u8.set(numberTo32BytesLE(this.s), 32);\n        return u8;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n}\nexport { ExtendedPoint, RistrettoPoint, Point, Signature };\nfunction concatBytes(...arrays) {\n    if (!arrays.every((a) => a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array list');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Uint8Array expected');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex');\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction numberTo32BytesBE(num) {\n    const length = 32;\n    const hex = num.toString(16).padStart(length * 2, '0');\n    return hexToBytes(hex);\n}\nfunction numberTo32BytesLE(num) {\n    return numberTo32BytesBE(num).reverse();\n}\nfunction edIsNegative(num) {\n    return (mod(num) & _1n) === _1n;\n}\nfunction bytesToNumberLE(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    return BigInt('0x' + bytesToHex(Uint8Array.from(uint8a).reverse()));\n}\nfunction bytes255ToNumberLE(bytes) {\n    return mod(bytesToNumberLE(bytes) & (_2n ** _255n - _1n));\n}\nfunction mod(a, b = CURVE.P) {\n    const res = a % b;\n    return res >= _0n ? res : b + res;\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const tmp = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = mod(acc * tmp[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return tmp;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction pow_2_252_3(x) {\n    const { P } = CURVE;\n    const _5n = BigInt(5);\n    const _10n = BigInt(10);\n    const _20n = BigInt(20);\n    const _40n = BigInt(40);\n    const _80n = BigInt(80);\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P;\n    const b4 = (pow2(b2, _2n) * b2) % P;\n    const b5 = (pow2(b4, _1n) * x) % P;\n    const b10 = (pow2(b5, _5n) * b5) % P;\n    const b20 = (pow2(b10, _10n) * b10) % P;\n    const b40 = (pow2(b20, _20n) * b20) % P;\n    const b80 = (pow2(b40, _40n) * b40) % P;\n    const b160 = (pow2(b80, _80n) * b80) % P;\n    const b240 = (pow2(b160, _80n) * b80) % P;\n    const b250 = (pow2(b240, _10n) * b10) % P;\n    const pow_p_5_8 = (pow2(b250, _2n) * x) % P;\n    return { pow_p_5_8, b2 };\n}\nfunction uvRatio(u, v) {\n    const v3 = mod(v * v * v);\n    const v7 = mod(v3 * v3 * v);\n    const pow = pow_2_252_3(u * v7).pow_p_5_8;\n    let x = mod(u * v3 * pow);\n    const vx2 = mod(v * x * x);\n    const root1 = x;\n    const root2 = mod(x * SQRT_M1);\n    const useRoot1 = vx2 === u;\n    const useRoot2 = vx2 === mod(-u);\n    const noRoot = vx2 === mod(-u * SQRT_M1);\n    if (useRoot1)\n        x = root1;\n    if (useRoot2 || noRoot)\n        x = root2;\n    if (edIsNegative(x))\n        x = mod(-x);\n    return { isValid: useRoot1 || useRoot2, value: x };\n}\nfunction invertSqrt(number) {\n    return uvRatio(_1n, number);\n}\nasync function sha512ModqLE(...args) {\n    const hash = await utils.sha512(concatBytes(...args));\n    const value = bytesToNumberLE(hash);\n    return mod(value, CURVE.l);\n}\nfunction equalBytes(b1, b2) {\n    if (b1.length !== b2.length) {\n        return false;\n    }\n    for (let i = 0; i < b1.length; i++) {\n        if (b1[i] !== b2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction ensureBytes(hex, expectedLength) {\n    const bytes = hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n    if (typeof expectedLength === 'number' && bytes.length !== expectedLength)\n        throw new Error(`Expected ${expectedLength} bytes`);\n    return bytes;\n}\nfunction normalizeScalar(num, max, strict = true) {\n    if (!max)\n        throw new TypeError('Specify max value');\n    if (typeof num === 'number' && Number.isSafeInteger(num))\n        num = BigInt(num);\n    if (typeof num === 'bigint' && num < max) {\n        if (strict) {\n            if (_0n < num)\n                return num;\n        }\n        else {\n            if (_0n <= num)\n                return num;\n        }\n    }\n    throw new TypeError('Expected valid scalar: 0 < scalar < max');\n}\nfunction adjustBytes25519(bytes) {\n    bytes[0] &= 248;\n    bytes[31] &= 127;\n    bytes[31] |= 64;\n    return bytes;\n}\nfunction decodeScalar25519(n) {\n    return bytesToNumberLE(adjustBytes25519(ensureBytes(n, 32)));\n}\nasync function getExtendedPublicKey(key) {\n    key =\n        typeof key === 'bigint' || typeof key === 'number'\n            ? numberTo32BytesBE(normalizeScalar(key, MAX_256B))\n            : ensureBytes(key);\n    if (key.length !== 32)\n        throw new Error(`Expected 32 bytes`);\n    const hashed = await utils.sha512(key);\n    const head = adjustBytes25519(hashed.slice(0, 32));\n    const prefix = hashed.slice(32, 64);\n    const scalar = mod(bytesToNumberLE(head), CURVE.l);\n    const point = Point.BASE.multiply(scalar);\n    const pointBytes = point.toRawBytes();\n    return { head, prefix, scalar, point, pointBytes };\n}\nexport async function getPublicKey(privateKey) {\n    return (await getExtendedPublicKey(privateKey)).pointBytes;\n}\nexport async function sign(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = await getExtendedPublicKey(privateKey);\n    const r = await sha512ModqLE(prefix, message);\n    const R = Point.BASE.multiply(r);\n    const k = await sha512ModqLE(R.toRawBytes(), pointBytes, message);\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nexport async function verify(sig, message, publicKey) {\n    message = ensureBytes(message);\n    if (!(publicKey instanceof Point))\n        publicKey = Point.fromHex(publicKey, false);\n    const { r, s } = sig instanceof Signature ? sig.assertValidity() : Signature.fromHex(sig);\n    const SB = ExtendedPoint.BASE.multiplyUnsafe(s);\n    const k = await sha512ModqLE(r.toRawBytes(), publicKey.toRawBytes(), message);\n    const kA = ExtendedPoint.fromAffine(publicKey).multiplyUnsafe(k);\n    const RkA = ExtendedPoint.fromAffine(r).add(kA);\n    return RkA.subtract(SB).multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n}\nexport async function getSharedSecret(privateKey, publicKey) {\n    const { head } = await getExtendedPublicKey(privateKey);\n    const u = Point.fromHex(publicKey).toX25519();\n    return curve25519.scalarMult(head, u);\n}\nPoint.BASE._setWindowSize(8);\nfunction cswap(swap, x_2, x_3) {\n    const dummy = mod(swap * (x_2 - x_3));\n    x_2 = mod(x_2 - dummy);\n    x_3 = mod(x_3 + dummy);\n    return [x_2, x_3];\n}\nfunction montgomeryLadder(pointU, scalar) {\n    const { P } = CURVE;\n    const u = normalizeScalar(pointU, P);\n    const k = normalizeScalar(scalar, P);\n    const a24 = BigInt(121665);\n    const x_1 = u;\n    let x_2 = _1n;\n    let z_2 = _0n;\n    let x_3 = u;\n    let z_3 = _1n;\n    let swap = _0n;\n    let sw;\n    for (let t = BigInt(255 - 1); t >= _0n; t--) {\n        const k_t = (k >> t) & _1n;\n        swap ^= k_t;\n        sw = cswap(swap, x_2, x_3);\n        x_2 = sw[0];\n        x_3 = sw[1];\n        sw = cswap(swap, z_2, z_3);\n        z_2 = sw[0];\n        z_3 = sw[1];\n        swap = k_t;\n        const A = x_2 + z_2;\n        const AA = mod(A * A);\n        const B = x_2 - z_2;\n        const BB = mod(B * B);\n        const E = AA - BB;\n        const C = x_3 + z_3;\n        const D = x_3 - z_3;\n        const DA = mod(D * A);\n        const CB = mod(C * B);\n        x_3 = mod((DA + CB) ** _2n);\n        z_3 = mod(x_1 * (DA - CB) ** _2n);\n        x_2 = mod(AA * BB);\n        z_2 = mod(E * (AA + mod(a24 * E)));\n    }\n    sw = cswap(swap, x_2, x_3);\n    x_2 = sw[0];\n    x_3 = sw[1];\n    sw = cswap(swap, z_2, z_3);\n    z_2 = sw[0];\n    z_3 = sw[1];\n    const { pow_p_5_8, b2 } = pow_2_252_3(z_2);\n    const xp2 = mod(pow2(pow_p_5_8, BigInt(3)) * b2);\n    return mod(x_2 * xp2);\n}\nfunction encodeUCoordinate(u) {\n    return numberTo32BytesLE(mod(u, CURVE.P));\n}\nfunction decodeUCoordinate(uEnc) {\n    const u = ensureBytes(uEnc, 32);\n    u[31] &= 127;\n    return bytesToNumberLE(u);\n}\nexport const curve25519 = {\n    BASE_POINT_U: '0900000000000000000000000000000000000000000000000000000000000000',\n    scalarMult(privateKey, publicKey) {\n        const u = decodeUCoordinate(publicKey);\n        const p = decodeScalar25519(privateKey);\n        const pu = montgomeryLadder(u, p);\n        if (pu === _0n)\n            throw new Error('Invalid private or public key received');\n        return encodeUCoordinate(pu);\n    },\n    scalarMultBase(privateKey) {\n        return curve25519.scalarMult(privateKey, curve25519.BASE_POINT_U);\n    },\n};\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n    TORSION_SUBGROUP: [\n        '0100000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n        '0000000000000000000000000000000000000000000000000000000000000080',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n        'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n        '0000000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n    ],\n    bytesToHex,\n    getExtendedPublicKey,\n    mod,\n    invert,\n    hashToPrivateScalar: (hash) => {\n        hash = ensureBytes(hash);\n        if (hash.length < 40 || hash.length > 1024)\n            throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n        const num = mod(bytesToNumberLE(hash), CURVE.l);\n        if (num === _0n || num === _1n)\n            throw new Error('Invalid private key');\n        return num;\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return new Uint8Array(randomBytes(bytesLength).buffer);\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => {\n        return utils.randomBytes(32);\n    },\n    sha512: async (message) => {\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-512', message.buffer);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            return Uint8Array.from(crypto.node.createHash('sha512').update(message).digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha512 function\");\n        }\n    },\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point.equals(Point.BASE) ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_2n);\n        return cached;\n    },\n};\n", "/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n    a: _0n,\n    b: BigInt(7),\n    P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n    n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n    h: _1n,\n    Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n    Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n    beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n    const { a, b } = CURVE;\n    const x2 = mod(x * x);\n    const x3 = mod(x2 * x);\n    return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n    constructor(x, y, z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('JacobianPoint#fromAffine: expected Point');\n        }\n        return new JacobianPoint(p.x, p.y, _1n);\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n    }\n    equals(other) {\n        if (!(other instanceof JacobianPoint))\n            throw new TypeError('JacobianPoint expected');\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const Z1Z1 = mod(Z1 ** _2n);\n        const Z2Z2 = mod(Z2 ** _2n);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        return U1 === U2 && S1 === S2;\n    }\n    negate() {\n        return new JacobianPoint(this.x, mod(-this.y), this.z);\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const A = mod(X1 ** _2n);\n        const B = mod(Y1 ** _2n);\n        const C = mod(B ** _2n);\n        const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n        const E = mod(_3n * A);\n        const F = mod(E ** _2n);\n        const X3 = mod(F - _2n * D);\n        const Y3 = mod(E * (D - X3) - _8n * C);\n        const Z3 = mod(_2n * Y1 * Z1);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    add(other) {\n        if (!(other instanceof JacobianPoint))\n            throw new TypeError('JacobianPoint expected');\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        if (X2 === _0n || Y2 === _0n)\n            return this;\n        if (X1 === _0n || Y1 === _0n)\n            return other;\n        const Z1Z1 = mod(Z1 ** _2n);\n        const Z2Z2 = mod(Z2 ** _2n);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        const H = mod(U2 - U1);\n        const r = mod(S2 - S1);\n        if (H === _0n) {\n            if (r === _0n) {\n                return this.double();\n            }\n            else {\n                return JacobianPoint.ZERO;\n            }\n        }\n        const HH = mod(H ** _2n);\n        const HHH = mod(H * HH);\n        const V = mod(U1 * HH);\n        const X3 = mod(r ** _2n - HHH - _2n * V);\n        const Y3 = mod(r * (V - X3) - S1 * HHH);\n        const Z3 = mod(Z1 * Z2 * H);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiplyUnsafe(scalar) {\n        let n = normalizeScalar(scalar);\n        const G = JacobianPoint.BASE;\n        const P0 = JacobianPoint.ZERO;\n        if (n === _0n)\n            return P0;\n        if (n === _1n)\n            return this;\n        if (!USE_ENDOMORPHISM) {\n            let p = P0;\n            let d = this;\n            while (n > _0n) {\n                if (n & _1n)\n                    p = p.add(d);\n                d = d.double();\n                n >>= _1n;\n            }\n            return p;\n        }\n        let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n        let k1p = P0;\n        let k2p = P0;\n        let d = this;\n        while (k1 > _0n || k2 > _0n) {\n            if (k1 & _1n)\n                k1p = k1p.add(d);\n            if (k2 & _1n)\n                k2p = k2p.add(d);\n            d = d.double();\n            k1 >>= _1n;\n            k2 >>= _1n;\n        }\n        if (k1neg)\n            k1p = k1p.negate();\n        if (k2neg)\n            k2p = k2p.negate();\n        k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n        return k1p.add(k2p);\n    }\n    precomputeWindow(W) {\n        const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(JacobianPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = JacobianPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = JacobianPoint.ZERO;\n        let f = JacobianPoint.ZERO;\n        const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            if (wbits === 0) {\n                let pr = precomputes[offset];\n                if (window % 2)\n                    pr = pr.negate();\n                f = f.add(pr);\n            }\n            else {\n                let cached = precomputes[offset + Math.abs(wbits) - 1];\n                if (wbits < 0)\n                    cached = cached.negate();\n                p = p.add(cached);\n            }\n        }\n        return { p, f };\n    }\n    multiply(scalar, affinePoint) {\n        let n = normalizeScalar(scalar);\n        let point;\n        let fake;\n        if (USE_ENDOMORPHISM) {\n            const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n            let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n            let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n            if (k1neg)\n                k1p = k1p.negate();\n            if (k2neg)\n                k2p = k2p.negate();\n            k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n            point = k1p.add(k2p);\n            fake = f1p.add(f2p);\n        }\n        else {\n            const { p, f } = this.wNAF(n, affinePoint);\n            point = p;\n            fake = f;\n        }\n        return JacobianPoint.normalizeZ([point, fake])[0];\n    }\n    toAffine(invZ = invert(this.z)) {\n        const { x, y, z } = this;\n        const iz1 = invZ;\n        const iz2 = mod(iz1 * iz1);\n        const iz3 = mod(iz2 * iz1);\n        const ax = mod(x * iz2);\n        const ay = mod(y * iz3);\n        const zz = mod(z * iz1);\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    static fromCompressedHex(bytes) {\n        const isShort = bytes.length === 32;\n        const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n        if (!isValidFieldElement(x))\n            throw new Error('Point is not on curve');\n        const y2 = weistrass(x);\n        let y = sqrtMod(y2);\n        const isYOdd = (y & _1n) === _1n;\n        if (isShort) {\n            if (isYOdd)\n                y = mod(-y);\n        }\n        else {\n            const isFirstByteOdd = (bytes[0] & 1) === 1;\n            if (isFirstByteOdd !== isYOdd)\n                y = mod(-y);\n        }\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromUncompressedHex(bytes) {\n        const x = bytesToNumber(bytes.subarray(1, 33));\n        const y = bytesToNumber(bytes.subarray(33, 65));\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        const len = bytes.length;\n        const header = bytes[0];\n        if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n            return this.fromCompressedHex(bytes);\n        }\n        if (len === 65 && header === 0x04)\n            return this.fromUncompressedHex(bytes);\n        throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n    }\n    static fromPrivateKey(privateKey) {\n        return Point.BASE.multiply(normalizePrivateKey(privateKey));\n    }\n    static fromSignature(msgHash, signature, recovery) {\n        msgHash = ensureBytes(msgHash);\n        const h = truncateHash(msgHash);\n        const { r, s } = normalizeSignature(signature);\n        if (recovery !== 0 && recovery !== 1) {\n            throw new Error('Cannot recover signature: invalid recovery bit');\n        }\n        if (h === _0n)\n            throw new Error('Cannot recover signature: msgHash cannot be 0');\n        const prefix = recovery & 1 ? '03' : '02';\n        const R = Point.fromHex(prefix + numTo32bStr(r));\n        const { n } = CURVE;\n        const rinv = invert(r, n);\n        const u1 = mod(-h * rinv, n);\n        const u2 = mod(s * rinv, n);\n        const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n        if (!Q)\n            throw new Error('Cannot recover signature: point at infinify');\n        Q.assertValidity();\n        return Q;\n    }\n    toRawBytes(isCompressed = false) {\n        return hexToBytes(this.toHex(isCompressed));\n    }\n    toHex(isCompressed = false) {\n        const x = numTo32bStr(this.x);\n        if (isCompressed) {\n            const prefix = this.y & _1n ? '03' : '02';\n            return `${prefix}${x}`;\n        }\n        else {\n            return `04${x}${numTo32bStr(this.y)}`;\n        }\n    }\n    toHexX() {\n        return this.toHex(true).slice(2);\n    }\n    toRawX() {\n        return this.toRawBytes(true).slice(1);\n    }\n    assertValidity() {\n        const msg = 'Point is not on elliptic curve';\n        const { x, y } = this;\n        if (!isValidFieldElement(x) || !isValidFieldElement(y))\n            throw new Error(msg);\n        const left = mod(y * y);\n        const right = weistrass(x);\n        if (mod(left - right) !== _0n)\n            throw new Error(msg);\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(this.x, mod(-this.y));\n    }\n    double() {\n        return JacobianPoint.fromAffine(this).double().toAffine();\n    }\n    add(other) {\n        return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n    multiplyAndAddUnsafe(Q, a, b) {\n        const P = JacobianPoint.fromAffine(this);\n        const aP = P.multiply(a);\n        const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n        const sum = aP.add(bQ);\n        return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n    }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n    return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n    if (data.length < 2 || data[0] !== 0x02) {\n        throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n    }\n    const len = data[1];\n    const res = data.subarray(2, len + 2);\n    if (!len || res.length !== len) {\n        throw new Error(`Invalid signature integer: wrong length`);\n    }\n    if (res[0] === 0x00 && res[1] <= 0x7f) {\n        throw new Error('Invalid signature integer: trailing length');\n    }\n    return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n    if (data.length < 2 || data[0] != 0x30) {\n        throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n    }\n    if (data[1] !== data.length - 2) {\n        throw new Error('Invalid signature: incorrect length');\n    }\n    const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n    const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n    if (rBytesLeft.length) {\n        throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n    }\n    return { r, s };\n}\nexport class Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromCompact(hex) {\n        const arr = isUint8a(hex);\n        const name = 'Signature.fromCompact';\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`${name}: Expected string or Uint8Array`);\n        const str = arr ? bytesToHex(hex) : hex;\n        if (str.length !== 128)\n            throw new Error(`${name}: Expected 64-byte hex`);\n        return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n    }\n    static fromDER(hex) {\n        const arr = isUint8a(hex);\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n        const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n        return new Signature(r, s);\n    }\n    static fromHex(hex) {\n        return this.fromDER(hex);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isWithinCurveOrder(r))\n            throw new Error('Invalid Signature: r must be 0 < r < n');\n        if (!isWithinCurveOrder(s))\n            throw new Error('Invalid Signature: s must be 0 < s < n');\n    }\n    hasHighS() {\n        const HALF = CURVE.n >> _1n;\n        return this.s > HALF;\n    }\n    normalizeS() {\n        return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n    }\n    toDERRawBytes(isCompressed = false) {\n        return hexToBytes(this.toDERHex(isCompressed));\n    }\n    toDERHex(isCompressed = false) {\n        const sHex = sliceDER(numberToHexUnpadded(this.s));\n        if (isCompressed)\n            return sHex;\n        const rHex = sliceDER(numberToHexUnpadded(this.r));\n        const rLen = numberToHexUnpadded(rHex.length / 2);\n        const sLen = numberToHexUnpadded(sHex.length / 2);\n        const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n        return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n    }\n    toRawBytes() {\n        return this.toDERRawBytes();\n    }\n    toHex() {\n        return this.toDERHex();\n    }\n    toCompactRawBytes() {\n        return hexToBytes(this.toCompactHex());\n    }\n    toCompactHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n}\nfunction concatBytes(...arrays) {\n    if (!arrays.every(isUint8a))\n        throw new Error('Uint8Array list expected');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nfunction isUint8a(bytes) {\n    return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nfunction numTo32bStr(num) {\n    if (num > POW_2_256)\n        throw new Error('Expected number < 2^256');\n    return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n    return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n    }\n    return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction bytesToNumber(bytes) {\n    return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n    return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n    if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n        return BigInt(num);\n    if (typeof num === 'bigint' && isWithinCurveOrder(num))\n        return num;\n    throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction sqrtMod(x) {\n    const { P } = CURVE;\n    const _6n = BigInt(6);\n    const _11n = BigInt(11);\n    const _22n = BigInt(22);\n    const _23n = BigInt(23);\n    const _44n = BigInt(44);\n    const _88n = BigInt(88);\n    const b2 = (x * x * x) % P;\n    const b3 = (b2 * b2 * x) % P;\n    const b6 = (pow2(b3, _3n) * b3) % P;\n    const b9 = (pow2(b6, _3n) * b3) % P;\n    const b11 = (pow2(b9, _2n) * b2) % P;\n    const b22 = (pow2(b11, _11n) * b11) % P;\n    const b44 = (pow2(b22, _22n) * b22) % P;\n    const b88 = (pow2(b44, _44n) * b44) % P;\n    const b176 = (pow2(b88, _88n) * b88) % P;\n    const b220 = (pow2(b176, _44n) * b44) % P;\n    const b223 = (pow2(b220, _3n) * b3) % P;\n    const t1 = (pow2(b223, _23n) * b22) % P;\n    const t2 = (pow2(t1, _6n) * b2) % P;\n    return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const scratch = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = mod(acc * scratch[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n    const { n } = CURVE;\n    const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n    const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n    const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n    const b2 = a1;\n    const c1 = divNearest(b2 * k, n);\n    const c2 = divNearest(-b1 * k, n);\n    let k1 = mod(k - c1 * a1 - c2 * a2, n);\n    let k2 = mod(-c1 * b1 - c2 * b2, n);\n    const k1neg = k1 > POW_2_128;\n    const k2neg = k2 > POW_2_128;\n    if (k1neg)\n        k1 = n - k1;\n    if (k2neg)\n        k2 = n - k2;\n    if (k1 > POW_2_128 || k2 > POW_2_128) {\n        throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n    }\n    return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n    const { n } = CURVE;\n    const byteLength = hash.length;\n    const delta = byteLength * 8 - 256;\n    let h = bytesToNumber(hash);\n    if (delta > 0)\n        h = h >> BigInt(delta);\n    if (h >= n)\n        h -= n;\n    return h;\n}\nclass HmacDrbg {\n    constructor() {\n        this.v = new Uint8Array(32).fill(1);\n        this.k = new Uint8Array(32).fill(0);\n        this.counter = 0;\n    }\n    hmac(...values) {\n        return utils.hmacSha256(this.k, ...values);\n    }\n    hmacSync(...values) {\n        if (typeof utils.hmacSha256Sync !== 'function')\n            throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n        const res = utils.hmacSha256Sync(this.k, ...values);\n        if (res instanceof Promise)\n            throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n        return res;\n    }\n    incr() {\n        if (this.counter >= 1000) {\n            throw new Error('Tried 1,000 k values for sign(), all were invalid');\n        }\n        this.counter += 1;\n    }\n    async reseed(seed = new Uint8Array()) {\n        this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n        this.v = await this.hmac(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n        this.v = await this.hmac(this.v);\n    }\n    reseedSync(seed = new Uint8Array()) {\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n        this.v = this.hmacSync(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n        this.v = this.hmacSync(this.v);\n    }\n    async generate() {\n        this.incr();\n        this.v = await this.hmac(this.v);\n        return this.v;\n    }\n    generateSync() {\n        this.incr();\n        this.v = this.hmacSync(this.v);\n        return this.v;\n    }\n}\nfunction isWithinCurveOrder(num) {\n    return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n    return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n    const k = bytesToNumber(kBytes);\n    if (!isWithinCurveOrder(k))\n        return;\n    const { n } = CURVE;\n    const q = Point.BASE.multiply(k);\n    const r = mod(q.x, n);\n    if (r === _0n)\n        return;\n    const s = mod(invert(k, n) * mod(m + d * r, n), n);\n    if (s === _0n)\n        return;\n    const sig = new Signature(r, s);\n    const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n    return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n    let num;\n    if (typeof key === 'bigint') {\n        num = key;\n    }\n    else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n        num = BigInt(key);\n    }\n    else if (typeof key === 'string') {\n        if (key.length !== 64)\n            throw new Error('Expected 32 bytes of private key');\n        num = hexToNumber(key);\n    }\n    else if (isUint8a(key)) {\n        if (key.length !== 32)\n            throw new Error('Expected 32 bytes of private key');\n        num = bytesToNumber(key);\n    }\n    else {\n        throw new TypeError('Expected valid private key');\n    }\n    if (!isWithinCurveOrder(num))\n        throw new Error('Expected private key: 0 < key < n');\n    return num;\n}\nfunction normalizePublicKey(publicKey) {\n    if (publicKey instanceof Point) {\n        publicKey.assertValidity();\n        return publicKey;\n    }\n    else {\n        return Point.fromHex(publicKey);\n    }\n}\nfunction normalizeSignature(signature) {\n    if (signature instanceof Signature) {\n        signature.assertValidity();\n        return signature;\n    }\n    try {\n        return Signature.fromDER(signature);\n    }\n    catch (error) {\n        return Signature.fromCompact(signature);\n    }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n    return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n    return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n    const arr = isUint8a(item);\n    const str = typeof item === 'string';\n    const len = (arr || str) && item.length;\n    if (arr)\n        return len === 33 || len === 65;\n    if (str)\n        return len === 66 || len === 130;\n    if (item instanceof Point)\n        return true;\n    return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n    if (isPub(privateA))\n        throw new TypeError('getSharedSecret: first arg must be private key');\n    if (!isPub(publicB))\n        throw new TypeError('getSharedSecret: second arg must be public key');\n    const b = normalizePublicKey(publicB);\n    b.assertValidity();\n    return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n    const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n    return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n    const z1 = bits2int(bytes);\n    const z2 = mod(z1, CURVE.n);\n    return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n    if (typeof num !== 'bigint')\n        throw new Error('Expected bigint');\n    const hex = numTo32bStr(num);\n    return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n    if (msgHash == null)\n        throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n    const h1 = ensureBytes(msgHash);\n    const d = normalizePrivateKey(privateKey);\n    const seedArgs = [int2octets(d), bits2octets(h1)];\n    if (extraEntropy != null) {\n        if (extraEntropy === true)\n            extraEntropy = utils.randomBytes(32);\n        const e = ensureBytes(extraEntropy);\n        if (e.length !== 32)\n            throw new Error('sign: Expected 32 bytes of extra data');\n        seedArgs.push(e);\n    }\n    const seed = concatBytes(...seedArgs);\n    const m = bits2int(h1);\n    return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n    let { sig, recovery } = recSig;\n    const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n    if (canonical && sig.hasHighS()) {\n        sig = sig.normalizeS();\n        recovery ^= 1;\n    }\n    const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n    return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    let sig;\n    const drbg = new HmacDrbg();\n    await drbg.reseed(seed);\n    while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n        await drbg.reseed();\n    return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    let sig;\n    const drbg = new HmacDrbg();\n    drbg.reseedSync(seed);\n    while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n        drbg.reseedSync();\n    return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n    let sig;\n    try {\n        sig = normalizeSignature(signature);\n        msgHash = ensureBytes(msgHash);\n    }\n    catch (error) {\n        return false;\n    }\n    const { r, s } = sig;\n    if (opts.strict && sig.hasHighS())\n        return false;\n    const h = truncateHash(msgHash);\n    if (h === _0n)\n        return false;\n    let P;\n    try {\n        P = normalizePublicKey(publicKey);\n    }\n    catch (error) {\n        return false;\n    }\n    const { n } = CURVE;\n    const sinv = invert(s, n);\n    const u1 = mod(h * sinv, n);\n    const u2 = mod(r * sinv, n);\n    const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n    if (!R)\n        return false;\n    const v = mod(R.x, n);\n    return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n    const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n    const tagH = await utils.sha256(tagB);\n    const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n    return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n    const rx = numTo32b(x);\n    const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n    return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n    return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        if (bytes.length !== 64)\n            throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n        const r = bytesToNumber(bytes.subarray(0, 32));\n        const s = bytesToNumber(bytes.subarray(32, 64));\n        return new SchnorrSignature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n            throw new Error('Invalid signature');\n    }\n    toHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n    toRawBytes() {\n        return hexToBytes(this.toHex());\n    }\n}\nfunction schnorrGetPublicKey(privateKey) {\n    return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n    if (message == null)\n        throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n    const { n } = CURVE;\n    const m = ensureBytes(message);\n    const d0 = normalizePrivateKey(privateKey);\n    const rand = ensureBytes(auxRand);\n    if (rand.length !== 32)\n        throw new TypeError('sign: Expected 32 bytes of aux randomness');\n    const P = Point.fromPrivateKey(d0);\n    const d = hasEvenY(P) ? d0 : n - d0;\n    const t0h = await taggedHash('BIP0340/aux', rand);\n    const t = d ^ t0h;\n    const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n    const k0 = mod(k0h, n);\n    if (k0 === _0n)\n        throw new Error('sign: Creation of signature failed. k is zero');\n    const R = Point.fromPrivateKey(k0);\n    const k = hasEvenY(R) ? k0 : n - k0;\n    const e = await createChallenge(R.x, P, m);\n    const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n    const isValid = await schnorrVerify(sig, m, P.toRawX());\n    if (!isValid)\n        throw new Error('sign: Invalid signature produced');\n    return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n    const raw = signature instanceof SchnorrSignature;\n    let sig;\n    try {\n        sig = raw ? signature : SchnorrSignature.fromHex(signature);\n        if (raw)\n            sig.assertValidity();\n    }\n    catch (error) {\n        return false;\n    }\n    const { r, s } = sig;\n    const m = ensureBytes(message);\n    let P;\n    try {\n        P = normalizePublicKey(publicKey);\n    }\n    catch (error) {\n        return false;\n    }\n    const e = await createChallenge(r, P, m);\n    const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n    if (!R || !hasEvenY(R) || R.x !== r)\n        return false;\n    return true;\n}\nexport const schnorr = {\n    Signature: SchnorrSignature,\n    getPublicKey: schnorrGetPublicKey,\n    sign: schnorrSign,\n    verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n    isValidPrivateKey(privateKey) {\n        try {\n            normalizePrivateKey(privateKey);\n            return true;\n        }\n        catch (error) {\n            return false;\n        }\n    },\n    hashToPrivateKey: (hash) => {\n        hash = ensureBytes(hash);\n        if (hash.length < 40 || hash.length > 1024)\n            throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n        const num = mod(bytesToNumber(hash), CURVE.n);\n        if (num === _0n || num === _1n)\n            throw new Error('Invalid private key');\n        return numTo32b(num);\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return Uint8Array.from(randomBytes(bytesLength));\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => {\n        return utils.hashToPrivateKey(utils.randomBytes(40));\n    },\n    bytesToHex,\n    mod,\n    sha256: async (message) => {\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHash } = crypto.node;\n            return Uint8Array.from(createHash('sha256').update(message).digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha256 function\");\n        }\n    },\n    hmacSha256: async (key, ...messages) => {\n        if (crypto.web) {\n            const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n            const message = concatBytes(...messages);\n            const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHmac } = crypto.node;\n            const hash = createHmac('sha256', key);\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have hmac-sha256 function\");\n        }\n    },\n    sha256Sync: undefined,\n    hmacSha256Sync: undefined,\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_3n);\n        return cached;\n    },\n};\n", "import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n});", "import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n  constructor(name, prefix, baseEncode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n  }\n  encode(bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${ this.prefix }${ this.baseEncode(bytes) }`;\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}\nclass Decoder {\n  constructor(name, prefix, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseDecode = baseDecode;\n  }\n  decode(text) {\n    if (typeof text === 'string') {\n      switch (text[0]) {\n      case this.prefix: {\n          return this.baseDecode(text.slice(1));\n        }\n      default: {\n          throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n        }\n      }\n    } else {\n      throw Error('Can only multibase decode strings');\n    }\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n}\nclass ComposedDecoder {\n  constructor(decoders) {\n    this.decoders = decoders;\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n  decode(input) {\n    const prefix = input[0];\n    const decoder = this.decoders[prefix];\n    if (decoder) {\n      return decoder.decode(input);\n    } else {\n      throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n    }\n  }\n}\nexport const or = (left, right) => new ComposedDecoder({\n  ...left.decoders || { [left.prefix]: left },\n  ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n  constructor(name, prefix, baseEncode, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n    this.baseDecode = baseDecode;\n    this.encoder = new Encoder(name, prefix, baseEncode);\n    this.decoder = new Decoder(name, prefix, baseDecode);\n  }\n  encode(input) {\n    return this.encoder.encode(input);\n  }\n  decode(input) {\n    return this.decoder.decode(input);\n  }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n  const {encode, decode} = basex(alphabet, name);\n  return from({\n    prefix,\n    name,\n    encode,\n    decode: text => coerce(decode(text))\n  });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  const codes = {};\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i;\n  }\n  let end = string.length;\n  while (string[end - 1] === '=') {\n    --end;\n  }\n  const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n  let bits = 0;\n  let buffer = 0;\n  let written = 0;\n  for (let i = 0; i < end; ++i) {\n    const value = codes[string[i]];\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${ name } character`);\n    }\n    buffer = buffer << bitsPerChar | value;\n    bits += bitsPerChar;\n    if (bits >= 8) {\n      bits -= 8;\n      out[written++] = 255 & buffer >> bits;\n    }\n  }\n  if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n    throw new SyntaxError('Unexpected end of data');\n  }\n  return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '=';\n  const mask = (1 << bitsPerChar) - 1;\n  let out = '';\n  let bits = 0;\n  let buffer = 0;\n  for (let i = 0; i < data.length; ++i) {\n    buffer = buffer << 8 | data[i];\n    bits += 8;\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar;\n      out += alphabet[mask & buffer >> bits];\n    }\n  }\n  if (bits) {\n    out += alphabet[mask & buffer << bitsPerChar - bits];\n  }\n  if (pad) {\n    while (out.length * bitsPerChar & 7) {\n      out += '=';\n    }\n  }\n  return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n  return from({\n    prefix,\n    name,\n    encode(input) {\n      return encode(input, alphabet, bitsPerChar);\n    },\n    decode(input) {\n      return decode(input, alphabet, bitsPerChar, name);\n    }\n  });\n};", "function base(ALPHABET, name) {\n  if (ALPHABET.length >= 255) {\n    throw new TypeError('Alphabet too long');\n  }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) {\n      throw new TypeError(x + ' is ambiguous');\n    }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256);\n  var iFACTOR = Math.log(256) / Math.log(BASE);\n  function encode(source) {\n    if (source instanceof Uint8Array);\n    else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) {\n      throw new TypeError('Expected Uint8Array');\n    }\n    if (source.length === 0) {\n      return '';\n    }\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n    var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n    var b58 = new Uint8Array(size);\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n        carry += 256 * b58[it1] >>> 0;\n        b58[it1] = carry % BASE >>> 0;\n        carry = carry / BASE >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      pbegin++;\n    }\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) {\n      str += ALPHABET.charAt(b58[it2]);\n    }\n    return str;\n  }\n  function decodeUnsafe(source) {\n    if (typeof source !== 'string') {\n      throw new TypeError('Expected String');\n    }\n    if (source.length === 0) {\n      return new Uint8Array();\n    }\n    var psz = 0;\n    if (source[psz] === ' ') {\n      return;\n    }\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n    var size = (source.length - psz) * FACTOR + 1 >>> 0;\n    var b256 = new Uint8Array(size);\n    while (source[psz]) {\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n      if (carry === 255) {\n        return;\n      }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n        carry += BASE * b256[it3] >>> 0;\n        b256[it3] = carry % 256 >>> 0;\n        carry = carry / 256 >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      psz++;\n    }\n    if (source[psz] === ' ') {\n      return;\n    }\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch;\n  }\n  function decode(string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) {\n      return buffer;\n    }\n    throw new Error(`Non-${ name } character`);\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;", "const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n  const hexes = hex.match(/../g);\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n  if (aa === bb)\n    return true;\n  if (aa.byteLength !== bb.byteLength) {\n    return false;\n  }\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false;\n    }\n  }\n  return true;\n};\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n    return o;\n  if (o instanceof ArrayBuffer)\n    return new Uint8Array(o);\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n  equals,\n  coerce,\n  isBinary,\n  fromHex,\n  toHex,\n  fromString,\n  toString,\n  empty\n};", "import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n  name: 'sha2-256',\n  code: 18,\n  encode: sha('SHA-256')\n});\nexport const sha512 = from({\n  name: 'sha2-512',\n  code: 19,\n  encode: sha('SHA-512')\n});", "import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n  constructor(name, code, encode) {\n    this.name = name;\n    this.code = code;\n    this.encode = encode;\n  }\n  digest(input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input);\n      return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}", "import {\n  coerce,\n  equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n  const size = digest.byteLength;\n  const sizeOffset = varint.encodingLength(code);\n  const digestOffset = sizeOffset + varint.encodingLength(size);\n  const bytes = new Uint8Array(digestOffset + size);\n  varint.encodeTo(code, bytes, 0);\n  varint.encodeTo(size, bytes, sizeOffset);\n  bytes.set(digest, digestOffset);\n  return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n  const bytes = coerce(multihash);\n  const [code, sizeOffset] = varint.decode(bytes);\n  const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n  const digest = bytes.subarray(sizeOffset + digestOffset);\n  if (digest.byteLength !== size) {\n    throw new Error('Incorrect length');\n  }\n  return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n  if (a === b) {\n    return true;\n  } else {\n    return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n  }\n};\nexport class Digest {\n  constructor(code, size, digest, bytes) {\n    this.code = code;\n    this.size = size;\n    this.digest = digest;\n    this.bytes = bytes;\n  }\n}", "import varint from '../vendor/varint.js';\nexport const decode = data => {\n  const code = varint.decode(data);\n  return [\n    code,\n    varint.decode.bytes\n  ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n  varint.encode(int, target, offset);\n  return target;\n};\nexport const encodingLength = int => {\n  return varint.encodingLength(int);\n};", "var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n  while (num >= INT) {\n    out[offset++] = num & 255 | MSB;\n    num /= 128;\n  }\n  while (num & MSBALL) {\n    out[offset++] = num & 255 | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  encode.bytes = offset - oldOffset + 1;\n  return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n  var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n  do {\n    if (counter >= l) {\n      read.bytes = 0;\n      throw new RangeError('Could not decode varint');\n    }\n    b = buf[counter++];\n    res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b >= MSB$1);\n  read.bytes = counter - offset;\n  return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n  return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n  encode: encode_1,\n  decode: decode,\n  encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;", "import type { KeyPair, Jwk, PublicKeyJwk, PrivateKeyJwk, KeyPairJwk } from './types.js';\n\nimport nacl from 'tweetnacl';\nimport ed2curve from 'ed2curve';\nimport { base64UrlToBytes, bytesToBase64Url } from './utils.js';\n\n// TODO: (not important) decide if we want to use tweetnacl or @noble/ed25519. is there a functional difference?\n//       dwn-sdk-js also has ed25519 cryptosuite stuff\n\nexport function generateKeyPair(): KeyPair {\n  const ed25519KeyPair = nacl.sign.keyPair();\n\n  return { publicKey: ed25519KeyPair.publicKey, privateKey: ed25519KeyPair.secretKey };\n}\n\nexport function deriveX25519KeyPair(ed25519KeyPair: KeyPair): KeyPair {\n  // for some reason tweetnacl chose the term `secretKey` instead of `privateKey` even though ed25519 is asymmetric\n  const x25519KeyPair = ed2curve.convertKeyPair({ publicKey: ed25519KeyPair.publicKey, secretKey: ed25519KeyPair.privateKey });\n\n  // apparently the return value of `convertKeyPair` can return null\n  if (!x25519KeyPair) {\n    throw new Error('failed to derive x25519 key pair.');\n  }\n\n  return { publicKey: x25519KeyPair.publicKey, privateKey: x25519KeyPair.secretKey };\n}\n\nexport type JwkOverrides = { crv: 'Ed25519' | 'X25519' };\n\nexport function keyPairToJwk(keyPair: KeyPair, kid: string, overrides: JwkOverrides = { crv: 'Ed25519' }): KeyPairJwk {\n  const jwk: Jwk = { kty: 'OKP', crv: overrides.crv, kid };\n\n  const encodedPublicKey = bytesToBase64Url(keyPair.publicKey);\n  const publicKeyJwk: PublicKeyJwk = { ...jwk, x: encodedPublicKey };\n\n  const encodedSecretKey = bytesToBase64Url(keyPair.privateKey);\n  const privateKeyJwk: PrivateKeyJwk = { ...publicKeyJwk, d: encodedSecretKey };\n\n  return { publicKeyJwk, privateKeyJwk };\n}\n\nexport type SignOptions = {\n  /** the data being signed */\n  payload: Uint8Array;\n  /** the key being used to sign */\n  privateKeyJwk: PrivateKeyJwk;\n};\n\nexport function sign(options: SignOptions) {\n  const { payload, privateKeyJwk } = options;\n  const privateKeyBytes = base64UrlToBytes(privateKeyJwk.d);\n\n  if (privateKeyJwk.crv !== 'Ed25519') {\n    throw new Error('crv must be Ed25519');\n  }\n\n  const signedData = nacl.sign(payload, privateKeyBytes);\n\n  return signedData.slice(0, nacl.sign.signatureLength);\n}\n\nexport type VerifyOptions = {\n  /** the signature to verify */\n  signature: Uint8Array;\n  /** the payload that was signed */\n  payload: Uint8Array;\n  /** the key to verify the signature with */\n  publicKeyJwk: PublicKeyJwk;\n}\n\nexport async function verify(options: VerifyOptions) {\n  const { signature, payload, publicKeyJwk } = options;\n  const publicKeyBytes = base64UrlToBytes(publicKeyJwk.x);\n\n  if (publicKeyJwk.crv !== 'Ed25519') {\n    throw new Error('crv must be Ed25519');\n  }\n\n  const signedData = new Uint8Array(signature.length + payload.length);\n  signedData.set(signature);\n  signedData.set(payload, signature.length);\n\n  const result = nacl.sign.open(signedData, publicKeyBytes);\n\n\n  return !!result;\n}", "import { base64url } from 'multiformats/bases/base64';\nimport { base58btc } from 'multiformats/bases/base58';\n\n\n// See https://github.com/multiformats/multicodec/blob/master/table.csv\nexport const MULTICODEC_HEADERS = {\n  ED25519: {\n    PUB  : new Uint8Array([0xed, 0x01]),\n    PRIV : new Uint8Array([0x80, 0x26])\n  },\n  X25519: {\n    PUB  : new Uint8Array([0xec, 0x01]),\n    PRIV : new Uint8Array([0x82, 0x26])\n  },\n  NOOP: new Uint8Array([])\n};\n\n\nexport function bytesToBase64Url(bytes: Uint8Array): string {\n  return base64url.baseEncode(bytes);\n}\n\nexport function base64UrlToBytes(base64urlString: string): Uint8Array {\n  return base64url.baseDecode(base64urlString);\n}\n\nexport function bytesToBase58btcMultibase(header: Uint8Array, bytes: Uint8Array): string {\n  const multibaseBytes = new Uint8Array(header.length + bytes.length);\n  multibaseBytes.set(header);\n  multibaseBytes.set(bytes);\n\n  return base58btc.encode(multibaseBytes);\n}", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n})\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n  /**\n   * @param {Base} name\n   * @param {Prefix} prefix\n   * @param {(bytes:Uint8Array) => string} baseEncode\n   */\n  constructor (name, prefix, baseEncode) {\n    this.name = name\n    this.prefix = prefix\n    this.baseEncode = baseEncode\n  }\n\n  /**\n   * @param {Uint8Array} bytes\n   * @returns {API.Multibase<Prefix>}\n   */\n  encode (bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${this.prefix}${this.baseEncode(bytes)}`\n    } else {\n      throw Error('Unknown type, must be binary type')\n    }\n  }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n  /**\n   * @param {Base} name\n   * @param {Prefix} prefix\n   * @param {(text:string) => Uint8Array} baseDecode\n   */\n  constructor (name, prefix, baseDecode) {\n    this.name = name\n    this.prefix = prefix\n    /* c8 ignore next 3 */\n    if (prefix.codePointAt(0) === undefined) {\n      throw new Error('Invalid prefix character')\n    }\n    /** @private */\n    this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n    this.baseDecode = baseDecode\n  }\n\n  /**\n   * @param {string} text\n   */\n  decode (text) {\n    if (typeof text === 'string') {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n      }\n      return this.baseDecode(text.slice(this.prefix.length))\n    } else {\n      throw Error('Can only multibase decode strings')\n    }\n  }\n\n  /**\n   * @template {string} OtherPrefix\n   * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n   * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n   */\n  or (decoder) {\n    return or(this, decoder)\n  }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n  /**\n   * @param {Decoders<Prefix>} decoders\n   */\n  constructor (decoders) {\n    this.decoders = decoders\n  }\n\n  /**\n   * @template {string} OtherPrefix\n   * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n   * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n   */\n  or (decoder) {\n    return or(this, decoder)\n  }\n\n  /**\n   * @param {string} input\n   * @returns {Uint8Array}\n   */\n  decode (input) {\n    const prefix = /** @type {Prefix} */ (input[0])\n    const decoder = this.decoders[prefix]\n    if (decoder) {\n      return decoder.decode(input)\n    } else {\n      throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n    }\n  }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n  ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n  ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n  /**\n   * @param {Base} name\n   * @param {Prefix} prefix\n   * @param {(bytes:Uint8Array) => string} baseEncode\n   * @param {(text:string) => Uint8Array} baseDecode\n   */\n  constructor (name, prefix, baseEncode, baseDecode) {\n    this.name = name\n    this.prefix = prefix\n    this.baseEncode = baseEncode\n    this.baseDecode = baseDecode\n    this.encoder = new Encoder(name, prefix, baseEncode)\n    this.decoder = new Decoder(name, prefix, baseDecode)\n  }\n\n  /**\n   * @param {Uint8Array} input\n   */\n  encode (input) {\n    return this.encoder.encode(input)\n  }\n\n  /**\n   * @param {string} input\n   */\n  decode (input) {\n    return this.decoder.decode(input)\n  }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n  new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n  const { encode, decode } = basex(alphabet, name)\n  return from({\n    prefix,\n    name,\n    encode,\n    /**\n     * @param {string} text\n     */\n    decode: text => coerce(decode(text))\n  })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  // Build the character lookup table:\n  /** @type {Record<string, number>} */\n  const codes = {}\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i\n  }\n\n  // Count the padding bytes:\n  let end = string.length\n  while (string[end - 1] === '=') {\n    --end\n  }\n\n  // Allocate the output:\n  const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n  // Parse the data:\n  let bits = 0 // Number of bits currently in the buffer\n  let buffer = 0 // Bits waiting to be written out, MSB first\n  let written = 0 // Next byte to write\n  for (let i = 0; i < end; ++i) {\n    // Read one character from the string:\n    const value = codes[string[i]]\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${name} character`)\n    }\n\n    // Append the bits to the buffer:\n    buffer = (buffer << bitsPerChar) | value\n    bits += bitsPerChar\n\n    // Write out some bits if the buffer has a byte's worth:\n    if (bits >= 8) {\n      bits -= 8\n      out[written++] = 0xff & (buffer >> bits)\n    }\n  }\n\n  // Verify that we have received just enough bits:\n  if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n    throw new SyntaxError('Unexpected end of data')\n  }\n\n  return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '='\n  const mask = (1 << bitsPerChar) - 1\n  let out = ''\n\n  let bits = 0 // Number of bits currently in the buffer\n  let buffer = 0 // Bits waiting to be written out, MSB first\n  for (let i = 0; i < data.length; ++i) {\n    // Slurp data into the buffer:\n    buffer = (buffer << 8) | data[i]\n    bits += 8\n\n    // Write out as much as we can:\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar\n      out += alphabet[mask & (buffer >> bits)]\n    }\n  }\n\n  // Partial character:\n  if (bits) {\n    out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n  }\n\n  // Add padding characters until we hit a byte boundary:\n  if (pad) {\n    while ((out.length * bitsPerChar) & 7) {\n      out += '='\n    }\n  }\n\n  return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n  return from({\n    prefix,\n    name,\n    encode (input) {\n      return encode(input, alphabet, bitsPerChar)\n    },\n    decode (input) {\n      return decode(input, alphabet, bitsPerChar, name)\n    }\n  })\n}\n", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n  if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n  var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n  function encode (source) {\n    if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n    if (source.length === 0) { return '' }\n        // Skip & count leading zeroes.\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n        // Allocate enough space in big-endian base58 representation.\n    var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n    var b58 = new Uint8Array(size);\n        // Process the bytes.\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n            // Apply \"b58 = b58 * 256 + ch\".\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n        carry += (256 * b58[it1]) >>> 0;\n        b58[it1] = (carry % BASE) >>> 0;\n        carry = (carry / BASE) >>> 0;\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i;\n      pbegin++;\n    }\n        // Skip leading zeroes in base58 result.\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n        // Translate the result into a string.\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n    return str\n  }\n  function decodeUnsafe (source) {\n    if (typeof source !== 'string') { throw new TypeError('Expected String') }\n    if (source.length === 0) { return new Uint8Array() }\n    var psz = 0;\n        // Skip leading spaces.\n    if (source[psz] === ' ') { return }\n        // Skip and count leading '1's.\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n        // Allocate enough space in big-endian base256 representation.\n    var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n    var b256 = new Uint8Array(size);\n        // Process the characters.\n    while (source[psz]) {\n            // Decode character\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n            // Invalid character\n      if (carry === 255) { return }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n        carry += (BASE * b256[it3]) >>> 0;\n        b256[it3] = (carry % 256) >>> 0;\n        carry = (carry / 256) >>> 0;\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i;\n      psz++;\n    }\n        // Skip trailing spaces.\n    if (source[psz] === ' ') { return }\n        // Skip leading zeroes in b256.\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch\n  }\n  function decode (string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) { return buffer }\n    throw new Error(`Non-${name} character`)\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n  const hexes = hex.match(/../g)\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n  if (aa === bb) return true\n  if (aa.byteLength !== bb.byteLength) {\n    return false\n  }\n\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n  if (o instanceof ArrayBuffer) return new Uint8Array(o)\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n  }\n  throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n  o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "// this is dummy module overlayed by interface.ts\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n  name: 'base58btc',\n  prefix: 'z',\n  alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n  name: 'base58flickr',\n  prefix: 'Z',\n  alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "/* eslint-disable max-len */\n\n\n// export everything that we want to be consumable\nexport type { DwnConfig } from './dwn.js';\nexport type { DwnServiceEndpoint, ServiceEndpoint, DidDocument, DidResolutionResult, DidResolutionMetadata, DidDocumentMetadata, VerificationMethod } from './did/did-resolver.js';\nexport type { EventLog, Event } from './event-log/event-log.js';\nexport type { EventsGetMessage, EventsGetReply } from './interfaces/events/types.js';\nexport type { HooksWriteMessage } from './interfaces/hooks/types.js';\nexport type { MessagesGetMessage, MessagesGetReply } from './interfaces/messages/types.js';\nexport type { ProtocolsConfigureDescriptor, ProtocolDefinition, ProtocolRuleSet, ProtocolsQueryFilter, ProtocolsConfigureMessage, ProtocolsQueryMessage } from './interfaces/protocols/types.js';\nexport type { EncryptionProperty, RecordsDeleteMessage, RecordsQueryMessage, RecordsQueryReplyEntry, RecordsReadReply, RecordsWriteDescriptor, RecordsWriteMessage } from './interfaces/records/types.js';\nexport { AllowAllTenantGate, TenantGate } from './core/tenant-gate.js';\nexport { Cid } from './utils/cid.js';\nexport { DataStore } from './store/data-store.js';\nexport { DataStoreLevel } from './store/data-store-level.js';\nexport { DateSort } from './interfaces/records/messages/records-query.js';\nexport { DataStream } from './utils/data-stream.js';\nexport { DerivedPrivateJwk, HdKey, KeyDerivationScheme } from './utils/hd-key.js';\nexport { DidKeyResolver } from './did/did-key-resolver.js';\nexport { DidIonResolver } from './did/did-ion-resolver.js';\nexport { DidResolver, DidMethodResolver } from './did/did-resolver.js';\nexport { Dwn } from './dwn.js';\nexport { DwnConstant } from './core/dwn-constant.js';\nexport { DwnError, DwnErrorCode } from './core/dwn-error.js';\nexport { DwnInterfaceName, DwnMethodName } from './core/message.js';\nexport { Encoder } from './utils/encoder.js';\nexport { EventLogLevel } from './event-log/event-log-level.js';\nexport { EventsGet, EventsGetOptions } from './interfaces/events/messages/events-get.js';\nexport { Encryption, EncryptionAlgorithm } from './utils/encryption.js';\nexport { EncryptionInput, KeyEncryptionInput, RecordsWrite, RecordsWriteOptions, CreateFromOptions } from './interfaces/records/messages/records-write.js';\nexport { HooksWrite, HooksWriteOptions } from './interfaces/hooks/messages/hooks-write.js';\nexport { Jws } from './utils/jws.js';\nexport { KeyMaterial, PrivateJwk, PublicJwk } from './jose/types.js';\nexport { Message } from './core/message.js';\nexport { MessagesGet, MessagesGetOptions } from './interfaces/messages/messages/messages-get.js';\nexport { MessageReply } from './core/message-reply.js';\nexport { MessageStore } from './store/message-store.js';\nexport { MessageStoreLevel } from './store/message-store-level.js';\nexport { ProtocolsConfigure, ProtocolsConfigureOptions } from './interfaces/protocols/messages/protocols-configure.js';\nexport { ProtocolsQuery, ProtocolsQueryOptions } from './interfaces/protocols/messages/protocols-query.js';\nexport { Records } from './utils/records.js';\nexport { RecordsDelete, RecordsDeleteOptions } from './interfaces/records/messages/records-delete.js';\nexport { RecordsQuery, RecordsQueryOptions } from './interfaces/records/messages/records-query.js';\nexport { RecordsRead, RecordsReadOptions } from './interfaces/records/messages/records-read.js';\nexport { Secp256k1 } from './utils/secp256k1.js';\nexport { SignatureInput } from './jose/jws/general/types.js';", "/**\n * An interface that determines if a DID is a tenant of the DWN.\n */\nexport interface TenantGate {\n  /**\n   * @returns `true` if the given DID is a tenant of the DWN; `false` otherwise\n   */\n  isTenant(did: string): Promise<boolean>;\n}\n\n/**\n * A tenant gate that treats every DID as a tenant.\n */\nexport class AllowAllTenantGate implements TenantGate {\n  public async isTenant(_did: string): Promise<boolean> {\n    return true;\n  }\n}", "import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n  if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n    return null // any other kind of object\n  }\n  const cid = CID.asCID(obj)\n  /* c8 ignore next 4 */\n  // very unlikely case, and it'll probably throw a recursion error in cborg\n  if (!cid) {\n    return null\n  }\n  const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n  bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n  return [\n    new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n    new cborg.Token(cborg.Type.bytes, bytes)\n  ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n  throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n  if (Number.isNaN(num)) {\n    throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n  }\n  if (num === Infinity || num === -Infinity) {\n    throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n  }\n  return null\n}\n\nconst encodeOptions = {\n  float64: true,\n  typeEncoders: {\n    Object: cidEncoder,\n    undefined: undefinedEncoder,\n    number: numberEncoder\n  }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\n */\nfunction cidDecoder (bytes) {\n  if (bytes[0] !== 0) {\n    throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n  }\n  return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n}\n\nconst decodeOptions = {\n  allowIndefinite: false,\n  coerceUndefinedToNull: true,\n  allowNaN: false,\n  allowInfinity: false,\n  allowBigInt: true, // this will lead to BigInt for ints outside of\n  // safe-integer range, which may surprise users\n  strict: true,\n  useMaps: false,\n  rejectDuplicateMapKeys: true,\n  /** @type {import('cborg').TagDecoder[]} */\n  tags: []\n}\ndecodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => cborg.encode(node, encodeOptions)\n\n/**\n * @template T\n * @param {ByteView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(data, decodeOptions)\n", "import { encode } from './lib/encode.js';\nimport { decode } from './lib/decode.js';\nimport {\n  Token,\n  Type\n} from './lib/token.js';\nexport {\n  decode,\n  encode,\n  Token,\n  Type\n};", "import { is } from './is.js';\nimport {\n  Token,\n  Type\n} from './token.js';\nimport { Bl } from './bl.js';\nimport { encodeErrPrefix } from './common.js';\nimport { quickEncodeToken } from './jump.js';\nimport { asU8A } from './byte-utils.js';\nimport { encodeUint } from './0uint.js';\nimport { encodeNegint } from './1negint.js';\nimport { encodeBytes } from './2bytes.js';\nimport { encodeString } from './3string.js';\nimport { encodeArray } from './4array.js';\nimport { encodeMap } from './5map.js';\nimport { encodeTag } from './6tag.js';\nimport { encodeFloat } from './7float.js';\nconst defaultEncodeOptions = {\n  float64: false,\n  mapSorter,\n  quickEncodeToken\n};\nexport function makeCborEncoders() {\n  const encoders = [];\n  encoders[Type.uint.major] = encodeUint;\n  encoders[Type.negint.major] = encodeNegint;\n  encoders[Type.bytes.major] = encodeBytes;\n  encoders[Type.string.major] = encodeString;\n  encoders[Type.array.major] = encodeArray;\n  encoders[Type.map.major] = encodeMap;\n  encoders[Type.tag.major] = encodeTag;\n  encoders[Type.float.major] = encodeFloat;\n  return encoders;\n}\nconst cborEncoders = makeCborEncoders();\nconst buf = new Bl();\nclass Ref {\n  constructor(obj, parent) {\n    this.obj = obj;\n    this.parent = parent;\n  }\n  includes(obj) {\n    let p = this;\n    do {\n      if (p.obj === obj) {\n        return true;\n      }\n    } while (p = p.parent);\n    return false;\n  }\n  static createCheck(stack, obj) {\n    if (stack && stack.includes(obj)) {\n      throw new Error(`${ encodeErrPrefix } object contains circular references`);\n    }\n    return new Ref(obj, stack);\n  }\n}\nconst simpleTokens = {\n  null: new Token(Type.null, null),\n  undefined: new Token(Type.undefined, undefined),\n  true: new Token(Type.true, true),\n  false: new Token(Type.false, false),\n  emptyArray: new Token(Type.array, 0),\n  emptyMap: new Token(Type.map, 0)\n};\nconst typeEncoders = {\n  number(obj, _typ, _options, _refStack) {\n    if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n      return new Token(Type.float, obj);\n    } else if (obj >= 0) {\n      return new Token(Type.uint, obj);\n    } else {\n      return new Token(Type.negint, obj);\n    }\n  },\n  bigint(obj, _typ, _options, _refStack) {\n    if (obj >= BigInt(0)) {\n      return new Token(Type.uint, obj);\n    } else {\n      return new Token(Type.negint, obj);\n    }\n  },\n  Uint8Array(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, obj);\n  },\n  string(obj, _typ, _options, _refStack) {\n    return new Token(Type.string, obj);\n  },\n  boolean(obj, _typ, _options, _refStack) {\n    return obj ? simpleTokens.true : simpleTokens.false;\n  },\n  null(_obj, _typ, _options, _refStack) {\n    return simpleTokens.null;\n  },\n  undefined(_obj, _typ, _options, _refStack) {\n    return simpleTokens.undefined;\n  },\n  ArrayBuffer(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, new Uint8Array(obj));\n  },\n  DataView(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength));\n  },\n  Array(obj, _typ, options, refStack) {\n    if (!obj.length) {\n      if (options.addBreakTokens === true) {\n        return [\n          simpleTokens.emptyArray,\n          new Token(Type.break)\n        ];\n      }\n      return simpleTokens.emptyArray;\n    }\n    refStack = Ref.createCheck(refStack, obj);\n    const entries = [];\n    let i = 0;\n    for (const e of obj) {\n      entries[i++] = objectToTokens(e, options, refStack);\n    }\n    if (options.addBreakTokens) {\n      return [\n        new Token(Type.array, obj.length),\n        entries,\n        new Token(Type.break)\n      ];\n    }\n    return [\n      new Token(Type.array, obj.length),\n      entries\n    ];\n  },\n  Object(obj, typ, options, refStack) {\n    const isMap = typ !== 'Object';\n    const keys = isMap ? obj.keys() : Object.keys(obj);\n    const length = isMap ? obj.size : keys.length;\n    if (!length) {\n      if (options.addBreakTokens === true) {\n        return [\n          simpleTokens.emptyMap,\n          new Token(Type.break)\n        ];\n      }\n      return simpleTokens.emptyMap;\n    }\n    refStack = Ref.createCheck(refStack, obj);\n    const entries = [];\n    let i = 0;\n    for (const key of keys) {\n      entries[i++] = [\n        objectToTokens(key, options, refStack),\n        objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n      ];\n    }\n    sortMapEntries(entries, options);\n    if (options.addBreakTokens) {\n      return [\n        new Token(Type.map, length),\n        entries,\n        new Token(Type.break)\n      ];\n    }\n    return [\n      new Token(Type.map, length),\n      entries\n    ];\n  }\n};\ntypeEncoders.Map = typeEncoders.Object;\ntypeEncoders.Buffer = typeEncoders.Uint8Array;\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n  typeEncoders[`${ typ }Array`] = typeEncoders.DataView;\n}\nfunction objectToTokens(obj, options = {}, refStack) {\n  const typ = is(obj);\n  const customTypeEncoder = options && options.typeEncoders && options.typeEncoders[typ] || typeEncoders[typ];\n  if (typeof customTypeEncoder === 'function') {\n    const tokens = customTypeEncoder(obj, typ, options, refStack);\n    if (tokens != null) {\n      return tokens;\n    }\n  }\n  const typeEncoder = typeEncoders[typ];\n  if (!typeEncoder) {\n    throw new Error(`${ encodeErrPrefix } unsupported type: ${ typ }`);\n  }\n  return typeEncoder(obj, typ, options, refStack);\n}\nfunction sortMapEntries(entries, options) {\n  if (options.mapSorter) {\n    entries.sort(options.mapSorter);\n  }\n}\nfunction mapSorter(e1, e2) {\n  const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];\n  const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];\n  if (keyToken1.type !== keyToken2.type) {\n    return keyToken1.type.compare(keyToken2.type);\n  }\n  const major = keyToken1.type.major;\n  const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);\n  if (tcmp === 0) {\n    console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone');\n  }\n  return tcmp;\n}\nfunction tokensToEncoded(buf, tokens, encoders, options) {\n  if (Array.isArray(tokens)) {\n    for (const token of tokens) {\n      tokensToEncoded(buf, token, encoders, options);\n    }\n  } else {\n    encoders[tokens.type.major](buf, tokens, options);\n  }\n}\nfunction encodeCustom(data, encoders, options) {\n  const tokens = objectToTokens(data, options);\n  if (!Array.isArray(tokens) && options.quickEncodeToken) {\n    const quickBytes = options.quickEncodeToken(tokens);\n    if (quickBytes) {\n      return quickBytes;\n    }\n    const encoder = encoders[tokens.type.major];\n    if (encoder.encodedSize) {\n      const size = encoder.encodedSize(tokens, options);\n      const buf = new Bl(size);\n      encoder(buf, tokens, options);\n      if (buf.chunks.length !== 1) {\n        throw new Error(`Unexpected error: pre-calculated length for ${ tokens } was wrong`);\n      }\n      return asU8A(buf.chunks[0]);\n    }\n  }\n  buf.reset();\n  tokensToEncoded(buf, tokens, encoders, options);\n  return buf.toBytes(true);\n}\nfunction encode(data, options) {\n  options = Object.assign({}, defaultEncodeOptions, options);\n  return encodeCustom(data, cborEncoders, options);\n}\nexport {\n  objectToTokens,\n  encode,\n  encodeCustom,\n  Ref\n};", "const typeofs = [\n  'string',\n  'number',\n  'bigint',\n  'symbol'\n];\nconst objectTypeNames = [\n  'Function',\n  'Generator',\n  'AsyncGenerator',\n  'GeneratorFunction',\n  'AsyncGeneratorFunction',\n  'AsyncFunction',\n  'Observable',\n  'Array',\n  'Buffer',\n  'Object',\n  'RegExp',\n  'Date',\n  'Error',\n  'Map',\n  'Set',\n  'WeakMap',\n  'WeakSet',\n  'ArrayBuffer',\n  'SharedArrayBuffer',\n  'DataView',\n  'Promise',\n  'URL',\n  'HTMLElement',\n  'Int8Array',\n  'Uint8Array',\n  'Uint8ClampedArray',\n  'Int16Array',\n  'Uint16Array',\n  'Int32Array',\n  'Uint32Array',\n  'Float32Array',\n  'Float64Array',\n  'BigInt64Array',\n  'BigUint64Array'\n];\nexport function is(value) {\n  if (value === null) {\n    return 'null';\n  }\n  if (value === undefined) {\n    return 'undefined';\n  }\n  if (value === true || value === false) {\n    return 'boolean';\n  }\n  const typeOf = typeof value;\n  if (typeofs.includes(typeOf)) {\n    return typeOf;\n  }\n  if (typeOf === 'function') {\n    return 'Function';\n  }\n  if (Array.isArray(value)) {\n    return 'Array';\n  }\n  if (isBuffer(value)) {\n    return 'Buffer';\n  }\n  const objectType = getObjectType(value);\n  if (objectType) {\n    return objectType;\n  }\n  return 'Object';\n}\nfunction isBuffer(value) {\n  return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value);\n}\nfunction getObjectType(value) {\n  const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n  if (objectTypeNames.includes(objectTypeName)) {\n    return objectTypeName;\n  }\n  return undefined;\n}", "class Type {\n  constructor(major, name, terminal) {\n    this.major = major;\n    this.majorEncoded = major << 5;\n    this.name = name;\n    this.terminal = terminal;\n  }\n  toString() {\n    return `Type[${ this.major }].${ this.name }`;\n  }\n  compare(typ) {\n    return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0;\n  }\n}\nType.uint = new Type(0, 'uint', true);\nType.negint = new Type(1, 'negint', true);\nType.bytes = new Type(2, 'bytes', true);\nType.string = new Type(3, 'string', true);\nType.array = new Type(4, 'array', false);\nType.map = new Type(5, 'map', false);\nType.tag = new Type(6, 'tag', false);\nType.float = new Type(7, 'float', true);\nType.false = new Type(7, 'false', true);\nType.true = new Type(7, 'true', true);\nType.null = new Type(7, 'null', true);\nType.undefined = new Type(7, 'undefined', true);\nType.break = new Type(7, 'break', true);\nclass Token {\n  constructor(type, value, encodedLength) {\n    this.type = type;\n    this.value = value;\n    this.encodedLength = encodedLength;\n    this.encodedBytes = undefined;\n    this.byteValue = undefined;\n  }\n  toString() {\n    return `Token[${ this.type }].${ this.value }`;\n  }\n}\nexport {\n  Type,\n  Token\n};", "import {\n  alloc,\n  concat,\n  slice\n} from './byte-utils.js';\nconst defaultChunkSize = 256;\nexport class Bl {\n  constructor(chunkSize = defaultChunkSize) {\n    this.chunkSize = chunkSize;\n    this.cursor = 0;\n    this.maxCursor = -1;\n    this.chunks = [];\n    this._initReuseChunk = null;\n  }\n  reset() {\n    this.cursor = 0;\n    this.maxCursor = -1;\n    if (this.chunks.length) {\n      this.chunks = [];\n    }\n    if (this._initReuseChunk !== null) {\n      this.chunks.push(this._initReuseChunk);\n      this.maxCursor = this._initReuseChunk.length - 1;\n    }\n  }\n  push(bytes) {\n    let topChunk = this.chunks[this.chunks.length - 1];\n    const newMax = this.cursor + bytes.length;\n    if (newMax <= this.maxCursor + 1) {\n      const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n      topChunk.set(bytes, chunkPos);\n    } else {\n      if (topChunk) {\n        const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n        if (chunkPos < topChunk.length) {\n          this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos);\n          this.maxCursor = this.cursor - 1;\n        }\n      }\n      if (bytes.length < 64 && bytes.length < this.chunkSize) {\n        topChunk = alloc(this.chunkSize);\n        this.chunks.push(topChunk);\n        this.maxCursor += topChunk.length;\n        if (this._initReuseChunk === null) {\n          this._initReuseChunk = topChunk;\n        }\n        topChunk.set(bytes, 0);\n      } else {\n        this.chunks.push(bytes);\n        this.maxCursor += bytes.length;\n      }\n    }\n    this.cursor += bytes.length;\n  }\n  toBytes(reset = false) {\n    let byts;\n    if (this.chunks.length === 1) {\n      const chunk = this.chunks[0];\n      if (reset && this.cursor > chunk.length / 2) {\n        byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor);\n        this._initReuseChunk = null;\n        this.chunks = [];\n      } else {\n        byts = slice(chunk, 0, this.cursor);\n      }\n    } else {\n      byts = concat(this.chunks, this.cursor);\n    }\n    if (reset) {\n      this.reset();\n    }\n    return byts;\n  }\n}", "export const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === 'function';\nconst textDecoder = new TextDecoder();\nconst textEncoder = new TextEncoder();\nfunction isBuffer(buf) {\n  return useBuffer && globalThis.Buffer.isBuffer(buf);\n}\nexport function asU8A(buf) {\n  if (!(buf instanceof Uint8Array)) {\n    return Uint8Array.from(buf);\n  }\n  return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf;\n}\nexport const toString = useBuffer ? (bytes, start, end) => {\n  return end - start > 64 ? globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8') : utf8Slice(bytes, start, end);\n} : (bytes, start, end) => {\n  return end - start > 64 ? textDecoder.decode(bytes.subarray(start, end)) : utf8Slice(bytes, start, end);\n};\nexport const fromString = useBuffer ? string => {\n  return string.length > 64 ? globalThis.Buffer.from(string) : utf8ToBytes(string);\n} : string => {\n  return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string);\n};\nexport const fromArray = arr => {\n  return Uint8Array.from(arr);\n};\nexport const slice = useBuffer ? (bytes, start, end) => {\n  if (isBuffer(bytes)) {\n    return new Uint8Array(bytes.subarray(start, end));\n  }\n  return bytes.slice(start, end);\n} : (bytes, start, end) => {\n  return bytes.slice(start, end);\n};\nexport const concat = useBuffer ? (chunks, length) => {\n  chunks = chunks.map(c => c instanceof Uint8Array ? c : globalThis.Buffer.from(c));\n  return asU8A(globalThis.Buffer.concat(chunks, length));\n} : (chunks, length) => {\n  const out = new Uint8Array(length);\n  let off = 0;\n  for (let b of chunks) {\n    if (off + b.length > out.length) {\n      b = b.subarray(0, out.length - off);\n    }\n    out.set(b, off);\n    off += b.length;\n  }\n  return out;\n};\nexport const alloc = useBuffer ? size => {\n  return globalThis.Buffer.allocUnsafe(size);\n} : size => {\n  return new Uint8Array(size);\n};\nexport const toHex = useBuffer ? d => {\n  if (typeof d === 'string') {\n    return d;\n  }\n  return globalThis.Buffer.from(toBytes(d)).toString('hex');\n} : d => {\n  if (typeof d === 'string') {\n    return d;\n  }\n  return Array.prototype.reduce.call(toBytes(d), (p, c) => `${ p }${ c.toString(16).padStart(2, '0') }`, '');\n};\nexport const fromHex = useBuffer ? hex => {\n  if (hex instanceof Uint8Array) {\n    return hex;\n  }\n  return globalThis.Buffer.from(hex, 'hex');\n} : hex => {\n  if (hex instanceof Uint8Array) {\n    return hex;\n  }\n  if (!hex.length) {\n    return new Uint8Array(0);\n  }\n  return new Uint8Array(hex.split('').map((c, i, d) => i % 2 === 0 ? `0x${ c }${ d[i + 1] }` : '').filter(Boolean).map(e => parseInt(e, 16)));\n};\nfunction toBytes(obj) {\n  if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n    return obj;\n  }\n  if (obj instanceof ArrayBuffer) {\n    return new Uint8Array(obj);\n  }\n  if (ArrayBuffer.isView(obj)) {\n    return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n}\nexport function compare(b1, b2) {\n  if (isBuffer(b1) && isBuffer(b2)) {\n    return b1.compare(b2);\n  }\n  for (let i = 0; i < b1.length; i++) {\n    if (b1[i] === b2[i]) {\n      continue;\n    }\n    return b1[i] < b2[i] ? -1 : 1;\n  }\n  return 0;\n}\nfunction utf8ToBytes(string, units = Infinity) {\n  let codePoint;\n  const length = string.length;\n  let leadSurrogate = null;\n  const bytes = [];\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i);\n    if (codePoint > 55295 && codePoint < 57344) {\n      if (!leadSurrogate) {\n        if (codePoint > 56319) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        } else if (i + 1 === length) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        }\n        leadSurrogate = codePoint;\n        continue;\n      }\n      if (codePoint < 56320) {\n        if ((units -= 3) > -1)\n          bytes.push(239, 191, 189);\n        leadSurrogate = codePoint;\n        continue;\n      }\n      codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n    } else if (leadSurrogate) {\n      if ((units -= 3) > -1)\n        bytes.push(239, 191, 189);\n    }\n    leadSurrogate = null;\n    if (codePoint < 128) {\n      if ((units -= 1) < 0)\n        break;\n      bytes.push(codePoint);\n    } else if (codePoint < 2048) {\n      if ((units -= 2) < 0)\n        break;\n      bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n    } else if (codePoint < 65536) {\n      if ((units -= 3) < 0)\n        break;\n      bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else if (codePoint < 1114112) {\n      if ((units -= 4) < 0)\n        break;\n      bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else {\n      throw new Error('Invalid code point');\n    }\n  }\n  return bytes;\n}\nfunction utf8Slice(buf, offset, end) {\n  const res = [];\n  while (offset < end) {\n    const firstByte = buf[offset];\n    let codePoint = null;\n    let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n    if (offset + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint;\n      switch (bytesPerSequence) {\n      case 1:\n        if (firstByte < 128) {\n          codePoint = firstByte;\n        }\n        break;\n      case 2:\n        secondByte = buf[offset + 1];\n        if ((secondByte & 192) === 128) {\n          tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n          if (tempCodePoint > 127) {\n            codePoint = tempCodePoint;\n          }\n        }\n        break;\n      case 3:\n        secondByte = buf[offset + 1];\n        thirdByte = buf[offset + 2];\n        if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n          tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n          if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n            codePoint = tempCodePoint;\n          }\n        }\n        break;\n      case 4:\n        secondByte = buf[offset + 1];\n        thirdByte = buf[offset + 2];\n        fourthByte = buf[offset + 3];\n        if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n          tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n          if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n            codePoint = tempCodePoint;\n          }\n        }\n      }\n    }\n    if (codePoint === null) {\n      codePoint = 65533;\n      bytesPerSequence = 1;\n    } else if (codePoint > 65535) {\n      codePoint -= 65536;\n      res.push(codePoint >>> 10 & 1023 | 55296);\n      codePoint = 56320 | codePoint & 1023;\n    }\n    res.push(codePoint);\n    offset += bytesPerSequence;\n  }\n  return decodeCodePointsArray(res);\n}\nconst MAX_ARGUMENTS_LENGTH = 4096;\nexport function decodeCodePointsArray(codePoints) {\n  const len = codePoints.length;\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints);\n  }\n  let res = '';\n  let i = 0;\n  while (i < len) {\n    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n  }\n  return res;\n}", "const decodeErrPrefix = 'CBOR decode error:';\nconst encodeErrPrefix = 'CBOR encode error:';\nconst uintMinorPrefixBytes = [];\nuintMinorPrefixBytes[23] = 1;\nuintMinorPrefixBytes[24] = 2;\nuintMinorPrefixBytes[25] = 3;\nuintMinorPrefixBytes[26] = 5;\nuintMinorPrefixBytes[27] = 9;\nfunction assertEnoughData(data, pos, need) {\n  if (data.length - pos < need) {\n    throw new Error(`${ decodeErrPrefix } not enough data for type`);\n  }\n}\nexport {\n  decodeErrPrefix,\n  encodeErrPrefix,\n  uintMinorPrefixBytes,\n  assertEnoughData\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport * as negint from './1negint.js';\nimport * as bytes from './2bytes.js';\nimport * as string from './3string.js';\nimport * as array from './4array.js';\nimport * as map from './5map.js';\nimport * as tag from './6tag.js';\nimport * as float from './7float.js';\nimport { decodeErrPrefix } from './common.js';\nimport { fromArray } from './byte-utils.js';\nfunction invalidMinor(data, pos, minor) {\n  throw new Error(`${ decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`);\n}\nfunction errorer(msg) {\n  return () => {\n    throw new Error(`${ decodeErrPrefix } ${ msg }`);\n  };\n}\nexport const jump = [];\nfor (let i = 0; i <= 23; i++) {\n  jump[i] = invalidMinor;\n}\njump[24] = uint.decodeUint8;\njump[25] = uint.decodeUint16;\njump[26] = uint.decodeUint32;\njump[27] = uint.decodeUint64;\njump[28] = invalidMinor;\njump[29] = invalidMinor;\njump[30] = invalidMinor;\njump[31] = invalidMinor;\nfor (let i = 32; i <= 55; i++) {\n  jump[i] = invalidMinor;\n}\njump[56] = negint.decodeNegint8;\njump[57] = negint.decodeNegint16;\njump[58] = negint.decodeNegint32;\njump[59] = negint.decodeNegint64;\njump[60] = invalidMinor;\njump[61] = invalidMinor;\njump[62] = invalidMinor;\njump[63] = invalidMinor;\nfor (let i = 64; i <= 87; i++) {\n  jump[i] = bytes.decodeBytesCompact;\n}\njump[88] = bytes.decodeBytes8;\njump[89] = bytes.decodeBytes16;\njump[90] = bytes.decodeBytes32;\njump[91] = bytes.decodeBytes64;\njump[92] = invalidMinor;\njump[93] = invalidMinor;\njump[94] = invalidMinor;\njump[95] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 96; i <= 119; i++) {\n  jump[i] = string.decodeStringCompact;\n}\njump[120] = string.decodeString8;\njump[121] = string.decodeString16;\njump[122] = string.decodeString32;\njump[123] = string.decodeString64;\njump[124] = invalidMinor;\njump[125] = invalidMinor;\njump[126] = invalidMinor;\njump[127] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 128; i <= 151; i++) {\n  jump[i] = array.decodeArrayCompact;\n}\njump[152] = array.decodeArray8;\njump[153] = array.decodeArray16;\njump[154] = array.decodeArray32;\njump[155] = array.decodeArray64;\njump[156] = invalidMinor;\njump[157] = invalidMinor;\njump[158] = invalidMinor;\njump[159] = array.decodeArrayIndefinite;\nfor (let i = 160; i <= 183; i++) {\n  jump[i] = map.decodeMapCompact;\n}\njump[184] = map.decodeMap8;\njump[185] = map.decodeMap16;\njump[186] = map.decodeMap32;\njump[187] = map.decodeMap64;\njump[188] = invalidMinor;\njump[189] = invalidMinor;\njump[190] = invalidMinor;\njump[191] = map.decodeMapIndefinite;\nfor (let i = 192; i <= 215; i++) {\n  jump[i] = tag.decodeTagCompact;\n}\njump[216] = tag.decodeTag8;\njump[217] = tag.decodeTag16;\njump[218] = tag.decodeTag32;\njump[219] = tag.decodeTag64;\njump[220] = invalidMinor;\njump[221] = invalidMinor;\njump[222] = invalidMinor;\njump[223] = invalidMinor;\nfor (let i = 224; i <= 243; i++) {\n  jump[i] = errorer('simple values are not supported');\n}\njump[244] = invalidMinor;\njump[245] = invalidMinor;\njump[246] = invalidMinor;\njump[247] = float.decodeUndefined;\njump[248] = errorer('simple values are not supported');\njump[249] = float.decodeFloat16;\njump[250] = float.decodeFloat32;\njump[251] = float.decodeFloat64;\njump[252] = invalidMinor;\njump[253] = invalidMinor;\njump[254] = invalidMinor;\njump[255] = float.decodeBreak;\nexport const quick = [];\nfor (let i = 0; i < 24; i++) {\n  quick[i] = new Token(Type.uint, i, 1);\n}\nfor (let i = -1; i >= -24; i--) {\n  quick[31 - i] = new Token(Type.negint, i, 1);\n}\nquick[64] = new Token(Type.bytes, new Uint8Array(0), 1);\nquick[96] = new Token(Type.string, '', 1);\nquick[128] = new Token(Type.array, 0, 1);\nquick[160] = new Token(Type.map, 0, 1);\nquick[244] = new Token(Type.false, false, 1);\nquick[245] = new Token(Type.true, true, 1);\nquick[246] = new Token(Type.null, null, 1);\nexport function quickEncodeToken(token) {\n  switch (token.type) {\n  case Type.false:\n    return fromArray([244]);\n  case Type.true:\n    return fromArray([245]);\n  case Type.null:\n    return fromArray([246]);\n  case Type.bytes:\n    if (!token.value.length) {\n      return fromArray([64]);\n    }\n    return;\n  case Type.string:\n    if (token.value === '') {\n      return fromArray([96]);\n    }\n    return;\n  case Type.array:\n    if (token.value === 0) {\n      return fromArray([128]);\n    }\n    return;\n  case Type.map:\n    if (token.value === 0) {\n      return fromArray([160]);\n    }\n    return;\n  case Type.uint:\n    if (token.value < 24) {\n      return fromArray([Number(token.value)]);\n    }\n    return;\n  case Type.negint:\n    if (token.value >= -24) {\n      return fromArray([31 - Number(token.value)]);\n    }\n  }\n}", "import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  decodeErrPrefix,\n  assertEnoughData\n} from './common.js';\nexport const uintBoundaries = [\n  24,\n  256,\n  65536,\n  4294967296,\n  BigInt('18446744073709551616')\n];\nexport function readUint8(data, offset, options) {\n  assertEnoughData(data, offset, 1);\n  const value = data[offset];\n  if (options.strict === true && value < uintBoundaries[0]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint16(data, offset, options) {\n  assertEnoughData(data, offset, 2);\n  const value = data[offset] << 8 | data[offset + 1];\n  if (options.strict === true && value < uintBoundaries[1]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint32(data, offset, options) {\n  assertEnoughData(data, offset, 4);\n  const value = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n  if (options.strict === true && value < uintBoundaries[2]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint64(data, offset, options) {\n  assertEnoughData(data, offset, 8);\n  const hi = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n  const lo = data[offset + 4] * 16777216 + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7];\n  const value = (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  if (options.strict === true && value < uintBoundaries[3]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  if (value <= Number.MAX_SAFE_INTEGER) {\n    return Number(value);\n  }\n  if (options.allowBigInt === true) {\n    return value;\n  }\n  throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n}\nexport function decodeUint8(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint8(data, pos + 1, options), 2);\n}\nexport function decodeUint16(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint16(data, pos + 1, options), 3);\n}\nexport function decodeUint32(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint32(data, pos + 1, options), 5);\n}\nexport function decodeUint64(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint64(data, pos + 1, options), 9);\n}\nexport function encodeUint(buf, token) {\n  return encodeUintValue(buf, 0, token.value);\n}\nexport function encodeUintValue(buf, major, uint) {\n  if (uint < uintBoundaries[0]) {\n    const nuint = Number(uint);\n    buf.push([major | nuint]);\n  } else if (uint < uintBoundaries[1]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 24,\n      nuint\n    ]);\n  } else if (uint < uintBoundaries[2]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 25,\n      nuint >>> 8,\n      nuint & 255\n    ]);\n  } else if (uint < uintBoundaries[3]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 26,\n      nuint >>> 24 & 255,\n      nuint >>> 16 & 255,\n      nuint >>> 8 & 255,\n      nuint & 255\n    ]);\n  } else {\n    const buint = BigInt(uint);\n    if (buint < uintBoundaries[4]) {\n      const set = [\n        major | 27,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0\n      ];\n      let lo = Number(buint & BigInt(4294967295));\n      let hi = Number(buint >> BigInt(32) & BigInt(4294967295));\n      set[8] = lo & 255;\n      lo = lo >> 8;\n      set[7] = lo & 255;\n      lo = lo >> 8;\n      set[6] = lo & 255;\n      lo = lo >> 8;\n      set[5] = lo & 255;\n      set[4] = hi & 255;\n      hi = hi >> 8;\n      set[3] = hi & 255;\n      hi = hi >> 8;\n      set[2] = hi & 255;\n      hi = hi >> 8;\n      set[1] = hi & 255;\n      buf.push(set);\n    } else {\n      throw new Error(`${ decodeErrPrefix } encountered BigInt larger than allowable range`);\n    }\n  }\n}\nencodeUint.encodedSize = function encodedSize(token) {\n  return encodeUintValue.encodedSize(token.value);\n};\nencodeUintValue.encodedSize = function encodedSize(uint) {\n  if (uint < uintBoundaries[0]) {\n    return 1;\n  }\n  if (uint < uintBoundaries[1]) {\n    return 2;\n  }\n  if (uint < uintBoundaries[2]) {\n    return 3;\n  }\n  if (uint < uintBoundaries[3]) {\n    return 5;\n  }\n  return 9;\n};\nencodeUint.compareTokens = function compareTokens(tok1, tok2) {\n  return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : 0;\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nexport function decodeNegint8(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeNegint16(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeNegint32(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5);\n}\nconst neg1b = BigInt(-1);\nconst pos1b = BigInt(1);\nexport function decodeNegint64(data, pos, _minor, options) {\n  const int = uint.readUint64(data, pos + 1, options);\n  if (typeof int !== 'bigint') {\n    const value = -1 - int;\n    if (value >= Number.MIN_SAFE_INTEGER) {\n      return new Token(Type.negint, value, 9);\n    }\n  }\n  if (options.allowBigInt !== true) {\n    throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n  }\n  return new Token(Type.negint, neg1b - BigInt(int), 9);\n}\nexport function encodeNegint(buf, token) {\n  const negint = token.value;\n  const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n  uint.encodeUintValue(buf, token.type.majorEncoded, unsigned);\n}\nencodeNegint.encodedSize = function encodedSize(token) {\n  const negint = token.value;\n  const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n  if (unsigned < uint.uintBoundaries[0]) {\n    return 1;\n  }\n  if (unsigned < uint.uintBoundaries[1]) {\n    return 2;\n  }\n  if (unsigned < uint.uintBoundaries[2]) {\n    return 3;\n  }\n  if (unsigned < uint.uintBoundaries[3]) {\n    return 5;\n  }\n  return 9;\n};\nencodeNegint.compareTokens = function compareTokens(tok1, tok2) {\n  return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : 0;\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  assertEnoughData,\n  decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport {\n  compare,\n  fromString,\n  slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length) {\n  assertEnoughData(data, pos, prefix + length);\n  const buf = slice(data, pos + prefix, pos + prefix + length);\n  return new Token(Type.bytes, buf, prefix + length);\n}\nexport function decodeBytesCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeBytes8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeBytes16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeBytes32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeBytes64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer bytes lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nfunction tokenBytes(token) {\n  if (token.encodedBytes === undefined) {\n    token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value;\n  }\n  return token.encodedBytes;\n}\nexport function encodeBytes(buf, token) {\n  const bytes = tokenBytes(token);\n  uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length);\n  buf.push(bytes);\n}\nencodeBytes.encodedSize = function encodedSize(token) {\n  const bytes = tokenBytes(token);\n  return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length;\n};\nencodeBytes.compareTokens = function compareTokens(tok1, tok2) {\n  return compareBytes(tokenBytes(tok1), tokenBytes(tok2));\n};\nexport function compareBytes(b1, b2) {\n  return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2);\n}", "import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  assertEnoughData,\n  decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport { encodeBytes } from './2bytes.js';\nimport {\n  toString,\n  slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length, options) {\n  const totLength = prefix + length;\n  assertEnoughData(data, pos, totLength);\n  const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength);\n  if (options.retainStringBytes === true) {\n    tok.byteValue = slice(data, pos + prefix, pos + totLength);\n  }\n  return tok;\n}\nexport function decodeStringCompact(data, pos, minor, options) {\n  return toToken(data, pos, 1, minor, options);\n}\nexport function decodeString8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options);\n}\nexport function decodeString16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options);\n}\nexport function decodeString32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options);\n}\nexport function decodeString64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer string lengths not supported`);\n  }\n  return toToken(data, pos, 9, l, options);\n}\nexport const encodeString = encodeBytes;", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n  return new Token(Type.array, length, prefix);\n}\nexport function decodeArrayCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeArray8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeArray16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeArray32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeArray64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer array lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nexport function decodeArrayIndefinite(data, pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return toToken(data, pos, 1, Infinity);\n}\nexport function encodeArray(buf, token) {\n  uint.encodeUintValue(buf, Type.array.majorEncoded, token.value);\n}\nencodeArray.compareTokens = uint.encodeUint.compareTokens;\nencodeArray.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n  return new Token(Type.map, length, prefix);\n}\nexport function decodeMapCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeMap8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeMap16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeMap32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeMap64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer map lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nexport function decodeMapIndefinite(data, pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return toToken(data, pos, 1, Infinity);\n}\nexport function encodeMap(buf, token) {\n  uint.encodeUintValue(buf, Type.map.majorEncoded, token.value);\n}\nencodeMap.compareTokens = uint.encodeUint.compareTokens;\nencodeMap.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nexport function decodeTagCompact(_data, _pos, minor, _options) {\n  return new Token(Type.tag, minor, 1);\n}\nexport function decodeTag8(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeTag16(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeTag32(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5);\n}\nexport function decodeTag64(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9);\n}\nexport function encodeTag(buf, token) {\n  uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value);\n}\nencodeTag.compareTokens = uint.encodeUint.compareTokens;\nencodeTag.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport { decodeErrPrefix } from './common.js';\nimport { encodeUint } from './0uint.js';\nconst MINOR_FALSE = 20;\nconst MINOR_TRUE = 21;\nconst MINOR_NULL = 22;\nconst MINOR_UNDEFINED = 23;\nexport function decodeUndefined(_data, _pos, _minor, options) {\n  if (options.allowUndefined === false) {\n    throw new Error(`${ decodeErrPrefix } undefined values are not supported`);\n  } else if (options.coerceUndefinedToNull === true) {\n    return new Token(Type.null, null, 1);\n  }\n  return new Token(Type.undefined, undefined, 1);\n}\nexport function decodeBreak(_data, _pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return new Token(Type.break, undefined, 1);\n}\nfunction createToken(value, bytes, options) {\n  if (options) {\n    if (options.allowNaN === false && Number.isNaN(value)) {\n      throw new Error(`${ decodeErrPrefix } NaN values are not supported`);\n    }\n    if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n      throw new Error(`${ decodeErrPrefix } Infinity values are not supported`);\n    }\n  }\n  return new Token(Type.float, value, bytes);\n}\nexport function decodeFloat16(data, pos, _minor, options) {\n  return createToken(readFloat16(data, pos + 1), 3, options);\n}\nexport function decodeFloat32(data, pos, _minor, options) {\n  return createToken(readFloat32(data, pos + 1), 5, options);\n}\nexport function decodeFloat64(data, pos, _minor, options) {\n  return createToken(readFloat64(data, pos + 1), 9, options);\n}\nexport function encodeFloat(buf, token, options) {\n  const float = token.value;\n  if (float === false) {\n    buf.push([Type.float.majorEncoded | MINOR_FALSE]);\n  } else if (float === true) {\n    buf.push([Type.float.majorEncoded | MINOR_TRUE]);\n  } else if (float === null) {\n    buf.push([Type.float.majorEncoded | MINOR_NULL]);\n  } else if (float === undefined) {\n    buf.push([Type.float.majorEncoded | MINOR_UNDEFINED]);\n  } else {\n    let decoded;\n    let success = false;\n    if (!options || options.float64 !== true) {\n      encodeFloat16(float);\n      decoded = readFloat16(ui8a, 1);\n      if (float === decoded || Number.isNaN(float)) {\n        ui8a[0] = 249;\n        buf.push(ui8a.slice(0, 3));\n        success = true;\n      } else {\n        encodeFloat32(float);\n        decoded = readFloat32(ui8a, 1);\n        if (float === decoded) {\n          ui8a[0] = 250;\n          buf.push(ui8a.slice(0, 5));\n          success = true;\n        }\n      }\n    }\n    if (!success) {\n      encodeFloat64(float);\n      decoded = readFloat64(ui8a, 1);\n      ui8a[0] = 251;\n      buf.push(ui8a.slice(0, 9));\n    }\n  }\n}\nencodeFloat.encodedSize = function encodedSize(token, options) {\n  const float = token.value;\n  if (float === false || float === true || float === null || float === undefined) {\n    return 1;\n  }\n  if (!options || options.float64 !== true) {\n    encodeFloat16(float);\n    let decoded = readFloat16(ui8a, 1);\n    if (float === decoded || Number.isNaN(float)) {\n      return 3;\n    }\n    encodeFloat32(float);\n    decoded = readFloat32(ui8a, 1);\n    if (float === decoded) {\n      return 5;\n    }\n  }\n  return 9;\n};\nconst buffer = new ArrayBuffer(9);\nconst dataView = new DataView(buffer, 1);\nconst ui8a = new Uint8Array(buffer, 0);\nfunction encodeFloat16(inp) {\n  if (inp === Infinity) {\n    dataView.setUint16(0, 31744, false);\n  } else if (inp === -Infinity) {\n    dataView.setUint16(0, 64512, false);\n  } else if (Number.isNaN(inp)) {\n    dataView.setUint16(0, 32256, false);\n  } else {\n    dataView.setFloat32(0, inp);\n    const valu32 = dataView.getUint32(0);\n    const exponent = (valu32 & 2139095040) >> 23;\n    const mantissa = valu32 & 8388607;\n    if (exponent === 255) {\n      dataView.setUint16(0, 31744, false);\n    } else if (exponent === 0) {\n      dataView.setUint16(0, (inp & 2147483648) >> 16 | mantissa >> 13, false);\n    } else {\n      const logicalExponent = exponent - 127;\n      if (logicalExponent < -24) {\n        dataView.setUint16(0, 0);\n      } else if (logicalExponent < -14) {\n        dataView.setUint16(0, (valu32 & 2147483648) >> 16 | 1 << 24 + logicalExponent, false);\n      } else {\n        dataView.setUint16(0, (valu32 & 2147483648) >> 16 | logicalExponent + 15 << 10 | mantissa >> 13, false);\n      }\n    }\n  }\n}\nfunction readFloat16(ui8a, pos) {\n  if (ui8a.length - pos < 2) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float16`);\n  }\n  const half = (ui8a[pos] << 8) + ui8a[pos + 1];\n  if (half === 31744) {\n    return Infinity;\n  }\n  if (half === 64512) {\n    return -Infinity;\n  }\n  if (half === 32256) {\n    return NaN;\n  }\n  const exp = half >> 10 & 31;\n  const mant = half & 1023;\n  let val;\n  if (exp === 0) {\n    val = mant * 2 ** -24;\n  } else if (exp !== 31) {\n    val = (mant + 1024) * 2 ** (exp - 25);\n  } else {\n    val = mant === 0 ? Infinity : NaN;\n  }\n  return half & 32768 ? -val : val;\n}\nfunction encodeFloat32(inp) {\n  dataView.setFloat32(0, inp, false);\n}\nfunction readFloat32(ui8a, pos) {\n  if (ui8a.length - pos < 4) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float32`);\n  }\n  const offset = (ui8a.byteOffset || 0) + pos;\n  return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false);\n}\nfunction encodeFloat64(inp) {\n  dataView.setFloat64(0, inp, false);\n}\nfunction readFloat64(ui8a, pos) {\n  if (ui8a.length - pos < 8) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float64`);\n  }\n  const offset = (ui8a.byteOffset || 0) + pos;\n  return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false);\n}\nencodeFloat.compareTokens = encodeUint.compareTokens;", "import { decodeErrPrefix } from './common.js';\nimport { Type } from './token.js';\nimport {\n  jump,\n  quick\n} from './jump.js';\nconst defaultDecodeOptions = {\n  strict: false,\n  allowIndefinite: true,\n  allowUndefined: true,\n  allowBigInt: true\n};\nclass Tokeniser {\n  constructor(data, options = {}) {\n    this.pos = 0;\n    this.data = data;\n    this.options = options;\n  }\n  done() {\n    return this.pos >= this.data.length;\n  }\n  next() {\n    const byt = this.data[this.pos];\n    let token = quick[byt];\n    if (token === undefined) {\n      const decoder = jump[byt];\n      if (!decoder) {\n        throw new Error(`${ decodeErrPrefix } no decoder for major type ${ byt >>> 5 } (byte 0x${ byt.toString(16).padStart(2, '0') })`);\n      }\n      const minor = byt & 31;\n      token = decoder(this.data, this.pos, minor, this.options);\n    }\n    this.pos += token.encodedLength;\n    return token;\n  }\n}\nconst DONE = Symbol.for('DONE');\nconst BREAK = Symbol.for('BREAK');\nfunction tokenToArray(token, tokeniser, options) {\n  const arr = [];\n  for (let i = 0; i < token.value; i++) {\n    const value = tokensToObject(tokeniser, options);\n    if (value === BREAK) {\n      if (token.value === Infinity) {\n        break;\n      }\n      throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed array`);\n    }\n    if (value === DONE) {\n      throw new Error(`${ decodeErrPrefix } found array but not enough entries (got ${ i }, expected ${ token.value })`);\n    }\n    arr[i] = value;\n  }\n  return arr;\n}\nfunction tokenToMap(token, tokeniser, options) {\n  const useMaps = options.useMaps === true;\n  const obj = useMaps ? undefined : {};\n  const m = useMaps ? new Map() : undefined;\n  for (let i = 0; i < token.value; i++) {\n    const key = tokensToObject(tokeniser, options);\n    if (key === BREAK) {\n      if (token.value === Infinity) {\n        break;\n      }\n      throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed map`);\n    }\n    if (key === DONE) {\n      throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no key], expected ${ token.value })`);\n    }\n    if (useMaps !== true && typeof key !== 'string') {\n      throw new Error(`${ decodeErrPrefix } non-string keys not supported (got ${ typeof key })`);\n    }\n    if (options.rejectDuplicateMapKeys === true) {\n      if (useMaps && m.has(key) || !useMaps && key in obj) {\n        throw new Error(`${ decodeErrPrefix } found repeat map key \"${ key }\"`);\n      }\n    }\n    const value = tokensToObject(tokeniser, options);\n    if (value === DONE) {\n      throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no value], expected ${ token.value })`);\n    }\n    if (useMaps) {\n      m.set(key, value);\n    } else {\n      obj[key] = value;\n    }\n  }\n  return useMaps ? m : obj;\n}\nfunction tokensToObject(tokeniser, options) {\n  if (tokeniser.done()) {\n    return DONE;\n  }\n  const token = tokeniser.next();\n  if (token.type === Type.break) {\n    return BREAK;\n  }\n  if (token.type.terminal) {\n    return token.value;\n  }\n  if (token.type === Type.array) {\n    return tokenToArray(token, tokeniser, options);\n  }\n  if (token.type === Type.map) {\n    return tokenToMap(token, tokeniser, options);\n  }\n  if (token.type === Type.tag) {\n    if (options.tags && typeof options.tags[token.value] === 'function') {\n      const tagged = tokensToObject(tokeniser, options);\n      return options.tags[token.value](tagged);\n    }\n    throw new Error(`${ decodeErrPrefix } tag not supported (${ token.value })`);\n  }\n  throw new Error('unsupported');\n}\nfunction decode(data, options) {\n  if (!(data instanceof Uint8Array)) {\n    throw new Error(`${ decodeErrPrefix } data to decode must be a Uint8Array`);\n  }\n  options = Object.assign({}, defaultDecodeOptions, options);\n  const tokeniser = options.tokenizer || new Tokeniser(data, options);\n  const decoded = tokensToObject(tokeniser, options);\n  if (decoded === DONE) {\n    throw new Error(`${ decodeErrPrefix } did not find any content to decode`);\n  }\n  if (decoded === BREAK) {\n    throw new Error(`${ decodeErrPrefix } got unexpected break`);\n  }\n  if (!tokeniser.done()) {\n    throw new Error(`${ decodeErrPrefix } too many terminals, data makes no sense`);\n  }\n  return decoded;\n}\nexport {\n  Tokeniser,\n  tokensToObject,\n  decode\n};", "import * as varint from './varint.js'\nimport * as Digest from './hashes/digest.js'\nimport { base58btc } from './bases/base58.js'\nimport { base32 } from './bases/base32.js'\nimport { coerce } from './bytes.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n  const { bytes, version } = link\n  switch (version) {\n    case 0:\n      return toStringV0(\n        bytes,\n        baseCache(link),\n        /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n      )\n    default:\n      return toStringV1(\n        bytes,\n        baseCache(link),\n        /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n      )\n  }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n  '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n  CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n  const baseCache = cache.get(cid)\n  if (baseCache == null) {\n    const baseCache = new Map()\n    cache.set(cid, baseCache)\n    return baseCache\n  }\n  return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n  /**\n   * @param {Version} version - Version of the CID\n   * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n   * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n   * @param {Uint8Array} bytes\n   *\n   */\n  constructor (version, code, multihash, bytes) {\n    /** @readonly */\n    this.code = code\n    /** @readonly */\n    this.version = version\n    /** @readonly */\n    this.multihash = multihash\n    /** @readonly */\n    this.bytes = bytes\n\n    // flag to serializers that this is a CID and\n    // should be treated specially\n    /** @readonly */\n    this['/'] = bytes\n  }\n\n  /**\n   * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n   * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n   *\n   * @deprecated\n   */\n  get asCID () {\n    return this\n  }\n\n  // ArrayBufferView\n  get byteOffset () {\n    return this.bytes.byteOffset\n  }\n\n  // ArrayBufferView\n  get byteLength () {\n    return this.bytes.byteLength\n  }\n\n  /**\n   * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n   */\n  toV0 () {\n    switch (this.version) {\n      case 0: {\n        return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n      }\n      case 1: {\n        const { code, multihash } = this\n\n        if (code !== DAG_PB_CODE) {\n          throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n        }\n\n        // sha2-256\n        if (multihash.code !== SHA_256_CODE) {\n          throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n        }\n\n        return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n          CID.createV0(\n            /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n          )\n        )\n      }\n      default: {\n        throw Error(\n          `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n        )\n      }\n    }\n  }\n\n  /**\n   * @returns {CID<Data, Format, Alg, 1>}\n   */\n  toV1 () {\n    switch (this.version) {\n      case 0: {\n        const { code, digest } = this.multihash\n        const multihash = Digest.create(code, digest)\n        return /** @type {CID<Data, Format, Alg, 1>} */ (\n          CID.createV1(this.code, multihash)\n        )\n      }\n      case 1: {\n        return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n      }\n      default: {\n        throw Error(\n          `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n        )\n      }\n    }\n  }\n\n  /**\n   * @param {unknown} other\n   * @returns {other is CID<Data, Format, Alg, Version>}\n   */\n  equals (other) {\n    return CID.equals(this, other)\n  }\n\n  /**\n   * @template {unknown} Data\n   * @template {number} Format\n   * @template {number} Alg\n   * @template {API.Version} Version\n   * @param {API.Link<Data, Format, Alg, Version>} self\n   * @param {unknown} other\n   * @returns {other is CID}\n   */\n  static equals (self, other) {\n    const unknown =\n      /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n        other\n      )\n    return (\n      unknown &&\n      self.code === unknown.code &&\n      self.version === unknown.version &&\n      Digest.equals(self.multihash, unknown.multihash)\n    )\n  }\n\n  /**\n   * @param {API.MultibaseEncoder<string>} [base]\n   * @returns {string}\n   */\n  toString (base) {\n    return format(this, base)\n  }\n\n  toJSON () {\n    return { '/': format(this) }\n  }\n\n  link () {\n    return this\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'CID'\n  }\n\n  // Legacy\n\n  [Symbol.for('nodejs.util.inspect.custom')] () {\n    return `CID(${this.toString()})`\n  }\n\n  /**\n   * Takes any input `value` and returns a `CID` instance if it was\n   * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n   * it will return value back. If `value` is not instance of this CID\n   * class, but is compatible CID it will return new instance of this\n   * `CID` class. Otherwise returns null.\n   *\n   * This allows two different incompatible versions of CID library to\n   * co-exist and interop as long as binary interface is compatible.\n   *\n   * @template {unknown} Data\n   * @template {number} Format\n   * @template {number} Alg\n   * @template {API.Version} Version\n   * @template {unknown} U\n   * @param {API.Link<Data, Format, Alg, Version>|U} input\n   * @returns {CID<Data, Format, Alg, Version>|null}\n   */\n  static asCID (input) {\n    if (input == null) {\n      return null\n    }\n\n    const value = /** @type {any} */ (input)\n    if (value instanceof CID) {\n      // If value is instance of CID then we're all set.\n      return value\n    } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n      // If value isn't instance of this CID class but `this.asCID === this` or\n      // `value['/'] === value.bytes` is true it is CID instance coming from a\n      // different implementation (diff version or duplicate). In that case we\n      // rebase it to this `CID` implementation so caller is guaranteed to get\n      // instance with expected API.\n      const { version, code, multihash, bytes } = value\n      return new CID(\n        version,\n        code,\n        /** @type {API.MultihashDigest<Alg>} */ (multihash),\n        bytes || encodeCID(version, code, multihash.bytes)\n      )\n    } else if (value[cidSymbol] === true) {\n      // If value is a CID from older implementation that used to be tagged via\n      // symbol we still rebase it to the this `CID` implementation by\n      // delegating that to a constructor.\n      const { version, multihash, code } = value\n      const digest =\n        /** @type {API.MultihashDigest<Alg>} */\n        (Digest.decode(multihash))\n      return CID.create(version, code, digest)\n    } else {\n      // Otherwise value is not a CID (or an incompatible version of it) in\n      // which case we return `null`.\n      return null\n    }\n  }\n\n  /**\n   *\n   * @template {unknown} Data\n   * @template {number} Format\n   * @template {number} Alg\n   * @template {API.Version} Version\n   * @param {Version} version - Version of the CID\n   * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n   * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n   * @returns {CID<Data, Format, Alg, Version>}\n   */\n  static create (version, code, digest) {\n    if (typeof code !== 'number') {\n      throw new Error('String codecs are no longer supported')\n    }\n\n    if (!(digest.bytes instanceof Uint8Array)) {\n      throw new Error('Invalid digest')\n    }\n\n    switch (version) {\n      case 0: {\n        if (code !== DAG_PB_CODE) {\n          throw new Error(\n            `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n          )\n        } else {\n          return new CID(version, code, digest, digest.bytes)\n        }\n      }\n      case 1: {\n        const bytes = encodeCID(version, code, digest.bytes)\n        return new CID(version, code, digest, bytes)\n      }\n      default: {\n        throw new Error('Invalid version')\n      }\n    }\n  }\n\n  /**\n   * Simplified version of `create` for CIDv0.\n   *\n   * @template {unknown} [T=unknown]\n   * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n   * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n   */\n  static createV0 (digest) {\n    return CID.create(0, DAG_PB_CODE, digest)\n  }\n\n  /**\n   * Simplified version of `create` for CIDv1.\n   *\n   * @template {unknown} Data\n   * @template {number} Code\n   * @template {number} Alg\n   * @param {Code} code - Content encoding format code.\n   * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n   * @returns {CID<Data, Code, Alg, 1>}\n   */\n  static createV1 (code, digest) {\n    return CID.create(1, code, digest)\n  }\n\n  /**\n   * Decoded a CID from its binary representation. The byte array must contain\n   * only the CID with no additional bytes.\n   *\n   * An error will be thrown if the bytes provided do not contain a valid\n   * binary representation of a CID.\n   *\n   * @template {unknown} Data\n   * @template {number} Code\n   * @template {number} Alg\n   * @template {API.Version} Ver\n   * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n   * @returns {CID<Data, Code, Alg, Ver>}\n   */\n  static decode (bytes) {\n    const [cid, remainder] = CID.decodeFirst(bytes)\n    if (remainder.length) {\n      throw new Error('Incorrect length')\n    }\n    return cid\n  }\n\n  /**\n   * Decoded a CID from its binary representation at the beginning of a byte\n   * array.\n   *\n   * Returns an array with the first element containing the CID and the second\n   * element containing the remainder of the original byte array. The remainder\n   * will be a zero-length byte array if the provided bytes only contained a\n   * binary CID representation.\n   *\n   * @template {unknown} T\n   * @template {number} C\n   * @template {number} A\n   * @template {API.Version} V\n   * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n   * @returns {[CID<T, C, A, V>, Uint8Array]}\n   */\n  static decodeFirst (bytes) {\n    const specs = CID.inspectBytes(bytes)\n    const prefixSize = specs.size - specs.multihashSize\n    const multihashBytes = coerce(\n      bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n    )\n    if (multihashBytes.byteLength !== specs.multihashSize) {\n      throw new Error('Incorrect length')\n    }\n    const digestBytes = multihashBytes.subarray(\n      specs.multihashSize - specs.digestSize\n    )\n    const digest = new Digest.Digest(\n      specs.multihashCode,\n      specs.digestSize,\n      digestBytes,\n      multihashBytes\n    )\n    const cid =\n      specs.version === 0\n        ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n        : CID.createV1(specs.codec, digest)\n    return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n  }\n\n  /**\n   * Inspect the initial bytes of a CID to determine its properties.\n   *\n   * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n   * bytes but for larger multicodec code values and larger multihash digest\n   * lengths these varints can be quite large. It is recommended that at least\n   * 10 bytes be made available in the `initialBytes` argument for a complete\n   * inspection.\n   *\n   * @template {unknown} T\n   * @template {number} C\n   * @template {number} A\n   * @template {API.Version} V\n   * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n   * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n   */\n  static inspectBytes (initialBytes) {\n    let offset = 0\n    const next = () => {\n      const [i, length] = varint.decode(initialBytes.subarray(offset))\n      offset += length\n      return i\n    }\n\n    let version = /** @type {V} */ (next())\n    let codec = /** @type {C} */ (DAG_PB_CODE)\n    if (/** @type {number} */(version) === 18) {\n      // CIDv0\n      version = /** @type {V} */ (0)\n      offset = 0\n    } else {\n      codec = /** @type {C} */ (next())\n    }\n\n    if (version !== 0 && version !== 1) {\n      throw new RangeError(`Invalid CID version ${version}`)\n    }\n\n    const prefixSize = offset\n    const multihashCode = /** @type {A} */ (next()) // multihash code\n    const digestSize = next() // multihash length\n    const size = offset + digestSize\n    const multihashSize = size - prefixSize\n\n    return { version, codec, multihashCode, digestSize, multihashSize, size }\n  }\n\n  /**\n   * Takes cid in a string representation and creates an instance. If `base`\n   * decoder is not provided will use a default from the configuration. It will\n   * throw an error if encoding of the CID is not compatible with supplied (or\n   * a default decoder).\n   *\n   * @template {string} Prefix\n   * @template {unknown} Data\n   * @template {number} Code\n   * @template {number} Alg\n   * @template {API.Version} Ver\n   * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n   * @param {API.MultibaseDecoder<Prefix>} [base]\n   * @returns {CID<Data, Code, Alg, Ver>}\n   */\n  static parse (source, base) {\n    const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n    const cid = CID.decode(bytes)\n\n    if (cid.version === 0 && source[0] !== 'Q') {\n      throw Error('Version 0 CID string must not include multibase prefix')\n    }\n\n    // Cache string representation to avoid computing it on `this.toString()`\n    baseCache(cid).set(prefix, source)\n\n    return cid\n  }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n  switch (source[0]) {\n    // CIDv0 is parsed differently\n    case 'Q': {\n      const decoder = base || base58btc\n      return [\n        /** @type {Prefix} */ (base58btc.prefix),\n        decoder.decode(`${base58btc.prefix}${source}`)\n      ]\n    }\n    case base58btc.prefix: {\n      const decoder = base || base58btc\n      return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n    }\n    case base32.prefix: {\n      const decoder = base || base32\n      return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n    }\n    default: {\n      if (base == null) {\n        throw Error(\n          'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n        )\n      }\n      return [/** @type {Prefix} */(source[0]), base.decode(source)]\n    }\n  }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n  const { prefix } = base\n  if (prefix !== base58btc.prefix) {\n    throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n  }\n\n  const cid = cache.get(prefix)\n  if (cid == null) {\n    const cid = base.encode(bytes).slice(1)\n    cache.set(prefix, cid)\n    return cid\n  } else {\n    return cid\n  }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n  const { prefix } = base\n  const cid = cache.get(prefix)\n  if (cid == null) {\n    const cid = base.encode(bytes)\n    cache.set(prefix, cid)\n    return cid\n  } else {\n    return cid\n  }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n  const codeOffset = varint.encodingLength(version)\n  const hashOffset = codeOffset + varint.encodingLength(code)\n  const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n  varint.encodeTo(version, bytes, 0)\n  varint.encodeTo(code, bytes, codeOffset)\n  bytes.set(multihash, hashOffset)\n  return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n  const code = varint.decode(data, offset)\n  return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n  varint.encode(int, target, offset)\n  return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n  return varint.encodingLength(int)\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n  , REST = 0x7F\n  , MSBALL = ~REST\n  , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n\n  while(num >= INT) {\n    out[offset++] = (num & 0xFF) | MSB;\n    num /= 128;\n  }\n  while(num & MSBALL) {\n    out[offset++] = (num & 0xFF) | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  \n  encode.bytes = offset - oldOffset + 1;\n  \n  return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n  , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n  var res    = 0\n    , offset = offset || 0\n    , shift  = 0\n    , counter = offset\n    , b\n    , l = buf.length;\n\n  do {\n    if (counter >= l) {\n      read.bytes = 0;\n      throw new RangeError('Could not decode varint')\n    }\n    b = buf[counter++];\n    res += shift < 28\n      ? (b & REST$1) << shift\n      : (b & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b >= MSB$1)\n\n  read.bytes = counter - offset;\n\n  return res\n}\n\nvar N1 = Math.pow(2,  7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n  return (\n    value < N1 ? 1\n  : value < N2 ? 2\n  : value < N3 ? 3\n  : value < N4 ? 4\n  : value < N5 ? 5\n  : value < N6 ? 6\n  : value < N7 ? 7\n  : value < N8 ? 8\n  : value < N9 ? 9\n  :              10\n  )\n};\n\nvar varint = {\n    encode: encode_1\n  , decode: decode\n  , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n  const size = digest.byteLength\n  const sizeOffset = varint.encodingLength(code)\n  const digestOffset = sizeOffset + varint.encodingLength(size)\n\n  const bytes = new Uint8Array(digestOffset + size)\n  varint.encodeTo(code, bytes, 0)\n  varint.encodeTo(size, bytes, sizeOffset)\n  bytes.set(digest, digestOffset)\n\n  return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n  const bytes = coerce(multihash)\n  const [code, sizeOffset] = varint.decode(bytes)\n  const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n  const digest = bytes.subarray(sizeOffset + digestOffset)\n\n  if (digest.byteLength !== size) {\n    throw new Error('Incorrect length')\n  }\n\n  return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n  if (a === b) {\n    return true\n  } else {\n    const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n    return (\n      a.code === data.code &&\n      a.size === data.size &&\n      data.bytes instanceof Uint8Array &&\n      equalBytes(a.bytes, data.bytes)\n    )\n  }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n  /**\n   * Creates a multihash digest.\n   *\n   * @param {Code} code\n   * @param {Size} size\n   * @param {Uint8Array} digest\n   * @param {Uint8Array} bytes\n   */\n  constructor (code, size, digest, bytes) {\n    this.code = code\n    this.size = size\n    this.digest = digest\n    this.bytes = bytes\n  }\n}\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n  prefix: 'b',\n  name: 'base32',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n  bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n  prefix: 'B',\n  name: 'base32upper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n  bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n  prefix: 'c',\n  name: 'base32pad',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n  bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n  prefix: 'C',\n  name: 'base32padupper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n  bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n  prefix: 'v',\n  name: 'base32hex',\n  alphabet: '0123456789abcdefghijklmnopqrstuv',\n  bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n  prefix: 'V',\n  name: 'base32hexupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n  bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n  prefix: 't',\n  name: 'base32hexpad',\n  alphabet: '0123456789abcdefghijklmnopqrstuv=',\n  bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n  prefix: 'T',\n  name: 'base32hexpadupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n  bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n  prefix: 'h',\n  name: 'base32z',\n  alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n  bitsPerChar: 5\n})\n", "// this is dummy module overlayed by interface.ts\n", "import parallelBatch from 'it-parallel-batch'\nimport { DAGBuilder, DagBuilderProgressEvents, defaultDagBuilder } from './dag-builder/index.js'\nimport { defaultTreeBuilder } from './tree-builder.js'\nimport type { UnixFS, Mtime } from 'ipfs-unixfs'\nimport type { CID, Version as CIDVersion } from 'multiformats/cid'\nimport type { Blockstore } from 'interface-blockstore'\nimport { ChunkValidator, defaultChunkValidator } from './dag-builder/validate-chunks.js'\nimport { fixedSize } from './chunker/fixed-size.js'\nimport type { Chunker } from './chunker/index.js'\nimport { balanced, FileLayout } from './layout/index.js'\nimport { BufferImportProgressEvents, defaultBufferImporter } from './dag-builder/buffer-importer.js'\nimport first from 'it-first'\nimport errcode from 'err-code'\nimport type { AwaitIterable } from 'interface-store'\nimport type { ProgressOptions } from 'progress-events'\nimport type { ReducerProgressEvents } from './dag-builder/file.js'\n\nexport type ByteStream = AwaitIterable<Uint8Array>\nexport type ImportContent = ByteStream | Uint8Array\n\nexport type WritableStorage = Pick<Blockstore, 'put'>\n\nexport interface FileCandidate {\n  path?: string\n  content: ImportContent\n  mtime?: Mtime\n  mode?: number\n}\n\nexport interface DirectoryCandidate {\n  path: string\n  mtime?: Mtime\n  mode?: number\n}\n\nexport type ImportCandidate = FileCandidate | DirectoryCandidate\n\nexport interface File {\n  content: AsyncIterable<Uint8Array>\n  path?: string\n  mtime?: Mtime\n  mode?: number\n  originalPath?: string\n}\n\nexport interface Directory {\n  path?: string\n  mtime?: Mtime\n  mode?: number\n  originalPath?: string\n}\n\nexport interface ImportResult {\n  cid: CID\n  size: bigint\n  path?: string\n  unixfs?: UnixFS\n}\n\nexport interface MultipleBlockImportResult extends ImportResult {\n  originalPath?: string\n}\n\nexport interface SingleBlockImportResult extends ImportResult {\n  single: true\n  originalPath?: string\n  block: Uint8Array\n}\n\nexport type InProgressImportResult = SingleBlockImportResult | MultipleBlockImportResult\n\nexport interface BufferImporterResult extends ImportResult {\n  block: Uint8Array\n}\n\nexport interface HamtHashFn { (value: Uint8Array): Promise<Uint8Array> }\nexport interface TreeBuilder { (source: AsyncIterable<InProgressImportResult>, blockstore: WritableStorage): AsyncIterable<ImportResult> }\nexport interface BufferImporter { (file: File, blockstore: WritableStorage): AsyncIterable<() => Promise<BufferImporterResult>> }\n\nexport type ImporterProgressEvents =\n  BufferImportProgressEvents |\n  DagBuilderProgressEvents |\n  ReducerProgressEvents\n\n/**\n * Options to control the importer's behaviour\n */\nexport interface ImporterOptions extends ProgressOptions<ImporterProgressEvents> {\n  /**\n   * When a file would span multiple DAGNodes, if this is true the leaf nodes\n   * will not be wrapped in `UnixFS` protobufs and will instead contain the\n   * raw file bytes. Default: true\n   */\n  rawLeaves?: boolean\n\n  /**\n   * If the file being imported is small enough to fit into one DAGNodes, store\n   * the file data in the root node along with the UnixFS metadata instead of\n   * in a leaf node which would then require additional I/O to load. Default: true\n   */\n  reduceSingleLeafToSelf?: boolean\n\n  /**\n   * What type of UnixFS node leaves should be - can be `'file'` or `'raw'`\n   * (ignored when `rawLeaves` is `true`).\n   *\n   * This option exists to simulate kubo's trickle dag which uses a combination\n   * of `'raw'` UnixFS leaves and `reduceSingleLeafToSelf: false`.\n   *\n   * For modern code the `rawLeaves: true` option should be used instead so leaves\n   * are plain Uint8Arrays without a UnixFS/Protobuf wrapper.\n   */\n  leafType?: 'file' | 'raw'\n\n  /**\n   * the CID version to use when storing the data. Default: 1\n   */\n  cidVersion?: CIDVersion\n\n  /**\n   * If the serialized node is larger than this it might be converted to a HAMT\n   * sharded directory. Default: 256KiB\n   */\n  shardSplitThresholdBytes?: number\n\n  /**\n   * How many files to import concurrently. For large numbers of small files this\n   * should be high (e.g. 50). Default: 10\n   */\n  fileImportConcurrency?: number\n\n  /**\n   * How many blocks to hash and write to the block store concurrently. For small\n   * numbers of large files this should be high (e.g. 50). Default: 50\n   */\n  blockWriteConcurrency?: number\n\n  /**\n   * If true, all imported files and folders will be contained in a directory that\n   * will correspond to the CID of the final entry yielded. Default: false\n   */\n  wrapWithDirectory?: boolean\n\n  /**\n   * The chunking strategy. See [./src/chunker/index.ts](./src/chunker/index.ts)\n   * for available chunkers. Default: fixedSize\n   */\n  chunker?: Chunker\n\n  /**\n   * How the DAG that represents files are created. See\n   * [./src/layout/index.ts](./src/layout/index.ts) for available layouts. Default: balanced\n   */\n  layout?: FileLayout\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function should read `{ path, content }` entries from `source` and turn them\n   * into DAGs\n   * It should yield a `function` that returns a `Promise` that resolves to\n   * `{ cid, path, unixfs, node }` where `cid` is a `CID`, `path` is a string, `unixfs`\n   * is a UnixFS entry and `node` is a `DAGNode`.\n   * Values will be pulled from this generator in parallel - the amount of parallelisation\n   * is controlled by the `fileImportConcurrency` option (default: 50)\n   */\n  dagBuilder?: DAGBuilder\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function should read `{ cid, path, unixfs, node }` entries from `source` and\n   * place them in a directory structure\n   * It should yield an object with the properties `{ cid, path, unixfs, size }` where\n   * `cid` is a `CID`, `path` is a string, `unixfs` is a UnixFS entry and `size` is a `Number`.\n   */\n  treeBuilder?: TreeBuilder\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function should read `Buffer`s from `source` and persist them using `blockstore.put`\n   * or similar\n   * `entry` is the `{ path, content }` entry, where `entry.content` is an async\n   * generator that yields Buffers\n   * It should yield functions that return a Promise that resolves to an object with\n   * the properties `{ cid, unixfs, size }` where `cid` is a [CID], `unixfs` is a [UnixFS] entry and `size` is a `Number` that represents the serialized size of the [IPLD] node that holds the buffer data.\n   * Values will be pulled from this generator in parallel - the amount of\n   * parallelisation is controlled by the `blockWriteConcurrency` option (default: 10)\n   */\n  bufferImporter?: BufferImporter\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function takes input from the `content` field of imported entries.\n   * It should transform them into `Buffer`s, throwing an error if it cannot.\n   * It should yield `Buffer` objects constructed from the `source` or throw an\n   * `Error`\n   */\n  chunkValidator?: ChunkValidator\n}\n\nexport type ImportCandidateStream = AsyncIterable<FileCandidate | DirectoryCandidate> | Iterable<FileCandidate | DirectoryCandidate>\n\n/**\n * The importer creates UnixFS DAGs and stores the blocks that make\n * them up in the passed blockstore.\n *\n * @example\n *\n * ```typescript\n * import { importer } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [{\n *   path: './foo.txt',\n *   content: Uint8Array.from([0, 1, 2, 3, 4])\n * }, {\n *   path: './bar.txt',\n *   content: Uint8Array.from([0, 1, 2, 3, 4])\n * }]\n *\n * for await (const entry of importer(input, blockstore)) {\n *   console.info(entry)\n *   // { cid: CID(), ... }\n * }\n * ```\n */\nexport async function * importer (source: ImportCandidateStream, blockstore: WritableStorage, options: ImporterOptions = {}): AsyncGenerator<ImportResult, void, unknown> {\n  let candidates: AsyncIterable<FileCandidate | DirectoryCandidate> | Iterable<FileCandidate | DirectoryCandidate>\n\n  if (Symbol.asyncIterator in source || Symbol.iterator in source) {\n    candidates = source\n  } else {\n    candidates = [source]\n  }\n\n  const wrapWithDirectory = options.wrapWithDirectory ?? false\n  const shardSplitThresholdBytes = options.shardSplitThresholdBytes ?? 262144\n  const cidVersion = options.cidVersion ?? 1\n  const rawLeaves = options.rawLeaves ?? true\n  const leafType = options.leafType ?? 'file'\n  const fileImportConcurrency = options.fileImportConcurrency ?? 50\n  const blockWriteConcurrency = options.blockWriteConcurrency ?? 10\n  const reduceSingleLeafToSelf = options.reduceSingleLeafToSelf ?? true\n\n  const chunker = options.chunker ?? fixedSize()\n  const chunkValidator = options.chunkValidator ?? defaultChunkValidator()\n  const buildDag: DAGBuilder = options.dagBuilder ?? defaultDagBuilder({\n    chunker,\n    chunkValidator,\n    wrapWithDirectory,\n    layout: options.layout ?? balanced(),\n    bufferImporter: options.bufferImporter ?? defaultBufferImporter({\n      cidVersion,\n      rawLeaves,\n      leafType,\n      onProgress: options.onProgress\n    }),\n    blockWriteConcurrency,\n    reduceSingleLeafToSelf,\n    cidVersion,\n    onProgress: options.onProgress\n  })\n  const buildTree: TreeBuilder = options.treeBuilder ?? defaultTreeBuilder({\n    wrapWithDirectory,\n    shardSplitThresholdBytes,\n    cidVersion,\n    onProgress: options.onProgress\n  })\n\n  for await (const entry of buildTree(parallelBatch(buildDag(candidates, blockstore), fileImportConcurrency), blockstore)) {\n    yield {\n      cid: entry.cid,\n      path: entry.path,\n      unixfs: entry.unixfs,\n      size: entry.size\n    }\n  }\n}\n\n/**\n * `importFile` is similar to `importer` except it accepts a single\n * `FileCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importFile } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: FileCandidate = {\n *   path: './foo.txt',\n *   content: Uint8Array.from([0, 1, 2, 3, 4])\n * }\n *\n * const entry = await importFile(input, blockstore)\n * ```\n */\nexport async function importFile (content: FileCandidate, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  const result = await first(importer([content], blockstore, options))\n\n  if (result == null) {\n    throw errcode(new Error('Nothing imported'), 'ERR_INVALID_PARAMS')\n  }\n\n  return result\n}\n\n/**\n * `importDir` is similar to `importer` except it accepts a single\n * `DirectoryCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importDirectory } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: DirectoryCandidate = {\n *   path: './foo.txt'\n * }\n *\n * const entry = await importDirectory(input, blockstore)\n * ```\n */\nexport async function importDirectory (content: DirectoryCandidate, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  const result = await first(importer([content], blockstore, options))\n\n  if (result == null) {\n    throw errcode(new Error('Nothing imported'), 'ERR_INVALID_PARAMS')\n  }\n\n  return result\n}\n\n/**\n * `importBytes` accepts a single Uint8Array and returns a promise\n * of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importBytes } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = Uint8Array.from([0, 1, 2, 3, 4])\n *\n * const entry = await importBytes(input, blockstore)\n * ```\n */\nexport async function importBytes (buf: ImportContent, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  return await importFile({\n    content: buf\n  }, blockstore, options)\n}\n\n/**\n * `importByteStream` accepts a single stream of Uint8Arrays and\n * returns a promise of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importByteStream } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [\n *   Uint8Array.from([0, 1, 2, 3, 4]),\n *   Uint8Array.from([5, 6, 7, 8, 9])\n * ]\n *\n * const entry = await importByteStream(input, blockstore)\n * ```\n */\nexport async function importByteStream (bufs: ByteStream, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  return await importFile({\n    content: bufs\n  }, blockstore, options)\n}\n", "import batch from 'it-batch'\n\ninterface Success<T> {\n  ok: true\n  value: T\n}\n\ninterface Failure {\n  ok: false\n  err: Error\n}\n\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function * parallelBatch <T> (source: AsyncIterable<() => Promise<T>> | Iterable<() => Promise<T>>, size: number = 1): AsyncGenerator<T, void, undefined> {\n  for await (const tasks of batch(source, size)) {\n    const things: Array<Promise<Success<T> | Failure>> = tasks.map(\n      async (p: () => Promise<T>) => {\n        return p().then(value => ({ ok: true, value }), err => ({ ok: false, err }))\n      })\n\n    for (let i = 0; i < things.length; i++) {\n      const result = await things[i]\n\n      if (result.ok) {\n        yield result.value\n      } else {\n        throw result.err\n      }\n    }\n  }\n}\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Takes an (async) iterable that emits things and returns an async iterable that\n * emits those things in fixed-sized batches\n */\nfunction batch <T> (source: Iterable<T>, size?: number): Generator<T[], void, undefined>\nfunction batch <T> (source: Iterable<T> | AsyncIterable<T>, size?: number): AsyncGenerator<T[], void, undefined>\nfunction batch <T> (source: Iterable<T> | AsyncIterable<T>, size: number = 1): Generator<T[], void, undefined> | AsyncGenerator<T[], void, undefined> {\n  size = Number(size)\n\n  if (isAsyncIterable(source)) {\n    return (async function * () {\n      let things: T[] = []\n\n      if (size < 1) {\n        size = 1\n      }\n\n      if (size !== Math.round(size)) {\n        throw new Error('Batch size must be an integer')\n      }\n\n      for await (const thing of source) {\n        things.push(thing)\n\n        while (things.length >= size) {\n          yield things.slice(0, size)\n\n          things = things.slice(size)\n        }\n      }\n\n      while (things.length > 0) {\n        yield things.slice(0, size)\n\n        things = things.slice(size)\n      }\n    }())\n  }\n\n  return (function * () {\n    let things: T[] = []\n\n    if (size < 1) {\n      size = 1\n    }\n\n    if (size !== Math.round(size)) {\n      throw new Error('Batch size must be an integer')\n    }\n\n    for (const thing of source) {\n      things.push(thing)\n\n      while (things.length >= size) {\n        yield things.slice(0, size)\n\n        things = things.slice(size)\n      }\n    }\n\n    while (things.length > 0) {\n      yield things.slice(0, size)\n\n      things = things.slice(size)\n    }\n  }())\n}\n\nexport default batch\n", "import { dirBuilder, DirBuilderOptions } from './dir.js'\nimport { fileBuilder, FileBuilderOptions } from './file.js'\nimport errCode from 'err-code'\nimport type { Directory, File, FileCandidate, ImportCandidate, ImporterProgressEvents, InProgressImportResult, WritableStorage } from '../index.js'\nimport type { ChunkValidator } from './validate-chunks.js'\nimport type { Chunker } from '../chunker/index.js'\nimport type { ProgressEvent, ProgressOptions } from 'progress-events'\nimport { CustomProgressEvent } from 'progress-events'\n\n/**\n * Passed to the onProgress callback while importing files\n */\nexport interface ImportReadProgress {\n  /**\n   * How many bytes we have read from this source so far\n   */\n  bytesRead: bigint\n\n  /**\n   * The size of the current chunk\n   */\n  chunkSize: bigint\n\n  /**\n   * The path of the file being imported, if one was specified\n   */\n  path?: string\n}\n\nexport type DagBuilderProgressEvents =\n  ProgressEvent<'unixfs:importer:progress:file:read', ImportReadProgress>\n\nfunction isIterable (thing: any): thing is Iterable<any> {\n  return Symbol.iterator in thing\n}\n\nfunction isAsyncIterable (thing: any): thing is AsyncIterable<any> {\n  return Symbol.asyncIterator in thing\n}\n\nfunction contentAsAsyncIterable (content: Uint8Array | AsyncIterable<Uint8Array> | Iterable<Uint8Array>): AsyncIterable<Uint8Array> {\n  try {\n    if (content instanceof Uint8Array) {\n      return (async function * () {\n        yield content\n      }())\n    } else if (isIterable(content)) {\n      return (async function * () {\n        yield * content\n      }())\n    } else if (isAsyncIterable(content)) {\n      return content\n    }\n  } catch {\n    throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n  }\n\n  throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n}\n\nexport interface DagBuilderOptions extends FileBuilderOptions, DirBuilderOptions, ProgressOptions<ImporterProgressEvents> {\n  chunker: Chunker\n  chunkValidator: ChunkValidator\n  wrapWithDirectory: boolean\n}\n\nexport type ImporterSourceStream = AsyncIterable<ImportCandidate> | Iterable<ImportCandidate>\n\nexport interface DAGBuilder {\n  (source: ImporterSourceStream, blockstore: WritableStorage): AsyncIterable<() => Promise<InProgressImportResult>>\n}\n\nexport function defaultDagBuilder (options: DagBuilderOptions): DAGBuilder {\n  return async function * dagBuilder (source, blockstore) {\n    for await (const entry of source) {\n      let originalPath: string | undefined\n\n      if (entry.path != null) {\n        originalPath = entry.path\n        entry.path = entry.path\n          .split('/')\n          .filter(path => path != null && path !== '.')\n          .join('/')\n      }\n\n      if (isFileCandidate(entry)) {\n        const file: File = {\n          path: entry.path,\n          mtime: entry.mtime,\n          mode: entry.mode,\n          content: (async function * () {\n            let bytesRead = 0n\n\n            for await (const chunk of options.chunker(options.chunkValidator(contentAsAsyncIterable(entry.content)))) {\n              const currentChunkSize = BigInt(chunk.byteLength)\n              bytesRead += currentChunkSize\n\n              options.onProgress?.(new CustomProgressEvent<ImportReadProgress>('unixfs:importer:progress:file:read', {\n                bytesRead,\n                chunkSize: currentChunkSize,\n                path: entry.path\n              }))\n\n              yield chunk\n            }\n          })(),\n          originalPath\n        }\n\n        yield async () => await fileBuilder(file, blockstore, options)\n      } else if (entry.path != null) {\n        const dir: Directory = {\n          path: entry.path,\n          mtime: entry.mtime,\n          mode: entry.mode,\n          originalPath\n        }\n\n        yield async () => await dirBuilder(dir, blockstore, options)\n      } else {\n        throw new Error('Import candidate must have content or path or both')\n      }\n    }\n  }\n}\n\nfunction isFileCandidate (entry: any): entry is FileCandidate {\n  return entry.content != null\n}\n", "import { UnixFS } from 'ipfs-unixfs'\nimport { persist } from '../utils/persist.js'\nimport { encode, prepare } from '@ipld/dag-pb'\nimport type { Directory, InProgressImportResult, WritableStorage } from '../index.js'\nimport type { Version } from 'multiformats/cid'\n\nexport interface DirBuilderOptions {\n  cidVersion: Version\n  signal?: AbortSignal\n}\n\nexport const dirBuilder = async (dir: Directory, blockstore: WritableStorage, options: DirBuilderOptions): Promise<InProgressImportResult> => {\n  const unixfs = new UnixFS({\n    type: 'directory',\n    mtime: dir.mtime,\n    mode: dir.mode\n  })\n\n  const block = encode(prepare({ Data: unixfs.marshal() }))\n  const cid = await persist(block, blockstore, options)\n  const path = dir.path\n\n  return {\n    cid,\n    path,\n    unixfs,\n    size: BigInt(block.length),\n    originalPath: dir.originalPath,\n    block\n  }\n}\n", "import errcode from 'err-code'\nimport { Data as PBData } from './unixfs.js'\n\nexport interface Mtime {\n  secs: bigint\n  nsecs?: number\n}\n\nexport type MtimeLike = Mtime | { Seconds: number, FractionalNanoseconds?: number } | [number, number] | Date\n\nconst types: Record<string, string> = {\n  Raw: 'raw',\n  Directory: 'directory',\n  File: 'file',\n  Metadata: 'metadata',\n  Symlink: 'symlink',\n  HAMTShard: 'hamt-sharded-directory'\n}\n\nconst dirTypes = [\n  'directory',\n  'hamt-sharded-directory'\n]\n\nconst DEFAULT_FILE_MODE = parseInt('0644', 8)\nconst DEFAULT_DIRECTORY_MODE = parseInt('0755', 8)\n\nexport interface UnixFSOptions {\n  type?: string\n  data?: Uint8Array\n  blockSizes?: bigint[]\n  hashType?: bigint\n  fanout?: bigint\n  mtime?: Mtime\n  mode?: number\n}\n\nclass UnixFS {\n  /**\n   * Decode from protobuf https://github.com/ipfs/specs/blob/master/UNIXFS.md\n   */\n  static unmarshal (marshaled: Uint8Array): UnixFS {\n    const message = PBData.decode(marshaled)\n\n    const data = new UnixFS({\n      type: types[message.Type != null ? message.Type.toString() : 'File'],\n      data: message.Data,\n      blockSizes: message.blocksizes,\n      mode: message.mode,\n      mtime: message.mtime != null\n        ? {\n            secs: message.mtime.Seconds ?? 0n,\n            nsecs: message.mtime.FractionalNanoseconds\n          }\n        : undefined\n    })\n\n    // make sure we honour the original mode\n    data._originalMode = message.mode ?? 0\n\n    return data\n  }\n\n  public type: string\n  public data?: Uint8Array\n  public blockSizes: bigint[]\n  public hashType?: bigint\n  public fanout?: bigint\n  public mtime?: Mtime\n\n  private _mode?: number\n  private _originalMode: number\n\n  constructor (options: UnixFSOptions = {\n    type: 'file'\n  }) {\n    const {\n      type,\n      data,\n      blockSizes,\n      hashType,\n      fanout,\n      mtime,\n      mode\n    } = options\n\n    if (type != null && !Object.values(types).includes(type)) {\n      throw errcode(new Error('Type: ' + type + ' is not valid'), 'ERR_INVALID_TYPE')\n    }\n\n    this.type = type ?? 'file'\n    this.data = data\n    this.hashType = hashType\n    this.fanout = fanout\n    this.blockSizes = blockSizes ?? []\n    this._originalMode = 0\n    this.mode = mode\n    this.mtime = mtime\n  }\n\n  set mode (mode: number | undefined) {\n    if (mode == null) {\n      this._mode = this.isDirectory() ? DEFAULT_DIRECTORY_MODE : DEFAULT_FILE_MODE\n    } else {\n      this._mode = (mode & 0xFFF)\n    }\n  }\n\n  get mode (): number | undefined {\n    return this._mode\n  }\n\n  isDirectory (): boolean {\n    return dirTypes.includes(this.type)\n  }\n\n  addBlockSize (size: bigint): void {\n    this.blockSizes.push(size)\n  }\n\n  removeBlockSize (index: number): void {\n    this.blockSizes.splice(index, 1)\n  }\n\n  /**\n   * Returns `0n` for directories or `data.length + sum(blockSizes)` for everything else\n   */\n  fileSize (): bigint {\n    if (this.isDirectory()) {\n      // dirs don't have file size\n      return 0n\n    }\n\n    let sum = 0n\n    this.blockSizes.forEach((size) => {\n      sum += size\n    })\n\n    if (this.data != null) {\n      sum += BigInt(this.data.length)\n    }\n\n    return sum\n  }\n\n  /**\n   * encode to protobuf Uint8Array\n   */\n  marshal (): Uint8Array {\n    let type\n\n    switch (this.type) {\n      case 'raw': type = PBData.DataType.Raw; break\n      case 'directory': type = PBData.DataType.Directory; break\n      case 'file': type = PBData.DataType.File; break\n      case 'metadata': type = PBData.DataType.Metadata; break\n      case 'symlink': type = PBData.DataType.Symlink; break\n      case 'hamt-sharded-directory': type = PBData.DataType.HAMTShard; break\n      default:\n        throw errcode(new Error(`Type: ${type} is not valid`), 'ERR_INVALID_TYPE')\n    }\n\n    let data = this.data\n\n    if (this.data == null || this.data.length === 0) {\n      data = undefined\n    }\n\n    let mode\n\n    if (this.mode != null) {\n      mode = (this._originalMode & 0xFFFFF000) | (this.mode ?? 0)\n\n      if (mode === DEFAULT_FILE_MODE && !this.isDirectory()) {\n        mode = undefined\n      }\n\n      if (mode === DEFAULT_DIRECTORY_MODE && this.isDirectory()) {\n        mode = undefined\n      }\n    }\n\n    let mtime\n\n    if (this.mtime != null) {\n      mtime = {\n        Seconds: this.mtime.secs,\n        FractionalNanoseconds: this.mtime.nsecs\n      }\n    }\n\n    return PBData.encode({\n      Type: type,\n      Data: data,\n      filesize: this.isDirectory() ? undefined : this.fileSize(),\n      blocksizes: this.blockSizes,\n      hashType: this.hashType,\n      fanout: this.fanout,\n      mode,\n      mtime\n    })\n  }\n}\n\nexport { UnixFS }\n", "/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\n\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime'\nimport type { Codec } from 'protons-runtime'\nimport type { Uint8ArrayList } from 'uint8arraylist'\n\nexport interface Data {\n  Type?: Data.DataType\n  Data?: Uint8Array\n  filesize?: bigint\n  blocksizes: bigint[]\n  hashType?: bigint\n  fanout?: bigint\n  mode?: number\n  mtime?: UnixTime\n}\n\nexport namespace Data {\n  export enum DataType {\n    Raw = 'Raw',\n    Directory = 'Directory',\n    File = 'File',\n    Metadata = 'Metadata',\n    Symlink = 'Symlink',\n    HAMTShard = 'HAMTShard'\n  }\n\n  enum __DataTypeValues {\n    Raw = 0,\n    Directory = 1,\n    File = 2,\n    Metadata = 3,\n    Symlink = 4,\n    HAMTShard = 5\n  }\n\n  export namespace DataType {\n    export const codec = (): Codec<DataType> => {\n      return enumeration<DataType>(__DataTypeValues)\n    }\n  }\n\n  let _codec: Codec<Data>\n\n  export const codec = (): Codec<Data> => {\n    if (_codec == null) {\n      _codec = message<Data>((obj, w, opts = {}) => {\n        if (opts.lengthDelimited !== false) {\n          w.fork()\n        }\n\n        if (obj.Type != null) {\n          w.uint32(8)\n          Data.DataType.codec().encode(obj.Type, w)\n        }\n\n        if (obj.Data != null) {\n          w.uint32(18)\n          w.bytes(obj.Data)\n        }\n\n        if (obj.filesize != null) {\n          w.uint32(24)\n          w.uint64(obj.filesize)\n        }\n\n        if (obj.blocksizes != null) {\n          for (const value of obj.blocksizes) {\n            w.uint32(32)\n            w.uint64(value)\n          }\n        }\n\n        if (obj.hashType != null) {\n          w.uint32(40)\n          w.uint64(obj.hashType)\n        }\n\n        if (obj.fanout != null) {\n          w.uint32(48)\n          w.uint64(obj.fanout)\n        }\n\n        if (obj.mode != null) {\n          w.uint32(56)\n          w.uint32(obj.mode)\n        }\n\n        if (obj.mtime != null) {\n          w.uint32(66)\n          UnixTime.codec().encode(obj.mtime, w)\n        }\n\n        if (opts.lengthDelimited !== false) {\n          w.ldelim()\n        }\n      }, (reader, length) => {\n        const obj: any = {\n          blocksizes: []\n        }\n\n        const end = length == null ? reader.len : reader.pos + length\n\n        while (reader.pos < end) {\n          const tag = reader.uint32()\n\n          switch (tag >>> 3) {\n            case 1:\n              obj.Type = Data.DataType.codec().decode(reader)\n              break\n            case 2:\n              obj.Data = reader.bytes()\n              break\n            case 3:\n              obj.filesize = reader.uint64()\n              break\n            case 4:\n              obj.blocksizes.push(reader.uint64())\n              break\n            case 5:\n              obj.hashType = reader.uint64()\n              break\n            case 6:\n              obj.fanout = reader.uint64()\n              break\n            case 7:\n              obj.mode = reader.uint32()\n              break\n            case 8:\n              obj.mtime = UnixTime.codec().decode(reader, reader.uint32())\n              break\n            default:\n              reader.skipType(tag & 7)\n              break\n          }\n        }\n\n        return obj\n      })\n    }\n\n    return _codec\n  }\n\n  export const encode = (obj: Partial<Data>): Uint8Array => {\n    return encodeMessage(obj, Data.codec())\n  }\n\n  export const decode = (buf: Uint8Array | Uint8ArrayList): Data => {\n    return decodeMessage(buf, Data.codec())\n  }\n}\n\nexport interface UnixTime {\n  Seconds?: bigint\n  FractionalNanoseconds?: number\n}\n\nexport namespace UnixTime {\n  let _codec: Codec<UnixTime>\n\n  export const codec = (): Codec<UnixTime> => {\n    if (_codec == null) {\n      _codec = message<UnixTime>((obj, w, opts = {}) => {\n        if (opts.lengthDelimited !== false) {\n          w.fork()\n        }\n\n        if (obj.Seconds != null) {\n          w.uint32(8)\n          w.int64(obj.Seconds)\n        }\n\n        if (obj.FractionalNanoseconds != null) {\n          w.uint32(21)\n          w.fixed32(obj.FractionalNanoseconds)\n        }\n\n        if (opts.lengthDelimited !== false) {\n          w.ldelim()\n        }\n      }, (reader, length) => {\n        const obj: any = {}\n\n        const end = length == null ? reader.len : reader.pos + length\n\n        while (reader.pos < end) {\n          const tag = reader.uint32()\n\n          switch (tag >>> 3) {\n            case 1:\n              obj.Seconds = reader.int64()\n              break\n            case 2:\n              obj.FractionalNanoseconds = reader.fixed32()\n              break\n            default:\n              reader.skipType(tag & 7)\n              break\n          }\n        }\n\n        return obj\n      })\n    }\n\n    return _codec\n  }\n\n  export const encode = (obj: Partial<UnixTime>): Uint8Array => {\n    return encodeMessage(obj, UnixTime.codec())\n  }\n\n  export const decode = (buf: Uint8Array | Uint8ArrayList): UnixTime => {\n    return decodeMessage(buf, UnixTime.codec())\n  }\n}\n\nexport interface Metadata {\n  MimeType?: string\n}\n\nexport namespace Metadata {\n  let _codec: Codec<Metadata>\n\n  export const codec = (): Codec<Metadata> => {\n    if (_codec == null) {\n      _codec = message<Metadata>((obj, w, opts = {}) => {\n        if (opts.lengthDelimited !== false) {\n          w.fork()\n        }\n\n        if (obj.MimeType != null) {\n          w.uint32(10)\n          w.string(obj.MimeType)\n        }\n\n        if (opts.lengthDelimited !== false) {\n          w.ldelim()\n        }\n      }, (reader, length) => {\n        const obj: any = {}\n\n        const end = length == null ? reader.len : reader.pos + length\n\n        while (reader.pos < end) {\n          const tag = reader.uint32()\n\n          switch (tag >>> 3) {\n            case 1:\n              obj.MimeType = reader.string()\n              break\n            default:\n              reader.skipType(tag & 7)\n              break\n          }\n        }\n\n        return obj\n      })\n    }\n\n    return _codec\n  }\n\n  export const encode = (obj: Partial<Metadata>): Uint8Array => {\n    return encodeMessage(obj, Metadata.codec())\n  }\n\n  export const decode = (buf: Uint8Array | Uint8ArrayList): Metadata => {\n    return decodeMessage(buf, Metadata.codec())\n  }\n}\n", "import type { Codec } from './codec.js'\n\nexport interface FieldDef {\n  name: string\n  codec: Codec<any>\n  optional?: true\n  repeats?: true\n  packed?: true\n}\n\nexport {\n  decodeMessage\n} from './decode.js'\n\nexport {\n  encodeMessage\n} from './encode.js'\n\nexport { enumeration } from './codecs/enum.js'\nexport { message } from './codecs/message.js'\nexport { reader, writer } from './utils.js'\nexport type { Codec, EncodeOptions } from './codec.js'\n\nexport interface Writer {\n  /**\n   * Current length\n   */\n  len: number\n\n  /**\n   * Writes an unsigned 32 bit value as a varint\n   */\n  uint32: (value: number) => Writer\n\n  /**\n   * Writes a signed 32 bit value as a varint`\n   */\n  int32: (value: number) => Writer\n\n  /**\n   * Writes a 32 bit value as a varint, zig-zag encoded\n   */\n  sint32: (value: number) => Writer\n\n  /**\n   * Writes an unsigned 64 bit value as a varint\n   */\n  uint64: (value: bigint) => Writer\n\n  /**\n   * Writes a signed 64 bit value as a varint\n   */\n  int64: (value: bigint) => Writer\n\n  /**\n   * Writes a signed 64 bit value as a varint, zig-zag encoded\n   */\n  sint64: (value: bigint) => Writer\n\n  /**\n   * Writes a boolish value as a varint\n   */\n  bool: (value: boolean) => Writer\n\n  /**\n   * Writes an unsigned 32 bit value as fixed 32 bits\n   */\n  fixed32: (value: number) => Writer\n\n  /**\n   * Writes a signed 32 bit value as fixed 32 bits\n   */\n  sfixed32: (value: number) => Writer\n\n  /**\n   * Writes an unsigned 64 bit value as fixed 64 bits\n   */\n  fixed64: (value: bigint) => Writer\n\n  /**\n   * Writes a signed 64 bit value as fixed 64 bits\n   */\n  sfixed64: (value: bigint) => Writer\n\n  /**\n   * Writes a float (32 bit)\n   */\n  float: (value: number) => Writer\n\n  /**\n   * Writes a double (64 bit float)\n   */\n  double: (value: number) => Writer\n\n  /**\n   * Writes a sequence of bytes\n   */\n  bytes: (value: Uint8Array) => Writer\n\n  /**\n   * Writes a string\n   */\n  string: (value: string) => Writer\n\n  /**\n   * Forks this writer's state by pushing it to a stack.\n   * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n   */\n  fork: () => Writer\n\n  /**\n   * Resets this instance to the last state.\n   */\n  reset: () => Writer\n\n  /**\n   * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n   */\n  ldelim: () => Writer\n\n  /**\n   * Finishes the write operation\n   */\n  finish: () => Uint8Array\n}\n\nexport interface Reader {\n  /**\n   * Read buffer\n   */\n  buf: Uint8Array\n\n  /**\n   * Read buffer position\n   */\n  pos: number\n\n  /**\n   * Read buffer length\n   */\n  len: number\n\n  /**\n   * Reads a varint as an unsigned 32 bit value\n   */\n  uint32: () => number\n\n  /**\n   * Reads a varint as a signed 32 bit value\n   */\n  int32: () => number\n\n  /**\n   * Reads a zig-zag encoded varint as a signed 32 bit value\n   */\n  sint32: () => number\n\n  /**\n   * Reads a varint as a boolean\n   */\n  bool: () => boolean\n\n  /**\n   * Reads fixed 32 bits as an unsigned 32 bit integer\n   */\n  fixed32: () => number\n\n  /**\n   * Reads fixed 32 bits as a signed 32 bit integer\n   */\n  sfixed32: () => number\n\n  /**\n   * Reads a float (32 bit) as a number\n   */\n  float: () => number\n\n  /**\n   * Reads a double (64 bit float) as a number\n   */\n  double: () => number\n\n  /**\n   * Reads a sequence of bytes preceded by its length as a varint\n   */\n  bytes: () => Uint8Array\n\n  /**\n   * Reads a string preceded by its byte length as a varint\n   */\n  string: () => string\n\n  /**\n   * Skips the specified number of bytes if specified, otherwise skips a varints`\n   */\n  skip: (length?: number) => void\n\n  /**\n   * Skips the next element of the specified wire type\n   */\n  skipType: (wireType: number) => void\n\n  /**\n   * Reads a varint as a signed 64 bit value\n   */\n  int64: () => bigint\n\n  /**\n   * Reads a varint as an unsigned 64 bit value\n   */\n  uint64: () => bigint\n\n  /**\n   * Reads a zig-zag encoded varint as a signed 64 bit value\n   */\n  sint64: () => bigint\n\n  /**\n   * Reads fixed 64 bits\n   */\n  fixed64: () => bigint\n\n  /**\n   * Reads zig-zag encoded fixed 64 bits\n   */\n  sfixed64: () => bigint\n}\n", "import type { Uint8ArrayList } from 'uint8arraylist'\n\nimport type { Codec } from './codec.js'\nimport { reader } from './utils.js'\n\nexport function decodeMessage <T> (buf: Uint8Array | Uint8ArrayList, codec: Codec<T>): T {\n  const r = reader(buf instanceof Uint8Array ? buf : buf.subarray())\n\n  return codec.decode(r)\n}\n", "// @ts-expect-error no types\nimport ReaderClass from 'protobufjs/src/reader.js'\n// @ts-expect-error no types\nimport ReaderBufferClass from 'protobufjs/src/reader_buffer.js'\n// @ts-expect-error no types\nimport util from 'protobufjs/src/util/minimal.js'\n// @ts-expect-error no types\nimport WriterClass from 'protobufjs/src/writer.js'\n// @ts-expect-error no types\nimport WriterBufferClass from 'protobufjs/src/writer_buffer.js'\n\nimport type { Reader, Writer } from './index.js'\n\nfunction configure (): void {\n  util._configure()\n  ReaderClass._configure(ReaderBufferClass)\n  WriterClass._configure(WriterBufferClass)\n}\n\n// Set up buffer utility according to the environment\nconfigure()\n\n// monkey patch the reader to add native bigint support\nconst methods = [\n  'uint64', 'int64', 'sint64', 'fixed64', 'sfixed64'\n]\n\nfunction patchReader (obj: any): any {\n  for (const method of methods) {\n    if (obj[method] == null) {\n      continue\n    }\n\n    const original = obj[method]\n    obj[method] = function (): bigint {\n      return BigInt(original.call(this).toString())\n    }\n  }\n\n  return obj\n}\n\nexport function reader (buf: Uint8Array): Reader {\n  return patchReader(new ReaderClass(buf))\n}\n\nfunction patchWriter (obj: any): any {\n  for (const method of methods) {\n    if (obj[method] == null) {\n      continue\n    }\n\n    const original = obj[method]\n    obj[method] = function (val: bigint) {\n      return original.call(this, val.toString())\n    }\n  }\n\n  return obj\n}\n\nexport function writer (): Writer {\n  return patchWriter(WriterClass.create())\n}\n", "import type { Codec } from './codec.js'\nimport { writer } from './utils.js'\n\nexport function encodeMessage <T> (message: T, codec: Codec<T>): Uint8Array {\n  const w = writer()\n\n  codec.encode(message, w, {\n    lengthDelimited: false\n  })\n\n  return w.finish()\n}\n", "\nimport { createCodec, CODEC_TYPES } from '../codec.js'\nimport type { DecodeFunction, EncodeFunction, Codec } from '../codec.js'\n\nexport function enumeration <T> (v: any): Codec<T> {\n  function findValue (val: string | number): number {\n    // Use the reverse mapping to look up the enum key for the stored value\n    // https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings\n    if (v[val.toString()] == null) {\n      throw new Error('Invalid enum value')\n    }\n\n    return v[val]\n  }\n\n  const encode: EncodeFunction<number | string> = function enumEncode (val, writer) {\n    const enumValue = findValue(val)\n\n    writer.int32(enumValue)\n  }\n\n  const decode: DecodeFunction<number | string> = function enumDecode (reader) {\n    const val = reader.int32()\n\n    return findValue(val)\n  }\n\n  // @ts-expect-error yeah yeah\n  return createCodec('enum', CODEC_TYPES.VARINT, encode, decode)\n}\n", "import type { Writer, Reader } from './index.js'\n\n// https://developers.google.com/protocol-buffers/docs/encoding#structure\nexport enum CODEC_TYPES {\n  VARINT = 0,\n  BIT64,\n  LENGTH_DELIMITED,\n  START_GROUP,\n  END_GROUP,\n  BIT32\n}\n\nexport interface EncodeOptions {\n  lengthDelimited?: boolean\n  writeDefaults?: boolean\n}\n\nexport interface EncodeFunction<T> {\n  (value: Partial<T>, writer: Writer, opts?: EncodeOptions): void\n}\n\nexport interface DecodeFunction<T> {\n  (reader: Reader, length?: number): T\n}\n\nexport interface Codec<T> {\n  name: string\n  type: CODEC_TYPES\n  encode: EncodeFunction<T>\n  decode: DecodeFunction<T>\n}\n\nexport function createCodec <T> (name: string, type: CODEC_TYPES, encode: EncodeFunction<T>, decode: DecodeFunction<T>): Codec<T> {\n  return {\n    name,\n    type,\n    encode,\n    decode\n  }\n}\n", "import { createCodec, CODEC_TYPES, EncodeOptions } from '../codec.js'\nimport type { Codec } from '../codec.js'\nimport type { Reader, Writer } from '../index.js'\n\nexport interface Factory<A, T> {\n  new (obj: A): T\n}\n\nexport function message <T> (encode: (obj: Partial<T>, writer: Writer, opts?: EncodeOptions) => void, decode: (reader: Reader, length?: number) => T): Codec<T> {\n  return createCodec('message', CODEC_TYPES.LENGTH_DELIMITED, encode, decode)\n}\n", "import { CID } from 'multiformats/cid'\nimport * as dagPb from '@ipld/dag-pb'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport type { WritableStorage } from '../index.js'\nimport type { BlockCodec } from 'multiformats/codecs/interface'\nimport type { Version as CIDVersion } from 'multiformats/cid'\nimport type { ProgressOptions } from 'progress-events'\n\nexport interface PersistOptions extends ProgressOptions {\n  codec?: BlockCodec<any, any>\n  cidVersion: CIDVersion\n  signal?: AbortSignal\n}\n\nexport const persist = async (buffer: Uint8Array, blockstore: WritableStorage, options: PersistOptions): Promise<CID> => {\n  if (options.codec == null) {\n    options.codec = dagPb\n  }\n\n  const multihash = await sha256.digest(buffer)\n  const cid = CID.create(options.cidVersion, options.codec.code, multihash)\n\n  await blockstore.put(cid, buffer, options)\n\n  return cid\n}\n", "import { CID } from 'multiformats/cid'\nimport { decodeNode } from './pb-decode.js'\nimport { encodeNode } from './pb-encode.js'\nimport { prepare, validate, createNode, createLink } from './util.js'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nexport const name = 'dag-pb'\nexport const code = 0x70\n\n/**\n * @param {PBNode} node\n * @returns {ByteView<PBNode>}\n */\nexport function encode (node) {\n  validate(node)\n\n  const pbn = {}\n  if (node.Links) {\n    pbn.Links = node.Links.map((l) => {\n      const link = {}\n      if (l.Hash) {\n        link.Hash = l.Hash.bytes // cid -> bytes\n      }\n      if (l.Name !== undefined) {\n        link.Name = l.Name\n      }\n      if (l.Tsize !== undefined) {\n        link.Tsize = l.Tsize\n      }\n      return link\n    })\n  }\n  if (node.Data) {\n    pbn.Data = node.Data\n  }\n\n  return encodeNode(pbn)\n}\n\n/**\n * @param {ByteView<PBNode>} bytes\n * @returns {PBNode}\n */\nexport function decode (bytes) {\n  const pbn = decodeNode(bytes)\n\n  const node = {}\n\n  if (pbn.Data) {\n    node.Data = pbn.Data\n  }\n\n  if (pbn.Links) {\n    node.Links = pbn.Links.map((l) => {\n      const link = {}\n      try {\n        link.Hash = CID.decode(l.Hash)\n      } catch (e) {}\n      if (!link.Hash) {\n        throw new Error('Invalid Hash field found in link, expected CID')\n      }\n      if (l.Name !== undefined) {\n        link.Name = l.Name\n      }\n      if (l.Tsize !== undefined) {\n        link.Tsize = l.Tsize\n      }\n      return link\n    })\n  }\n\n  return node\n}\n\nexport { prepare, validate, createNode, createLink }\n", "const textDecoder = new TextDecoder()\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[number, number]}\n */\nfunction decodeVarint (bytes, offset) {\n  let v = 0\n\n  for (let shift = 0; ; shift += 7) {\n    /* c8 ignore next 3 */\n    if (shift >= 64) {\n      throw new Error('protobuf: varint overflow')\n    }\n    /* c8 ignore next 3 */\n    if (offset >= bytes.length) {\n      throw new Error('protobuf: unexpected end of data')\n    }\n\n    const b = bytes[offset++]\n    v += shift < 28 ? (b & 0x7f) << shift : (b & 0x7f) * (2 ** shift)\n    if (b < 0x80) {\n      break\n    }\n  }\n  return [v, offset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[Uint8Array, number]}\n */\nfunction decodeBytes (bytes, offset) {\n  let byteLen\n  ;[byteLen, offset] = decodeVarint(bytes, offset)\n  const postOffset = offset + byteLen\n\n  /* c8 ignore next 3 */\n  if (byteLen < 0 || postOffset < 0) {\n    throw new Error('protobuf: invalid length')\n  }\n  /* c8 ignore next 3 */\n  if (postOffset > bytes.length) {\n    throw new Error('protobuf: unexpected end of data')\n  }\n\n  return [bytes.subarray(offset, postOffset), postOffset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} index\n * @returns {[number, number, number]}\n */\nfunction decodeKey (bytes, index) {\n  let wire\n  ;[wire, index] = decodeVarint(bytes, index)\n  // [wireType, fieldNum, newIndex]\n  return [wire & 0x7, wire >> 3, index]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBLink}\n */\nfunction decodeLink (bytes) {\n  /** @type {RawPBLink} */\n  const link = {}\n  const l = bytes.length\n  let index = 0\n\n  while (index < l) {\n    let wireType, fieldNum\n    ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n    if (fieldNum === 1) {\n      if (link.Hash) {\n        throw new Error('protobuf: (PBLink) duplicate Hash section')\n      }\n      if (wireType !== 2) {\n        throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Hash`)\n      }\n      if (link.Name !== undefined) {\n        throw new Error('protobuf: (PBLink) invalid order, found Name before Hash')\n      }\n      if (link.Tsize !== undefined) {\n        throw new Error('protobuf: (PBLink) invalid order, found Tsize before Hash')\n      }\n\n      [link.Hash, index] = decodeBytes(bytes, index)\n    } else if (fieldNum === 2) {\n      if (link.Name !== undefined) {\n        throw new Error('protobuf: (PBLink) duplicate Name section')\n      }\n      if (wireType !== 2) {\n        throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Name`)\n      }\n      if (link.Tsize !== undefined) {\n        throw new Error('protobuf: (PBLink) invalid order, found Tsize before Name')\n      }\n\n      let byts\n      ;[byts, index] = decodeBytes(bytes, index)\n      link.Name = textDecoder.decode(byts)\n    } else if (fieldNum === 3) {\n      if (link.Tsize !== undefined) {\n        throw new Error('protobuf: (PBLink) duplicate Tsize section')\n      }\n      if (wireType !== 0) {\n        throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Tsize`)\n      }\n\n      [link.Tsize, index] = decodeVarint(bytes, index)\n    } else {\n      throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${fieldNum}`)\n    }\n  }\n\n  /* c8 ignore next 3 */\n  if (index > l) {\n    throw new Error('protobuf: (PBLink) unexpected end of data')\n  }\n\n  return link\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBNode}\n */\nexport function decodeNode (bytes) {\n  const l = bytes.length\n  let index = 0\n  /** @type {RawPBLink[]|void} */\n  let links\n  let linksBeforeData = false\n  /** @type {Uint8Array|void} */\n  let data\n\n  while (index < l) {\n    let wireType, fieldNum\n    ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n    if (wireType !== 2) {\n      throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${wireType}`)\n    }\n\n    if (fieldNum === 1) {\n      if (data) {\n        throw new Error('protobuf: (PBNode) duplicate Data section')\n      }\n\n      [data, index] = decodeBytes(bytes, index)\n      if (links) {\n        linksBeforeData = true\n      }\n    } else if (fieldNum === 2) {\n      if (linksBeforeData) { // interleaved Links/Data/Links\n        throw new Error('protobuf: (PBNode) duplicate Links section')\n      } else if (!links) {\n        links = []\n      }\n      let byts\n      ;[byts, index] = decodeBytes(bytes, index)\n      links.push(decodeLink(byts))\n    } else {\n      throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${fieldNum}`)\n    }\n  }\n\n  /* c8 ignore next 3 */\n  if (index > l) {\n    throw new Error('protobuf: (PBNode) unexpected end of data')\n  }\n\n  /** @type {RawPBNode} */\n  const node = {}\n  if (data) {\n    node.Data = data\n  }\n  node.Links = links || []\n  return node\n}\n", "const textEncoder = new TextEncoder()\nconst maxInt32 = 2 ** 32\nconst maxUInt32 = 2 ** 31\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n// the encoders work backward from the end of the bytes array\n\n/**\n * encodeLink() is passed a slice of the parent byte array that ends where this\n * link needs to end, so it packs to the right-most part of the passed `bytes`\n *\n * @param {RawPBLink} link\n * @param {Uint8Array} bytes\n * @returns {number}\n */\nfunction encodeLink (link, bytes) {\n  let i = bytes.length\n\n  if (typeof link.Tsize === 'number') {\n    if (link.Tsize < 0) {\n      throw new Error('Tsize cannot be negative')\n    }\n    if (!Number.isSafeInteger(link.Tsize)) {\n      throw new Error('Tsize too large for encoding')\n    }\n    i = encodeVarint(bytes, i, link.Tsize) - 1\n    bytes[i] = 0x18\n  }\n\n  if (typeof link.Name === 'string') {\n    const nameBytes = textEncoder.encode(link.Name)\n    i -= nameBytes.length\n    bytes.set(nameBytes, i)\n    i = encodeVarint(bytes, i, nameBytes.length) - 1\n    bytes[i] = 0x12\n  }\n\n  if (link.Hash) {\n    i -= link.Hash.length\n    bytes.set(link.Hash, i)\n    i = encodeVarint(bytes, i, link.Hash.length) - 1\n    bytes[i] = 0xa\n  }\n\n  return bytes.length - i\n}\n\n/**\n * Encodes a PBNode into a new byte array of precisely the correct size\n *\n * @param {RawPBNode} node\n * @returns {Uint8Array}\n */\nexport function encodeNode (node) {\n  const size = sizeNode(node)\n  const bytes = new Uint8Array(size)\n  let i = size\n\n  if (node.Data) {\n    i -= node.Data.length\n    bytes.set(node.Data, i)\n    i = encodeVarint(bytes, i, node.Data.length) - 1\n    bytes[i] = 0xa\n  }\n\n  if (node.Links) {\n    for (let index = node.Links.length - 1; index >= 0; index--) {\n      const size = encodeLink(node.Links[index], bytes.subarray(0, i))\n      i -= size\n      i = encodeVarint(bytes, i, size) - 1\n      bytes[i] = 0x12\n    }\n  }\n\n  return bytes\n}\n\n/**\n * work out exactly how many bytes this link takes up\n *\n * @param {RawPBLink} link\n * @returns\n */\nfunction sizeLink (link) {\n  let n = 0\n\n  if (link.Hash) {\n    const l = link.Hash.length\n    n += 1 + l + sov(l)\n  }\n\n  if (typeof link.Name === 'string') {\n    const l = textEncoder.encode(link.Name).length\n    n += 1 + l + sov(l)\n  }\n\n  if (typeof link.Tsize === 'number') {\n    n += 1 + sov(link.Tsize)\n  }\n\n  return n\n}\n\n/**\n * Work out exactly how many bytes this node takes up\n *\n * @param {RawPBNode} node\n * @returns {number}\n */\nfunction sizeNode (node) {\n  let n = 0\n\n  if (node.Data) {\n    const l = node.Data.length\n    n += 1 + l + sov(l)\n  }\n\n  if (node.Links) {\n    for (const link of node.Links) {\n      const l = sizeLink(link)\n      n += 1 + l + sov(l)\n    }\n  }\n\n  return n\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @param {number} v\n * @returns {number}\n */\nfunction encodeVarint (bytes, offset, v) {\n  offset -= sov(v)\n  const base = offset\n\n  while (v >= maxUInt32) {\n    bytes[offset++] = (v & 0x7f) | 0x80\n    v /= 128\n  }\n\n  while (v >= 128) {\n    bytes[offset++] = (v & 0x7f) | 0x80\n    v >>>= 7\n  }\n\n  bytes[offset] = v\n\n  return base\n}\n\n/**\n * size of varint\n *\n * @param {number} x\n * @returns {number}\n */\nfunction sov (x) {\n  if (x % 2 === 0) {\n    x++\n  }\n  return Math.floor((len64(x) + 6) / 7)\n}\n\n/**\n * golang math/bits, how many bits does it take to represent this integer?\n *\n * @param {number} x\n * @returns {number}\n */\nfunction len64 (x) {\n  let n = 0\n  if (x >= maxInt32) {\n    x = Math.floor(x / maxInt32)\n    n = 32\n  }\n  if (x >= (1 << 16)) {\n    x >>>= 16\n    n += 16\n  }\n  if (x >= (1 << 8)) {\n    x >>>= 8\n    n += 8\n  }\n  return n + len8tab[x]\n}\n\n// golang math/bits\nconst len8tab = [\n  0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8\n]\n", "import { CID } from 'multiformats/cid'\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nconst pbNodeProperties = ['Data', 'Links']\nconst pbLinkProperties = ['Hash', 'Name', 'Tsize']\n\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {PBLink} a\n * @param {PBLink} b\n * @returns {number}\n */\nfunction linkComparator (a, b) {\n  if (a === b) {\n    return 0\n  }\n\n  const abuf = a.Name ? textEncoder.encode(a.Name) : []\n  const bbuf = b.Name ? textEncoder.encode(b.Name) : []\n\n  let x = abuf.length\n  let y = bbuf.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (abuf[i] !== bbuf[i]) {\n      x = abuf[i]\n      y = bbuf[i]\n      break\n    }\n  }\n\n  return x < y ? -1 : y < x ? 1 : 0\n}\n\n/**\n * @param {any} node\n * @param {string[]} properties\n * @returns {boolean}\n */\nfunction hasOnlyProperties (node, properties) {\n  return !Object.keys(node).some((p) => !properties.includes(p))\n}\n\n/**\n * Converts a CID, or a PBLink-like object to a PBLink\n *\n * @param {any} link\n * @returns {PBLink}\n */\nfunction asLink (link) {\n  if (typeof link.asCID === 'object') {\n    const Hash = CID.asCID(link)\n    if (!Hash) {\n      throw new TypeError('Invalid DAG-PB form')\n    }\n    return { Hash }\n  }\n\n  if (typeof link !== 'object' || Array.isArray(link)) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  const pbl = {}\n\n  if (link.Hash) {\n    let cid = CID.asCID(link.Hash)\n    try {\n      if (!cid) {\n        if (typeof link.Hash === 'string') {\n          cid = CID.parse(link.Hash)\n        } else if (link.Hash instanceof Uint8Array) {\n          cid = CID.decode(link.Hash)\n        }\n      }\n    } catch (/** @type {any} */ e) {\n      throw new TypeError(`Invalid DAG-PB form: ${e.message}`)\n    }\n\n    if (cid) {\n      pbl.Hash = cid\n    }\n  }\n\n  if (!pbl.Hash) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  if (typeof link.Name === 'string') {\n    pbl.Name = link.Name\n  }\n\n  if (typeof link.Tsize === 'number') {\n    pbl.Tsize = link.Tsize\n  }\n\n  return pbl\n}\n\n/**\n * @param {any} node\n * @returns {PBNode}\n */\nexport function prepare (node) {\n  if (node instanceof Uint8Array || typeof node === 'string') {\n    node = { Data: node }\n  }\n\n  if (typeof node !== 'object' || Array.isArray(node)) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  /** @type {PBNode} */\n  const pbn = {}\n\n  if (node.Data !== undefined) {\n    if (typeof node.Data === 'string') {\n      pbn.Data = textEncoder.encode(node.Data)\n    } else if (node.Data instanceof Uint8Array) {\n      pbn.Data = node.Data\n    } else {\n      throw new TypeError('Invalid DAG-PB form')\n    }\n  }\n\n  if (node.Links !== undefined) {\n    if (Array.isArray(node.Links)) {\n      pbn.Links = node.Links.map(asLink)\n      pbn.Links.sort(linkComparator)\n    } else {\n      throw new TypeError('Invalid DAG-PB form')\n    }\n  } else {\n    pbn.Links = []\n  }\n\n  return pbn\n}\n\n/**\n * @param {PBNode} node\n */\nexport function validate (node) {\n  /*\n  type PBLink struct {\n    Hash optional Link\n    Name optional String\n    Tsize optional Int\n  }\n\n  type PBNode struct {\n    Links [PBLink]\n    Data optional Bytes\n  }\n  */\n  // @ts-ignore private property for TS\n  if (!node || typeof node !== 'object' || Array.isArray(node) || node instanceof Uint8Array || (node['/'] && node['/'] === node.bytes)) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  if (!hasOnlyProperties(node, pbNodeProperties)) {\n    throw new TypeError('Invalid DAG-PB form (extraneous properties)')\n  }\n\n  if (node.Data !== undefined && !(node.Data instanceof Uint8Array)) {\n    throw new TypeError('Invalid DAG-PB form (Data must be bytes)')\n  }\n\n  if (!Array.isArray(node.Links)) {\n    throw new TypeError('Invalid DAG-PB form (Links must be a list)')\n  }\n\n  for (let i = 0; i < node.Links.length; i++) {\n    const link = node.Links[i]\n    // @ts-ignore private property for TS\n    if (!link || typeof link !== 'object' || Array.isArray(link) || link instanceof Uint8Array || (link['/'] && link['/'] === link.bytes)) {\n      throw new TypeError('Invalid DAG-PB form (bad link)')\n    }\n\n    if (!hasOnlyProperties(link, pbLinkProperties)) {\n      throw new TypeError('Invalid DAG-PB form (extraneous properties on link)')\n    }\n\n    if (link.Hash === undefined) {\n      throw new TypeError('Invalid DAG-PB form (link must have a Hash)')\n    }\n\n    // @ts-ignore private property for TS\n    if (link.Hash == null || !link.Hash['/'] || link.Hash['/'] !== link.Hash.bytes) {\n      throw new TypeError('Invalid DAG-PB form (link Hash must be a CID)')\n    }\n\n    if (link.Name !== undefined && typeof link.Name !== 'string') {\n      throw new TypeError('Invalid DAG-PB form (link Name must be a string)')\n    }\n\n    if (link.Tsize !== undefined) {\n      if (typeof link.Tsize !== 'number' || link.Tsize % 1 !== 0) {\n        throw new TypeError('Invalid DAG-PB form (link Tsize must be an integer)')\n      }\n      if (link.Tsize < 0) {\n        throw new TypeError('Invalid DAG-PB form (link Tsize cannot be negative)')\n      }\n    }\n\n    if (i > 0 && linkComparator(link, node.Links[i - 1]) === -1) {\n      throw new TypeError('Invalid DAG-PB form (links must be sorted by Name bytes)')\n    }\n  }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {PBLink[]} [links=[]]\n * @returns {PBNode}\n */\nexport function createNode (data, links = []) {\n  return prepare({ Data: data, Links: links })\n}\n\n/**\n * @param {string} name\n * @param {number} size\n * @param {CID} cid\n * @returns {PBLink}\n */\nexport function createLink (name, size, cid) {\n  return asLink({ Hash: cid, Name: name, Tsize: size })\n}\n", "/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n  /**\n   * @param {Uint8Array} data\n   */\n  async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n  name: 'sha2-256',\n  code: 0x12,\n  encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n  name: 'sha2-512',\n  code: 0x13,\n  encode: sha('SHA-512')\n})\n", "import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await<Uint8Array>} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher<Code>}\n */\nexport class Hasher {\n  /**\n   *\n   * @param {Name} name\n   * @param {Code} code\n   * @param {(input: Uint8Array) => Await<Uint8Array>} encode\n   */\n  constructor (name, code, encode) {\n    this.name = name\n    this.code = code\n    this.encode = encode\n  }\n\n  /**\n   * @param {Uint8Array} input\n   * @returns {Await<Digest.Digest<Code, number>>}\n   */\n  digest (input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input)\n      return result instanceof Uint8Array\n        ? Digest.create(this.code, result)\n        /* c8 ignore next 1 */\n        : result.then(digest => Digest.create(this.code, digest))\n    } else {\n      throw Error('Unknown type, must be binary type')\n      /* c8 ignore next 1 */\n    }\n  }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise<T>|T} Await\n */\n", "import { UnixFS } from 'ipfs-unixfs'\nimport { persist } from '../utils/persist.js'\nimport { encode, PBLink, PBNode, prepare } from '@ipld/dag-pb'\nimport parallelBatch from 'it-parallel-batch'\nimport * as rawCodec from 'multiformats/codecs/raw'\nimport type { BufferImporter, File, InProgressImportResult, WritableStorage, SingleBlockImportResult, ImporterProgressEvents } from '../index.js'\nimport type { FileLayout, Reducer } from '../layout/index.js'\nimport type { CID, Version } from 'multiformats/cid'\nimport { CustomProgressEvent } from 'progress-events'\nimport type { ProgressOptions, ProgressEvent } from 'progress-events'\n\ninterface BuildFileBatchOptions {\n  bufferImporter: BufferImporter\n  blockWriteConcurrency: number\n}\n\nasync function * buildFileBatch (file: File, blockstore: WritableStorage, options: BuildFileBatchOptions): AsyncGenerator<InProgressImportResult> {\n  let count = -1\n  let previous: SingleBlockImportResult | undefined\n\n  for await (const entry of parallelBatch(options.bufferImporter(file, blockstore), options.blockWriteConcurrency)) {\n    count++\n\n    if (count === 0) {\n      // cache the first entry if case there aren't any more\n      previous = {\n        ...entry,\n        single: true\n      }\n\n      continue\n    } else if (count === 1 && (previous != null)) {\n      // we have the second block of a multiple block import so yield the first\n      yield {\n        ...previous,\n        block: undefined,\n        single: undefined\n      }\n      previous = undefined\n    }\n\n    // yield the second or later block of a multiple block import\n    yield {\n      ...entry,\n      block: undefined\n    }\n  }\n\n  if (previous != null) {\n    yield previous\n  }\n}\n\nexport interface LayoutLeafProgress {\n  /**\n   * The CID of the leaf being written\n   */\n  cid: CID\n\n  /**\n   * The path of the file being imported, if one was specified\n   */\n  path?: string\n}\n\nexport type ReducerProgressEvents =\n  ProgressEvent<'unixfs:importer:progress:file:layout', LayoutLeafProgress>\n\ninterface ReduceOptions extends ProgressOptions<ImporterProgressEvents> {\n  reduceSingleLeafToSelf: boolean\n  cidVersion: Version\n  signal?: AbortSignal\n}\n\nfunction isSingleBlockImport (result: any): result is SingleBlockImportResult {\n  return result.single === true\n}\n\nconst reduce = (file: File, blockstore: WritableStorage, options: ReduceOptions): Reducer => {\n  const reducer: Reducer = async function (leaves) {\n    if (leaves.length === 1 && isSingleBlockImport(leaves[0]) && options.reduceSingleLeafToSelf) {\n      const leaf = leaves[0]\n      let node: Uint8Array | PBNode = leaf.block\n\n      if (isSingleBlockImport(leaf) && (file.mtime !== undefined || file.mode !== undefined)) {\n        // only one leaf node which is a raw leaf - we have metadata so convert it into a\n        // UnixFS entry otherwise we'll have nowhere to store the metadata\n        leaf.unixfs = new UnixFS({\n          type: 'file',\n          mtime: file.mtime,\n          mode: file.mode,\n          data: leaf.block\n        })\n\n        node = { Data: leaf.unixfs.marshal(), Links: [] }\n\n        leaf.block = encode(prepare(node))\n\n        leaf.cid = await persist(leaf.block, blockstore, {\n          ...options,\n          cidVersion: options.cidVersion\n        })\n        leaf.size = BigInt(leaf.block.length)\n      }\n\n      options.onProgress?.(new CustomProgressEvent<LayoutLeafProgress>('unixfs:importer:progress:file:layout', {\n        cid: leaf.cid,\n        path: leaf.originalPath\n      }))\n\n      return {\n        cid: leaf.cid,\n        path: file.path,\n        unixfs: leaf.unixfs,\n        size: leaf.size,\n        originalPath: leaf.originalPath\n      }\n    }\n\n    // create a parent node and add all the leaves\n    const f = new UnixFS({\n      type: 'file',\n      mtime: file.mtime,\n      mode: file.mode\n    })\n\n    const links: PBLink[] = leaves\n      .filter(leaf => {\n        if (leaf.cid.code === rawCodec.code && leaf.size > 0) {\n          return true\n        }\n\n        if ((leaf.unixfs != null) && (leaf.unixfs.data == null) && leaf.unixfs.fileSize() > 0n) {\n          return true\n        }\n\n        return Boolean(leaf.unixfs?.data?.length)\n      })\n      .map((leaf) => {\n        if (leaf.cid.code === rawCodec.code) {\n          // node is a leaf buffer\n          f.addBlockSize(leaf.size)\n\n          return {\n            Name: '',\n            Tsize: Number(leaf.size),\n            Hash: leaf.cid\n          }\n        }\n\n        if ((leaf.unixfs == null) || (leaf.unixfs.data == null)) {\n          // node is an intermediate node\n          f.addBlockSize(leaf.unixfs?.fileSize() ?? 0n)\n        } else {\n          // node is a unixfs 'file' leaf node\n          f.addBlockSize(BigInt(leaf.unixfs.data.length))\n        }\n\n        return {\n          Name: '',\n          Tsize: Number(leaf.size),\n          Hash: leaf.cid\n        }\n      })\n\n    const node = {\n      Data: f.marshal(),\n      Links: links\n    }\n    const block = encode(prepare(node))\n    const cid = await persist(block, blockstore, options)\n\n    options.onProgress?.(new CustomProgressEvent<LayoutLeafProgress>('unixfs:importer:progress:file:layout', {\n      cid,\n      path: file.originalPath\n    }))\n\n    return {\n      cid,\n      path: file.path,\n      unixfs: f,\n      size: BigInt(block.length + node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0)),\n      originalPath: file.originalPath,\n      block\n    }\n  }\n\n  return reducer\n}\n\nexport interface FileBuilderOptions extends BuildFileBatchOptions, ReduceOptions {\n  layout: FileLayout\n}\n\nexport const fileBuilder = async (file: File, block: WritableStorage, options: FileBuilderOptions): Promise<InProgressImportResult> => {\n  return await options.layout(buildFileBatch(file, block, options), reduce(file, block, options))\n}\n", "// @ts-check\n\nimport { coerce } from '../bytes.js'\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView<T>} ByteView\n */\n\nexport const name = 'raw'\nexport const code = 0x55\n\n/**\n * @param {Uint8Array} node\n * @returns {ByteView<Uint8Array>}\n */\nexport const encode = (node) => coerce(node)\n\n/**\n * @param {ByteView<Uint8Array>} data\n * @returns {Uint8Array}\n */\nexport const decode = (data) => coerce(data)\n", "\n/**\n * Progress events are emitted during long running operations\n */\nexport interface ProgressEvent<T extends string = any, D = unknown> {\n  /**\n   * The event type\n   */\n  type: T\n\n  /**\n   * Context-specific event information\n   */\n  detail: D\n}\n\n/**\n * An implementation of the ProgressEvent interface, this is essentially\n * a typed `CustomEvent` with a `type` property that lets us disambiguate\n * events passed to `progress` callbacks.\n */\nexport class CustomProgressEvent<D = unknown, T extends string = any> extends Event implements ProgressEvent<T, D> {\n  // @ts-expect-error type is a property of Event, we just declare it here for use as a type disambiguator\n  public type: T\n  public detail: D\n\n  constructor (type: T, detail?: any) {\n    super(type)\n\n    this.detail = detail\n  }\n}\n\n/**\n * Define an `onProgress` callback that can be invoked with `ProgressEvent`s\n *\n * @example\n *\n * ```typescript\n * type MyOperationProgressEvents =\n *   ProgressEvent<'operation:start'> |\n *   ProgressEvent<'operation:success', Result> |\n *   ProgressEvent<'operation:error', Error>\n *\n * export interface MyOperationOptions extends ProgressOptions<MyOperationProgressEvents> {\n *  // define options here\n * }\n * ```\n */\nexport interface ProgressOptions<Event extends ProgressEvent = any> {\n  onProgress?: (evt: Event) => void\n}\n", "import { DirFlat } from './dir-flat.js'\nimport { flatToShard } from './flat-to-shard.js'\nimport { Dir } from './dir.js'\nimport { toPathComponents } from './utils/to-path-components.js'\nimport type { ImportResult, InProgressImportResult, TreeBuilder, WritableStorage } from './index.js'\nimport type { PersistOptions } from './utils/persist.js'\n\nexport interface AddToTreeOptions extends PersistOptions {\n  shardSplitThresholdBytes: number\n}\n\nasync function addToTree (elem: InProgressImportResult, tree: Dir, options: AddToTreeOptions): Promise<Dir> {\n  const pathElems = toPathComponents(elem.path ?? '')\n  const lastIndex = pathElems.length - 1\n  let parent = tree\n  let currentPath = ''\n\n  for (let i = 0; i < pathElems.length; i++) {\n    const pathElem = pathElems[i]\n\n    currentPath += `${currentPath !== '' ? '/' : ''}${pathElem}`\n\n    const last = (i === lastIndex)\n    parent.dirty = true\n    parent.cid = undefined\n    parent.size = undefined\n\n    if (last) {\n      await parent.put(pathElem, elem)\n      tree = await flatToShard(null, parent, options.shardSplitThresholdBytes, options)\n    } else {\n      let dir = await parent.get(pathElem)\n\n      if ((dir == null) || !(dir instanceof Dir)) {\n        dir = new DirFlat({\n          root: false,\n          dir: true,\n          parent,\n          parentKey: pathElem,\n          path: currentPath,\n          dirty: true,\n          flat: true,\n          mtime: dir?.unixfs?.mtime,\n          mode: dir?.unixfs?.mode\n        }, options)\n      }\n\n      await parent.put(pathElem, dir)\n\n      parent = dir\n    }\n  }\n\n  return tree\n}\n\nasync function * flushAndYield (tree: Dir | InProgressImportResult, blockstore: WritableStorage): AsyncGenerator<ImportResult> {\n  if (!(tree instanceof Dir)) {\n    if (tree.unixfs?.isDirectory() === true) {\n      yield tree\n    }\n\n    return\n  }\n\n  yield * tree.flush(blockstore)\n}\n\nexport interface TreeBuilderOptions extends AddToTreeOptions {\n  wrapWithDirectory: boolean\n}\n\nexport function defaultTreeBuilder (options: TreeBuilderOptions): TreeBuilder {\n  return async function * treeBuilder (source, block) {\n    let tree: Dir = new DirFlat({\n      root: true,\n      dir: true,\n      path: '',\n      dirty: true,\n      flat: true\n    }, options)\n\n    let rootDir: string | undefined\n    let singleRoot = false\n\n    for await (const entry of source) {\n      if (entry == null) {\n        continue\n      }\n\n      // if all paths are from the same root directory, we should\n      // wrap them all in that root directory\n      const dir = `${entry.originalPath ?? ''}`.split('/')[0]\n\n      if (dir != null && dir !== '') {\n        if (rootDir == null) {\n          rootDir = dir\n          singleRoot = true\n        } else if (rootDir !== dir) {\n          singleRoot = false\n        }\n      }\n\n      tree = await addToTree(entry, tree, options)\n\n      if (entry.unixfs == null || !entry.unixfs.isDirectory()) {\n        yield entry\n      }\n    }\n\n    if (options.wrapWithDirectory || (singleRoot && tree.childCount() > 1)) {\n      yield * flushAndYield(tree, block)\n    } else {\n      for await (const unwrapped of tree.eachChildSeries()) {\n        if (unwrapped == null) {\n          continue\n        }\n\n        yield * flushAndYield(unwrapped.child, block)\n      }\n    }\n  }\n}\n", "import { encode, PBNode, prepare } from '@ipld/dag-pb'\nimport type { Blockstore } from 'interface-blockstore'\nimport { UnixFS } from 'ipfs-unixfs'\nimport type { CID } from 'multiformats/cid'\nimport { Dir, CID_V0, CID_V1, DirProps } from './dir.js'\nimport type { ImportResult, InProgressImportResult } from './index.js'\nimport { persist, PersistOptions } from './utils/persist.js'\n\nexport class DirFlat extends Dir {\n  private readonly _children: Map<string, InProgressImportResult | Dir>\n\n  constructor (props: DirProps, options: PersistOptions) {\n    super(props, options)\n\n    this._children = new Map()\n  }\n\n  async put (name: string, value: InProgressImportResult | Dir): Promise<void> {\n    this.cid = undefined\n    this.size = undefined\n    this.nodeSize = undefined\n\n    this._children.set(name, value)\n  }\n\n  async get (name: string): Promise<InProgressImportResult | Dir | undefined> {\n    return await Promise.resolve(this._children.get(name))\n  }\n\n  childCount (): number {\n    return this._children.size\n  }\n\n  directChildrenCount (): number {\n    return this.childCount()\n  }\n\n  onlyChild (): InProgressImportResult | Dir {\n    return this._children.values().next().value\n  }\n\n  async * eachChildSeries (): AsyncGenerator<{ key: string, child: InProgressImportResult | Dir }, void, undefined> {\n    for (const [key, child] of this._children.entries()) {\n      yield {\n        key,\n        child\n      }\n    }\n  }\n\n  estimateNodeSize (): number {\n    if (this.nodeSize !== undefined) {\n      return this.nodeSize\n    }\n\n    this.nodeSize = 0\n\n    // estimate size only based on DAGLink name and CID byte lengths\n    // https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n    for (const [name, child] of this._children.entries()) {\n      if (child.size != null && (child.cid != null)) {\n        this.nodeSize += name.length + (this.options.cidVersion === 1 ? CID_V1.bytes.byteLength : CID_V0.bytes.byteLength)\n      }\n    }\n\n    return this.nodeSize\n  }\n\n  async * flush (block: Blockstore): AsyncGenerator<ImportResult> {\n    const links = []\n\n    for (const [name, child] of this._children.entries()) {\n      let result: { size?: bigint | number, cid?: CID } = child\n\n      if (child instanceof Dir) {\n        for await (const entry of child.flush(block)) {\n          result = entry\n\n          yield entry\n        }\n      }\n\n      if (result.size != null && (result.cid != null)) {\n        links.push({\n          Name: name,\n          Tsize: Number(result.size),\n          Hash: result.cid\n        })\n      }\n    }\n\n    const unixfs = new UnixFS({\n      type: 'directory',\n      mtime: this.mtime,\n      mode: this.mode\n    })\n\n    const node: PBNode = { Data: unixfs.marshal(), Links: links }\n    const buffer = encode(prepare(node))\n    const cid = await persist(buffer, block, this.options)\n    const size = buffer.length + node.Links.reduce(\n      /**\n       * @param {number} acc\n       * @param {PBLink} curr\n       */\n      (acc, curr) => acc + (curr.Tsize == null ? 0 : curr.Tsize),\n      0)\n\n    this.cid = cid\n    this.size = size\n\n    yield {\n      cid,\n      unixfs,\n      path: this.path,\n      size: BigInt(size)\n    }\n  }\n}\n", "import type { WritableStorage, ImportResult, InProgressImportResult } from './index.js'\nimport type { Mtime, UnixFS } from 'ipfs-unixfs'\nimport { CID } from 'multiformats/cid'\nimport type { PersistOptions } from './utils/persist.js'\n\nexport interface DirProps {\n  root: boolean\n  dir: boolean\n  path: string\n  dirty: boolean\n  flat: boolean\n  parent?: Dir\n  parentKey?: string\n  unixfs?: UnixFS\n  mode?: number\n  mtime?: Mtime\n}\n\nexport abstract class Dir {\n  public options: PersistOptions\n  public root: boolean\n  public dir: boolean\n  public path: string\n  public dirty: boolean\n  public flat: boolean\n  public parent?: Dir\n  public parentKey?: string\n  public unixfs?: UnixFS\n  public mode?: number\n  public mtime?: Mtime\n  public cid?: CID\n  public size?: number\n  public nodeSize?: number\n\n  constructor (props: DirProps, options: PersistOptions) {\n    this.options = options ?? {}\n\n    this.root = props.root\n    this.dir = props.dir\n    this.path = props.path\n    this.dirty = props.dirty\n    this.flat = props.flat\n    this.parent = props.parent\n    this.parentKey = props.parentKey\n    this.unixfs = props.unixfs\n    this.mode = props.mode\n    this.mtime = props.mtime\n  }\n\n  abstract put (name: string, value: InProgressImportResult | Dir): Promise<void>\n  abstract get (name: string): Promise<InProgressImportResult | Dir | undefined>\n  abstract eachChildSeries (): AsyncIterable<{ key: string, child: InProgressImportResult | Dir }>\n  abstract flush (blockstore: WritableStorage): AsyncGenerator<ImportResult>\n  abstract estimateNodeSize (): number\n  abstract childCount (): number\n}\n\n// we use these to calculate the node size to use as a check for whether a directory\n// should be sharded or not. Since CIDs have a constant length and We're only\n// interested in the data length and not the actual content identifier we can use\n// any old CID instead of having to hash the data which is expensive.\nexport const CID_V0 = CID.parse('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn')\nexport const CID_V1 = CID.parse('zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi')\n", "import DirSharded from './dir-sharded.js'\nimport { DirFlat } from './dir-flat.js'\nimport type { Dir } from './dir.js'\nimport type { PersistOptions } from './utils/persist.js'\n\nexport async function flatToShard (child: Dir | null, dir: Dir, threshold: number, options: PersistOptions): Promise<DirSharded> {\n  let newDir = dir\n\n  if (dir instanceof DirFlat && dir.estimateNodeSize() > threshold) {\n    newDir = await convertToShard(dir, options)\n  }\n\n  const parent = newDir.parent\n\n  if (parent != null) {\n    if (newDir !== dir) {\n      if (child != null) {\n        child.parent = newDir\n      }\n\n      if (newDir.parentKey == null) {\n        throw new Error('No parent key found')\n      }\n\n      await parent.put(newDir.parentKey, newDir)\n    }\n\n    return await flatToShard(newDir, parent, threshold, options)\n  }\n\n  // @ts-expect-error\n  return newDir\n}\n\nasync function convertToShard (oldDir: DirFlat, options: PersistOptions): Promise<DirSharded> {\n  const newDir = new DirSharded({\n    root: oldDir.root,\n    dir: true,\n    parent: oldDir.parent,\n    parentKey: oldDir.parentKey,\n    path: oldDir.path,\n    dirty: oldDir.dirty,\n    flat: false,\n    mtime: oldDir.mtime,\n    mode: oldDir.mode\n  }, options)\n\n  for await (const { key, child } of oldDir.eachChildSeries()) {\n    await newDir.put(key, child)\n  }\n\n  return newDir\n}\n", "import { encode, PBLink, prepare } from '@ipld/dag-pb'\nimport { UnixFS } from 'ipfs-unixfs'\nimport { Dir, CID_V0, CID_V1, DirProps } from './dir.js'\nimport { persist, PersistOptions } from './utils/persist.js'\nimport { createHAMT, Bucket, BucketChild } from 'hamt-sharding'\nimport { murmur3128 } from '@multiformats/murmur3'\nimport type { ImportResult, InProgressImportResult } from './index.js'\nimport type { Blockstore } from 'interface-blockstore'\n\nasync function hamtHashFn (buf: Uint8Array): Promise<Uint8Array> {\n  return (await murmur3128.encode(buf))\n    // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n    // implementation only uses the first 64, so we must do the same\n    // for parity..\n    .slice(0, 8)\n    // Invert buffer because that's how Go impl does it\n    .reverse()\n}\n\nconst HAMT_HASH_CODE = BigInt(0x22)\n\nclass DirSharded extends Dir {\n  private readonly _bucket: Bucket<InProgressImportResult | Dir>\n\n  constructor (props: DirProps, options: PersistOptions) {\n    super(props, options)\n\n    this._bucket = createHAMT({\n      hashFn: hamtHashFn,\n      bits: 8\n    })\n  }\n\n  async put (name: string, value: InProgressImportResult | Dir): Promise<void> {\n    this.cid = undefined\n    this.size = undefined\n    this.nodeSize = undefined\n\n    await this._bucket.put(name, value)\n  }\n\n  async get (name: string): Promise<InProgressImportResult | Dir | undefined> {\n    return await this._bucket.get(name)\n  }\n\n  childCount (): number {\n    return this._bucket.leafCount()\n  }\n\n  directChildrenCount (): number {\n    return this._bucket.childrenCount()\n  }\n\n  onlyChild (): Bucket<InProgressImportResult | Dir> | BucketChild<InProgressImportResult | Dir> {\n    return this._bucket.onlyChild()\n  }\n\n  async * eachChildSeries (): AsyncGenerator<{ key: string, child: InProgressImportResult | Dir }> {\n    for await (const { key, value } of this._bucket.eachLeafSeries()) {\n      yield {\n        key,\n        child: value\n      }\n    }\n  }\n\n  estimateNodeSize (): number {\n    if (this.nodeSize !== undefined) {\n      return this.nodeSize\n    }\n\n    this.nodeSize = calculateSize(this._bucket, this, this.options)\n\n    return this.nodeSize\n  }\n\n  async * flush (blockstore: Blockstore): AsyncGenerator<ImportResult> {\n    for await (const entry of flush(this._bucket, blockstore, this, this.options)) {\n      yield {\n        ...entry,\n        path: this.path\n      }\n    }\n  }\n}\n\nexport default DirSharded\n\nasync function * flush (bucket: Bucket<Dir | InProgressImportResult>, blockstore: Blockstore, shardRoot: DirSharded | null, options: PersistOptions): AsyncIterable<ImportResult> {\n  const children = bucket._children\n  const links: PBLink[] = []\n  let childrenSize = 0n\n\n  for (let i = 0; i < children.length; i++) {\n    const child = children.get(i)\n\n    if (child == null) {\n      continue\n    }\n\n    const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0')\n\n    if (child instanceof Bucket) {\n      let shard\n\n      for await (const subShard of flush(child, blockstore, null, options)) {\n        shard = subShard\n      }\n\n      if (shard == null) {\n        throw new Error('Could not flush sharded directory, no subshard found')\n      }\n\n      links.push({\n        Name: labelPrefix,\n        Tsize: Number(shard.size),\n        Hash: shard.cid\n      })\n      childrenSize += shard.size\n    } else if (isDir(child.value)) {\n      const dir = child.value\n      let flushedDir: ImportResult | undefined\n\n      for await (const entry of dir.flush(blockstore)) {\n        flushedDir = entry\n\n        yield flushedDir\n      }\n\n      if (flushedDir == null) {\n        throw new Error('Did not flush dir')\n      }\n\n      const label = labelPrefix + child.key\n      links.push({\n        Name: label,\n        Tsize: Number(flushedDir.size),\n        Hash: flushedDir.cid\n      })\n\n      childrenSize += flushedDir.size\n    } else {\n      const value = child.value\n\n      if (value.cid == null) {\n        continue\n      }\n\n      const label = labelPrefix + child.key\n      const size = value.size\n\n      links.push({\n        Name: label,\n        Tsize: Number(size),\n        Hash: value.cid\n      })\n      childrenSize += BigInt(size ?? 0)\n    }\n  }\n\n  // go-ipfs uses little endian, that's why we have to\n  // reverse the bit field before storing it\n  const data = Uint8Array.from(children.bitField().reverse())\n  const dir = new UnixFS({\n    type: 'hamt-sharded-directory',\n    data,\n    fanout: BigInt(bucket.tableSize()),\n    hashType: HAMT_HASH_CODE,\n    mtime: shardRoot?.mtime,\n    mode: shardRoot?.mode\n  })\n\n  const node = {\n    Data: dir.marshal(),\n    Links: links\n  }\n  const buffer = encode(prepare(node))\n  const cid = await persist(buffer, blockstore, options)\n  const size = BigInt(buffer.byteLength) + childrenSize\n\n  yield {\n    cid,\n    unixfs: dir,\n    size\n  }\n}\n\nfunction isDir (obj: any): obj is Dir {\n  return typeof obj.flush === 'function'\n}\n\nfunction calculateSize (bucket: Bucket<any>, shardRoot: DirSharded | null, options: PersistOptions): number {\n  const children = bucket._children\n  const links: PBLink[] = []\n\n  for (let i = 0; i < children.length; i++) {\n    const child = children.get(i)\n\n    if (child == null) {\n      continue\n    }\n\n    const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0')\n\n    if (child instanceof Bucket) {\n      const size = calculateSize(child, null, options)\n\n      links.push({\n        Name: labelPrefix,\n        Tsize: Number(size),\n        Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n      })\n    } else if (typeof child.value.flush === 'function') {\n      const dir = child.value\n      const size = dir.nodeSize()\n\n      links.push({\n        Name: labelPrefix + child.key,\n        Tsize: Number(size),\n        Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n      })\n    } else {\n      const value = child.value\n\n      if (value.cid == null) {\n        continue\n      }\n\n      const label = labelPrefix + child.key\n      const size = value.size\n\n      links.push({\n        Name: label,\n        Tsize: Number(size),\n        Hash: value.cid\n      })\n    }\n  }\n\n  // go-ipfs uses little endian, that's why we have to\n  // reverse the bit field before storing it\n  const data = Uint8Array.from(children.bitField().reverse())\n  const dir = new UnixFS({\n    type: 'hamt-sharded-directory',\n    data,\n    fanout: BigInt(bucket.tableSize()),\n    hashType: HAMT_HASH_CODE,\n    mtime: shardRoot?.mtime,\n    mode: shardRoot?.mode\n  })\n\n  const buffer = encode(prepare({\n    Data: dir.marshal(),\n    Links: links\n  }))\n\n  return buffer.length\n}\n", "import { Bucket } from './bucket.js'\nimport type { BucketOptions, BucketPosition, BucketChild } from './bucket.js'\nimport { wrapHash } from './consumable-hash.js'\n\ninterface UserBucketOptions {\n  hashFn: (value: Uint8Array) => Promise<Uint8Array>\n  bits?: number\n}\n\nexport function createHAMT<T> (options: UserBucketOptions) {\n  if (options == null || options.hashFn == null) {\n    throw new Error('please define an options.hashFn')\n  }\n\n  const bucketOptions = {\n    bits: options.bits ?? 8,\n    hash: wrapHash(options.hashFn)\n  }\n\n  return new Bucket<T>(bucketOptions)\n}\n\nexport { Bucket }\nexport type { BucketOptions, BucketPosition, BucketChild }\n", "// @ts-expect-error\nimport SparseArray from 'sparse-array'\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'\nimport type { InfiniteHash } from './consumable-hash.js'\n\nexport interface BucketChild<V> {\n  key: string\n  value: V\n  hash: InfiniteHash\n}\n\ninterface SA<B> {\n  length: number\n  compactArray: () => B[]\n  get: (i: number) => B\n  set: (i: number, value: B) => void\n  reduce: <A> (fn: (acc: A, curr: B, index: number) => A, initial: A) => B\n  find: (fn: (item: B) => boolean) => B | undefined\n  bitField: () => number[]\n  unset: (i: number) => void\n}\n\nexport interface BucketPosition<T> {\n  bucket: Bucket<T>\n  pos: number\n  hash: InfiniteHash\n  existingChild?: BucketChild<T>\n}\n\nexport interface BucketOptions {\n  bits: number\n  hash: (value: Uint8Array | InfiniteHash) => InfiniteHash\n}\n\nexport class Bucket<T> {\n  _options: BucketOptions\n  _popCount: number\n  _parent?: Bucket<T>\n  _posAtParent: number\n  _children: SA<Bucket<T> | BucketChild<T>>\n\n  key: string | null\n\n  constructor (options: BucketOptions, parent?: Bucket<T>, posAtParent = 0) {\n    this._options = options\n    this._popCount = 0\n    this._parent = parent\n    this._posAtParent = posAtParent\n    this._children = new SparseArray()\n    this.key = null\n  }\n\n  async put (key: string, value: T) {\n    const place = await this._findNewBucketAndPos(key)\n\n    await place.bucket._putAt(place, key, value)\n  }\n\n  async get (key: string) {\n    const child = await this._findChild(key)\n\n    if (child != null) {\n      return child.value\n    }\n  }\n\n  async del (key: string) {\n    const place = await this._findPlace(key)\n    const child = place.bucket._at(place.pos)\n\n    if (child != null && child.key === key) {\n      place.bucket._delAt(place.pos)\n    }\n  }\n\n  leafCount (): number {\n    const children = this._children.compactArray()\n\n    return children.reduce((acc, child) => {\n      if (child instanceof Bucket) {\n        return acc + child.leafCount()\n      }\n\n      return acc + 1\n    }, 0)\n  }\n\n  childrenCount () {\n    return this._children.length\n  }\n\n  onlyChild () {\n    return this._children.get(0)\n  }\n\n  * eachLeafSeries (): Iterable<BucketChild<T>> {\n    const children = this._children.compactArray()\n\n    for (const child of children) {\n      if (child instanceof Bucket) {\n        yield * child.eachLeafSeries()\n      } else {\n        yield child\n      }\n    }\n  }\n\n  serialize (map: (value: BucketChild<T>, index: number) => T, reduce: (reduced: any) => any) {\n    const acc: T[] = []\n    // serialize to a custom non-sparse representation\n    return reduce(this._children.reduce((acc, child, index) => {\n      if (child != null) {\n        if (child instanceof Bucket) {\n          acc.push(child.serialize(map, reduce))\n        } else {\n          acc.push(map(child, index))\n        }\n      }\n      return acc\n    }, acc))\n  }\n\n  async asyncTransform (asyncMap: (value: BucketChild<T>) => Promise<T[]>, asyncReduce: (reduced: any) => Promise<any>) {\n    return await asyncTransformBucket(this, asyncMap, asyncReduce)\n  }\n\n  toJSON () {\n    return this.serialize(mapNode, reduceNodes)\n  }\n\n  prettyPrint () {\n    return JSON.stringify(this.toJSON(), null, '  ')\n  }\n\n  tableSize () {\n    return Math.pow(2, this._options.bits)\n  }\n\n  async _findChild (key: string) {\n    const result = await this._findPlace(key)\n    const child = result.bucket._at(result.pos)\n\n    if (child instanceof Bucket) {\n      // should not be possible, this._findPlace should always\n      // return a location for a child, not a bucket\n      return undefined\n    }\n\n    if (child != null && child.key === key) {\n      return child\n    }\n  }\n\n  async _findPlace (key: string | InfiniteHash): Promise<BucketPosition<T>> {\n    const hashValue = this._options.hash(typeof key === 'string' ? uint8ArrayFromString(key) : key)\n    const index = await hashValue.take(this._options.bits)\n\n    const child = this._children.get(index)\n\n    if (child instanceof Bucket) {\n      return await child._findPlace(hashValue)\n    }\n\n    return {\n      bucket: this,\n      pos: index,\n      hash: hashValue,\n      existingChild: child\n    }\n  }\n\n  async _findNewBucketAndPos (key: string | InfiniteHash): Promise<BucketPosition<T>> {\n    const place = await this._findPlace(key)\n\n    if ((place.existingChild != null) && place.existingChild.key !== key) {\n      // conflict\n      const bucket = new Bucket(this._options, place.bucket, place.pos)\n      place.bucket._putObjectAt(place.pos, bucket)\n\n      // put the previous value\n      const newPlace = await bucket._findPlace(place.existingChild.hash)\n      newPlace.bucket._putAt(newPlace, place.existingChild.key, place.existingChild.value)\n\n      return await bucket._findNewBucketAndPos(place.hash)\n    }\n\n    // no conflict, we found the place\n    return place\n  }\n\n  _putAt (place: BucketPosition<T>, key: string, value: T) {\n    this._putObjectAt(place.pos, {\n      key: key,\n      value: value,\n      hash: place.hash\n    })\n  }\n\n  _putObjectAt (pos: number, object: Bucket<T> | BucketChild<T>) {\n    if (this._children.get(pos) == null) {\n      this._popCount++\n    }\n    this._children.set(pos, object)\n  }\n\n  _delAt (pos: number) {\n    if (pos === -1) {\n      throw new Error('Invalid position')\n    }\n\n    if (this._children.get(pos) != null) {\n      this._popCount--\n    }\n    this._children.unset(pos)\n    this._level()\n  }\n\n  _level () {\n    if (this._parent != null && this._popCount <= 1) {\n      if (this._popCount === 1) {\n        // remove myself from parent, replacing me with my only child\n        const onlyChild = this._children.find(exists)\n\n        if ((onlyChild != null) && !(onlyChild instanceof Bucket)) {\n          const hash = onlyChild.hash\n          hash.untake(this._options.bits)\n          const place = {\n            pos: this._posAtParent,\n            hash: hash,\n            bucket: this._parent\n          }\n          this._parent._putAt(place, onlyChild.key, onlyChild.value)\n        }\n      } else {\n        this._parent._delAt(this._posAtParent)\n      }\n    }\n  }\n\n  _at (index: number) {\n    return this._children.get(index)\n  }\n}\n\nfunction exists (o: any) {\n  return Boolean(o)\n}\n\nfunction mapNode (node: any, _: number) {\n  return node.key\n}\n\nfunction reduceNodes (nodes: any) {\n  return nodes\n}\n\nasync function asyncTransformBucket<T> (bucket: Bucket<T>, asyncMap: (value: BucketChild<T>) => Promise<T[]>, asyncReduce: (reduced: any) => Promise<any>) {\n  const output = []\n\n  for (const child of bucket._children.compactArray()) {\n    if (child instanceof Bucket) {\n      await asyncTransformBucket(child, asyncMap, asyncReduce)\n    } else {\n      const mappedChildren = await asyncMap(child)\n\n      output.push({\n        bitField: bucket._children.bitField(),\n        children: mappedChildren\n      })\n    }\n  }\n\n  return await asyncReduce(output)\n}\n", "import bases, { SupportedEncodings } from './util/bases.js'\nimport { asUint8Array } from './util/as-uint8array.js'\n\nexport type { SupportedEncodings }\n\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString (string: string, encoding: SupportedEncodings = 'utf8'): Uint8Array {\n  const base = bases[encoding]\n\n  if (base == null) {\n    throw new Error(`Unsupported encoding \"${encoding}\"`)\n  }\n\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return asUint8Array(globalThis.Buffer.from(string, 'utf-8'))\n  }\n\n  // add multibase prefix\n  return base.decoder.decode(`${base.prefix}${string}`) // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n", "import type { MultibaseCodec } from 'multiformats'\nimport { bases } from 'multiformats/basics'\nimport { allocUnsafe } from '../alloc.js'\n\nfunction createCodec (name: string, prefix: string, encode: (buf: Uint8Array) => string, decode: (str: string) => Uint8Array): MultibaseCodec<any> {\n  return {\n    name,\n    prefix,\n    encoder: {\n      name,\n      prefix,\n      encode\n    },\n    decoder: {\n      decode\n    }\n  }\n}\n\nconst string = createCodec('utf8', 'u', (buf) => {\n  const decoder = new TextDecoder('utf8')\n  return 'u' + decoder.decode(buf)\n}, (str) => {\n  const encoder = new TextEncoder()\n  return encoder.encode(str.substring(1))\n})\n\nconst ascii = createCodec('ascii', 'a', (buf) => {\n  let string = 'a'\n\n  for (let i = 0; i < buf.length; i++) {\n    string += String.fromCharCode(buf[i])\n  }\n  return string\n}, (str) => {\n  str = str.substring(1)\n  const buf = allocUnsafe(str.length)\n\n  for (let i = 0; i < str.length; i++) {\n    buf[i] = str.charCodeAt(i)\n  }\n\n  return buf\n})\n\nexport type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof typeof bases\n\nconst BASES: Record<SupportedEncodings, MultibaseCodec<any>> = {\n  utf8: string,\n  'utf-8': string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii: ascii,\n  binary: ascii,\n\n  ...bases\n}\n\nexport default BASES\n", "// @ts-check\n\nimport * as identityBase from './bases/identity.js'\nimport * as base2 from './bases/base2.js'\nimport * as base8 from './bases/base8.js'\nimport * as base10 from './bases/base10.js'\nimport * as base16 from './bases/base16.js'\nimport * as base32 from './bases/base32.js'\nimport * as base36 from './bases/base36.js'\nimport * as base58 from './bases/base58.js'\nimport * as base64 from './bases/base64.js'\nimport * as base256emoji from './bases/base256emoji.js'\nimport * as sha2 from './hashes/sha2.js'\nimport * as identity from './hashes/identity.js'\n\nimport * as raw from './codecs/raw.js'\nimport * as json from './codecs/json.js'\n\nimport { CID, hasher, digest, varint, bytes } from './index.js'\n\nconst bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji }\nconst hashes = { ...sha2, ...identity }\nconst codecs = { raw, json }\n\nexport { CID, hasher, digest, varint, bytes, hashes, bases, codecs }\n", "// @ts-check\n\nimport { from } from './base.js'\nimport { fromString, toString } from '../bytes.js'\n\nexport const identity = from({\n  prefix: '\\x00',\n  name: 'identity',\n  encode: (buf) => toString(buf),\n  decode: (str) => fromString(str)\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base2 = rfc4648({\n  prefix: '0',\n  name: 'base2',\n  alphabet: '01',\n  bitsPerChar: 1\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base8 = rfc4648({\n  prefix: '7',\n  name: 'base8',\n  alphabet: '01234567',\n  bitsPerChar: 3\n})\n", "import { baseX } from './base.js'\n\nexport const base10 = baseX({\n  prefix: '9',\n  name: 'base10',\n  alphabet: '0123456789'\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base16 = rfc4648({\n  prefix: 'f',\n  name: 'base16',\n  alphabet: '0123456789abcdef',\n  bitsPerChar: 4\n})\n\nexport const base16upper = rfc4648({\n  prefix: 'F',\n  name: 'base16upper',\n  alphabet: '0123456789ABCDEF',\n  bitsPerChar: 4\n})\n", "import { baseX } from './base.js'\n\nexport const base36 = baseX({\n  prefix: 'k',\n  name: 'base36',\n  alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n  prefix: 'K',\n  name: 'base36upper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n", "import { from } from './base.js'\n\nconst alphabet = Array.from('\uD83D\uDE80\uD83E\uDE90\u2604\uD83D\uDEF0\uD83C\uDF0C\uD83C\uDF11\uD83C\uDF12\uD83C\uDF13\uD83C\uDF14\uD83C\uDF15\uD83C\uDF16\uD83C\uDF17\uD83C\uDF18\uD83C\uDF0D\uD83C\uDF0F\uD83C\uDF0E\uD83D\uDC09\u2600\uD83D\uDCBB\uD83D\uDDA5\uD83D\uDCBE\uD83D\uDCBF\uD83D\uDE02\u2764\uD83D\uDE0D\uD83E\uDD23\uD83D\uDE0A\uD83D\uDE4F\uD83D\uDC95\uD83D\uDE2D\uD83D\uDE18\uD83D\uDC4D\uD83D\uDE05\uD83D\uDC4F\uD83D\uDE01\uD83D\uDD25\uD83E\uDD70\uD83D\uDC94\uD83D\uDC96\uD83D\uDC99\uD83D\uDE22\uD83E\uDD14\uD83D\uDE06\uD83D\uDE44\uD83D\uDCAA\uD83D\uDE09\u263A\uD83D\uDC4C\uD83E\uDD17\uD83D\uDC9C\uD83D\uDE14\uD83D\uDE0E\uD83D\uDE07\uD83C\uDF39\uD83E\uDD26\uD83C\uDF89\uD83D\uDC9E\u270C\u2728\uD83E\uDD37\uD83D\uDE31\uD83D\uDE0C\uD83C\uDF38\uD83D\uDE4C\uD83D\uDE0B\uD83D\uDC97\uD83D\uDC9A\uD83D\uDE0F\uD83D\uDC9B\uD83D\uDE42\uD83D\uDC93\uD83E\uDD29\uD83D\uDE04\uD83D\uDE00\uD83D\uDDA4\uD83D\uDE03\uD83D\uDCAF\uD83D\uDE48\uD83D\uDC47\uD83C\uDFB6\uD83D\uDE12\uD83E\uDD2D\u2763\uD83D\uDE1C\uD83D\uDC8B\uD83D\uDC40\uD83D\uDE2A\uD83D\uDE11\uD83D\uDCA5\uD83D\uDE4B\uD83D\uDE1E\uD83D\uDE29\uD83D\uDE21\uD83E\uDD2A\uD83D\uDC4A\uD83E\uDD73\uD83D\uDE25\uD83E\uDD24\uD83D\uDC49\uD83D\uDC83\uD83D\uDE33\u270B\uD83D\uDE1A\uD83D\uDE1D\uD83D\uDE34\uD83C\uDF1F\uD83D\uDE2C\uD83D\uDE43\uD83C\uDF40\uD83C\uDF37\uD83D\uDE3B\uD83D\uDE13\u2B50\u2705\uD83E\uDD7A\uD83C\uDF08\uD83D\uDE08\uD83E\uDD18\uD83D\uDCA6\u2714\uD83D\uDE23\uD83C\uDFC3\uD83D\uDC90\u2639\uD83C\uDF8A\uD83D\uDC98\uD83D\uDE20\u261D\uD83D\uDE15\uD83C\uDF3A\uD83C\uDF82\uD83C\uDF3B\uD83D\uDE10\uD83D\uDD95\uD83D\uDC9D\uD83D\uDE4A\uD83D\uDE39\uD83D\uDDE3\uD83D\uDCAB\uD83D\uDC80\uD83D\uDC51\uD83C\uDFB5\uD83E\uDD1E\uD83D\uDE1B\uD83D\uDD34\uD83D\uDE24\uD83C\uDF3C\uD83D\uDE2B\u26BD\uD83E\uDD19\u2615\uD83C\uDFC6\uD83E\uDD2B\uD83D\uDC48\uD83D\uDE2E\uD83D\uDE46\uD83C\uDF7B\uD83C\uDF43\uD83D\uDC36\uD83D\uDC81\uD83D\uDE32\uD83C\uDF3F\uD83E\uDDE1\uD83C\uDF81\u26A1\uD83C\uDF1E\uD83C\uDF88\u274C\u270A\uD83D\uDC4B\uD83D\uDE30\uD83E\uDD28\uD83D\uDE36\uD83E\uDD1D\uD83D\uDEB6\uD83D\uDCB0\uD83C\uDF53\uD83D\uDCA2\uD83E\uDD1F\uD83D\uDE41\uD83D\uDEA8\uD83D\uDCA8\uD83E\uDD2C\u2708\uD83C\uDF80\uD83C\uDF7A\uD83E\uDD13\uD83D\uDE19\uD83D\uDC9F\uD83C\uDF31\uD83D\uDE16\uD83D\uDC76\uD83E\uDD74\u25B6\u27A1\u2753\uD83D\uDC8E\uD83D\uDCB8\u2B07\uD83D\uDE28\uD83C\uDF1A\uD83E\uDD8B\uD83D\uDE37\uD83D\uDD7A\u26A0\uD83D\uDE45\uD83D\uDE1F\uD83D\uDE35\uD83D\uDC4E\uD83E\uDD32\uD83E\uDD20\uD83E\uDD27\uD83D\uDCCC\uD83D\uDD35\uD83D\uDC85\uD83E\uDDD0\uD83D\uDC3E\uD83C\uDF52\uD83D\uDE17\uD83E\uDD11\uD83C\uDF0A\uD83E\uDD2F\uD83D\uDC37\u260E\uD83D\uDCA7\uD83D\uDE2F\uD83D\uDC86\uD83D\uDC46\uD83C\uDFA4\uD83D\uDE47\uD83C\uDF51\u2744\uD83C\uDF34\uD83D\uDCA3\uD83D\uDC38\uD83D\uDC8C\uD83D\uDCCD\uD83E\uDD40\uD83E\uDD22\uD83D\uDC45\uD83D\uDCA1\uD83D\uDCA9\uD83D\uDC50\uD83D\uDCF8\uD83D\uDC7B\uD83E\uDD10\uD83E\uDD2E\uD83C\uDFBC\uD83E\uDD75\uD83D\uDEA9\uD83C\uDF4E\uD83C\uDF4A\uD83D\uDC7C\uD83D\uDC8D\uD83D\uDCE3\uD83E\uDD42')\nconst alphabetBytesToChars = /** @type {string[]} */ (alphabet.reduce((p, c, i) => { p[i] = c; return p }, /** @type {string[]} */([])))\nconst alphabetCharsToBytes = /** @type {number[]} */ (alphabet.reduce((p, c, i) => { p[/** @type {number} */ (c.codePointAt(0))] = i; return p }, /** @type {number[]} */([])))\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nfunction encode (data) {\n  return data.reduce((p, c) => {\n    p += alphabetBytesToChars[c]\n    return p\n  }, '')\n}\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nfunction decode (str) {\n  const byts = []\n  for (const char of str) {\n    const byt = alphabetCharsToBytes[/** @type {number} */ (char.codePointAt(0))]\n    if (byt === undefined) {\n      throw new Error(`Non-base256emoji character: ${char}`)\n    }\n    byts.push(byt)\n  }\n  return new Uint8Array(byts)\n}\n\nexport const base256emoji = from({\n  prefix: '\uD83D\uDE80',\n  name: 'base256emoji',\n  encode,\n  decode\n})\n", "import { coerce } from '../bytes.js'\nimport * as Digest from './digest.js'\n\nconst code = 0x0\nconst name = 'identity'\n\n/** @type {(input:Uint8Array) => Uint8Array} */\nconst encode = coerce\n\n/**\n * @param {Uint8Array} input\n * @returns {Digest.Digest<typeof code, number>}\n */\nconst digest = (input) => Digest.create(code, encode(input))\n\nexport const identity = { code, name, encode, digest }\n", "// @ts-check\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView<T>} ByteView\n */\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const name = 'json'\nexport const code = 0x0200\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => textEncoder.encode(JSON.stringify(node))\n\n/**\n * @template T\n * @param {ByteView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => JSON.parse(textDecoder.decode(data))\n", "import { CID } from './cid.js'\nimport * as varint from './varint.js'\nimport * as bytes from './bytes.js'\nimport * as hasher from './hashes/hasher.js'\nimport * as digest from './hashes/digest.js'\n// This way TS will also expose all the types from module\nexport * from './interface.js'\n\nexport { CID, hasher, digest, varint, bytes }\n", "// this is dummy module overlayed by interface.ts\n", "import { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size))\n  }\n\n  return new Uint8Array(size)\n}\n\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size))\n  }\n\n  return new Uint8Array(size)\n}\n", "\n/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array (buf: Uint8Array): Uint8Array {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n  }\n\n  return buf\n}\n", "import { ConsumableBuffer } from './consumable-buffer.js'\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat'\n\nexport function wrapHash (hashFn: (value: Uint8Array) => Promise<Uint8Array>) {\n  function hashing (value: InfiniteHash | Uint8Array) {\n    if (value instanceof InfiniteHash) {\n      // already a hash. return it\n      return value\n    } else {\n      return new InfiniteHash(value, hashFn)\n    }\n  }\n\n  return hashing\n}\n\nexport class InfiniteHash {\n  _value: Uint8Array\n  _hashFn: (value: Uint8Array) => Promise<Uint8Array>\n  _depth: number\n  _availableBits: number\n  _currentBufferIndex: number\n  _buffers: ConsumableBuffer[]\n\n  constructor (value: Uint8Array, hashFn: (value: Uint8Array) => Promise<Uint8Array>) {\n    if (!(value instanceof Uint8Array)) {\n      throw new Error('can only hash Uint8Arrays')\n    }\n\n    this._value = value\n    this._hashFn = hashFn\n    this._depth = -1\n    this._availableBits = 0\n    this._currentBufferIndex = 0\n    this._buffers = []\n  }\n\n  async take (bits: number) {\n    let pendingBits = bits\n\n    while (this._availableBits < pendingBits) {\n      await this._produceMoreBits()\n    }\n\n    let result = 0\n\n    while (pendingBits > 0) {\n      const hash = this._buffers[this._currentBufferIndex]\n      const available = Math.min(hash.availableBits(), pendingBits)\n      const took = hash.take(available)\n      result = (result << available) + took\n      pendingBits -= available\n      this._availableBits -= available\n\n      if (hash.availableBits() === 0) {\n        this._currentBufferIndex++\n      }\n    }\n\n    return result\n  }\n\n  untake (bits: number) {\n    let pendingBits = bits\n\n    while (pendingBits > 0) {\n      const hash = this._buffers[this._currentBufferIndex]\n      const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits)\n      hash.untake(availableForUntake)\n      pendingBits -= availableForUntake\n      this._availableBits += availableForUntake\n\n      if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n        this._depth--\n        this._currentBufferIndex--\n      }\n    }\n  }\n\n  async _produceMoreBits () {\n    this._depth++\n\n    const value = this._depth > 0 ? uint8ArrayConcat([this._value, Uint8Array.from([this._depth])]) : this._value\n    const hashValue = await this._hashFn(value)\n    const buffer = new ConsumableBuffer(hashValue)\n\n    this._buffers.push(buffer)\n    this._availableBits += buffer.availableBits()\n  }\n}\n", "const START_MASKS = [\n  0b11111111,\n  0b11111110,\n  0b11111100,\n  0b11111000,\n  0b11110000,\n  0b11100000,\n  0b11000000,\n  0b10000000\n]\n\nconst STOP_MASKS = [\n  0b00000001,\n  0b00000011,\n  0b00000111,\n  0b00001111,\n  0b00011111,\n  0b00111111,\n  0b01111111,\n  0b11111111\n]\n\nexport class ConsumableBuffer {\n  _value: Uint8Array\n  _currentBytePos: number\n  _currentBitPos: number\n\n  constructor (value: Uint8Array) {\n    this._value = value\n    this._currentBytePos = value.length - 1\n    this._currentBitPos = 7\n  }\n\n  availableBits () {\n    return this._currentBitPos + 1 + this._currentBytePos * 8\n  }\n\n  totalBits () {\n    return this._value.length * 8\n  }\n\n  take (bits: number) {\n    let pendingBits = bits\n    let result = 0\n    while (pendingBits > 0 && this._haveBits()) {\n      const byte = this._value[this._currentBytePos]\n      const availableBits = this._currentBitPos + 1\n      const taking = Math.min(availableBits, pendingBits)\n      const value = byteBitsToInt(byte, availableBits - taking, taking)\n      result = (result << taking) + value\n\n      pendingBits -= taking\n\n      this._currentBitPos -= taking\n      if (this._currentBitPos < 0) {\n        this._currentBitPos = 7\n        this._currentBytePos--\n      }\n    }\n\n    return result\n  }\n\n  untake (bits: number) {\n    this._currentBitPos += bits\n    while (this._currentBitPos > 7) {\n      this._currentBitPos -= 8\n      this._currentBytePos += 1\n    }\n  }\n\n  _haveBits () {\n    return this._currentBytePos >= 0\n  }\n}\n\nfunction byteBitsToInt (byte: number, start: number, length: number) {\n  const mask = maskFor(start, length)\n  return (byte & mask) >>> start\n}\n\nfunction maskFor (start: number, length: number) {\n  return START_MASKS[start] & STOP_MASKS[Math.min(length + start - 1, 7)]\n}\n", "import { allocUnsafe } from './alloc.js'\nimport { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n */\nexport function concat (arrays: Array<ArrayLike<number>>, length?: number): Uint8Array {\n  if (length == null) {\n    length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n  }\n\n  const output = allocUnsafe(length)\n  let offset = 0\n\n  for (const arr of arrays) {\n    output.set(arr, offset)\n    offset += arr.length\n  }\n\n  return asUint8Array(output)\n}\n", "import { from } from 'multiformats/hashes/hasher'\nimport { bytes } from 'multiformats'\n// @ts-expect-error no types\nimport mur from 'murmurhash3js-revisited'\n\n/**\n * @param {number} number\n * @returns {Uint8Array}\n */\nfunction fromNumberTo32BitBuf (number) {\n  const bytes = new Array(4)\n  for (let i = 0; i < 4; i++) {\n    bytes[i] = number & 0xff\n    number = number >> 8\n  }\n  return new Uint8Array(bytes)\n}\n\nexport const murmur332 = from({\n  name: 'murmur3-32',\n  code: 0x23,\n  encode: (input) => fromNumberTo32BitBuf(mur.x86.hash32(input))\n})\n\nexport const murmur3128 = from({\n  name: 'murmur3-128',\n  code: 0x22,\n  encode: (input) => bytes.fromHex(mur.x64.hash128(input))\n})\n\n// A special-use 0x22 that truncates 64 bits, specifically for use in the UnixFS HAMT\nexport const murmur364 = from({\n  name: 'murmur3-x64-64',\n  code: 0x22,\n  encode: (input) => bytes.fromHex(mur.x64.hash128(input)).subarray(0, 8)\n})\n", "export const toPathComponents = (path: string = ''): string[] => {\n  // split on / unless escaped with \\\n  return (path\n    .trim()\n    .match(/([^\\\\/]|\\\\\\/)+/g) ?? [])\n    .filter(Boolean)\n}\n", "import errCode from 'err-code'\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'\n\nexport interface ChunkValidator { (source: AsyncIterable<Uint8Array>): AsyncIterable<Uint8Array> }\n\nexport const defaultChunkValidator = (): ChunkValidator => {\n  return async function * validateChunks (source) {\n    for await (const content of source) {\n      if (content.length === undefined) {\n        throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n      }\n\n      if (typeof content === 'string' || content instanceof String) {\n        yield uint8ArrayFromString(content.toString())\n      } else if (Array.isArray(content)) {\n        yield Uint8Array.from(content)\n      } else if (content instanceof Uint8Array) {\n        yield content\n      } else {\n        throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n      }\n    }\n  }\n}\n", "import bases, { SupportedEncodings } from './util/bases.js'\nimport { asUint8Array } from './util/as-uint8array.js'\n\nexport type { SupportedEncodings }\n\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString (string: string, encoding: SupportedEncodings = 'utf8'): Uint8Array {\n  const base = bases[encoding]\n\n  if (base == null) {\n    throw new Error(`Unsupported encoding \"${encoding}\"`)\n  }\n\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return asUint8Array(globalThis.Buffer.from(string, 'utf-8'))\n  }\n\n  // add multibase prefix\n  return base.decoder.decode(`${base.prefix}${string}`) // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n", "import type { MultibaseCodec } from 'multiformats'\nimport { bases } from 'multiformats/basics'\nimport { allocUnsafe } from '../alloc.js'\n\nfunction createCodec (name: string, prefix: string, encode: (buf: Uint8Array) => string, decode: (str: string) => Uint8Array): MultibaseCodec<any> {\n  return {\n    name,\n    prefix,\n    encoder: {\n      name,\n      prefix,\n      encode\n    },\n    decoder: {\n      decode\n    }\n  }\n}\n\nconst string = createCodec('utf8', 'u', (buf) => {\n  const decoder = new TextDecoder('utf8')\n  return 'u' + decoder.decode(buf)\n}, (str) => {\n  const encoder = new TextEncoder()\n  return encoder.encode(str.substring(1))\n})\n\nconst ascii = createCodec('ascii', 'a', (buf) => {\n  let string = 'a'\n\n  for (let i = 0; i < buf.length; i++) {\n    string += String.fromCharCode(buf[i])\n  }\n  return string\n}, (str) => {\n  str = str.substring(1)\n  const buf = allocUnsafe(str.length)\n\n  for (let i = 0; i < str.length; i++) {\n    buf[i] = str.charCodeAt(i)\n  }\n\n  return buf\n})\n\nexport type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof typeof bases\n\nconst BASES: Record<SupportedEncodings, MultibaseCodec<any>> = {\n  utf8: string,\n  'utf-8': string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii: ascii,\n  binary: ascii,\n\n  ...bases\n}\n\nexport default BASES\n", "import { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size))\n  }\n\n  return new Uint8Array(size)\n}\n\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size))\n  }\n\n  return new Uint8Array(size)\n}\n", "\n/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array (buf: Uint8Array): Uint8Array {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n  }\n\n  return buf\n}\n", "import { Uint8ArrayList } from 'uint8arraylist'\nimport type { Chunker } from './index.js'\n\nexport interface FixedSizeOptions {\n  chunkSize?: number\n}\n\nconst DEFAULT_CHUNK_SIZE = 262144\n\nexport const fixedSize = (options: FixedSizeOptions = {}): Chunker => {\n  const chunkSize = options.chunkSize ?? DEFAULT_CHUNK_SIZE\n\n  return async function * fixedSizeChunker (source) {\n    let list = new Uint8ArrayList()\n    let currentLength = 0\n    let emitted = false\n\n    for await (const buffer of source) {\n      list.append(buffer)\n\n      currentLength += buffer.length\n\n      while (currentLength >= chunkSize) {\n        yield list.slice(0, chunkSize)\n        emitted = true\n\n        // throw away consumed bytes\n        if (chunkSize === list.length) {\n          list = new Uint8ArrayList()\n          currentLength = 0\n        } else {\n          const newBl = new Uint8ArrayList()\n          newBl.append(list.sublist(chunkSize))\n          list = newBl\n\n          // update our offset\n          currentLength -= chunkSize\n        }\n      }\n    }\n\n    if (!emitted || currentLength > 0) {\n      // return any remaining bytes\n      yield list.subarray(0, currentLength)\n    }\n  }\n}\n", "import { concat } from 'uint8arrays/concat'\nimport { equals } from 'uint8arrays/equals'\nimport { allocUnsafe, alloc } from 'uint8arrays/alloc'\n\nconst symbol = Symbol.for('@achingbrain/uint8arraylist')\n\nexport type Appendable = Uint8ArrayList | Uint8Array\n\nfunction findBufAndOffset (bufs: Uint8Array[], index: number) {\n  if (index == null || index < 0) {\n    throw new RangeError('index is out of bounds')\n  }\n\n  let offset = 0\n\n  for (const buf of bufs) {\n    const bufEnd = offset + buf.byteLength\n\n    if (index < bufEnd) {\n      return {\n        buf,\n        index: index - offset\n      }\n    }\n\n    offset = bufEnd\n  }\n\n  throw new RangeError('index is out of bounds')\n}\n\n/**\n * Check if object is a CID instance\n *\n * @example\n *\n * ```js\n * import { isUint8ArrayList, Uint8ArrayList } from 'uint8arraylist'\n *\n * isUint8ArrayList(true) // false\n * isUint8ArrayList([]) // false\n * isUint8ArrayList(new Uint8ArrayList()) // true\n * ```\n */\nexport function isUint8ArrayList (value: any): value is Uint8ArrayList {\n  return Boolean(value?.[symbol])\n}\n\nexport class Uint8ArrayList implements Iterable<Uint8Array> {\n  private bufs: Uint8Array[]\n  public length: number\n\n  constructor (...data: Appendable[]) {\n    // Define symbol\n    Object.defineProperty(this, symbol, { value: true })\n\n    this.bufs = []\n    this.length = 0\n\n    if (data.length > 0) {\n      this.appendAll(data)\n    }\n  }\n\n  * [Symbol.iterator] () {\n    yield * this.bufs\n  }\n\n  get byteLength () {\n    return this.length\n  }\n\n  /**\n   * Add one or more `bufs` to the end of this Uint8ArrayList\n   */\n  append (...bufs: Appendable[]) {\n    this.appendAll(bufs)\n  }\n\n  /**\n   * Add all `bufs` to the end of this Uint8ArrayList\n   */\n  appendAll (bufs: Appendable[]) {\n    let length = 0\n\n    for (const buf of bufs) {\n      if (buf instanceof Uint8Array) {\n        length += buf.byteLength\n        this.bufs.push(buf)\n      } else if (isUint8ArrayList(buf)) {\n        length += buf.byteLength\n        this.bufs.push(...buf.bufs)\n      } else {\n        throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList')\n      }\n    }\n\n    this.length += length\n  }\n\n  /**\n   * Add one or more `bufs` to the start of this Uint8ArrayList\n   */\n  prepend (...bufs: Appendable[]) {\n    this.prependAll(bufs)\n  }\n\n  /**\n   * Add all `bufs` to the start of this Uint8ArrayList\n   */\n  prependAll (bufs: Appendable[]) {\n    let length = 0\n\n    for (const buf of bufs.reverse()) {\n      if (buf instanceof Uint8Array) {\n        length += buf.byteLength\n        this.bufs.unshift(buf)\n      } else if (isUint8ArrayList(buf)) {\n        length += buf.byteLength\n        this.bufs.unshift(...buf.bufs)\n      } else {\n        throw new Error('Could not prepend value, must be an Uint8Array or a Uint8ArrayList')\n      }\n    }\n\n    this.length += length\n  }\n\n  /**\n   * Read the value at `index`\n   */\n  get (index: number) {\n    const res = findBufAndOffset(this.bufs, index)\n\n    return res.buf[res.index]\n  }\n\n  /**\n   * Set the value at `index` to `value`\n   */\n  set (index: number, value: number) {\n    const res = findBufAndOffset(this.bufs, index)\n\n    res.buf[res.index] = value\n  }\n\n  /**\n   * Copy bytes from `buf` to the index specified by `offset`\n   */\n  write (buf: Appendable, offset: number = 0) {\n    if (buf instanceof Uint8Array) {\n      for (let i = 0; i < buf.length; i++) {\n        this.set(offset + i, buf[i])\n      }\n    } else if (isUint8ArrayList(buf)) {\n      for (let i = 0; i < buf.length; i++) {\n        this.set(offset + i, buf.get(i))\n      }\n    } else {\n      throw new Error('Could not write value, must be an Uint8Array or a Uint8ArrayList')\n    }\n  }\n\n  /**\n   * Remove bytes from the front of the pool\n   */\n  consume (bytes: number) {\n    // first, normalize the argument, in accordance with how Buffer does it\n    bytes = Math.trunc(bytes)\n\n    // do nothing if not a positive number\n    if (Number.isNaN(bytes) || bytes <= 0) {\n      return\n    }\n\n    // if consuming all bytes, skip iterating\n    if (bytes === this.byteLength) {\n      this.bufs = []\n      this.length = 0\n      return\n    }\n\n    while (this.bufs.length > 0) {\n      if (bytes >= this.bufs[0].byteLength) {\n        bytes -= this.bufs[0].byteLength\n        this.length -= this.bufs[0].byteLength\n        this.bufs.shift()\n      } else {\n        this.bufs[0] = this.bufs[0].subarray(bytes)\n        this.length -= bytes\n        break\n      }\n    }\n  }\n\n  /**\n   * Extracts a section of an array and returns a new array.\n   *\n   * This is a copy operation as it is with Uint8Arrays and Arrays\n   * - note this is different to the behaviour of Node Buffers.\n   */\n  slice (beginInclusive?: number, endExclusive?: number): Uint8Array {\n    const { bufs, length } = this._subList(beginInclusive, endExclusive)\n\n    return concat(bufs, length)\n  }\n\n  /**\n   * Returns a alloc from the given start and end element index.\n   *\n   * In the best case where the data extracted comes from a single Uint8Array\n   * internally this is a no-copy operation otherwise it is a copy operation.\n   */\n  subarray (beginInclusive?: number, endExclusive?: number): Uint8Array {\n    const { bufs, length } = this._subList(beginInclusive, endExclusive)\n\n    if (bufs.length === 1) {\n      return bufs[0]\n    }\n\n    return concat(bufs, length)\n  }\n\n  /**\n   * Returns a allocList from the given start and end element index.\n   *\n   * This is a no-copy operation.\n   */\n  sublist (beginInclusive?: number, endExclusive?: number): Uint8ArrayList {\n    const { bufs, length } = this._subList(beginInclusive, endExclusive)\n\n    const list = new Uint8ArrayList()\n    list.length = length\n    // don't loop, just set the bufs\n    list.bufs = bufs\n\n    return list\n  }\n\n  private _subList (beginInclusive?: number, endExclusive?: number) {\n    beginInclusive = beginInclusive ?? 0\n    endExclusive = endExclusive ?? this.length\n\n    if (beginInclusive < 0) {\n      beginInclusive = this.length + beginInclusive\n    }\n\n    if (endExclusive < 0) {\n      endExclusive = this.length + endExclusive\n    }\n\n    if (beginInclusive < 0 || endExclusive > this.length) {\n      throw new RangeError('index is out of bounds')\n    }\n\n    if (beginInclusive === endExclusive) {\n      return { bufs: [], length: 0 }\n    }\n\n    if (beginInclusive === 0 && endExclusive === this.length) {\n      return { bufs: [...this.bufs], length: this.length }\n    }\n\n    const bufs: Uint8Array[] = []\n    let offset = 0\n\n    for (let i = 0; i < this.bufs.length; i++) {\n      const buf = this.bufs[i]\n      const bufStart = offset\n      const bufEnd = bufStart + buf.byteLength\n\n      // for next loop\n      offset = bufEnd\n\n      if (beginInclusive >= bufEnd) {\n        // start after this buf\n        continue\n      }\n\n      const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd\n      const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd\n\n      if (sliceStartInBuf && sliceEndsInBuf) {\n        // slice is wholly contained within this buffer\n        if (beginInclusive === bufStart && endExclusive === bufEnd) {\n          // requested whole buffer\n          bufs.push(buf)\n          break\n        }\n\n        // requested part of buffer\n        const start = beginInclusive - bufStart\n        bufs.push(buf.subarray(start, start + (endExclusive - beginInclusive)))\n        break\n      }\n\n      if (sliceStartInBuf) {\n        // slice starts in this buffer\n        if (beginInclusive === 0) {\n          // requested whole buffer\n          bufs.push(buf)\n          continue\n        }\n\n        // requested part of buffer\n        bufs.push(buf.subarray(beginInclusive - bufStart))\n        continue\n      }\n\n      if (sliceEndsInBuf) {\n        if (endExclusive === bufEnd) {\n          // requested whole buffer\n          bufs.push(buf)\n          break\n        }\n\n        // requested part of buffer\n        bufs.push(buf.subarray(0, endExclusive - bufStart))\n        break\n      }\n\n      // slice started before this buffer and ends after it\n      bufs.push(buf)\n    }\n\n    return { bufs, length: endExclusive - beginInclusive }\n  }\n\n  indexOf (search: Uint8ArrayList | Uint8Array, offset: number = 0): number {\n    if (!isUint8ArrayList(search) && !(search instanceof Uint8Array)) {\n      throw new TypeError('The \"value\" argument must be a Uint8ArrayList or Uint8Array')\n    }\n\n    const needle = search instanceof Uint8Array ? search : search.subarray()\n\n    offset = Number(offset ?? 0)\n\n    if (isNaN(offset)) {\n      offset = 0\n    }\n\n    if (offset < 0) {\n      offset = this.length + offset\n    }\n\n    if (offset < 0) {\n      offset = 0\n    }\n\n    if (search.length === 0) {\n      return offset > this.length ? this.length : offset\n    }\n\n    // https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm\n    const M: number = needle.byteLength\n\n    if (M === 0) {\n      throw new TypeError('search must be at least 1 byte long')\n    }\n\n    // radix\n    const radix: number = 256\n    const rightmostPositions: Int32Array = new Int32Array(radix)\n\n    // position of the rightmost occurrence of the byte c in the pattern\n    for (let c: number = 0; c < radix; c++) {\n      // -1 for bytes not in pattern\n      rightmostPositions[c] = -1\n    }\n\n    for (let j = 0; j < M; j++) {\n      // rightmost position for bytes in pattern\n      rightmostPositions[needle[j]] = j\n    }\n\n    // Return offset of first match, -1 if no match\n    const right = rightmostPositions\n    const lastIndex = this.byteLength - needle.byteLength\n    const lastPatIndex = needle.byteLength - 1\n    let skip: number\n\n    for (let i = offset; i <= lastIndex; i += skip) {\n      skip = 0\n\n      for (let j = lastPatIndex; j >= 0; j--) {\n        const char: number = this.get(i + j)\n\n        if (needle[j] !== char) {\n          skip = Math.max(1, j - right[char])\n          break\n        }\n      }\n\n      if (skip === 0) {\n        return i\n      }\n    }\n\n    return -1\n  }\n\n  getInt8 (byteOffset: number): number {\n    const buf = this.subarray(byteOffset, byteOffset + 1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getInt8(0)\n  }\n\n  setInt8 (byteOffset: number, value: number): void {\n    const buf = allocUnsafe(1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setInt8(0, value)\n\n    this.write(buf, byteOffset)\n  }\n\n  getInt16 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getInt16(0, littleEndian)\n  }\n\n  setInt16 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setInt16(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getInt32 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getInt32(0, littleEndian)\n  }\n\n  setInt32 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setInt32(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getBigInt64 (byteOffset: number, littleEndian?: boolean): bigint {\n    const buf = this.subarray(byteOffset, byteOffset + 8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getBigInt64(0, littleEndian)\n  }\n\n  setBigInt64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {\n    const buf = alloc(8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setBigInt64(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getUint8 (byteOffset: number): number {\n    const buf = this.subarray(byteOffset, byteOffset + 1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getUint8(0)\n  }\n\n  setUint8 (byteOffset: number, value: number): void {\n    const buf = allocUnsafe(1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setUint8(0, value)\n\n    this.write(buf, byteOffset)\n  }\n\n  getUint16 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getUint16(0, littleEndian)\n  }\n\n  setUint16 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setUint16(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getUint32 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getUint32(0, littleEndian)\n  }\n\n  setUint32 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setUint32(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getBigUint64 (byteOffset: number, littleEndian?: boolean): bigint {\n    const buf = this.subarray(byteOffset, byteOffset + 8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getBigUint64(0, littleEndian)\n  }\n\n  setBigUint64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {\n    const buf = alloc(8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setBigUint64(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getFloat32 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getFloat32(0, littleEndian)\n  }\n\n  setFloat32 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setFloat32(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getFloat64 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getFloat64(0, littleEndian)\n  }\n\n  setFloat64 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setFloat64(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  equals (other: any): other is Uint8ArrayList {\n    if (other == null) {\n      return false\n    }\n\n    if (!(other instanceof Uint8ArrayList)) {\n      return false\n    }\n\n    if (other.bufs.length !== this.bufs.length) {\n      return false\n    }\n\n    for (let i = 0; i < this.bufs.length; i++) {\n      if (!equals(this.bufs[i], other.bufs[i])) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  /**\n   * Create a Uint8ArrayList from a pre-existing list of Uint8Arrays.  Use this\n   * method if you know the total size of all the Uint8Arrays ahead of time.\n   */\n  static fromUint8Arrays (bufs: Uint8Array[], length?: number): Uint8ArrayList {\n    const list = new Uint8ArrayList()\n    list.bufs = bufs\n\n    if (length == null) {\n      length = bufs.reduce((acc, curr) => acc + curr.byteLength, 0)\n    }\n\n    list.length = length\n\n    return list\n  }\n}\n\n/*\nfunction indexOf (needle: Uint8Array, haystack: Uint8Array, offset = 0) {\n  for (let i = offset; i < haystack.byteLength; i++) {\n    for (let j = 0; j < needle.length; j++) {\n      if (haystack[i + j] !== needle[j]) {\n        break\n      }\n\n      if (j === needle.byteLength -1) {\n        return i\n      }\n    }\n\n    if (haystack.byteLength - i < needle.byteLength) {\n      break\n    }\n  }\n\n  return -1\n}\n*/\n", "import { allocUnsafe } from './alloc.js'\nimport { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n */\nexport function concat (arrays: Array<ArrayLike<number>>, length?: number): Uint8Array {\n  if (length == null) {\n    length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n  }\n\n  const output = allocUnsafe(length)\n  let offset = 0\n\n  for (const arr of arrays) {\n    output.set(arr, offset)\n    offset += arr.length\n  }\n\n  return asUint8Array(output)\n}\n", "import { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size))\n  }\n\n  return new Uint8Array(size)\n}\n\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size))\n  }\n\n  return new Uint8Array(size)\n}\n", "\n/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array (buf: Uint8Array): Uint8Array {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n  }\n\n  return buf\n}\n", "/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals (a: Uint8Array, b: Uint8Array): boolean {\n  if (a === b) {\n    return true\n  }\n\n  if (a.byteLength !== b.byteLength) {\n    return false\n  }\n\n  for (let i = 0; i < a.byteLength; i++) {\n    if (a[i] !== b[i]) {\n      return false\n    }\n  }\n\n  return true\n}\n", "import type { InProgressImportResult } from '../index.js'\n\nexport interface Reducer { (leaves: InProgressImportResult[]): Promise<InProgressImportResult> }\nexport interface FileLayout { (source: AsyncIterable<InProgressImportResult> | Iterable<InProgressImportResult>, reducer: Reducer): Promise<InProgressImportResult> }\n\nexport { balanced } from './balanced.js'\nexport { flat } from './flat.js'\nexport { trickle } from './trickle.js'\n", "import batch from 'it-batch'\nimport type { InProgressImportResult } from '../index.js'\nimport type { FileLayout } from './index.js'\n\nconst DEFAULT_MAX_CHILDREN_PER_NODE = 174\n\nexport interface BalancedOptions {\n  maxChildrenPerNode?: number\n}\n\nexport function balanced (options?: BalancedOptions): FileLayout {\n  const maxChildrenPerNode = options?.maxChildrenPerNode ?? DEFAULT_MAX_CHILDREN_PER_NODE\n\n  return async function balancedLayout (source, reduce): Promise<InProgressImportResult> {\n    const roots = []\n\n    for await (const chunked of batch(source, maxChildrenPerNode)) {\n      roots.push(await reduce(chunked))\n    }\n\n    if (roots.length > 1) {\n      return await balancedLayout(roots, reduce)\n    }\n\n    return roots[0]\n  }\n}\n", "import all from 'it-all'\nimport type { FileLayout } from './index.js'\nimport type { InProgressImportResult } from '../index.js'\n\nexport function flat (): FileLayout {\n  return async function flatLayout (source, reduce): Promise<InProgressImportResult> {\n    return await reduce(await all(source))\n  }\n}\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Collects all values from an (async) iterable and returns them as an array\n */\nfunction all <T> (source: Iterable<T>): T[]\nfunction all <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T[]>\nfunction all <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T[]> | T[] {\n  if (isAsyncIterable(source)) {\n    return (async () => {\n      const arr = []\n\n      for await (const entry of source) {\n        arr.push(entry)\n      }\n\n      return arr\n    })()\n  }\n\n  const arr = []\n\n  for (const entry of source) {\n    arr.push(entry)\n  }\n\n  return arr\n}\n\nexport default all\n", "import type { UnixFS } from 'ipfs-unixfs'\nimport batch from 'it-batch'\nimport type { CID } from 'multiformats/cid'\nimport type { InProgressImportResult } from '../index.js'\nimport type { FileLayout, Reducer } from '../layout/index.js'\n\nconst DEFAULT_LAYER_REPEAT = 4\nconst DEFAULT_MAX_CHILDREN_PER_NODE = 174\n\ninterface TrickleDagNode {\n  children: InProgressImportResult[]\n  depth: number\n  maxDepth: number\n  maxChildren: number\n  data?: InProgressImportResult[]\n  parent?: TrickleDagNode\n  cid?: CID\n  size?: number\n  unixfs?: UnixFS\n}\n\nexport interface TrickleOptions {\n  layerRepeat?: number\n  maxChildrenPerNode?: number\n}\n\n/**\n * @see https://github.com/ipfs/specs/pull/57#issuecomment-265205384\n */\nexport function trickle (options?: TrickleOptions): FileLayout {\n  const layerRepeat = options?.layerRepeat ?? DEFAULT_LAYER_REPEAT\n  const maxChildrenPerNode = options?.maxChildrenPerNode ?? DEFAULT_MAX_CHILDREN_PER_NODE\n\n  return async function trickleLayout (source, reduce): Promise<InProgressImportResult> {\n    const root = new Root(layerRepeat)\n    let iteration = 0\n    let maxDepth = 1\n    let subTree: SubTree = root\n\n    for await (const layer of batch(source, maxChildrenPerNode)) {\n      if (subTree.isFull()) {\n        if (subTree !== root) {\n          root.addChild(await subTree.reduce(reduce))\n        }\n\n        if (iteration > 0 && iteration % layerRepeat === 0) {\n          maxDepth++\n        }\n\n        subTree = new SubTree(maxDepth, layerRepeat, iteration)\n\n        iteration++\n      }\n\n      subTree.append(layer)\n    }\n\n    if (subTree != null && subTree !== root) {\n      root.addChild(await subTree.reduce(reduce))\n    }\n\n    return await root.reduce(reduce)\n  }\n}\n\nclass SubTree {\n  public root: TrickleDagNode\n  public node: TrickleDagNode\n  public parent: TrickleDagNode\n  public maxDepth: number\n  public layerRepeat: number\n  public currentDepth: number\n  public iteration: number\n\n  constructor (maxDepth: number, layerRepeat: number, iteration: number = 0) {\n    this.maxDepth = maxDepth\n    this.layerRepeat = layerRepeat\n    this.currentDepth = 1\n    this.iteration = iteration\n\n    this.root = this.node = this.parent = {\n      children: [],\n      depth: this.currentDepth,\n      maxDepth,\n      maxChildren: (this.maxDepth - this.currentDepth) * this.layerRepeat\n    }\n  }\n\n  isFull (): boolean {\n    if (this.root.data == null) {\n      return false\n    }\n\n    if (this.currentDepth < this.maxDepth && this.node.maxChildren > 0) {\n      // can descend\n      this._addNextNodeToParent(this.node)\n\n      return false\n    }\n\n    // try to find new node from node.parent\n    const distantRelative = this._findParent(this.node, this.currentDepth)\n\n    if (distantRelative != null) {\n      this._addNextNodeToParent(distantRelative)\n\n      return false\n    }\n\n    return true\n  }\n\n  _addNextNodeToParent (parent: TrickleDagNode): void {\n    this.parent = parent\n\n    // find site for new node\n    const nextNode = {\n      children: [],\n      depth: parent.depth + 1,\n      parent,\n      maxDepth: this.maxDepth,\n      maxChildren: Math.floor(parent.children.length / this.layerRepeat) * this.layerRepeat\n    }\n\n    // @ts-expect-error\n    parent.children.push(nextNode)\n\n    this.currentDepth = nextNode.depth\n    this.node = nextNode\n  }\n\n  append (layer: InProgressImportResult[]): void {\n    this.node.data = layer\n  }\n\n  async reduce (reduce: Reducer): Promise<InProgressImportResult> {\n    return await this._reduce(this.root, reduce)\n  }\n\n  async _reduce (node: TrickleDagNode, reduce: Reducer): Promise<InProgressImportResult> {\n    let children: InProgressImportResult[] = []\n\n    if (node.children.length > 0) {\n      children = await Promise.all(\n        node.children\n          // @ts-expect-error\n          .filter(child => child.data)\n          // @ts-expect-error\n          .map(async child => await this._reduce(child, reduce))\n      )\n    }\n\n    return await reduce((node.data ?? []).concat(children))\n  }\n\n  _findParent (node: TrickleDagNode, depth: number): TrickleDagNode | undefined {\n    const parent = node.parent\n\n    if (parent == null || parent.depth === 0) {\n      return\n    }\n\n    if (parent.children.length === parent.maxChildren || parent.maxChildren === 0) {\n      // this layer is full, may be able to traverse to a different branch\n      return this._findParent(parent, depth)\n    }\n\n    return parent\n  }\n}\n\nclass Root extends SubTree {\n  constructor (layerRepeat: number) {\n    super(0, layerRepeat)\n\n    this.root.depth = 0\n    this.currentDepth = 1\n  }\n\n  addChild (child: InProgressImportResult): void {\n    this.root.children.push(child)\n  }\n\n  async reduce (reduce: Reducer): Promise<InProgressImportResult> {\n    return await reduce((this.root.data ?? []).concat(this.root.children))\n  }\n}\n", "import { UnixFS } from 'ipfs-unixfs'\nimport { persist, PersistOptions } from '../utils/persist.js'\nimport * as dagPb from '@ipld/dag-pb'\nimport * as raw from 'multiformats/codecs/raw'\nimport type { BufferImporter } from '../index.js'\nimport type { CID, Version } from 'multiformats/cid'\nimport { CustomProgressEvent } from 'progress-events'\nimport type { ProgressOptions, ProgressEvent } from 'progress-events'\n\n/**\n * Passed to the onProgress callback while importing files\n */\nexport interface ImportWriteProgress {\n  /**\n   * How many bytes we have written for this source so far - this may be\n   * bigger than the file size due to the DAG-PB wrappers of each block\n   */\n  bytesWritten: bigint\n\n  /**\n   * The CID of the block that has been written\n   */\n  cid: CID\n\n  /**\n   * The path of the file being imported, if one was specified\n   */\n  path?: string\n}\n\nexport type BufferImportProgressEvents =\n  ProgressEvent<'unixfs:importer:progress:file:write', ImportWriteProgress>\n\nexport interface BufferImporterOptions extends ProgressOptions<BufferImportProgressEvents> {\n  cidVersion: Version\n  rawLeaves: boolean\n  leafType: 'file' | 'raw'\n}\n\nexport function defaultBufferImporter (options: BufferImporterOptions): BufferImporter {\n  return async function * bufferImporter (file, blockstore) {\n    let bytesWritten = 0n\n\n    for await (let block of file.content) {\n      yield async () => { // eslint-disable-line no-loop-func\n        let unixfs\n\n        const opts: PersistOptions = {\n          codec: dagPb,\n          cidVersion: options.cidVersion,\n          onProgress: options.onProgress\n        }\n\n        if (options.rawLeaves) {\n          opts.codec = raw\n          opts.cidVersion = 1\n        } else {\n          unixfs = new UnixFS({\n            type: options.leafType,\n            data: block\n          })\n\n          block = dagPb.encode({\n            Data: unixfs.marshal(),\n            Links: []\n          })\n        }\n\n        const cid = await persist(block, blockstore, opts)\n\n        bytesWritten += BigInt(block.byteLength)\n\n        options.onProgress?.(new CustomProgressEvent<ImportWriteProgress>('unixfs:importer:progress:file:write', {\n          bytesWritten,\n          cid,\n          path: file.path\n        }))\n\n        return {\n          cid,\n          unixfs,\n          size: BigInt(block.length),\n          block\n        }\n      }\n    }\n  }\n}\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Returns the first result from an (async) iterable, unless empty, in which\n * case returns `undefined`\n */\nfunction first <T> (source: Iterable<T>): T | undefined\nfunction first <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined>\nfunction first <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined> | T | undefined {\n  if (isAsyncIterable(source)) {\n    return (async () => {\n      for await (const entry of source) { // eslint-disable-line no-unreachable-loop\n        return entry\n      }\n\n      return undefined\n    })()\n  }\n\n  for (const entry of source) { // eslint-disable-line no-unreachable-loop\n    return entry\n  }\n\n  return undefined\n}\n\nexport default first\n", "import * as ErrorsImport from './errors.js'\n\nexport { BaseBlockstore } from './base.js'\nexport { MemoryBlockstore } from './memory.js'\n\nexport const Errors = {\n  ...ErrorsImport\n}\n", "import errCode from 'err-code'\n\nexport function openFailedError (err?: Error): Error {\n  err = err ?? new Error('Open failed')\n  return errCode(err, 'ERR_OPEN_FAILED')\n}\n\nexport function closeFailedError (err?: Error): Error {\n  err = err ?? new Error('Close failed')\n  return errCode(err, 'ERR_CLOSE_FAILED')\n}\n\nexport function putFailedError (err?: Error): Error {\n  err = err ?? new Error('Put failed')\n  return errCode(err, 'ERR_PUT_FAILED')\n}\n\nexport function getFailedError (err?: Error): Error {\n  err = err ?? new Error('Get failed')\n  return errCode(err, 'ERR_GET_FAILED')\n}\n\nexport function deleteFailedError (err?: Error): Error {\n  err = err ?? new Error('Delete failed')\n  return errCode(err, 'ERR_DELETE_FAILED')\n}\n\nexport function hasFailedError (err?: Error): Error {\n  err = err ?? new Error('Has failed')\n  return errCode(err, 'ERR_HAS_FAILED')\n}\n\nexport function notFoundError (err?: Error): Error {\n  err = err ?? new Error('Not Found')\n  return errCode(err, 'ERR_NOT_FOUND')\n}\n\nexport function abortedError (err?: Error): Error {\n  err = err ?? new Error('Aborted')\n  return errCode(err, 'ERR_ABORTED')\n}\n", "import type { Blockstore, Pair } from 'interface-blockstore'\nimport type { AbortOptions, Await, AwaitIterable } from 'interface-store'\nimport type { CID } from 'multiformats/cid'\n\nexport class BaseBlockstore implements Blockstore {\n  has (key: CID, options?: AbortOptions): Await<boolean> {\n    return Promise.reject(new Error('.has is not implemented'))\n  }\n\n  put (key: CID, val: Uint8Array, options?: AbortOptions): Await<CID> {\n    return Promise.reject(new Error('.put is not implemented'))\n  }\n\n  async * putMany (source: AwaitIterable<Pair>, options?: AbortOptions): AwaitIterable<CID> {\n    for await (const { cid, block } of source) {\n      await this.put(cid, block, options)\n      yield cid\n    }\n  }\n\n  get (key: CID, options?: AbortOptions): Await<Uint8Array> {\n    return Promise.reject(new Error('.get is not implemented'))\n  }\n\n  async * getMany (source: AwaitIterable<CID>, options?: AbortOptions): AwaitIterable<Pair> {\n    for await (const key of source) {\n      yield {\n        cid: key,\n        block: await this.get(key, options)\n      }\n    }\n  }\n\n  async delete (key: CID, options?: AbortOptions): Promise<void> {\n    await Promise.reject(new Error('.delete is not implemented'))\n  }\n\n  async * deleteMany (source: AwaitIterable<CID>, options?: AbortOptions): AwaitIterable<CID> {\n    for await (const key of source) {\n      await this.delete(key, options)\n      yield key\n    }\n  }\n\n  /**\n   * Extending classes should override `query` or implement this method\n   */\n  async * getAll (options?: AbortOptions): AwaitIterable<Pair> { // eslint-disable-line require-yield\n    throw new Error('.getAll is not implemented')\n  }\n}\n", "import { BaseBlockstore } from './base.js'\nimport { base32 } from 'multiformats/bases/base32'\nimport * as raw from 'multiformats/codecs/raw'\nimport { CID } from 'multiformats/cid'\nimport * as Digest from 'multiformats/hashes/digest'\nimport * as Errors from './errors.js'\nimport type { Await, AwaitIterable } from 'interface-store'\nimport type { Pair } from 'interface-blockstore'\n\nexport class MemoryBlockstore extends BaseBlockstore {\n  private readonly data: Map<string, Uint8Array>\n\n  constructor () {\n    super()\n\n    this.data = new Map()\n  }\n\n  put (key: CID, val: Uint8Array): Await<CID> { // eslint-disable-line require-await\n    this.data.set(base32.encode(key.multihash.bytes), val)\n\n    return key\n  }\n\n  get (key: CID): Await<Uint8Array> {\n    const buf = this.data.get(base32.encode(key.multihash.bytes))\n\n    if (buf == null) {\n      throw Errors.notFoundError()\n    }\n\n    return buf\n  }\n\n  has (key: CID): Await<boolean> {\n    return this.data.has(base32.encode(key.multihash.bytes))\n  }\n\n  async delete (key: CID): Promise<void> {\n    this.data.delete(base32.encode(key.multihash.bytes))\n  }\n\n  async * getAll (): AwaitIterable<Pair> {\n    for (const [key, value] of this.data.entries()) {\n      yield {\n        cid: CID.createV1(raw.code, Digest.decode(base32.decode(key))),\n        block: value\n      }\n    }\n  }\n}\n", "import * as cbor from '@ipld/dag-cbor';\n\nimport type { Readable } from 'readable-stream';\n\nimport { CID } from 'multiformats/cid';\nimport { importer } from 'ipfs-unixfs-importer';\nimport { MemoryBlockstore } from 'blockstore-core';\nimport { sha256 } from 'multiformats/hashes/sha2';\n\n// a map of all supported CID hashing algorithms. This map is used to select the appropriate hasher\n// when generating a CID to compare against a provided CID\nconst hashers = {\n  [sha256.code as number]: sha256,\n};\n\n// a map of all support codecs.This map is used to select the appropriate codec\n// when generating a CID to compare against a provided CID\nconst codecs = {\n  [cbor.code as number]: cbor\n};\n\n/**\n * Computes a V1 CID for the provided payload\n * @param payload\n * @param codecCode - the codec to use. Defaults to cbor\n * @param multihashCode - the multihasher to use. Defaults to sha256\n * @returns payload CID\n * @throws {Error} codec is not supported\n * @throws {Error} encoding fails\n * @throws {Error} if hasher is not supported\n */\nexport async function computeCid(\n  payload: any,\n  codecCode: number = cbor.code,\n  multihashCode: number = sha256.code\n): Promise<string> {\n  const codec = codecs[codecCode];\n  if (!codec) {\n    throw new Error(`codec [${codecCode}] not supported`);\n  }\n\n  const hasher = hashers[multihashCode];\n  if (!hasher) {\n    throw new Error(`multihash code [${multihashCode}] not supported`);\n  }\n\n  const payloadBytes = codec.encode(payload);\n  const payloadHash = await hasher.digest(payloadBytes);\n\n  const cid = await CID.createV1(codec.code, payloadHash);\n  return cid.toString();\n}\n\nexport function parseCid(str: string): CID {\n  const cid: CID = CID.parse(str).toV1();\n\n  if (!codecs[cid.code]) {\n    throw new Error(`codec [${cid.code}] not supported`);\n  }\n\n  if (!hashers[cid.multihash.code]) {\n    throw new Error(`multihash code [${cid.multihash.code}] not supported`);\n  }\n\n  return cid;\n}\n\n\n/**\n * Utility class for creating CIDs. Exported for the convenience of developers.\n */\nexport class Cid {\n  /**\n   * @returns V1 CID of the DAG comprised by chunking data into unixfs DAG-PB encoded blocks\n   */\n  public static async computeDagPbCidFromBytes(content: Uint8Array): Promise<string> {\n    const asyncDataBlocks = importer([{ content }], new MemoryBlockstore(), { cidVersion: 1 });\n\n    // NOTE: the last block contains the root CID\n    let block;\n    for await (block of asyncDataBlocks) { ; }\n\n    return block ? block.cid.toString() : '';\n  }\n\n  /**\n   * @returns V1 CID of the DAG comprised by chunking data into unixfs DAG-PB encoded blocks\n   */\n  public static async computeDagPbCidFromStream(dataStream: Readable): Promise<string> {\n    const asyncDataBlocks = importer([{ content: dataStream }], new MemoryBlockstore(), { cidVersion: 1 });\n\n    // NOTE: the last block contains the root CID\n    let block;\n    for await (block of asyncDataBlocks) { ; }\n\n    return block ? block.cid.toString() : '';\n  }\n}\n", "/**\n * Wraps the given `AbortSignal` in a `Promise` that rejects if it is triggered (and will therefore never resolve).\n */\nfunction promisifySignal<Type>(signal: AbortSignal): Promise<Type> {\n  return new Promise((resolve, reject) => {\n    if (signal.aborted) {\n      reject(signal.reason);\n      return;\n    }\n\n    signal.addEventListener('abort', () => {\n      reject(signal.reason);\n    });\n  });\n}\n\n/**\n * Wraps the given `Promise` such that it will reject if the `AbortSignal` is triggered.\n */\nexport async function abortOr<Type>(signal: AbortSignal | undefined, promise: Promise<Type>): Promise<Type> {\n  if (!signal) {\n    return promise;\n  }\n\n  return Promise.race([\n    promise,\n    promisifySignal<Type>(signal),\n  ]);\n}\n", "import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * sleeps for the desired duration\n * @param durationInMillisecond the desired amount of sleep time\n * @returns when the provided duration has passed\n */\nexport function sleep(durationInMillisecond: number): Promise<void> {\n  return new Promise(resolve => setTimeout(resolve, durationInMillisecond));\n}\n\n/**\n * returns an UTC ISO-8601 timestamp with microsecond precision\n * using @js-temporal/polyfill\n */\nexport function getCurrentTimeInHighPrecision(): string {\n  return Temporal.Now.instant().toString({ smallestUnit: 'microseconds' });\n}\n", "import { DEBUG } from './debug';\nconst INTRINSICS = {};\nconst customUtilInspectFormatters = {\n    ['Temporal.Duration'](depth, options) {\n        const descr = options.stylize(`${this[Symbol.toStringTag]} <${this}>`, 'special');\n        if (depth < 1)\n            return descr;\n        const entries = [];\n        for (const prop of [\n            'years',\n            'months',\n            'weeks',\n            'days',\n            'hours',\n            'minutes',\n            'seconds',\n            'milliseconds',\n            'microseconds',\n            'nanoseconds'\n        ]) {\n            if (this[prop] !== 0)\n                entries.push(`  ${prop}: ${options.stylize(this[prop], 'number')}`);\n        }\n        return descr + ' {\\n' + entries.join(',\\n') + '\\n}';\n    }\n};\nfunction defaultUtilInspectFormatter(depth, options) {\n    return options.stylize(`${this[Symbol.toStringTag]} <${this}>`, 'special');\n}\nexport function MakeIntrinsicClass(Class, name) {\n    Object.defineProperty(Class.prototype, Symbol.toStringTag, {\n        value: name,\n        writable: false,\n        enumerable: false,\n        configurable: true\n    });\n    if (DEBUG) {\n        Object.defineProperty(Class.prototype, Symbol.for('nodejs.util.inspect.custom'), {\n            value: customUtilInspectFormatters[name] || defaultUtilInspectFormatter,\n            writable: false,\n            enumerable: false,\n            configurable: true\n        });\n    }\n    for (const prop of Object.getOwnPropertyNames(Class)) {\n        // we know that `prop` is present, so the descriptor is never undefined\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const desc = Object.getOwnPropertyDescriptor(Class, prop);\n        if (!desc.configurable || !desc.enumerable)\n            continue;\n        desc.enumerable = false;\n        Object.defineProperty(Class, prop, desc);\n    }\n    for (const prop of Object.getOwnPropertyNames(Class.prototype)) {\n        // we know that `prop` is present, so the descriptor is never undefined\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const desc = Object.getOwnPropertyDescriptor(Class.prototype, prop);\n        if (!desc.configurable || !desc.enumerable)\n            continue;\n        desc.enumerable = false;\n        Object.defineProperty(Class.prototype, prop, desc);\n    }\n    DefineIntrinsic(name, Class);\n    DefineIntrinsic(`${name}.prototype`, Class.prototype);\n}\nexport function DefineIntrinsic(name, value) {\n    const key = `%${name}%`;\n    if (INTRINSICS[key] !== undefined)\n        throw new Error(`intrinsic ${name} already exists`);\n    INTRINSICS[key] = value;\n}\nexport function GetIntrinsic(intrinsic) {\n    return INTRINSICS[intrinsic];\n}\n//# sourceMappingURL=intrinsicclass.js.map", "// Instant\nexport const EPOCHNANOSECONDS = 'slot-epochNanoSeconds';\n// TimeZone\nexport const TIMEZONE_ID = 'slot-timezone-identifier';\n// DateTime, Date, Time, YearMonth, MonthDay\nexport const ISO_YEAR = 'slot-year';\nexport const ISO_MONTH = 'slot-month';\nexport const ISO_DAY = 'slot-day';\nexport const ISO_HOUR = 'slot-hour';\nexport const ISO_MINUTE = 'slot-minute';\nexport const ISO_SECOND = 'slot-second';\nexport const ISO_MILLISECOND = 'slot-millisecond';\nexport const ISO_MICROSECOND = 'slot-microsecond';\nexport const ISO_NANOSECOND = 'slot-nanosecond';\nexport const CALENDAR = 'slot-calendar';\n// Date, YearMonth, and MonthDay all have the same slots, disambiguation needed:\nexport const DATE_BRAND = 'slot-date-brand';\nexport const YEAR_MONTH_BRAND = 'slot-year-month-brand';\nexport const MONTH_DAY_BRAND = 'slot-month-day-brand';\n// ZonedDateTime\nexport const INSTANT = 'slot-cached-instant';\nexport const TIME_ZONE = 'slot-time-zone';\n// Duration\nexport const YEARS = 'slot-years';\nexport const MONTHS = 'slot-months';\nexport const WEEKS = 'slot-weeks';\nexport const DAYS = 'slot-days';\nexport const HOURS = 'slot-hours';\nexport const MINUTES = 'slot-minutes';\nexport const SECONDS = 'slot-seconds';\nexport const MILLISECONDS = 'slot-milliseconds';\nexport const MICROSECONDS = 'slot-microseconds';\nexport const NANOSECONDS = 'slot-nanoseconds';\n// Calendar\nexport const CALENDAR_ID = 'slot-calendar-identifier';\nconst slots = new WeakMap();\nexport function CreateSlots(container) {\n    slots.set(container, Object.create(null));\n}\nfunction GetSlots(container) {\n    return slots.get(container);\n}\nexport function HasSlot(container, ...ids) {\n    if (!container || 'object' !== typeof container)\n        return false;\n    const myslots = GetSlots(container);\n    return !!myslots && ids.reduce((all, id) => all && id in myslots, true);\n}\nexport function GetSlot(container, id) {\n    const value = GetSlots(container)[id];\n    if (value === undefined)\n        throw new TypeError(`Missing internal slot ${id}`);\n    return value;\n}\nexport function SetSlot(container, id, value) {\n    GetSlots(container)[id] = value;\n}\n//# sourceMappingURL=slots.js.map", "const tzComponent = /\\.[-A-Za-z_]|\\.\\.[-A-Za-z._]{1,12}|\\.[-A-Za-z_][-A-Za-z._]{0,12}|[A-Za-z_][-A-Za-z._]{0,13}/;\nconst offsetNoCapture = /(?:[+\\u2212-][0-2][0-9](?::?[0-5][0-9](?::?[0-5][0-9](?:[.,]\\d{1,9})?)?)?)/;\nconst timeZoneID = new RegExp(`(?:(?:${tzComponent.source})(?:\\\\/(?:${tzComponent.source}))*|Etc/GMT[-+]\\\\d{1,2}|${offsetNoCapture.source})`);\nconst calComponent = /[A-Za-z0-9]{3,8}/;\nconst calendarID = new RegExp(`(?:${calComponent.source}(?:-${calComponent.source})*)`);\nconst yearpart = /(?:[+\\u2212-]\\d{6}|\\d{4})/;\nconst monthpart = /(?:0[1-9]|1[0-2])/;\nconst daypart = /(?:0[1-9]|[12]\\d|3[01])/;\nconst datesplit = new RegExp(`(${yearpart.source})(?:-(${monthpart.source})-(${daypart.source})|(${monthpart.source})(${daypart.source}))`);\nconst timesplit = /(\\d{2})(?::(\\d{2})(?::(\\d{2})(?:[.,](\\d{1,9}))?)?|(\\d{2})(?:(\\d{2})(?:[.,](\\d{1,9}))?)?)?/;\nexport const offset = /([+\\u2212-])([01][0-9]|2[0-3])(?::?([0-5][0-9])(?::?([0-5][0-9])(?:[.,](\\d{1,9}))?)?)?/;\nconst zonesplit = new RegExp(`(?:([zZ])|(?:${offset.source})?)(?:\\\\[(${timeZoneID.source})\\\\])?`);\nconst calendar = new RegExp(`\\\\[u-ca=(${calendarID.source})\\\\]`);\nexport const zoneddatetime = new RegExp(`^${datesplit.source}(?:(?:T|\\\\s+)${timesplit.source})?${zonesplit.source}(?:${calendar.source})?$`, 'i');\nexport const time = new RegExp(`^T?${timesplit.source}(?:${zonesplit.source})?(?:${calendar.source})?$`, 'i');\n// The short forms of YearMonth and MonthDay are only for the ISO calendar.\n// Non-ISO calendar YearMonth and MonthDay have to parse as a Temporal.PlainDate,\n// with the reference fields.\n// YYYYMM forbidden by ISO 8601 because ambiguous with YYMMDD, but allowed by\n// RFC 3339 and we don't allow 2-digit years, so we allow it.\n// Not ambiguous with HHMMSS because that requires a 'T' prefix\nexport const yearmonth = new RegExp(`^(${yearpart.source})-?(${monthpart.source})$`);\nexport const monthday = new RegExp(`^(?:--)?(${monthpart.source})-?(${daypart.source})$`);\nconst fraction = /(\\d+)(?:[.,](\\d{1,9}))?/;\nconst durationDate = /(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?/;\nconst durationTime = new RegExp(`(?:${fraction.source}H)?(?:${fraction.source}M)?(?:${fraction.source}S)?`);\nexport const duration = new RegExp(`^([+\\u2212-])?P${durationDate.source}(?:T(?!$)${durationTime.source})?$`, 'i');\n//# sourceMappingURL=regex.js.map", "const ArrayIncludes = Array.prototype.includes;\nconst ArrayPrototypePush = Array.prototype.push;\nconst IntlDateTimeFormat = globalThis.Intl.DateTimeFormat;\nconst MathMin = Math.min;\nconst MathMax = Math.max;\nconst MathAbs = Math.abs;\nconst MathFloor = Math.floor;\nconst MathSign = Math.sign;\nconst MathTrunc = Math.trunc;\nconst NumberIsNaN = Number.isNaN;\nconst NumberIsFinite = Number.isFinite;\nconst NumberCtor = Number;\nconst StringCtor = String;\nconst NumberMaxSafeInteger = Number.MAX_SAFE_INTEGER;\nconst ObjectAssign = Object.assign;\nconst ObjectCreate = Object.create;\nconst ObjectDefineProperty = Object.defineProperty;\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst ObjectIs = Object.is;\nconst ReflectApply = Reflect.apply;\nimport { DEBUG } from './debug';\nimport JSBI from 'jsbi';\nimport { GetIntrinsic } from './intrinsicclass';\nimport { CreateSlots, GetSlot, HasSlot, SetSlot, EPOCHNANOSECONDS, TIMEZONE_ID, CALENDAR_ID, INSTANT, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, DATE_BRAND, YEAR_MONTH_BRAND, MONTH_DAY_BRAND, TIME_ZONE, CALENDAR, YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS } from './slots';\nexport const ZERO = JSBI.BigInt(0);\nconst ONE = JSBI.BigInt(1);\nconst SIXTY = JSBI.BigInt(60);\nexport const THOUSAND = JSBI.BigInt(1e3);\nexport const MILLION = JSBI.BigInt(1e6);\nexport const BILLION = JSBI.BigInt(1e9);\nconst NEGATIVE_ONE = JSBI.BigInt(-1);\nconst DAY_SECONDS = 86400;\nconst DAY_NANOS = JSBI.multiply(JSBI.BigInt(DAY_SECONDS), BILLION);\nconst NS_MIN = JSBI.multiply(JSBI.BigInt(-86400), JSBI.BigInt(1e17));\nconst NS_MAX = JSBI.multiply(JSBI.BigInt(86400), JSBI.BigInt(1e17));\nconst YEAR_MIN = -271821;\nconst YEAR_MAX = 275760;\nconst BEFORE_FIRST_OFFSET_TRANSITION = JSBI.multiply(JSBI.BigInt(-388152), JSBI.BigInt(1e13)); // 1847-01-01T00:00:00Z\nconst ABOUT_TEN_YEARS_NANOS = JSBI.multiply(DAY_NANOS, JSBI.BigInt(366 * 10));\nconst ABOUT_ONE_YEAR_NANOS = JSBI.multiply(DAY_NANOS, JSBI.BigInt(366 * 1));\nconst TWO_WEEKS_NANOS = JSBI.multiply(DAY_NANOS, JSBI.BigInt(2 * 7));\nconst BUILTIN_CALENDAR_IDS = [\n    'iso8601',\n    'hebrew',\n    'islamic',\n    'islamic-umalqura',\n    'islamic-tbla',\n    'islamic-civil',\n    'islamic-rgsa',\n    'islamicc',\n    'persian',\n    'ethiopic',\n    'ethioaa',\n    'coptic',\n    'chinese',\n    'dangi',\n    'roc',\n    'indian',\n    'buddhist',\n    'japanese',\n    'gregory'\n];\nfunction IsInteger(value) {\n    if (typeof value !== 'number' || !NumberIsFinite(value))\n        return false;\n    const abs = MathAbs(value);\n    return MathFloor(abs) === abs;\n}\nexport function IsObject(value) {\n    return (typeof value === 'object' && value !== null) || typeof value === 'function';\n}\nexport function ToNumber(value) {\n    if (typeof value === 'bigint')\n        throw new TypeError('Cannot convert BigInt to number');\n    return NumberCtor(value);\n}\nfunction ToInteger(value) {\n    const num = ToNumber(value);\n    if (NumberIsNaN(num))\n        return 0;\n    const integer = MathTrunc(num);\n    if (num === 0)\n        return 0;\n    return integer;\n}\nexport function ToString(value) {\n    if (typeof value === 'symbol') {\n        throw new TypeError('Cannot convert a Symbol value to a String');\n    }\n    return StringCtor(value);\n}\nexport function ToIntegerThrowOnInfinity(value) {\n    const integer = ToInteger(value);\n    if (!NumberIsFinite(integer)) {\n        throw new RangeError('infinity is out of range');\n    }\n    return integer;\n}\nfunction ToPositiveInteger(valueParam, property) {\n    const value = ToInteger(valueParam);\n    if (!NumberIsFinite(value)) {\n        throw new RangeError('infinity is out of range');\n    }\n    if (value < 1) {\n        if (property !== undefined) {\n            throw new RangeError(`property '${property}' cannot be a a number less than one`);\n        }\n        throw new RangeError('Cannot convert a number less than one to a positive integer');\n    }\n    return value;\n}\nexport function ToIntegerWithoutRounding(valueParam) {\n    const value = ToNumber(valueParam);\n    if (NumberIsNaN(value))\n        return 0;\n    if (!NumberIsFinite(value)) {\n        throw new RangeError('infinity is out of range');\n    }\n    if (!IsInteger(value)) {\n        throw new RangeError(`unsupported fractional value ${value}`);\n    }\n    return ToInteger(value); // ℝ(value) in spec text; converts -0 to 0\n}\nfunction divmod(x, y) {\n    const quotient = JSBI.divide(x, y);\n    const remainder = JSBI.remainder(x, y);\n    return { quotient, remainder };\n}\nfunction abs(x) {\n    if (JSBI.lessThan(x, ZERO))\n        return JSBI.multiply(x, NEGATIVE_ONE);\n    return x;\n}\nexport function ArrayPush(arr, ...newItem) {\n    ArrayPrototypePush.apply(arr, newItem);\n    return arr;\n}\nconst BUILTIN_CASTS = new Map([\n    ['year', ToIntegerThrowOnInfinity],\n    ['month', ToPositiveInteger],\n    ['monthCode', ToString],\n    ['day', ToPositiveInteger],\n    ['hour', ToIntegerThrowOnInfinity],\n    ['minute', ToIntegerThrowOnInfinity],\n    ['second', ToIntegerThrowOnInfinity],\n    ['millisecond', ToIntegerThrowOnInfinity],\n    ['microsecond', ToIntegerThrowOnInfinity],\n    ['nanosecond', ToIntegerThrowOnInfinity],\n    ['years', ToIntegerWithoutRounding],\n    ['months', ToIntegerWithoutRounding],\n    ['weeks', ToIntegerWithoutRounding],\n    ['days', ToIntegerWithoutRounding],\n    ['hours', ToIntegerWithoutRounding],\n    ['minutes', ToIntegerWithoutRounding],\n    ['seconds', ToIntegerWithoutRounding],\n    ['milliseconds', ToIntegerWithoutRounding],\n    ['microseconds', ToIntegerWithoutRounding],\n    ['nanoseconds', ToIntegerWithoutRounding],\n    ['era', ToString],\n    ['eraYear', ToInteger],\n    ['offset', ToString]\n]);\nconst BUILTIN_DEFAULTS = new Map([\n    ['hour', 0],\n    ['minute', 0],\n    ['second', 0],\n    ['millisecond', 0],\n    ['microsecond', 0],\n    ['nanosecond', 0]\n]);\n// each item is [plural, singular, category]\nconst SINGULAR_PLURAL_UNITS = [\n    ['years', 'year', 'date'],\n    ['months', 'month', 'date'],\n    ['weeks', 'week', 'date'],\n    ['days', 'day', 'date'],\n    ['hours', 'hour', 'time'],\n    ['minutes', 'minute', 'time'],\n    ['seconds', 'second', 'time'],\n    ['milliseconds', 'millisecond', 'time'],\n    ['microseconds', 'microsecond', 'time'],\n    ['nanoseconds', 'nanosecond', 'time']\n];\nconst SINGULAR_FOR = new Map(SINGULAR_PLURAL_UNITS.map((e) => [e[0], e[1]]));\nconst PLURAL_FOR = new Map(SINGULAR_PLURAL_UNITS.map(([p, s]) => [s, p]));\nconst UNITS_DESCENDING = SINGULAR_PLURAL_UNITS.map(([, s]) => s);\nconst DURATION_FIELDS = Array.from(SINGULAR_FOR.keys()).sort();\nimport * as PARSE from './regex';\nconst IntlDateTimeFormatEnUsCache = new Map();\nfunction getIntlDateTimeFormatEnUsForTimeZone(timeZoneIdentifier) {\n    let instance = IntlDateTimeFormatEnUsCache.get(timeZoneIdentifier);\n    if (instance === undefined) {\n        instance = new IntlDateTimeFormat('en-us', {\n            timeZone: StringCtor(timeZoneIdentifier),\n            hour12: false,\n            era: 'short',\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n        IntlDateTimeFormatEnUsCache.set(timeZoneIdentifier, instance);\n    }\n    return instance;\n}\nexport function IsTemporalInstant(item) {\n    return HasSlot(item, EPOCHNANOSECONDS) && !HasSlot(item, TIME_ZONE, CALENDAR);\n}\nexport function IsTemporalTimeZone(item) {\n    return HasSlot(item, TIMEZONE_ID);\n}\nexport function IsTemporalCalendar(item) {\n    return HasSlot(item, CALENDAR_ID);\n}\nexport function IsTemporalDuration(item) {\n    return HasSlot(item, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS);\n}\nexport function IsTemporalDate(item) {\n    return HasSlot(item, DATE_BRAND);\n}\nexport function IsTemporalTime(item) {\n    return (HasSlot(item, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND) &&\n        !HasSlot(item, ISO_YEAR, ISO_MONTH, ISO_DAY));\n}\nexport function IsTemporalDateTime(item) {\n    return HasSlot(item, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND);\n}\nexport function IsTemporalYearMonth(item) {\n    return HasSlot(item, YEAR_MONTH_BRAND);\n}\nexport function IsTemporalMonthDay(item) {\n    return HasSlot(item, MONTH_DAY_BRAND);\n}\nexport function IsTemporalZonedDateTime(item) {\n    return HasSlot(item, EPOCHNANOSECONDS, TIME_ZONE, CALENDAR);\n}\nexport function RejectObjectWithCalendarOrTimeZone(item) {\n    if (HasSlot(item, CALENDAR) || HasSlot(item, TIME_ZONE)) {\n        throw new TypeError('with() does not support a calendar or timeZone property');\n    }\n    if (item.calendar !== undefined) {\n        throw new TypeError('with() does not support a calendar property');\n    }\n    if (item.timeZone !== undefined) {\n        throw new TypeError('with() does not support a timeZone property');\n    }\n}\nfunction ParseTemporalTimeZone(stringIdent) {\n    let { ianaName, offset, z } = ParseTemporalTimeZoneString(stringIdent);\n    if (ianaName)\n        return ianaName;\n    if (z)\n        return 'UTC';\n    return offset; // if !ianaName && !z then offset must be present\n}\nfunction FormatCalendarAnnotation(id, showCalendar) {\n    if (showCalendar === 'never')\n        return '';\n    if (showCalendar === 'auto' && id === 'iso8601')\n        return '';\n    return `[u-ca=${id}]`;\n}\nfunction ParseISODateTime(isoString) {\n    // ZDT is the superset of fields for every other Temporal type\n    const match = PARSE.zoneddatetime.exec(isoString);\n    if (!match)\n        throw new RangeError(`invalid ISO 8601 string: ${isoString}`);\n    let yearString = match[1];\n    if (yearString[0] === '\\u2212')\n        yearString = `-${yearString.slice(1)}`;\n    if (yearString === '-000000')\n        throw new RangeError(`invalid ISO 8601 string: ${isoString}`);\n    const year = ToInteger(yearString);\n    const month = ToInteger(match[2] || match[4]);\n    const day = ToInteger(match[3] || match[5]);\n    const hour = ToInteger(match[6]);\n    const hasTime = match[6] !== undefined;\n    const minute = ToInteger(match[7] || match[10]);\n    let second = ToInteger(match[8] || match[11]);\n    if (second === 60)\n        second = 59;\n    const fraction = (match[9] || match[12]) + '000000000';\n    const millisecond = ToInteger(fraction.slice(0, 3));\n    const microsecond = ToInteger(fraction.slice(3, 6));\n    const nanosecond = ToInteger(fraction.slice(6, 9));\n    let offset;\n    let z = false;\n    if (match[13]) {\n        offset = undefined;\n        z = true;\n    }\n    else if (match[14] && match[15]) {\n        const offsetSign = match[14] === '-' || match[14] === '\\u2212' ? '-' : '+';\n        const offsetHours = match[15] || '00';\n        const offsetMinutes = match[16] || '00';\n        const offsetSeconds = match[17] || '00';\n        let offsetFraction = match[18] || '0';\n        offset = `${offsetSign}${offsetHours}:${offsetMinutes}`;\n        if (+offsetFraction) {\n            while (offsetFraction.endsWith('0'))\n                offsetFraction = offsetFraction.slice(0, -1);\n            offset += `:${offsetSeconds}.${offsetFraction}`;\n        }\n        else if (+offsetSeconds) {\n            offset += `:${offsetSeconds}`;\n        }\n        if (offset === '-00:00')\n            offset = '+00:00';\n    }\n    let ianaName = match[19];\n    if (ianaName) {\n        try {\n            // Canonicalize name if it is an IANA link name or is capitalized wrong\n            ianaName = GetCanonicalTimeZoneIdentifier(ianaName).toString();\n        }\n        catch {\n            // Not an IANA name, may be a custom ID, pass through unchanged\n        }\n    }\n    const calendar = match[20];\n    RejectDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    return {\n        year,\n        month,\n        day,\n        hasTime,\n        hour,\n        minute,\n        second,\n        millisecond,\n        microsecond,\n        nanosecond,\n        ianaName,\n        offset,\n        z,\n        calendar\n    };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalInstantString(isoString) {\n    const result = ParseISODateTime(isoString);\n    if (!result.z && !result.offset)\n        throw new RangeError('Temporal.Instant requires a time zone offset');\n    return result;\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalZonedDateTimeString(isoString) {\n    const result = ParseISODateTime(isoString);\n    if (!result.ianaName)\n        throw new RangeError('Temporal.ZonedDateTime requires a time zone ID in brackets');\n    return result;\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalDateTimeString(isoString) {\n    return ParseISODateTime(isoString);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalDateString(isoString) {\n    return ParseISODateTime(isoString);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalTimeString(isoString) {\n    const match = PARSE.time.exec(isoString);\n    let hour, minute, second, millisecond, microsecond, nanosecond, calendar;\n    if (match) {\n        hour = ToInteger(match[1]);\n        minute = ToInteger(match[2] || match[5]);\n        second = ToInteger(match[3] || match[6]);\n        if (second === 60)\n            second = 59;\n        const fraction = (match[4] || match[7]) + '000000000';\n        millisecond = ToInteger(fraction.slice(0, 3));\n        microsecond = ToInteger(fraction.slice(3, 6));\n        nanosecond = ToInteger(fraction.slice(6, 9));\n        calendar = match[15];\n    }\n    else {\n        let z, hasTime;\n        ({ hasTime, hour, minute, second, millisecond, microsecond, nanosecond, calendar, z } =\n            ParseISODateTime(isoString));\n        if (!hasTime)\n            throw new RangeError(`time is missing in string: ${isoString}`);\n        if (z)\n            throw new RangeError('Z designator not supported for PlainTime');\n    }\n    // if it's a date-time string, OK\n    if (/[tT ][0-9][0-9]/.test(isoString)) {\n        return { hour, minute, second, millisecond, microsecond, nanosecond, calendar };\n    }\n    // slow but non-grammar-dependent way to ensure that time-only strings that\n    // are also valid PlainMonthDay and PlainYearMonth throw. corresponds to\n    // assertion in spec text\n    try {\n        const { month, day } = ParseTemporalMonthDayString(isoString);\n        RejectISODate(1972, month, day);\n    }\n    catch {\n        try {\n            const { year, month } = ParseTemporalYearMonthString(isoString);\n            RejectISODate(year, month, 1);\n        }\n        catch {\n            return { hour, minute, second, millisecond, microsecond, nanosecond, calendar };\n        }\n    }\n    throw new RangeError(`invalid ISO 8601 time-only string ${isoString}; may need a T prefix`);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalYearMonthString(isoString) {\n    const match = PARSE.yearmonth.exec(isoString);\n    let year, month, calendar, referenceISODay;\n    if (match) {\n        let yearString = match[1];\n        if (yearString[0] === '\\u2212')\n            yearString = `-${yearString.slice(1)}`;\n        if (yearString === '-000000')\n            throw new RangeError(`invalid ISO 8601 string: ${isoString}`);\n        year = ToInteger(yearString);\n        month = ToInteger(match[2]);\n        calendar = match[3];\n    }\n    else {\n        let z;\n        ({ year, month, calendar, day: referenceISODay, z } = ParseISODateTime(isoString));\n        if (z)\n            throw new RangeError('Z designator not supported for PlainYearMonth');\n    }\n    return { year, month, calendar, referenceISODay };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalMonthDayString(isoString) {\n    const match = PARSE.monthday.exec(isoString);\n    let month, day, calendar, referenceISOYear;\n    if (match) {\n        month = ToInteger(match[1]);\n        day = ToInteger(match[2]);\n    }\n    else {\n        let z;\n        ({ month, day, calendar, year: referenceISOYear, z } = ParseISODateTime(isoString));\n        if (z)\n            throw new RangeError('Z designator not supported for PlainMonthDay');\n    }\n    return { month, day, calendar, referenceISOYear };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalTimeZoneString(stringIdent) {\n    try {\n        let canonicalIdent = GetCanonicalTimeZoneIdentifier(stringIdent);\n        if (canonicalIdent)\n            return { ianaName: canonicalIdent.toString() };\n    }\n    catch {\n        // fall through\n    }\n    try {\n        // Try parsing ISO string instead\n        const result = ParseISODateTime(stringIdent);\n        if (result.z || result.offset || result.ianaName) {\n            return result;\n        }\n    }\n    catch {\n        // fall through\n    }\n    throw new RangeError(`Invalid time zone: ${stringIdent}`);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalDurationString(isoString) {\n    const match = PARSE.duration.exec(isoString);\n    if (!match)\n        throw new RangeError(`invalid duration: ${isoString}`);\n    if (match.slice(2).every((element) => element === undefined)) {\n        throw new RangeError(`invalid duration: ${isoString}`);\n    }\n    const sign = match[1] === '-' || match[1] === '\\u2212' ? -1 : 1;\n    const years = ToInteger(match[2]) * sign;\n    const months = ToInteger(match[3]) * sign;\n    const weeks = ToInteger(match[4]) * sign;\n    const days = ToInteger(match[5]) * sign;\n    const hours = ToInteger(match[6]) * sign;\n    let fHours = match[7];\n    let minutes = ToInteger(match[8]) * sign;\n    let fMinutes = match[9];\n    let seconds = ToInteger(match[10]) * sign;\n    const fSeconds = match[11] + '000000000';\n    let milliseconds = ToInteger(fSeconds.slice(0, 3)) * sign;\n    let microseconds = ToInteger(fSeconds.slice(3, 6)) * sign;\n    let nanoseconds = ToInteger(fSeconds.slice(6, 9)) * sign;\n    fHours = fHours ? (sign * ToInteger(fHours)) / 10 ** fHours.length : 0;\n    fMinutes = fMinutes ? (sign * ToInteger(fMinutes)) / 10 ** fMinutes.length : 0;\n    ({ minutes, seconds, milliseconds, microseconds, nanoseconds } = DurationHandleFractions(fHours, minutes, fMinutes, seconds, milliseconds, microseconds, nanoseconds));\n    RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalInstant(isoString) {\n    let { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offset, z } = ParseTemporalInstantString(isoString);\n    if (!z && !offset)\n        throw new RangeError('Temporal.Instant requires a time zone offset');\n    // At least one of z or offset is defined, but TS doesn't seem to understand\n    // that we only use offset if z is not defined (and thus offset must be defined).\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const offsetNs = z ? 0 : ParseTimeZoneOffsetString(offset);\n    ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond - offsetNs));\n    const epochNs = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (epochNs === null)\n        throw new RangeError('DateTime outside of supported range');\n    return epochNs;\n}\nexport function RegulateISODate(yearParam, monthParam, dayParam, overflow) {\n    let year = yearParam;\n    let month = monthParam;\n    let day = dayParam;\n    switch (overflow) {\n        case 'reject':\n            RejectISODate(year, month, day);\n            break;\n        case 'constrain':\n            ({ year, month, day } = ConstrainISODate(year, month, day));\n            break;\n    }\n    return { year, month, day };\n}\nexport function RegulateTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, overflow) {\n    let hour = hourParam;\n    let minute = minuteParam;\n    let second = secondParam;\n    let millisecond = millisecondParam;\n    let microsecond = microsecondParam;\n    let nanosecond = nanosecondParam;\n    switch (overflow) {\n        case 'reject':\n            RejectTime(hour, minute, second, millisecond, microsecond, nanosecond);\n            break;\n        case 'constrain':\n            ({ hour, minute, second, millisecond, microsecond, nanosecond } = ConstrainTime(hour, minute, second, millisecond, microsecond, nanosecond));\n            break;\n    }\n    return { hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function RegulateISOYearMonth(yearParam, monthParam, overflow) {\n    let year = yearParam;\n    let month = monthParam;\n    const referenceISODay = 1;\n    switch (overflow) {\n        case 'reject':\n            RejectISODate(year, month, referenceISODay);\n            break;\n        case 'constrain':\n            ({ year, month } = ConstrainISODate(year, month));\n            break;\n    }\n    return { year, month };\n}\nfunction DurationHandleFractions(fHoursParam, minutesParam, fMinutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam) {\n    let fHours = fHoursParam;\n    let minutes = minutesParam;\n    let fMinutes = fMinutesParam;\n    let seconds = secondsParam;\n    let milliseconds = millisecondsParam;\n    let microseconds = microsecondsParam;\n    let nanoseconds = nanosecondsParam;\n    if (fHours !== 0) {\n        [minutes, fMinutes, seconds, milliseconds, microseconds, nanoseconds].forEach((val) => {\n            if (val !== 0)\n                throw new RangeError('only the smallest unit can be fractional');\n        });\n        const mins = fHours * 60;\n        minutes = MathTrunc(mins);\n        fMinutes = mins % 1;\n    }\n    if (fMinutes !== 0) {\n        [seconds, milliseconds, microseconds, nanoseconds].forEach((val) => {\n            if (val !== 0)\n                throw new RangeError('only the smallest unit can be fractional');\n        });\n        const secs = fMinutes * 60;\n        seconds = MathTrunc(secs);\n        const fSeconds = secs % 1;\n        if (fSeconds !== 0) {\n            const mils = fSeconds * 1000;\n            milliseconds = MathTrunc(mils);\n            const fMilliseconds = mils % 1;\n            if (fMilliseconds !== 0) {\n                const mics = fMilliseconds * 1000;\n                microseconds = MathTrunc(mics);\n                const fMicroseconds = mics % 1;\n                if (fMicroseconds !== 0) {\n                    const nans = fMicroseconds * 1000;\n                    nanoseconds = MathTrunc(nans);\n                }\n            }\n        }\n    }\n    return { minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction ToTemporalDurationRecord(item) {\n    if (!IsObject(item)) {\n        return ParseTemporalDurationString(ToString(item));\n    }\n    if (IsTemporalDuration(item)) {\n        return {\n            years: GetSlot(item, YEARS),\n            months: GetSlot(item, MONTHS),\n            weeks: GetSlot(item, WEEKS),\n            days: GetSlot(item, DAYS),\n            hours: GetSlot(item, HOURS),\n            minutes: GetSlot(item, MINUTES),\n            seconds: GetSlot(item, SECONDS),\n            milliseconds: GetSlot(item, MILLISECONDS),\n            microseconds: GetSlot(item, MICROSECONDS),\n            nanoseconds: GetSlot(item, NANOSECONDS)\n        };\n    }\n    const result = {\n        years: 0,\n        months: 0,\n        weeks: 0,\n        days: 0,\n        hours: 0,\n        minutes: 0,\n        seconds: 0,\n        milliseconds: 0,\n        microseconds: 0,\n        nanoseconds: 0\n    };\n    let partial = ToTemporalPartialDurationRecord(item);\n    for (const property of DURATION_FIELDS) {\n        const value = partial[property];\n        if (value !== undefined) {\n            result[property] = value;\n        }\n    }\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = result;\n    RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction ToTemporalPartialDurationRecord(temporalDurationLike) {\n    if (!IsObject(temporalDurationLike)) {\n        throw new TypeError('invalid duration-like');\n    }\n    const result = {\n        years: undefined,\n        months: undefined,\n        weeks: undefined,\n        days: undefined,\n        hours: undefined,\n        minutes: undefined,\n        seconds: undefined,\n        milliseconds: undefined,\n        microseconds: undefined,\n        nanoseconds: undefined\n    };\n    let any = false;\n    for (const property of DURATION_FIELDS) {\n        const value = temporalDurationLike[property];\n        if (value !== undefined) {\n            any = true;\n            result[property] = ToIntegerWithoutRounding(value);\n        }\n    }\n    if (!any) {\n        throw new TypeError('invalid duration-like');\n    }\n    return result;\n}\nfunction ToLimitedTemporalDuration(item, disallowedProperties) {\n    let record = ToTemporalDurationRecord(item);\n    for (const property of disallowedProperties) {\n        if (record[property] !== 0) {\n            throw new RangeError(`Duration field ${property} not supported by Temporal.Instant. Try Temporal.ZonedDateTime instead.`);\n        }\n    }\n    return record;\n}\nexport function ToTemporalOverflow(options) {\n    if (options === undefined)\n        return 'constrain';\n    return GetOption(options, 'overflow', ['constrain', 'reject'], 'constrain');\n}\nexport function ToTemporalDisambiguation(options) {\n    if (options === undefined)\n        return 'compatible';\n    return GetOption(options, 'disambiguation', ['compatible', 'earlier', 'later', 'reject'], 'compatible');\n}\nexport function ToTemporalRoundingMode(options, fallback) {\n    return GetOption(options, 'roundingMode', ['ceil', 'floor', 'trunc', 'halfExpand'], fallback);\n}\nfunction NegateTemporalRoundingMode(roundingMode) {\n    switch (roundingMode) {\n        case 'ceil':\n            return 'floor';\n        case 'floor':\n            return 'ceil';\n        default:\n            return roundingMode;\n    }\n}\nexport function ToTemporalOffset(options, fallback) {\n    if (options === undefined)\n        return fallback;\n    return GetOption(options, 'offset', ['prefer', 'use', 'ignore', 'reject'], fallback);\n}\nexport function ToShowCalendarOption(options) {\n    return GetOption(options, 'calendarName', ['auto', 'always', 'never'], 'auto');\n}\nexport function ToShowTimeZoneNameOption(options) {\n    return GetOption(options, 'timeZoneName', ['auto', 'never'], 'auto');\n}\nexport function ToShowOffsetOption(options) {\n    return GetOption(options, 'offset', ['auto', 'never'], 'auto');\n}\nexport function ToTemporalRoundingIncrement(options, dividend, inclusive) {\n    let maximum = Infinity;\n    if (dividend !== undefined)\n        maximum = dividend;\n    if (!inclusive && dividend !== undefined)\n        maximum = dividend > 1 ? dividend - 1 : 1;\n    const increment = GetNumberOption(options, 'roundingIncrement', 1, maximum, 1);\n    if (dividend !== undefined && dividend % increment !== 0) {\n        throw new RangeError(`Rounding increment must divide evenly into ${dividend}`);\n    }\n    return increment;\n}\nexport function ToTemporalDateTimeRoundingIncrement(options, smallestUnit) {\n    const maximumIncrements = {\n        year: undefined,\n        month: undefined,\n        week: undefined,\n        day: undefined,\n        hour: 24,\n        minute: 60,\n        second: 60,\n        millisecond: 1000,\n        microsecond: 1000,\n        nanosecond: 1000\n    };\n    return ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], false);\n}\nexport function ToSecondsStringPrecision(options) {\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'time', undefined);\n    if (smallestUnit === 'hour') {\n        const ALLOWED_UNITS = SINGULAR_PLURAL_UNITS.reduce((allowed, [p, s, c]) => {\n            // Weirdly, local type inference seems to understand the types of s and p, but tsc still complains.\n            // Maybe this is fixed in later TS versions?\n            if (c === 'time' && s !== 'hour') {\n                allowed.push(s, p);\n            }\n            return allowed;\n        }, []);\n        throw new RangeError(`smallestUnit must be one of ${ALLOWED_UNITS.join(', ')}, not ${smallestUnit}`);\n    }\n    switch (smallestUnit) {\n        case 'minute':\n            return { precision: 'minute', unit: 'minute', increment: 1 };\n        case 'second':\n            return { precision: 0, unit: 'second', increment: 1 };\n        case 'millisecond':\n            return { precision: 3, unit: 'millisecond', increment: 1 };\n        case 'microsecond':\n            return { precision: 6, unit: 'microsecond', increment: 1 };\n        case 'nanosecond':\n            return { precision: 9, unit: 'nanosecond', increment: 1 };\n        default: // fall through if option not given\n    }\n    let digits = options.fractionalSecondDigits;\n    if (digits === undefined)\n        digits = 'auto';\n    if (typeof digits !== 'number') {\n        const stringDigits = ToString(digits);\n        if (stringDigits === 'auto')\n            return { precision: 'auto', unit: 'nanosecond', increment: 1 };\n        throw new RangeError(`fractionalSecondDigits must be 'auto' or 0 through 9, not ${stringDigits}`);\n    }\n    if (NumberIsNaN(digits) || digits < 0 || digits > 9) {\n        throw new RangeError(`fractionalSecondDigits must be 'auto' or 0 through 9, not ${digits}`);\n    }\n    const precision = MathFloor(digits);\n    switch (precision) {\n        case 0:\n            return { precision, unit: 'second', increment: 1 };\n        case 1:\n        case 2:\n        case 3:\n            return { precision, unit: 'millisecond', increment: 10 ** (3 - precision) };\n        case 4:\n        case 5:\n        case 6:\n            return { precision, unit: 'microsecond', increment: 10 ** (6 - precision) };\n        case 7:\n        case 8:\n        case 9:\n            return { precision, unit: 'nanosecond', increment: 10 ** (9 - precision) };\n        default:\n            throw new RangeError(`fractionalSecondDigits must be 'auto' or 0 through 9, not ${digits}`);\n    }\n}\nexport const REQUIRED = Symbol('~required~');\n// This signature of the function is NOT used in type-checking, so restricting\n// the default value via generic binding like the other overloads isn't\n// necessary.\nexport function GetTemporalUnit(options, key, unitGroup, requiredOrDefault, extraValues = []) {\n    const allowedSingular = [];\n    for (const [, singular, category] of SINGULAR_PLURAL_UNITS) {\n        if (unitGroup === 'datetime' || unitGroup === category) {\n            allowedSingular.push(singular);\n        }\n    }\n    allowedSingular.push(...extraValues);\n    let defaultVal = requiredOrDefault;\n    if (defaultVal === REQUIRED) {\n        defaultVal = undefined;\n    }\n    else if (defaultVal !== undefined) {\n        allowedSingular.push(defaultVal);\n    }\n    const allowedValues = [\n        ...allowedSingular\n    ];\n    for (const singular of allowedSingular) {\n        const plural = PLURAL_FOR.get(singular);\n        if (plural !== undefined)\n            allowedValues.push(plural);\n    }\n    let retval = GetOption(options, key, allowedValues, defaultVal);\n    if (retval === undefined && requiredOrDefault === REQUIRED) {\n        throw new RangeError(`${key} is required`);\n    }\n    // Coerce any plural units into their singular form\n    if (SINGULAR_FOR.has(retval)) {\n        // We just has-checked this, but tsc doesn't understand that.\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return SINGULAR_FOR.get(retval);\n    }\n    return retval;\n}\nexport function ToRelativeTemporalObject(options) {\n    const relativeTo = options.relativeTo;\n    if (relativeTo === undefined)\n        return relativeTo;\n    let offsetBehaviour = 'option';\n    let matchMinutes = false;\n    let year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, timeZone, offset;\n    if (IsObject(relativeTo)) {\n        if (IsTemporalZonedDateTime(relativeTo) || IsTemporalDate(relativeTo))\n            return relativeTo;\n        if (IsTemporalDateTime(relativeTo))\n            return TemporalDateTimeToDate(relativeTo);\n        calendar = GetTemporalCalendarWithISODefault(relativeTo);\n        const fieldNames = CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fields = PrepareTemporalFields(relativeTo, fieldNames, []);\n        const dateOptions = ObjectCreate(null);\n        dateOptions.overflow = 'constrain';\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = InterpretTemporalDateTimeFields(calendar, fields, dateOptions));\n        // The `offset` and `timeZone` properties only exist on ZonedDateTime (or\n        // ZonedDateTimeLike-property bags). The assertions below are used to avoid\n        // TS errors while not diverging runtime code from proposal-temporal.\n        offset = relativeTo.offset;\n        if (offset === undefined)\n            offsetBehaviour = 'wall';\n        timeZone = relativeTo.timeZone;\n    }\n    else {\n        let ianaName, z;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, ianaName, offset, z } =\n            ParseISODateTime(ToString(relativeTo)));\n        if (ianaName)\n            timeZone = ianaName;\n        if (z) {\n            offsetBehaviour = 'exact';\n        }\n        else if (!offset) {\n            offsetBehaviour = 'wall';\n        }\n        if (!calendar)\n            calendar = GetISO8601Calendar();\n        calendar = ToTemporalCalendar(calendar);\n        matchMinutes = true;\n    }\n    if (timeZone !== undefined) {\n        timeZone = ToTemporalTimeZone(timeZone);\n        let offsetNs = 0;\n        if (offsetBehaviour === 'option')\n            offsetNs = ParseTimeZoneOffsetString(ToString(offset));\n        const epochNanoseconds = InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offsetBehaviour, offsetNs, timeZone, 'compatible', 'reject', matchMinutes);\n        return CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar);\n    }\n    return CreateTemporalDate(year, month, day, calendar);\n}\nexport function DefaultTemporalLargestUnit(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds) {\n    for (const [prop, v] of [\n        ['years', years],\n        ['months', months],\n        ['weeks', weeks],\n        ['days', days],\n        ['hours', hours],\n        ['minutes', minutes],\n        ['seconds', seconds],\n        ['milliseconds', milliseconds],\n        ['microseconds', microseconds],\n        ['nanoseconds', nanoseconds]\n    ]) {\n        if (v !== 0) {\n            // All the above keys are definitely in SINGULAR_FOR\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            return SINGULAR_FOR.get(prop);\n        }\n    }\n    return 'nanosecond';\n}\nexport function LargerOfTwoTemporalUnits(unit1, unit2) {\n    if (UNITS_DESCENDING.indexOf(unit1) > UNITS_DESCENDING.indexOf(unit2))\n        return unit2;\n    return unit1;\n}\nfunction MergeLargestUnitOption(optionsParam, largestUnit) {\n    let options = optionsParam;\n    if (options === undefined)\n        options = ObjectCreate(null);\n    return ObjectAssign(ObjectCreate(null), options, { largestUnit });\n}\nexport function PrepareTemporalFields(bag, fields, requiredFields, { emptySourceErrorMessage } = { emptySourceErrorMessage: 'no supported properties found' }) {\n    const result = ObjectCreate(null);\n    let any = false;\n    for (const property of fields) {\n        let value = bag[property];\n        if (value !== undefined) {\n            any = true;\n            if (BUILTIN_CASTS.has(property)) {\n                // We just has-checked this map access, so there will definitely be a\n                // value.\n                // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                value = BUILTIN_CASTS.get(property)(value);\n            }\n            result[property] = value;\n        }\n        else if (requiredFields !== 'partial') {\n            // TODO: using .call in this way is not correctly type-checked by tsc.\n            // We might need a type-safe Call wrapper?\n            if (ArrayIncludes.call(requiredFields, property)) {\n                throw new TypeError(`required property '${property}' missing or undefined`);\n            }\n            value = BUILTIN_DEFAULTS.get(property);\n            result[property] = value;\n        }\n    }\n    if (requiredFields === 'partial' && !any) {\n        throw new TypeError(emptySourceErrorMessage);\n    }\n    if ((result.era === undefined) !== (result.eraYear === undefined)) {\n        throw new RangeError(\"properties 'era' and 'eraYear' must be provided together\");\n    }\n    return result;\n}\nexport function ToTemporalTimeRecord(bag, completeness = 'complete') {\n    // NOTE: Field order here is important.\n    const fields = ['hour', 'microsecond', 'millisecond', 'minute', 'nanosecond', 'second'];\n    const partial = PrepareTemporalFields(bag, fields, 'partial', { emptySourceErrorMessage: 'invalid time-like' });\n    const result = {};\n    for (const field of fields) {\n        const valueDesc = ObjectGetOwnPropertyDescriptor(partial, field);\n        if (valueDesc !== undefined) {\n            result[field] = valueDesc.value;\n        }\n        else if (completeness === 'complete') {\n            result[field] = 0;\n        }\n    }\n    return result;\n}\nexport function ToTemporalDate(itemParam, options) {\n    let item = itemParam;\n    if (IsObject(item)) {\n        if (IsTemporalDate(item))\n            return item;\n        if (IsTemporalZonedDateTime(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            item = BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(item, TIME_ZONE), GetSlot(item, INSTANT), GetSlot(item, CALENDAR));\n        }\n        if (IsTemporalDateTime(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            return CreateTemporalDate(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, CALENDAR));\n        }\n        const calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        return CalendarDateFromFields(calendar, fields, options);\n    }\n    ToTemporalOverflow(options); // validate and ignore\n    const { year, month, day, calendar, z } = ParseTemporalDateString(ToString(item));\n    if (z)\n        throw new RangeError('Z designator not supported for PlainDate');\n    const TemporalPlainDate = GetIntrinsic('%Temporal.PlainDate%');\n    return new TemporalPlainDate(year, month, day, calendar); // include validation\n}\nexport function InterpretTemporalDateTimeFields(calendar, fields, options) {\n    let { hour, minute, second, millisecond, microsecond, nanosecond } = ToTemporalTimeRecord(fields);\n    const overflow = ToTemporalOverflow(options);\n    const date = CalendarDateFromFields(calendar, fields, options);\n    const year = GetSlot(date, ISO_YEAR);\n    const month = GetSlot(date, ISO_MONTH);\n    const day = GetSlot(date, ISO_DAY);\n    ({ hour, minute, second, millisecond, microsecond, nanosecond } = RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, overflow));\n    return { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function ToTemporalDateTime(item, options) {\n    let year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar;\n    if (IsObject(item)) {\n        if (IsTemporalDateTime(item))\n            return item;\n        if (IsTemporalZonedDateTime(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            return BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(item, TIME_ZONE), GetSlot(item, INSTANT), GetSlot(item, CALENDAR));\n        }\n        if (IsTemporalDate(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            return CreateTemporalDateTime(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), 0, 0, 0, 0, 0, 0, GetSlot(item, CALENDAR));\n        }\n        calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = InterpretTemporalDateTimeFields(calendar, fields, options));\n    }\n    else {\n        ToTemporalOverflow(options); // validate and ignore\n        let z;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, z } =\n            ParseTemporalDateTimeString(ToString(item)));\n        if (z)\n            throw new RangeError('Z designator not supported for PlainDateTime');\n        RejectDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n        if (calendar === undefined)\n            calendar = GetISO8601Calendar();\n        calendar = ToTemporalCalendar(calendar);\n    }\n    return CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n}\nexport function ToTemporalDuration(item) {\n    if (IsTemporalDuration(item))\n        return item;\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(item);\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    return new TemporalDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n}\nexport function ToTemporalInstant(item) {\n    if (IsTemporalInstant(item))\n        return item;\n    if (IsTemporalZonedDateTime(item)) {\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        return new TemporalInstant(GetSlot(item, EPOCHNANOSECONDS));\n    }\n    const ns = ParseTemporalInstant(ToString(item));\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    return new TemporalInstant(ns);\n}\nexport function ToTemporalMonthDay(itemParam, options) {\n    let item = itemParam;\n    if (IsObject(item)) {\n        if (IsTemporalMonthDay(item))\n            return item;\n        let calendar, calendarAbsent;\n        if (HasSlot(item, CALENDAR)) {\n            calendar = GetSlot(item, CALENDAR);\n            calendarAbsent = false;\n        }\n        else {\n            let maybeStringCalendar = item.calendar;\n            calendarAbsent = maybeStringCalendar === undefined;\n            if (maybeStringCalendar === undefined)\n                maybeStringCalendar = GetISO8601Calendar();\n            calendar = ToTemporalCalendar(maybeStringCalendar);\n        }\n        // HasSlot above adjusts the type of 'item' to include\n        // TypesWithCalendarUnits, which causes type-inference failures below.\n        // This is probably indicative of problems with HasSlot's typing.\n        item = item;\n        const fieldNames = CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        // Callers who omit the calendar are not writing calendar-independent\n        // code. In that case, `monthCode`/`year` can be omitted; `month` and\n        // `day` are sufficient. Add a `year` to satisfy calendar validation.\n        if (calendarAbsent && fields.month !== undefined && fields.monthCode === undefined && fields.year === undefined) {\n            fields.year = 1972;\n        }\n        return CalendarMonthDayFromFields(calendar, fields, options);\n    }\n    ToTemporalOverflow(options); // validate and ignore\n    let { month, day, referenceISOYear, calendar: maybeStringCalendar } = ParseTemporalMonthDayString(ToString(item));\n    let calendar = maybeStringCalendar;\n    if (calendar === undefined)\n        calendar = GetISO8601Calendar();\n    calendar = ToTemporalCalendar(calendar);\n    if (referenceISOYear === undefined) {\n        RejectISODate(1972, month, day);\n        return CreateTemporalMonthDay(month, day, calendar);\n    }\n    const result = CreateTemporalMonthDay(month, day, calendar, referenceISOYear);\n    return CalendarMonthDayFromFields(calendar, result);\n}\nexport function ToTemporalTime(itemParam, overflow = 'constrain') {\n    let item = itemParam;\n    let hour, minute, second, millisecond, microsecond, nanosecond, calendar;\n    if (IsObject(item)) {\n        if (IsTemporalTime(item))\n            return item;\n        if (IsTemporalZonedDateTime(item)) {\n            item = BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(item, TIME_ZONE), GetSlot(item, INSTANT), GetSlot(item, CALENDAR));\n        }\n        if (IsTemporalDateTime(item)) {\n            const TemporalPlainTime = GetIntrinsic('%Temporal.PlainTime%');\n            return new TemporalPlainTime(GetSlot(item, ISO_HOUR), GetSlot(item, ISO_MINUTE), GetSlot(item, ISO_SECOND), GetSlot(item, ISO_MILLISECOND), GetSlot(item, ISO_MICROSECOND), GetSlot(item, ISO_NANOSECOND));\n        }\n        calendar = GetTemporalCalendarWithISODefault(item);\n        if (ToString(calendar) !== 'iso8601') {\n            throw new RangeError('PlainTime can only have iso8601 calendar');\n        }\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ToTemporalTimeRecord(item));\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, overflow));\n    }\n    else {\n        ({ hour, minute, second, millisecond, microsecond, nanosecond, calendar } = ParseTemporalTimeString(ToString(item)));\n        RejectTime(hour, minute, second, millisecond, microsecond, nanosecond);\n        if (calendar !== undefined && calendar !== 'iso8601') {\n            throw new RangeError('PlainTime can only have iso8601 calendar');\n        }\n    }\n    const TemporalPlainTime = GetIntrinsic('%Temporal.PlainTime%');\n    return new TemporalPlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n}\nexport function ToTemporalYearMonth(item, options) {\n    if (IsObject(item)) {\n        if (IsTemporalYearMonth(item))\n            return item;\n        const calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, ['month', 'monthCode', 'year']);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        return CalendarYearMonthFromFields(calendar, fields, options);\n    }\n    ToTemporalOverflow(options); // validate and ignore\n    let { year, month, referenceISODay, calendar: maybeStringCalendar } = ParseTemporalYearMonthString(ToString(item));\n    // TODO: replace with ternary?\n    let calendar = maybeStringCalendar;\n    if (calendar === undefined)\n        calendar = GetISO8601Calendar();\n    calendar = ToTemporalCalendar(calendar);\n    if (referenceISODay === undefined) {\n        RejectISODate(year, month, 1);\n        return CreateTemporalYearMonth(year, month, calendar);\n    }\n    const result = CreateTemporalYearMonth(year, month, calendar, referenceISODay);\n    return CalendarYearMonthFromFields(calendar, result);\n}\nexport function InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offsetBehaviour, offsetNs, timeZone, disambiguation, offsetOpt, matchMinute) {\n    const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n    const dt = new DateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (offsetBehaviour === 'wall' || offsetOpt === 'ignore') {\n        // Simple case: ISO string without a TZ offset (or caller wants to ignore\n        // the offset), so just convert DateTime to Instant in the given time zone\n        const instant = BuiltinTimeZoneGetInstantFor(timeZone, dt, disambiguation);\n        return GetSlot(instant, EPOCHNANOSECONDS);\n    }\n    // The caller wants the offset to always win ('use') OR the caller is OK\n    // with the offset winning ('prefer' or 'reject') as long as it's valid\n    // for this timezone and date/time.\n    if (offsetBehaviour === 'exact' || offsetOpt === 'use') {\n        // Calculate the instant for the input's date/time and offset\n        const epochNs = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n        if (epochNs === null)\n            throw new RangeError('ZonedDateTime outside of supported range');\n        return JSBI.subtract(epochNs, JSBI.BigInt(offsetNs));\n    }\n    // \"prefer\" or \"reject\"\n    const possibleInstants = GetPossibleInstantsFor(timeZone, dt);\n    for (const candidate of possibleInstants) {\n        const candidateOffset = GetOffsetNanosecondsFor(timeZone, candidate);\n        const roundedCandidateOffset = JSBI.toNumber(RoundNumberToIncrement(JSBI.BigInt(candidateOffset), 60e9, 'halfExpand'));\n        if (candidateOffset === offsetNs || (matchMinute && roundedCandidateOffset === offsetNs)) {\n            return GetSlot(candidate, EPOCHNANOSECONDS);\n        }\n    }\n    // the user-provided offset doesn't match any instants for this time\n    // zone and date/time.\n    if (offsetOpt === 'reject') {\n        const offsetStr = FormatTimeZoneOffsetString(offsetNs);\n        const timeZoneString = IsTemporalTimeZone(timeZone) ? GetSlot(timeZone, TIMEZONE_ID) : 'time zone';\n        // The tsc emit for this line rewrites to invoke the PlainDateTime's valueOf method, NOT\n        // toString (which is invoked by Node when using template literals directly).\n        // See https://github.com/microsoft/TypeScript/issues/39744 for the proposed fix in tsc emit\n        throw new RangeError(`Offset ${offsetStr} is invalid for ${dt.toString()} in ${timeZoneString}`);\n    }\n    // fall through: offsetOpt === 'prefer', but the offset doesn't match\n    // so fall back to use the time zone instead.\n    const instant = DisambiguatePossibleInstants(possibleInstants, timeZone, dt, disambiguation);\n    return GetSlot(instant, EPOCHNANOSECONDS);\n}\nexport function ToTemporalZonedDateTime(item, options) {\n    let year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, timeZone, offset, calendar;\n    let matchMinute = false;\n    let offsetBehaviour = 'option';\n    if (IsObject(item)) {\n        if (IsTemporalZonedDateTime(item))\n            return item;\n        calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fieldNamesWithTzAndOffset = ArrayPush(fieldNames, 'timeZone', 'offset');\n        const fields = PrepareTemporalFields(item, fieldNamesWithTzAndOffset, ['timeZone']);\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = InterpretTemporalDateTimeFields(calendar, fields, options));\n        timeZone = ToTemporalTimeZone(fields.timeZone);\n        offset = fields.offset;\n        if (offset === undefined) {\n            offsetBehaviour = 'wall';\n        }\n        else {\n            offset = ToString(offset);\n        }\n    }\n    else {\n        ToTemporalOverflow(options); // validate and ignore\n        let ianaName, z;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, ianaName, offset, z, calendar } =\n            ParseTemporalZonedDateTimeString(ToString(item)));\n        if (!ianaName)\n            throw new RangeError('time zone ID required in brackets');\n        if (z) {\n            offsetBehaviour = 'exact';\n        }\n        else if (!offset) {\n            offsetBehaviour = 'wall';\n        }\n        const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n        timeZone = new TemporalTimeZone(ianaName);\n        if (!calendar)\n            calendar = GetISO8601Calendar();\n        calendar = ToTemporalCalendar(calendar);\n        matchMinute = true; // ISO strings may specify offset with less precision\n    }\n    let offsetNs = 0;\n    // The code above guarantees that if offsetBehaviour === 'option', then\n    // `offset` is not undefined.\n    if (offsetBehaviour === 'option')\n        offsetNs = ParseTimeZoneOffsetString(offset);\n    const disambiguation = ToTemporalDisambiguation(options);\n    const offsetOpt = ToTemporalOffset(options, 'reject');\n    const epochNanoseconds = InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offsetBehaviour, offsetNs, timeZone, disambiguation, offsetOpt, matchMinute);\n    return CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar);\n}\nexport function CreateTemporalDateSlots(result, isoYear, isoMonth, isoDay, calendar) {\n    RejectISODate(isoYear, isoMonth, isoDay);\n    RejectDateRange(isoYear, isoMonth, isoDay);\n    CreateSlots(result);\n    SetSlot(result, ISO_YEAR, isoYear);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, isoDay);\n    SetSlot(result, CALENDAR, calendar);\n    SetSlot(result, DATE_BRAND, true);\n    if (DEBUG) {\n        ObjectDefineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalDateToString(result)}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalDate(isoYear, isoMonth, isoDay, calendar = GetISO8601Calendar()) {\n    const TemporalPlainDate = GetIntrinsic('%Temporal.PlainDate%');\n    const result = ObjectCreate(TemporalPlainDate.prototype);\n    CreateTemporalDateSlots(result, isoYear, isoMonth, isoDay, calendar);\n    return result;\n}\nexport function CreateTemporalDateTimeSlots(result, isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns, calendar) {\n    RejectDateTime(isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns);\n    RejectDateTimeRange(isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns);\n    CreateSlots(result);\n    SetSlot(result, ISO_YEAR, isoYear);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, isoDay);\n    SetSlot(result, ISO_HOUR, h);\n    SetSlot(result, ISO_MINUTE, min);\n    SetSlot(result, ISO_SECOND, s);\n    SetSlot(result, ISO_MILLISECOND, ms);\n    SetSlot(result, ISO_MICROSECOND, µs);\n    SetSlot(result, ISO_NANOSECOND, ns);\n    SetSlot(result, CALENDAR, calendar);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalDateTimeToString(result, 'auto')}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalDateTime(isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns, calendar = GetISO8601Calendar()) {\n    const TemporalPlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n    const result = ObjectCreate(TemporalPlainDateTime.prototype);\n    CreateTemporalDateTimeSlots(result, isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns, calendar);\n    return result;\n}\nexport function CreateTemporalMonthDaySlots(result, isoMonth, isoDay, calendar, referenceISOYear) {\n    RejectISODate(referenceISOYear, isoMonth, isoDay);\n    RejectDateRange(referenceISOYear, isoMonth, isoDay);\n    CreateSlots(result);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, isoDay);\n    SetSlot(result, ISO_YEAR, referenceISOYear);\n    SetSlot(result, CALENDAR, calendar);\n    SetSlot(result, MONTH_DAY_BRAND, true);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalMonthDayToString(result)}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalMonthDay(isoMonth, isoDay, calendar = GetISO8601Calendar(), referenceISOYear = 1972) {\n    const TemporalPlainMonthDay = GetIntrinsic('%Temporal.PlainMonthDay%');\n    const result = ObjectCreate(TemporalPlainMonthDay.prototype);\n    CreateTemporalMonthDaySlots(result, isoMonth, isoDay, calendar, referenceISOYear);\n    return result;\n}\nexport function CreateTemporalYearMonthSlots(result, isoYear, isoMonth, calendar, referenceISODay) {\n    RejectISODate(isoYear, isoMonth, referenceISODay);\n    RejectYearMonthRange(isoYear, isoMonth);\n    CreateSlots(result);\n    SetSlot(result, ISO_YEAR, isoYear);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, referenceISODay);\n    SetSlot(result, CALENDAR, calendar);\n    SetSlot(result, YEAR_MONTH_BRAND, true);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalYearMonthToString(result)}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalYearMonth(isoYear, isoMonth, calendar = GetISO8601Calendar(), referenceISODay = 1) {\n    const TemporalPlainYearMonth = GetIntrinsic('%Temporal.PlainYearMonth%');\n    const result = ObjectCreate(TemporalPlainYearMonth.prototype);\n    CreateTemporalYearMonthSlots(result, isoYear, isoMonth, calendar, referenceISODay);\n    return result;\n}\nexport function CreateTemporalZonedDateTimeSlots(result, epochNanoseconds, timeZone, calendar) {\n    ValidateEpochNanoseconds(epochNanoseconds);\n    CreateSlots(result);\n    SetSlot(result, EPOCHNANOSECONDS, epochNanoseconds);\n    SetSlot(result, TIME_ZONE, timeZone);\n    SetSlot(result, CALENDAR, calendar);\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const instant = new TemporalInstant(GetSlot(result, EPOCHNANOSECONDS));\n    SetSlot(result, INSTANT, instant);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalZonedDateTimeToString(result, 'auto')}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar = GetISO8601Calendar()) {\n    const TemporalZonedDateTime = GetIntrinsic('%Temporal.ZonedDateTime%');\n    const result = ObjectCreate(TemporalZonedDateTime.prototype);\n    CreateTemporalZonedDateTimeSlots(result, epochNanoseconds, timeZone, calendar);\n    return result;\n}\nexport function GetISO8601Calendar() {\n    const TemporalCalendar = GetIntrinsic('%Temporal.Calendar%');\n    return new TemporalCalendar('iso8601');\n}\n// TODO: should (can?) we make this generic so the field names are checked\n// against the type that the calendar is a property of?\nexport function CalendarFields(calendar, fieldNamesParam) {\n    let fieldNames = fieldNamesParam;\n    if (calendar.fields) {\n        fieldNames = calendar.fields(fieldNames);\n    }\n    const result = [];\n    for (const name of fieldNames) {\n        if (typeof name !== 'string')\n            throw new TypeError('bad return from calendar.fields()');\n        ArrayPrototypePush.call(result, name);\n    }\n    return result;\n}\nexport function CalendarMergeFields(calendar, fields, additionalFields) {\n    const calMergeFields = calendar.mergeFields;\n    if (!calMergeFields) {\n        return { ...fields, ...additionalFields };\n    }\n    const result = Reflect.apply(calMergeFields, calendar, [fields, additionalFields]);\n    if (!IsObject(result))\n        throw new TypeError('bad return from calendar.mergeFields()');\n    return result;\n}\nexport function CalendarDateAdd(calendar, date, duration, options, dateAddParam) {\n    let dateAdd = dateAddParam;\n    if (dateAdd === undefined) {\n        dateAdd = calendar.dateAdd;\n    }\n    const result = ReflectApply(dateAdd, calendar, [date, duration, options]);\n    if (!IsTemporalDate(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nfunction CalendarDateUntil(calendar, date, otherDate, options, dateUntilParam) {\n    let dateUntil = dateUntilParam;\n    if (dateUntil === undefined) {\n        dateUntil = calendar.dateUntil;\n    }\n    const result = ReflectApply(dateUntil, calendar, [date, otherDate, options]);\n    if (!IsTemporalDuration(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function CalendarYear(calendar, dateLike) {\n    const result = calendar.year(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar year result must be an integer');\n    }\n    return ToIntegerThrowOnInfinity(result);\n}\nexport function CalendarMonth(calendar, dateLike) {\n    const result = calendar.month(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar month result must be a positive integer');\n    }\n    return ToPositiveInteger(result);\n}\nexport function CalendarMonthCode(calendar, dateLike) {\n    const result = calendar.monthCode(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar monthCode result must be a string');\n    }\n    return ToString(result);\n}\nexport function CalendarDay(calendar, dateLike) {\n    const result = calendar.day(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar day result must be a positive integer');\n    }\n    return ToPositiveInteger(result);\n}\nexport function CalendarEra(calendar, dateLike) {\n    let result = calendar.era(dateLike);\n    if (result !== undefined) {\n        result = ToString(result);\n    }\n    return result;\n}\nexport function CalendarEraYear(calendar, dateLike) {\n    let result = calendar.eraYear(dateLike);\n    if (result !== undefined) {\n        result = ToIntegerThrowOnInfinity(result);\n    }\n    return result;\n}\nexport function CalendarDayOfWeek(calendar, dateLike) {\n    return calendar.dayOfWeek(dateLike);\n}\nexport function CalendarDayOfYear(calendar, dateLike) {\n    return calendar.dayOfYear(dateLike);\n}\nexport function CalendarWeekOfYear(calendar, dateLike) {\n    return calendar.weekOfYear(dateLike);\n}\nexport function CalendarDaysInWeek(calendar, dateLike) {\n    return calendar.daysInWeek(dateLike);\n}\nexport function CalendarDaysInMonth(calendar, dateLike) {\n    return calendar.daysInMonth(dateLike);\n}\nexport function CalendarDaysInYear(calendar, dateLike) {\n    return calendar.daysInYear(dateLike);\n}\nexport function CalendarMonthsInYear(calendar, dateLike) {\n    return calendar.monthsInYear(dateLike);\n}\nexport function CalendarInLeapYear(calendar, dateLike) {\n    return calendar.inLeapYear(dateLike);\n}\nexport function ToTemporalCalendar(calendarLikeParam) {\n    let calendarLike = calendarLikeParam;\n    if (IsObject(calendarLike)) {\n        if (HasSlot(calendarLike, CALENDAR))\n            return GetSlot(calendarLike, CALENDAR);\n        if (!('calendar' in calendarLike))\n            return calendarLike;\n        calendarLike = calendarLike.calendar;\n        if (IsObject(calendarLike) && !('calendar' in calendarLike))\n            return calendarLike;\n    }\n    const identifier = ToString(calendarLike);\n    const TemporalCalendar = GetIntrinsic('%Temporal.Calendar%');\n    if (IsBuiltinCalendar(identifier))\n        return new TemporalCalendar(identifier);\n    let calendar;\n    try {\n        ({ calendar } = ParseISODateTime(identifier));\n    }\n    catch {\n        throw new RangeError(`Invalid calendar: ${identifier}`);\n    }\n    if (!calendar)\n        calendar = 'iso8601';\n    return new TemporalCalendar(calendar);\n}\nfunction GetTemporalCalendarWithISODefault(item) {\n    if (HasSlot(item, CALENDAR))\n        return GetSlot(item, CALENDAR);\n    const { calendar } = item;\n    if (calendar === undefined)\n        return GetISO8601Calendar();\n    return ToTemporalCalendar(calendar);\n}\nexport function CalendarEquals(one, two) {\n    if (one === two)\n        return true;\n    const cal1 = ToString(one);\n    const cal2 = ToString(two);\n    return cal1 === cal2;\n}\nexport function ConsolidateCalendars(one, two) {\n    if (one === two)\n        return two;\n    const sOne = ToString(one);\n    const sTwo = ToString(two);\n    if (sOne === sTwo || sOne === 'iso8601') {\n        return two;\n    }\n    else if (sTwo === 'iso8601') {\n        return one;\n    }\n    else {\n        throw new RangeError('irreconcilable calendars');\n    }\n}\nexport function CalendarDateFromFields(calendar, fields, options) {\n    const result = calendar.dateFromFields(fields, options);\n    if (!IsTemporalDate(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function CalendarYearMonthFromFields(calendar, fields, options) {\n    const result = calendar.yearMonthFromFields(fields, options);\n    if (!IsTemporalYearMonth(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function CalendarMonthDayFromFields(calendar, fields, options) {\n    const result = calendar.monthDayFromFields(fields, options);\n    if (!IsTemporalMonthDay(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function ToTemporalTimeZone(temporalTimeZoneLikeParam) {\n    let temporalTimeZoneLike = temporalTimeZoneLikeParam;\n    if (IsObject(temporalTimeZoneLike)) {\n        if (IsTemporalZonedDateTime(temporalTimeZoneLike))\n            return GetSlot(temporalTimeZoneLike, TIME_ZONE);\n        if (!('timeZone' in temporalTimeZoneLike))\n            return temporalTimeZoneLike;\n        temporalTimeZoneLike = temporalTimeZoneLike.timeZone;\n        if (IsObject(temporalTimeZoneLike) && !('timeZone' in temporalTimeZoneLike)) {\n            return temporalTimeZoneLike;\n        }\n    }\n    const identifier = ToString(temporalTimeZoneLike);\n    const timeZone = ParseTemporalTimeZone(identifier);\n    const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n    return new TemporalTimeZone(timeZone);\n}\nexport function TimeZoneEquals(one, two) {\n    if (one === two)\n        return true;\n    const tz1 = ToString(one);\n    const tz2 = ToString(two);\n    return tz1 === tz2;\n}\nexport function TemporalDateTimeToDate(dateTime) {\n    return CreateTemporalDate(GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, CALENDAR));\n}\nexport function TemporalDateTimeToTime(dateTime) {\n    const Time = GetIntrinsic('%Temporal.PlainTime%');\n    return new Time(GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND));\n}\nexport function GetOffsetNanosecondsFor(timeZone, instant) {\n    let getOffsetNanosecondsFor = timeZone.getOffsetNanosecondsFor;\n    if (typeof getOffsetNanosecondsFor !== 'function') {\n        throw new TypeError('getOffsetNanosecondsFor not callable');\n    }\n    const offsetNs = Reflect.apply(getOffsetNanosecondsFor, timeZone, [instant]);\n    if (typeof offsetNs !== 'number') {\n        throw new TypeError('bad return from getOffsetNanosecondsFor');\n    }\n    if (!IsInteger(offsetNs) || MathAbs(offsetNs) > 86400e9) {\n        throw new RangeError('out-of-range return from getOffsetNanosecondsFor');\n    }\n    return offsetNs;\n}\nexport function BuiltinTimeZoneGetOffsetStringFor(timeZone, instant) {\n    const offsetNs = GetOffsetNanosecondsFor(timeZone, instant);\n    return FormatTimeZoneOffsetString(offsetNs);\n}\nexport function BuiltinTimeZoneGetPlainDateTimeFor(timeZone, instant, calendar) {\n    const ns = GetSlot(instant, EPOCHNANOSECONDS);\n    const offsetNs = GetOffsetNanosecondsFor(timeZone, instant);\n    let { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = GetISOPartsFromEpoch(ns);\n    ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond + offsetNs));\n    return CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n}\nexport function BuiltinTimeZoneGetInstantFor(timeZone, dateTime, disambiguation) {\n    const possibleInstants = GetPossibleInstantsFor(timeZone, dateTime);\n    return DisambiguatePossibleInstants(possibleInstants, timeZone, dateTime, disambiguation);\n}\nfunction DisambiguatePossibleInstants(possibleInstants, timeZone, dateTime, disambiguation) {\n    const Instant = GetIntrinsic('%Temporal.Instant%');\n    const numInstants = possibleInstants.length;\n    if (numInstants === 1)\n        return possibleInstants[0];\n    if (numInstants) {\n        switch (disambiguation) {\n            case 'compatible':\n            // fall through because 'compatible' means 'earlier' for \"fall back\" transitions\n            case 'earlier':\n                return possibleInstants[0];\n            case 'later':\n                return possibleInstants[numInstants - 1];\n            case 'reject': {\n                throw new RangeError('multiple instants found');\n            }\n        }\n    }\n    const year = GetSlot(dateTime, ISO_YEAR);\n    const month = GetSlot(dateTime, ISO_MONTH);\n    const day = GetSlot(dateTime, ISO_DAY);\n    const hour = GetSlot(dateTime, ISO_HOUR);\n    const minute = GetSlot(dateTime, ISO_MINUTE);\n    const second = GetSlot(dateTime, ISO_SECOND);\n    const millisecond = GetSlot(dateTime, ISO_MILLISECOND);\n    const microsecond = GetSlot(dateTime, ISO_MICROSECOND);\n    const nanosecond = GetSlot(dateTime, ISO_NANOSECOND);\n    const utcns = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (utcns === null)\n        throw new RangeError('DateTime outside of supported range');\n    const dayBefore = new Instant(JSBI.subtract(utcns, DAY_NANOS));\n    const dayAfter = new Instant(JSBI.add(utcns, DAY_NANOS));\n    const offsetBefore = GetOffsetNanosecondsFor(timeZone, dayBefore);\n    const offsetAfter = GetOffsetNanosecondsFor(timeZone, dayAfter);\n    const nanoseconds = offsetAfter - offsetBefore;\n    switch (disambiguation) {\n        case 'earlier': {\n            const calendar = GetSlot(dateTime, CALENDAR);\n            const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n            const earlier = AddDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, 0, 0, 0, 0, 0, 0, 0, 0, 0, -nanoseconds, undefined);\n            const earlierPlainDateTime = new PlainDateTime(earlier.year, earlier.month, earlier.day, earlier.hour, earlier.minute, earlier.second, earlier.millisecond, earlier.microsecond, earlier.nanosecond, calendar);\n            return GetPossibleInstantsFor(timeZone, earlierPlainDateTime)[0];\n        }\n        case 'compatible':\n        // fall through because 'compatible' means 'later' for \"spring forward\" transitions\n        case 'later': {\n            const calendar = GetSlot(dateTime, CALENDAR);\n            const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n            const later = AddDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, 0, 0, 0, 0, 0, 0, 0, 0, 0, nanoseconds, undefined);\n            const laterPlainDateTime = new PlainDateTime(later.year, later.month, later.day, later.hour, later.minute, later.second, later.millisecond, later.microsecond, later.nanosecond, calendar);\n            const possible = GetPossibleInstantsFor(timeZone, laterPlainDateTime);\n            return possible[possible.length - 1];\n        }\n        case 'reject': {\n            throw new RangeError('no such instant found');\n        }\n    }\n}\nfunction GetPossibleInstantsFor(timeZone, dateTime) {\n    const possibleInstants = timeZone.getPossibleInstantsFor(dateTime);\n    const result = [];\n    for (const instant of possibleInstants) {\n        if (!IsTemporalInstant(instant)) {\n            throw new TypeError('bad return from getPossibleInstantsFor');\n        }\n        ArrayPrototypePush.call(result, instant);\n    }\n    return result;\n}\nexport function ISOYearString(year) {\n    let yearString;\n    if (year < 0 || year > 9999) {\n        const sign = year < 0 ? '-' : '+';\n        const yearNumber = MathAbs(year);\n        yearString = sign + `000000${yearNumber}`.slice(-6);\n    }\n    else {\n        yearString = `0000${year}`.slice(-4);\n    }\n    return yearString;\n}\nexport function ISODateTimePartString(part) {\n    return `00${part}`.slice(-2);\n}\nexport function FormatSecondsStringPart(second, millisecond, microsecond, nanosecond, precision) {\n    if (precision === 'minute')\n        return '';\n    const secs = `:${ISODateTimePartString(second)}`;\n    let fractionNumber = millisecond * 1e6 + microsecond * 1e3 + nanosecond;\n    let fraction;\n    if (precision === 'auto') {\n        if (fractionNumber === 0)\n            return secs;\n        fraction = `${fractionNumber}`.padStart(9, '0');\n        while (fraction[fraction.length - 1] === '0')\n            fraction = fraction.slice(0, -1);\n    }\n    else {\n        if (precision === 0)\n            return secs;\n        fraction = `${fractionNumber}`.padStart(9, '0').slice(0, precision);\n    }\n    return `${secs}.${fraction}`;\n}\nexport function TemporalInstantToString(instant, timeZone, precision) {\n    let outputTimeZone = timeZone;\n    if (outputTimeZone === undefined) {\n        const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n        outputTimeZone = new TemporalTimeZone('UTC');\n    }\n    const iso = GetISO8601Calendar();\n    const dateTime = BuiltinTimeZoneGetPlainDateTimeFor(outputTimeZone, instant, iso);\n    const year = ISOYearString(GetSlot(dateTime, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(dateTime, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(dateTime, ISO_DAY));\n    const hour = ISODateTimePartString(GetSlot(dateTime, ISO_HOUR));\n    const minute = ISODateTimePartString(GetSlot(dateTime, ISO_MINUTE));\n    const seconds = FormatSecondsStringPart(GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND), precision);\n    let timeZoneString = 'Z';\n    if (timeZone !== undefined) {\n        const offsetNs = GetOffsetNanosecondsFor(outputTimeZone, instant);\n        timeZoneString = FormatISOTimeZoneOffsetString(offsetNs);\n    }\n    return `${year}-${month}-${day}T${hour}:${minute}${seconds}${timeZoneString}`;\n}\nexport function TemporalDurationToString(duration, precision = 'auto', options = undefined) {\n    function formatNumber(num) {\n        if (num <= NumberMaxSafeInteger)\n            return num.toString(10);\n        return JSBI.BigInt(num).toString(10);\n    }\n    const years = GetSlot(duration, YEARS);\n    const months = GetSlot(duration, MONTHS);\n    const weeks = GetSlot(duration, WEEKS);\n    const days = GetSlot(duration, DAYS);\n    const hours = GetSlot(duration, HOURS);\n    const minutes = GetSlot(duration, MINUTES);\n    let seconds = GetSlot(duration, SECONDS);\n    let ms = GetSlot(duration, MILLISECONDS);\n    let µs = GetSlot(duration, MICROSECONDS);\n    let ns = GetSlot(duration, NANOSECONDS);\n    const sign = DurationSign(years, months, weeks, days, hours, minutes, seconds, ms, µs, ns);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        ({\n            seconds,\n            milliseconds: ms,\n            microseconds: µs,\n            nanoseconds: ns\n        } = RoundDuration(0, 0, 0, 0, 0, 0, seconds, ms, µs, ns, increment, unit, roundingMode));\n    }\n    const dateParts = [];\n    if (years)\n        dateParts.push(`${formatNumber(MathAbs(years))}Y`);\n    if (months)\n        dateParts.push(`${formatNumber(MathAbs(months))}M`);\n    if (weeks)\n        dateParts.push(`${formatNumber(MathAbs(weeks))}W`);\n    if (days)\n        dateParts.push(`${formatNumber(MathAbs(days))}D`);\n    const timeParts = [];\n    if (hours)\n        timeParts.push(`${formatNumber(MathAbs(hours))}H`);\n    if (minutes)\n        timeParts.push(`${formatNumber(MathAbs(minutes))}M`);\n    const secondParts = [];\n    let total = TotalDurationNanoseconds(0, 0, 0, seconds, ms, µs, ns, 0);\n    let nsBigInt, µsBigInt, msBigInt, secondsBigInt;\n    ({ quotient: total, remainder: nsBigInt } = divmod(total, THOUSAND));\n    ({ quotient: total, remainder: µsBigInt } = divmod(total, THOUSAND));\n    ({ quotient: secondsBigInt, remainder: msBigInt } = divmod(total, THOUSAND));\n    const fraction = MathAbs(JSBI.toNumber(msBigInt)) * 1e6 + MathAbs(JSBI.toNumber(µsBigInt)) * 1e3 + MathAbs(JSBI.toNumber(nsBigInt));\n    let decimalPart;\n    if (precision === 'auto') {\n        if (fraction !== 0) {\n            decimalPart = `${fraction}`.padStart(9, '0');\n            while (decimalPart[decimalPart.length - 1] === '0') {\n                decimalPart = decimalPart.slice(0, -1);\n            }\n        }\n    }\n    else if (precision !== 0) {\n        decimalPart = `${fraction}`.padStart(9, '0').slice(0, precision);\n    }\n    if (decimalPart)\n        secondParts.unshift('.', decimalPart);\n    if (!JSBI.equal(secondsBigInt, ZERO) || secondParts.length || precision !== 'auto') {\n        secondParts.unshift(abs(secondsBigInt).toString());\n    }\n    if (secondParts.length)\n        timeParts.push(`${secondParts.join('')}S`);\n    if (timeParts.length)\n        timeParts.unshift('T');\n    if (!dateParts.length && !timeParts.length)\n        return 'PT0S';\n    return `${sign < 0 ? '-' : ''}P${dateParts.join('')}${timeParts.join('')}`;\n}\nexport function TemporalDateToString(date, showCalendar = 'auto') {\n    const year = ISOYearString(GetSlot(date, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(date, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(date, ISO_DAY));\n    const calendarID = ToString(GetSlot(date, CALENDAR));\n    const calendar = FormatCalendarAnnotation(calendarID, showCalendar);\n    return `${year}-${month}-${day}${calendar}`;\n}\nexport function TemporalDateTimeToString(dateTime, precision, showCalendar = 'auto', options = undefined) {\n    let year = GetSlot(dateTime, ISO_YEAR);\n    let month = GetSlot(dateTime, ISO_MONTH);\n    let day = GetSlot(dateTime, ISO_DAY);\n    let hour = GetSlot(dateTime, ISO_HOUR);\n    let minute = GetSlot(dateTime, ISO_MINUTE);\n    let second = GetSlot(dateTime, ISO_SECOND);\n    let millisecond = GetSlot(dateTime, ISO_MILLISECOND);\n    let microsecond = GetSlot(dateTime, ISO_MICROSECOND);\n    let nanosecond = GetSlot(dateTime, ISO_NANOSECOND);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = RoundISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, increment, unit, roundingMode));\n    }\n    const yearString = ISOYearString(year);\n    const monthString = ISODateTimePartString(month);\n    const dayString = ISODateTimePartString(day);\n    const hourString = ISODateTimePartString(hour);\n    const minuteString = ISODateTimePartString(minute);\n    const secondsString = FormatSecondsStringPart(second, millisecond, microsecond, nanosecond, precision);\n    const calendarID = ToString(GetSlot(dateTime, CALENDAR));\n    const calendar = FormatCalendarAnnotation(calendarID, showCalendar);\n    return `${yearString}-${monthString}-${dayString}T${hourString}:${minuteString}${secondsString}${calendar}`;\n}\nexport function TemporalMonthDayToString(monthDay, showCalendar = 'auto') {\n    const month = ISODateTimePartString(GetSlot(monthDay, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(monthDay, ISO_DAY));\n    let resultString = `${month}-${day}`;\n    const calendar = GetSlot(monthDay, CALENDAR);\n    const calendarID = ToString(calendar);\n    if (showCalendar === 'always' || calendarID !== 'iso8601') {\n        const year = ISOYearString(GetSlot(monthDay, ISO_YEAR));\n        resultString = `${year}-${resultString}`;\n    }\n    const calendarString = FormatCalendarAnnotation(calendarID, showCalendar);\n    if (calendarString)\n        resultString += calendarString;\n    return resultString;\n}\nexport function TemporalYearMonthToString(yearMonth, showCalendar = 'auto') {\n    const year = ISOYearString(GetSlot(yearMonth, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(yearMonth, ISO_MONTH));\n    let resultString = `${year}-${month}`;\n    const calendar = GetSlot(yearMonth, CALENDAR);\n    const calendarID = ToString(calendar);\n    if (showCalendar === 'always' || calendarID !== 'iso8601') {\n        const day = ISODateTimePartString(GetSlot(yearMonth, ISO_DAY));\n        resultString += `-${day}`;\n    }\n    const calendarString = FormatCalendarAnnotation(calendarID, showCalendar);\n    if (calendarString)\n        resultString += calendarString;\n    return resultString;\n}\nexport function TemporalZonedDateTimeToString(zdt, precision, showCalendar = 'auto', showTimeZone = 'auto', showOffset = 'auto', options = undefined) {\n    let instant = GetSlot(zdt, INSTANT);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        const ns = RoundInstant(GetSlot(zdt, EPOCHNANOSECONDS), increment, unit, roundingMode);\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        instant = new TemporalInstant(ns);\n    }\n    const tz = GetSlot(zdt, TIME_ZONE);\n    const iso = GetISO8601Calendar();\n    const dateTime = BuiltinTimeZoneGetPlainDateTimeFor(tz, instant, iso);\n    const year = ISOYearString(GetSlot(dateTime, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(dateTime, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(dateTime, ISO_DAY));\n    const hour = ISODateTimePartString(GetSlot(dateTime, ISO_HOUR));\n    const minute = ISODateTimePartString(GetSlot(dateTime, ISO_MINUTE));\n    const seconds = FormatSecondsStringPart(GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND), precision);\n    let result = `${year}-${month}-${day}T${hour}:${minute}${seconds}`;\n    if (showOffset !== 'never') {\n        const offsetNs = GetOffsetNanosecondsFor(tz, instant);\n        result += FormatISOTimeZoneOffsetString(offsetNs);\n    }\n    if (showTimeZone !== 'never')\n        result += `[${tz}]`;\n    const calendarID = ToString(GetSlot(zdt, CALENDAR));\n    result += FormatCalendarAnnotation(calendarID, showCalendar);\n    return result;\n}\nexport function TestTimeZoneOffsetString(string) {\n    return OFFSET.test(StringCtor(string));\n}\nexport function ParseTimeZoneOffsetString(string) {\n    const match = OFFSET.exec(StringCtor(string));\n    if (!match) {\n        throw new RangeError(`invalid time zone offset: ${string}`);\n    }\n    const sign = match[1] === '-' || match[1] === '\\u2212' ? -1 : +1;\n    const hours = +match[2];\n    const minutes = +(match[3] || 0);\n    const seconds = +(match[4] || 0);\n    const nanoseconds = +((match[5] || 0) + '000000000').slice(0, 9);\n    return sign * (((hours * 60 + minutes) * 60 + seconds) * 1e9 + nanoseconds);\n}\nexport function GetCanonicalTimeZoneIdentifier(timeZoneIdentifier) {\n    if (TestTimeZoneOffsetString(timeZoneIdentifier)) {\n        const offsetNs = ParseTimeZoneOffsetString(timeZoneIdentifier);\n        return FormatTimeZoneOffsetString(offsetNs);\n    }\n    const formatter = getIntlDateTimeFormatEnUsForTimeZone(StringCtor(timeZoneIdentifier));\n    return formatter.resolvedOptions().timeZone;\n}\nexport function GetIANATimeZoneOffsetNanoseconds(epochNanoseconds, id) {\n    const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = GetIANATimeZoneDateTimeParts(epochNanoseconds, id);\n    const utc = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (utc === null)\n        throw new RangeError('Date outside of supported range');\n    return JSBI.toNumber(JSBI.subtract(utc, epochNanoseconds));\n}\nfunction FormatTimeZoneOffsetString(offsetNanosecondsParam) {\n    const sign = offsetNanosecondsParam < 0 ? '-' : '+';\n    const offsetNanoseconds = MathAbs(offsetNanosecondsParam);\n    const nanoseconds = offsetNanoseconds % 1e9;\n    const seconds = MathFloor(offsetNanoseconds / 1e9) % 60;\n    const minutes = MathFloor(offsetNanoseconds / 60e9) % 60;\n    const hours = MathFloor(offsetNanoseconds / 3600e9);\n    const hourString = ISODateTimePartString(hours);\n    const minuteString = ISODateTimePartString(minutes);\n    const secondString = ISODateTimePartString(seconds);\n    let post = '';\n    if (nanoseconds) {\n        let fraction = `${nanoseconds}`.padStart(9, '0');\n        while (fraction[fraction.length - 1] === '0')\n            fraction = fraction.slice(0, -1);\n        post = `:${secondString}.${fraction}`;\n    }\n    else if (seconds) {\n        post = `:${secondString}`;\n    }\n    return `${sign}${hourString}:${minuteString}${post}`;\n}\nfunction FormatISOTimeZoneOffsetString(offsetNanosecondsParam) {\n    let offsetNanoseconds = JSBI.toNumber(RoundNumberToIncrement(JSBI.BigInt(offsetNanosecondsParam), 60e9, 'halfExpand'));\n    const sign = offsetNanoseconds < 0 ? '-' : '+';\n    offsetNanoseconds = MathAbs(offsetNanoseconds);\n    const minutes = (offsetNanoseconds / 60e9) % 60;\n    const hours = MathFloor(offsetNanoseconds / 3600e9);\n    const hourString = ISODateTimePartString(hours);\n    const minuteString = ISODateTimePartString(minutes);\n    return `${sign}${hourString}:${minuteString}`;\n}\nexport function GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    // Note: Date.UTC() interprets one and two-digit years as being in the\n    // 20th century, so don't use it\n    const legacyDate = new Date();\n    legacyDate.setUTCHours(hour, minute, second, millisecond);\n    legacyDate.setUTCFullYear(year, month - 1, day);\n    const ms = legacyDate.getTime();\n    if (NumberIsNaN(ms))\n        return null;\n    let ns = JSBI.multiply(JSBI.BigInt(ms), MILLION);\n    ns = JSBI.add(ns, JSBI.multiply(JSBI.BigInt(microsecond), THOUSAND));\n    ns = JSBI.add(ns, JSBI.BigInt(nanosecond));\n    if (JSBI.lessThan(ns, NS_MIN) || JSBI.greaterThan(ns, NS_MAX))\n        return null;\n    return ns;\n}\nfunction GetISOPartsFromEpoch(epochNanoseconds) {\n    const { quotient, remainder } = divmod(epochNanoseconds, MILLION);\n    let epochMilliseconds = JSBI.toNumber(quotient);\n    let nanos = JSBI.toNumber(remainder);\n    if (nanos < 0) {\n        nanos += 1e6;\n        epochMilliseconds -= 1;\n    }\n    const microsecond = MathFloor(nanos / 1e3) % 1e3;\n    const nanosecond = nanos % 1e3;\n    const item = new Date(epochMilliseconds);\n    const year = item.getUTCFullYear();\n    const month = item.getUTCMonth() + 1;\n    const day = item.getUTCDate();\n    const hour = item.getUTCHours();\n    const minute = item.getUTCMinutes();\n    const second = item.getUTCSeconds();\n    const millisecond = item.getUTCMilliseconds();\n    return { epochMilliseconds, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\n// ts-prune-ignore-next TODO: remove this after tests are converted to TS\nexport function GetIANATimeZoneDateTimeParts(epochNanoseconds, id) {\n    const { epochMilliseconds, millisecond, microsecond, nanosecond } = GetISOPartsFromEpoch(epochNanoseconds);\n    const { year, month, day, hour, minute, second } = GetFormatterParts(id, epochMilliseconds);\n    return BalanceISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n}\nfunction maxJSBI(one, two) {\n    return JSBI.lessThan(one, two) ? two : one;\n}\n/**\n * Our best guess at how far in advance new rules will be put into the TZDB for\n * future offset transitions. We'll pick 10 years but can always revise it if\n * we find that countries are being unusually proactive in their announcing\n * of offset changes.\n */\nfunction afterLatestPossibleTzdbRuleChange() {\n    return JSBI.add(SystemUTCEpochNanoSeconds(), ABOUT_TEN_YEARS_NANOS);\n}\nexport function GetIANATimeZoneNextTransition(epochNanoseconds, id) {\n    // Decide how far in the future after `epochNanoseconds` we'll look for an\n    // offset change. There are two cases:\n    // 1. If it's a past date (or a date in the near future) then it's possible\n    //    that the time zone may have newly added DST in the next few years. So\n    //    we'll have to look from the provided time until a few years after the\n    //    current system time. (Changes to DST policy are usually announced a few\n    //    years in the future.) Note that the first DST anywhere started in 1847,\n    //    so we'll start checks in 1847 instead of wasting cycles on years where\n    //    there will never be transitions.\n    // 2. If it's a future date beyond the next few years, then we'll just assume\n    //    that the latest DST policy in TZDB will still be in effect.  In this\n    //    case, we only need to look one year in the future to see if there are\n    //    any DST transitions.  We actually only need to look 9-10 months because\n    //    DST has two transitions per year, but we'll use a year just to be safe.\n    const oneYearLater = JSBI.add(epochNanoseconds, ABOUT_ONE_YEAR_NANOS);\n    const uppercap = maxJSBI(afterLatestPossibleTzdbRuleChange(), oneYearLater);\n    // The first transition (in any timezone) recorded in the TZDB was in 1847, so\n    // start there if an earlier date is supplied.\n    let leftNanos = maxJSBI(BEFORE_FIRST_OFFSET_TRANSITION, epochNanoseconds);\n    const leftOffsetNs = GetIANATimeZoneOffsetNanoseconds(leftNanos, id);\n    let rightNanos = leftNanos;\n    let rightOffsetNs = leftOffsetNs;\n    while (leftOffsetNs === rightOffsetNs && JSBI.lessThan(JSBI.BigInt(leftNanos), uppercap)) {\n        rightNanos = JSBI.add(leftNanos, TWO_WEEKS_NANOS);\n        rightOffsetNs = GetIANATimeZoneOffsetNanoseconds(rightNanos, id);\n        if (leftOffsetNs === rightOffsetNs) {\n            leftNanos = rightNanos;\n        }\n    }\n    if (leftOffsetNs === rightOffsetNs)\n        return null;\n    const result = bisect((epochNs) => GetIANATimeZoneOffsetNanoseconds(epochNs, id), leftNanos, rightNanos, leftOffsetNs, rightOffsetNs);\n    return result;\n}\nexport function GetIANATimeZonePreviousTransition(epochNanoseconds, id) {\n    // If a time zone uses DST (at the time of `epochNanoseconds`), then we only\n    // have to look back one year to find a transition. But if it doesn't use DST,\n    // then we need to look all the way back to 1847 (the earliest rule in the\n    // TZDB) to see if it had other offset transitions in the past. Looping back\n    // from a far-future date to 1847 is very slow (minutes of 100% CPU!), and is\n    // also unnecessary because DST rules aren't put into the TZDB more than a few\n    // years in the future because the political changes in time zones happen with\n    // only a few years' warning. Therefore, if a far-future date is provided,\n    // then we'll run the check in two parts:\n    // 1. First, we'll look back for up to one year to see if the latest TZDB\n    //    rules have DST.\n    // 2. If not, then we'll \"fast-reverse\" back to a few years later than the\n    //    current system time, and then look back to 1847. This reduces the\n    //    worst-case loop from 273K years to 175 years, for a ~1500x improvement\n    //    in worst-case perf.\n    const afterLatestRule = afterLatestPossibleTzdbRuleChange();\n    const isFarFuture = JSBI.greaterThan(epochNanoseconds, afterLatestRule);\n    const lowercap = isFarFuture ? JSBI.subtract(epochNanoseconds, ABOUT_ONE_YEAR_NANOS) : BEFORE_FIRST_OFFSET_TRANSITION;\n    let rightNanos = JSBI.subtract(epochNanoseconds, ONE);\n    const rightOffsetNs = GetIANATimeZoneOffsetNanoseconds(rightNanos, id);\n    let leftNanos = rightNanos;\n    let leftOffsetNs = rightOffsetNs;\n    while (rightOffsetNs === leftOffsetNs && JSBI.greaterThan(rightNanos, lowercap)) {\n        leftNanos = JSBI.subtract(rightNanos, TWO_WEEKS_NANOS);\n        leftOffsetNs = GetIANATimeZoneOffsetNanoseconds(leftNanos, id);\n        if (rightOffsetNs === leftOffsetNs) {\n            rightNanos = leftNanos;\n        }\n    }\n    if (rightOffsetNs === leftOffsetNs) {\n        if (isFarFuture) {\n            // There was no DST after looking back one year, which means that the most\n            // recent TZDB rules don't have any recurring transitions. To check for\n            // transitions in older rules, back up to a few years after the current\n            // date and then look all the way back to 1847. Note that we move back one\n            // day from the latest possible rule so that when the recursion runs it\n            // won't consider the new time to be \"far future\" because the system clock\n            // has advanced in the meantime.\n            const newTimeToCheck = JSBI.subtract(afterLatestRule, DAY_NANOS);\n            return GetIANATimeZonePreviousTransition(newTimeToCheck, id);\n        }\n        return null;\n    }\n    const result = bisect((epochNs) => GetIANATimeZoneOffsetNanoseconds(epochNs, id), leftNanos, rightNanos, leftOffsetNs, rightOffsetNs);\n    return result;\n}\n// ts-prune-ignore-next TODO: remove this after tests are converted to TS\nexport function parseFromEnUsFormat(datetime) {\n    const parts = datetime.split(/[^\\w]+/);\n    if (parts.length !== 7) {\n        throw new RangeError(`expected 7 parts in \"${datetime}`);\n    }\n    const month = +parts[0];\n    const day = +parts[1];\n    let year = +parts[2];\n    const era = parts[3].toUpperCase();\n    if (era === 'B' || era === 'BC') {\n        year = -year + 1;\n    }\n    else if (era !== 'A' && era !== 'AD') {\n        throw new RangeError(`Unknown era ${era} in \"${datetime}`);\n    }\n    let hour = +parts[4];\n    if (hour === 24) {\n        // bugs.chromium.org/p/chromium/issues/detail?id=1045791\n        hour = 0;\n    }\n    const minute = +parts[5];\n    const second = +parts[6];\n    if (!NumberIsFinite(year) ||\n        !NumberIsFinite(month) ||\n        !NumberIsFinite(day) ||\n        !NumberIsFinite(hour) ||\n        !NumberIsFinite(minute) ||\n        !NumberIsFinite(second)) {\n        throw new RangeError(`Invalid number in \"${datetime}`);\n    }\n    return { year, month, day, hour, minute, second };\n}\n// ts-prune-ignore-next TODO: remove this after tests are converted to TS\nexport function GetFormatterParts(timeZone, epochMilliseconds) {\n    const formatter = getIntlDateTimeFormatEnUsForTimeZone(timeZone);\n    // Using `format` instead of `formatToParts` for compatibility with older clients\n    const datetime = formatter.format(new Date(epochMilliseconds));\n    return parseFromEnUsFormat(datetime);\n}\nexport function GetIANATimeZoneEpochValue(id, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    const ns = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (ns === null)\n        throw new RangeError('DateTime outside of supported range');\n    let nsEarlier = JSBI.subtract(ns, DAY_NANOS);\n    if (JSBI.lessThan(nsEarlier, NS_MIN))\n        nsEarlier = ns;\n    let nsLater = JSBI.add(ns, DAY_NANOS);\n    if (JSBI.greaterThan(nsLater, NS_MAX))\n        nsLater = ns;\n    const earliest = GetIANATimeZoneOffsetNanoseconds(nsEarlier, id);\n    const latest = GetIANATimeZoneOffsetNanoseconds(nsLater, id);\n    const found = earliest === latest ? [earliest] : [earliest, latest];\n    return found\n        .map((offsetNanoseconds) => {\n        const epochNanoseconds = JSBI.subtract(ns, JSBI.BigInt(offsetNanoseconds));\n        const parts = GetIANATimeZoneDateTimeParts(epochNanoseconds, id);\n        if (year !== parts.year ||\n            month !== parts.month ||\n            day !== parts.day ||\n            hour !== parts.hour ||\n            minute !== parts.minute ||\n            second !== parts.second ||\n            millisecond !== parts.millisecond ||\n            microsecond !== parts.microsecond ||\n            nanosecond !== parts.nanosecond) {\n            return undefined;\n        }\n        return epochNanoseconds;\n    })\n        .filter((x) => x !== undefined);\n}\nexport function LeapYear(year) {\n    if (undefined === year)\n        return false;\n    const isDiv4 = year % 4 === 0;\n    const isDiv100 = year % 100 === 0;\n    const isDiv400 = year % 400 === 0;\n    return isDiv4 && (!isDiv100 || isDiv400);\n}\nexport function ISODaysInMonth(year, month) {\n    const DoM = {\n        standard: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n        leapyear: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n    };\n    return DoM[LeapYear(year) ? 'leapyear' : 'standard'][month - 1];\n}\nexport function DayOfWeek(year, month, day) {\n    const m = month + (month < 3 ? 10 : -2);\n    const Y = year - (month < 3 ? 1 : 0);\n    const c = MathFloor(Y / 100);\n    const y = Y - c * 100;\n    const d = day;\n    const pD = d;\n    const pM = MathFloor(2.6 * m - 0.2);\n    const pY = y + MathFloor(y / 4);\n    const pC = MathFloor(c / 4) - 2 * c;\n    const dow = (pD + pM + pY + pC) % 7;\n    return dow + (dow <= 0 ? 7 : 0);\n}\nexport function DayOfYear(year, month, day) {\n    let days = day;\n    for (let m = month - 1; m > 0; m--) {\n        days += ISODaysInMonth(year, m);\n    }\n    return days;\n}\nexport function WeekOfYear(year, month, day) {\n    const doy = DayOfYear(year, month, day);\n    const dow = DayOfWeek(year, month, day) || 7;\n    const doj = DayOfWeek(year, 1, 1);\n    const week = MathFloor((doy - dow + 10) / 7);\n    if (week < 1) {\n        if (doj === 5 || (doj === 6 && LeapYear(year - 1))) {\n            return 53;\n        }\n        else {\n            return 52;\n        }\n    }\n    if (week === 53) {\n        if ((LeapYear(year) ? 366 : 365) - doy < 4 - dow) {\n            return 1;\n        }\n    }\n    return week;\n}\nexport function DurationSign(y, mon, w, d, h, min, s, ms, µs, ns) {\n    for (const prop of [y, mon, w, d, h, min, s, ms, µs, ns]) {\n        if (prop !== 0)\n            return prop < 0 ? -1 : 1;\n    }\n    return 0;\n}\nfunction BalanceISOYearMonth(yearParam, monthParam) {\n    let year = yearParam;\n    let month = monthParam;\n    if (!NumberIsFinite(year) || !NumberIsFinite(month))\n        throw new RangeError('infinity is out of range');\n    month -= 1;\n    year += MathFloor(month / 12);\n    month %= 12;\n    if (month < 0)\n        month += 12;\n    month += 1;\n    return { year, month };\n}\nfunction BalanceISODate(yearParam, monthParam, dayParam) {\n    let year = yearParam;\n    let month = monthParam;\n    let day = dayParam;\n    if (!NumberIsFinite(day))\n        throw new RangeError('infinity is out of range');\n    ({ year, month } = BalanceISOYearMonth(year, month));\n    let daysInYear = 0;\n    let testYear = month > 2 ? year : year - 1;\n    while (((daysInYear = LeapYear(testYear) ? 366 : 365), day < -daysInYear)) {\n        year -= 1;\n        testYear -= 1;\n        day += daysInYear;\n    }\n    testYear += 1;\n    while (((daysInYear = LeapYear(testYear) ? 366 : 365), day > daysInYear)) {\n        year += 1;\n        testYear += 1;\n        day -= daysInYear;\n    }\n    while (day < 1) {\n        ({ year, month } = BalanceISOYearMonth(year, month - 1));\n        day += ISODaysInMonth(year, month);\n    }\n    while (day > ISODaysInMonth(year, month)) {\n        day -= ISODaysInMonth(year, month);\n        ({ year, month } = BalanceISOYearMonth(year, month + 1));\n    }\n    return { year, month, day };\n}\nfunction BalanceISODateTime(yearParam, monthParam, dayParam, hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam) {\n    const { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam);\n    const { year, month, day } = BalanceISODate(yearParam, monthParam, dayParam + deltaDays);\n    return { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nfunction BalanceTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam) {\n    let hour = hourParam;\n    let minute = minuteParam;\n    let second = secondParam;\n    let millisecond = millisecondParam;\n    let microsecond = microsecondParam;\n    let nanosecond = nanosecondParam;\n    if (!NumberIsFinite(hour) ||\n        !NumberIsFinite(minute) ||\n        !NumberIsFinite(second) ||\n        !NumberIsFinite(millisecond) ||\n        !NumberIsFinite(microsecond) ||\n        !NumberIsFinite(nanosecond)) {\n        throw new RangeError('infinity is out of range');\n    }\n    microsecond += MathFloor(nanosecond / 1000);\n    nanosecond = NonNegativeModulo(nanosecond, 1000);\n    millisecond += MathFloor(microsecond / 1000);\n    microsecond = NonNegativeModulo(microsecond, 1000);\n    second += MathFloor(millisecond / 1000);\n    millisecond = NonNegativeModulo(millisecond, 1000);\n    minute += MathFloor(second / 60);\n    second = NonNegativeModulo(second, 60);\n    hour += MathFloor(minute / 60);\n    minute = NonNegativeModulo(minute, 60);\n    const deltaDays = MathFloor(hour / 24);\n    hour = NonNegativeModulo(hour, 24);\n    return { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function TotalDurationNanoseconds(daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, offsetShift) {\n    const days = JSBI.BigInt(daysParam);\n    let nanoseconds = JSBI.BigInt(nanosecondsParam);\n    if (daysParam !== 0)\n        nanoseconds = JSBI.subtract(JSBI.BigInt(nanosecondsParam), JSBI.BigInt(offsetShift));\n    const hours = JSBI.add(JSBI.BigInt(hoursParam), JSBI.multiply(days, JSBI.BigInt(24)));\n    const minutes = JSBI.add(JSBI.BigInt(minutesParam), JSBI.multiply(hours, SIXTY));\n    const seconds = JSBI.add(JSBI.BigInt(secondsParam), JSBI.multiply(minutes, SIXTY));\n    const milliseconds = JSBI.add(JSBI.BigInt(millisecondsParam), JSBI.multiply(seconds, THOUSAND));\n    const microseconds = JSBI.add(JSBI.BigInt(microsecondsParam), JSBI.multiply(milliseconds, THOUSAND));\n    return JSBI.add(JSBI.BigInt(nanoseconds), JSBI.multiply(microseconds, THOUSAND));\n}\nfunction NanosecondsToDays(nanosecondsParam, relativeTo) {\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const sign = MathSign(JSBI.toNumber(nanosecondsParam));\n    let nanoseconds = JSBI.BigInt(nanosecondsParam);\n    let dayLengthNs = 86400e9;\n    if (sign === 0)\n        return { days: 0, nanoseconds: ZERO, dayLengthNs };\n    if (!IsTemporalZonedDateTime(relativeTo)) {\n        let days;\n        ({ quotient: days, remainder: nanoseconds } = divmod(nanoseconds, JSBI.BigInt(dayLengthNs)));\n        return { days: JSBI.toNumber(days), nanoseconds, dayLengthNs };\n    }\n    const startNs = GetSlot(relativeTo, EPOCHNANOSECONDS);\n    const start = GetSlot(relativeTo, INSTANT);\n    const endNs = JSBI.add(startNs, nanoseconds);\n    const end = new TemporalInstant(endNs);\n    const timeZone = GetSlot(relativeTo, TIME_ZONE);\n    const calendar = GetSlot(relativeTo, CALENDAR);\n    // Find the difference in days only.\n    const dtStart = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, start, calendar);\n    const dtEnd = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, end, calendar);\n    let { days } = DifferenceISODateTime(GetSlot(dtStart, ISO_YEAR), GetSlot(dtStart, ISO_MONTH), GetSlot(dtStart, ISO_DAY), GetSlot(dtStart, ISO_HOUR), GetSlot(dtStart, ISO_MINUTE), GetSlot(dtStart, ISO_SECOND), GetSlot(dtStart, ISO_MILLISECOND), GetSlot(dtStart, ISO_MICROSECOND), GetSlot(dtStart, ISO_NANOSECOND), GetSlot(dtEnd, ISO_YEAR), GetSlot(dtEnd, ISO_MONTH), GetSlot(dtEnd, ISO_DAY), GetSlot(dtEnd, ISO_HOUR), GetSlot(dtEnd, ISO_MINUTE), GetSlot(dtEnd, ISO_SECOND), GetSlot(dtEnd, ISO_MILLISECOND), GetSlot(dtEnd, ISO_MICROSECOND), GetSlot(dtEnd, ISO_NANOSECOND), calendar, 'day', ObjectCreate(null));\n    let intermediateNs = AddZonedDateTime(start, timeZone, calendar, 0, 0, 0, days, 0, 0, 0, 0, 0, 0);\n    // may disambiguate\n    // If clock time after addition was in the middle of a skipped period, the\n    // endpoint was disambiguated to a later clock time. So it's possible that\n    // the resulting disambiguated result is later than endNs. If so, then back\n    // up one day and try again. Repeat if necessary (some transitions are\n    // > 24 hours) until either there's zero days left or the date duration is\n    // back inside the period where it belongs. Note that this case only can\n    // happen for positive durations because the only direction that\n    // `disambiguation: 'compatible'` can change clock time is forwards.\n    if (sign === 1) {\n        while (days > 0 && JSBI.greaterThan(intermediateNs, endNs)) {\n            --days;\n            intermediateNs = AddZonedDateTime(start, timeZone, calendar, 0, 0, 0, days, 0, 0, 0, 0, 0, 0);\n            // may do disambiguation\n        }\n    }\n    nanoseconds = JSBI.subtract(endNs, intermediateNs);\n    let isOverflow = false;\n    let relativeInstant = new TemporalInstant(intermediateNs);\n    do {\n        // calculate length of the next day (day that contains the time remainder)\n        const oneDayFartherNs = AddZonedDateTime(relativeInstant, timeZone, calendar, 0, 0, 0, sign, 0, 0, 0, 0, 0, 0);\n        const relativeNs = GetSlot(relativeInstant, EPOCHNANOSECONDS);\n        dayLengthNs = JSBI.toNumber(JSBI.subtract(oneDayFartherNs, relativeNs));\n        isOverflow = JSBI.greaterThan(JSBI.multiply(JSBI.subtract(nanoseconds, JSBI.BigInt(dayLengthNs)), JSBI.BigInt(sign)), ZERO);\n        if (isOverflow) {\n            nanoseconds = JSBI.subtract(nanoseconds, JSBI.BigInt(dayLengthNs));\n            relativeInstant = new TemporalInstant(oneDayFartherNs);\n            days += sign;\n        }\n    } while (isOverflow);\n    return { days, nanoseconds, dayLengthNs: MathAbs(dayLengthNs) };\n}\nexport function BalanceDuration(daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, largestUnit, relativeTo = undefined) {\n    let days = daysParam;\n    let nanosecondsBigInt, microsecondsBigInt, millisecondsBigInt, secondsBigInt, minutesBigInt, hoursBigInt;\n    if (IsTemporalZonedDateTime(relativeTo)) {\n        const endNs = AddZonedDateTime(GetSlot(relativeTo, INSTANT), GetSlot(relativeTo, TIME_ZONE), GetSlot(relativeTo, CALENDAR), 0, 0, 0, days, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam);\n        const startNs = GetSlot(relativeTo, EPOCHNANOSECONDS);\n        nanosecondsBigInt = JSBI.subtract(endNs, startNs);\n    }\n    else {\n        nanosecondsBigInt = TotalDurationNanoseconds(days, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, 0);\n    }\n    if (largestUnit === 'year' || largestUnit === 'month' || largestUnit === 'week' || largestUnit === 'day') {\n        ({ days, nanoseconds: nanosecondsBigInt } = NanosecondsToDays(nanosecondsBigInt, relativeTo));\n    }\n    else {\n        days = 0;\n    }\n    const sign = JSBI.lessThan(nanosecondsBigInt, ZERO) ? -1 : 1;\n    nanosecondsBigInt = abs(nanosecondsBigInt);\n    microsecondsBigInt = millisecondsBigInt = secondsBigInt = minutesBigInt = hoursBigInt = ZERO;\n    switch (largestUnit) {\n        case 'year':\n        case 'month':\n        case 'week':\n        case 'day':\n        case 'hour':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            ({ quotient: secondsBigInt, remainder: millisecondsBigInt } = divmod(millisecondsBigInt, THOUSAND));\n            ({ quotient: minutesBigInt, remainder: secondsBigInt } = divmod(secondsBigInt, SIXTY));\n            ({ quotient: hoursBigInt, remainder: minutesBigInt } = divmod(minutesBigInt, SIXTY));\n            break;\n        case 'minute':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            ({ quotient: secondsBigInt, remainder: millisecondsBigInt } = divmod(millisecondsBigInt, THOUSAND));\n            ({ quotient: minutesBigInt, remainder: secondsBigInt } = divmod(secondsBigInt, SIXTY));\n            break;\n        case 'second':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            ({ quotient: secondsBigInt, remainder: millisecondsBigInt } = divmod(millisecondsBigInt, THOUSAND));\n            break;\n        case 'millisecond':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            break;\n        case 'microsecond':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            break;\n        case 'nanosecond':\n            break;\n        default:\n            throw new Error('assert not reached');\n    }\n    const hours = JSBI.toNumber(hoursBigInt) * sign;\n    const minutes = JSBI.toNumber(minutesBigInt) * sign;\n    const seconds = JSBI.toNumber(secondsBigInt) * sign;\n    const milliseconds = JSBI.toNumber(millisecondsBigInt) * sign;\n    const microseconds = JSBI.toNumber(microsecondsBigInt) * sign;\n    const nanoseconds = JSBI.toNumber(nanosecondsBigInt) * sign;\n    return { days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nexport function UnbalanceDurationRelative(yearsParam, monthsParam, weeksParam, daysParam, largestUnit, relativeToParam) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    const sign = DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    let calendar;\n    let relativeTo;\n    if (relativeToParam) {\n        relativeTo = ToTemporalDate(relativeToParam);\n        calendar = GetSlot(relativeTo, CALENDAR);\n    }\n    const oneYear = new TemporalDuration(sign);\n    const oneMonth = new TemporalDuration(0, sign);\n    const oneWeek = new TemporalDuration(0, 0, sign);\n    switch (largestUnit) {\n        case 'year':\n            // no-op\n            break;\n        case 'month':\n            {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for months balancing');\n                // balance years down to months\n                const dateAdd = calendar.dateAdd;\n                const dateUntil = calendar.dateUntil;\n                let relativeToDateOnly = relativeTo;\n                while (MathAbs(years) > 0) {\n                    const newRelativeTo = CalendarDateAdd(calendar, relativeToDateOnly, oneYear, undefined, dateAdd);\n                    const untilOptions = ObjectCreate(null);\n                    untilOptions.largestUnit = 'month';\n                    const untilResult = CalendarDateUntil(calendar, relativeToDateOnly, newRelativeTo, untilOptions, dateUntil);\n                    const oneYearMonths = GetSlot(untilResult, MONTHS);\n                    relativeToDateOnly = newRelativeTo;\n                    months += oneYearMonths;\n                    years -= sign;\n                }\n            }\n            break;\n        case 'week':\n            if (!calendar)\n                throw new RangeError('a starting point is required for weeks balancing');\n            // balance years down to days\n            while (MathAbs(years) > 0) {\n                let oneYearDays;\n                ({ relativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n                days += oneYearDays;\n                years -= sign;\n            }\n            // balance months down to days\n            while (MathAbs(months) > 0) {\n                let oneMonthDays;\n                ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n                days += oneMonthDays;\n                months -= sign;\n            }\n            break;\n        default:\n            // balance years down to days\n            while (MathAbs(years) > 0) {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for balancing calendar units');\n                let oneYearDays;\n                ({ relativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n                days += oneYearDays;\n                years -= sign;\n            }\n            // balance months down to days\n            while (MathAbs(months) > 0) {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for balancing calendar units');\n                let oneMonthDays;\n                ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n                days += oneMonthDays;\n                months -= sign;\n            }\n            // balance weeks down to days\n            while (MathAbs(weeks) > 0) {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for balancing calendar units');\n                let oneWeekDays;\n                ({ relativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n                days += oneWeekDays;\n                weeks -= sign;\n            }\n            break;\n    }\n    return { years, months, weeks, days };\n}\nexport function BalanceDurationRelative(yearsParam, monthsParam, weeksParam, daysParam, largestUnit, relativeToParam) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    const sign = DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    if (sign === 0)\n        return { years, months, weeks, days };\n    let calendar;\n    let relativeTo;\n    if (relativeToParam) {\n        relativeTo = ToTemporalDate(relativeToParam);\n        calendar = GetSlot(relativeTo, CALENDAR);\n    }\n    const oneYear = new TemporalDuration(sign);\n    const oneMonth = new TemporalDuration(0, sign);\n    const oneWeek = new TemporalDuration(0, 0, sign);\n    switch (largestUnit) {\n        case 'year': {\n            if (!calendar)\n                throw new RangeError('a starting point is required for years balancing');\n            // balance days up to years\n            let newRelativeTo, oneYearDays;\n            ({ relativeTo: newRelativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n            while (MathAbs(days) >= MathAbs(oneYearDays)) {\n                days -= oneYearDays;\n                years += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n            }\n            // balance days up to months\n            let oneMonthDays;\n            ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            while (MathAbs(days) >= MathAbs(oneMonthDays)) {\n                days -= oneMonthDays;\n                months += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            }\n            // balance months up to years\n            const dateAdd = calendar.dateAdd;\n            newRelativeTo = CalendarDateAdd(calendar, relativeTo, oneYear, undefined, dateAdd);\n            const dateUntil = calendar.dateUntil;\n            const untilOptions = ObjectCreate(null);\n            untilOptions.largestUnit = 'month';\n            let untilResult = CalendarDateUntil(calendar, relativeTo, newRelativeTo, untilOptions, dateUntil);\n            let oneYearMonths = GetSlot(untilResult, MONTHS);\n            while (MathAbs(months) >= MathAbs(oneYearMonths)) {\n                months -= oneYearMonths;\n                years += sign;\n                relativeTo = newRelativeTo;\n                newRelativeTo = CalendarDateAdd(calendar, relativeTo, oneYear, undefined, dateAdd);\n                const untilOptions = ObjectCreate(null);\n                untilOptions.largestUnit = 'month';\n                untilResult = CalendarDateUntil(calendar, relativeTo, newRelativeTo, untilOptions, dateUntil);\n                oneYearMonths = GetSlot(untilResult, MONTHS);\n            }\n            break;\n        }\n        case 'month': {\n            if (!calendar)\n                throw new RangeError('a starting point is required for months balancing');\n            // balance days up to months\n            let newRelativeTo, oneMonthDays;\n            ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            while (MathAbs(days) >= MathAbs(oneMonthDays)) {\n                days -= oneMonthDays;\n                months += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            }\n            break;\n        }\n        case 'week': {\n            if (!calendar)\n                throw new RangeError('a starting point is required for weeks balancing');\n            // balance days up to weeks\n            let newRelativeTo, oneWeekDays;\n            ({ relativeTo: newRelativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            while (MathAbs(days) >= MathAbs(oneWeekDays)) {\n                days -= oneWeekDays;\n                weeks += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            }\n            break;\n        }\n        default:\n            // no-op\n            break;\n    }\n    return { years, months, weeks, days };\n}\nexport function CalculateOffsetShift(relativeTo, y, mon, w, d) {\n    if (IsTemporalZonedDateTime(relativeTo)) {\n        const instant = GetSlot(relativeTo, INSTANT);\n        const timeZone = GetSlot(relativeTo, TIME_ZONE);\n        const calendar = GetSlot(relativeTo, CALENDAR);\n        const offsetBefore = GetOffsetNanosecondsFor(timeZone, instant);\n        const after = AddZonedDateTime(instant, timeZone, calendar, y, mon, w, d, 0, 0, 0, 0, 0, 0);\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        const instantAfter = new TemporalInstant(after);\n        const offsetAfter = GetOffsetNanosecondsFor(timeZone, instantAfter);\n        return offsetAfter - offsetBefore;\n    }\n    return 0;\n}\nexport function CreateNegatedTemporalDuration(duration) {\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    return new TemporalDuration(-GetSlot(duration, YEARS), -GetSlot(duration, MONTHS), -GetSlot(duration, WEEKS), -GetSlot(duration, DAYS), -GetSlot(duration, HOURS), -GetSlot(duration, MINUTES), -GetSlot(duration, SECONDS), -GetSlot(duration, MILLISECONDS), -GetSlot(duration, MICROSECONDS), -GetSlot(duration, NANOSECONDS));\n}\nexport function ConstrainToRange(value, min, max) {\n    // Math.Max accepts undefined values and returns NaN. Undefined values are\n    // used for optional params in the method below.\n    return MathMin(max, MathMax(min, value));\n}\nfunction ConstrainISODate(year, monthParam, dayParam) {\n    const month = ConstrainToRange(monthParam, 1, 12);\n    const day = ConstrainToRange(dayParam, 1, ISODaysInMonth(year, month));\n    return { year, month, day };\n}\nfunction ConstrainTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam) {\n    const hour = ConstrainToRange(hourParam, 0, 23);\n    const minute = ConstrainToRange(minuteParam, 0, 59);\n    const second = ConstrainToRange(secondParam, 0, 59);\n    const millisecond = ConstrainToRange(millisecondParam, 0, 999);\n    const microsecond = ConstrainToRange(microsecondParam, 0, 999);\n    const nanosecond = ConstrainToRange(nanosecondParam, 0, 999);\n    return { hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function RejectToRange(value, min, max) {\n    if (value < min || value > max)\n        throw new RangeError(`value out of range: ${min} <= ${value} <= ${max}`);\n}\nfunction RejectISODate(year, month, day) {\n    RejectToRange(month, 1, 12);\n    RejectToRange(day, 1, ISODaysInMonth(year, month));\n}\nfunction RejectDateRange(year, month, day) {\n    // Noon avoids trouble at edges of DateTime range (excludes midnight)\n    RejectDateTimeRange(year, month, day, 12, 0, 0, 0, 0, 0);\n}\nexport function RejectTime(hour, minute, second, millisecond, microsecond, nanosecond) {\n    RejectToRange(hour, 0, 23);\n    RejectToRange(minute, 0, 59);\n    RejectToRange(second, 0, 59);\n    RejectToRange(millisecond, 0, 999);\n    RejectToRange(microsecond, 0, 999);\n    RejectToRange(nanosecond, 0, 999);\n}\nfunction RejectDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    RejectISODate(year, month, day);\n    RejectTime(hour, minute, second, millisecond, microsecond, nanosecond);\n}\nfunction RejectDateTimeRange(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    RejectToRange(year, YEAR_MIN, YEAR_MAX);\n    // Reject any DateTime 24 hours or more outside the Instant range\n    if ((year === YEAR_MIN &&\n        null ==\n            GetEpochFromISOParts(year, month, day + 1, hour, minute, second, millisecond, microsecond, nanosecond - 1)) ||\n        (year === YEAR_MAX &&\n            null ==\n                GetEpochFromISOParts(year, month, day - 1, hour, minute, second, millisecond, microsecond, nanosecond + 1))) {\n        throw new RangeError('DateTime outside of supported range');\n    }\n}\nexport function ValidateEpochNanoseconds(epochNanoseconds) {\n    if (JSBI.lessThan(epochNanoseconds, NS_MIN) || JSBI.greaterThan(epochNanoseconds, NS_MAX)) {\n        throw new RangeError('Instant outside of supported range');\n    }\n}\nfunction RejectYearMonthRange(year, month) {\n    RejectToRange(year, YEAR_MIN, YEAR_MAX);\n    if (year === YEAR_MIN) {\n        RejectToRange(month, 4, 12);\n    }\n    else if (year === YEAR_MAX) {\n        RejectToRange(month, 1, 9);\n    }\n}\nexport function RejectDuration(y, mon, w, d, h, min, s, ms, µs, ns) {\n    const sign = DurationSign(y, mon, w, d, h, min, s, ms, µs, ns);\n    for (const prop of [y, mon, w, d, h, min, s, ms, µs, ns]) {\n        if (!NumberIsFinite(prop))\n            throw new RangeError('infinite values not allowed as duration fields');\n        const propSign = MathSign(prop);\n        if (propSign !== 0 && propSign !== sign)\n            throw new RangeError('mixed-sign values not allowed as duration fields');\n    }\n}\nexport function DifferenceISODate(y1, m1, d1, y2, m2, d2, largestUnit) {\n    switch (largestUnit) {\n        case 'year':\n        case 'month': {\n            const sign = -CompareISODate(y1, m1, d1, y2, m2, d2);\n            if (sign === 0)\n                return { years: 0, months: 0, weeks: 0, days: 0 };\n            const start = { year: y1, month: m1, day: d1 };\n            const end = { year: y2, month: m2, day: d2 };\n            let years = end.year - start.year;\n            let mid = AddISODate(y1, m1, d1, years, 0, 0, 0, 'constrain');\n            let midSign = -CompareISODate(mid.year, mid.month, mid.day, y2, m2, d2);\n            if (midSign === 0) {\n                return largestUnit === 'year'\n                    ? { years, months: 0, weeks: 0, days: 0 }\n                    : { years: 0, months: years * 12, weeks: 0, days: 0 };\n            }\n            let months = end.month - start.month;\n            if (midSign !== sign) {\n                years -= sign;\n                months += sign * 12;\n            }\n            mid = AddISODate(y1, m1, d1, years, months, 0, 0, 'constrain');\n            midSign = -CompareISODate(mid.year, mid.month, mid.day, y2, m2, d2);\n            if (midSign === 0) {\n                return largestUnit === 'year'\n                    ? { years, months, weeks: 0, days: 0 }\n                    : { years: 0, months: months + years * 12, weeks: 0, days: 0 };\n            }\n            if (midSign !== sign) {\n                // The end date is later in the month than mid date (or earlier for\n                // negative durations). Back up one month.\n                months -= sign;\n                if (months === -sign) {\n                    years -= sign;\n                    months = 11 * sign;\n                }\n                mid = AddISODate(y1, m1, d1, years, months, 0, 0, 'constrain');\n            }\n            let days = 0;\n            // If we get here, months and years are correct (no overflow), and `mid`\n            // is within the range from `start` to `end`. To count the days between\n            // `mid` and `end`, there are 3 cases:\n            // 1) same month: use simple subtraction\n            // 2) end is previous month from intermediate (negative duration)\n            // 3) end is next month from intermediate (positive duration)\n            if (mid.month === end.month) {\n                // 1) same month: use simple subtraction\n                days = end.day - mid.day;\n            }\n            else if (sign < 0) {\n                // 2) end is previous month from intermediate (negative duration)\n                // Example: intermediate: Feb 1, end: Jan 30, DaysInMonth = 31, days = -2\n                days = -mid.day - (ISODaysInMonth(end.year, end.month) - end.day);\n            }\n            else {\n                // 3) end is next month from intermediate (positive duration)\n                // Example: intermediate: Jan 29, end: Feb 1, DaysInMonth = 31, days = 3\n                days = end.day + (ISODaysInMonth(mid.year, mid.month) - mid.day);\n            }\n            if (largestUnit === 'month') {\n                months += years * 12;\n                years = 0;\n            }\n            return { years, months, weeks: 0, days };\n        }\n        case 'week':\n        case 'day': {\n            let larger, smaller, sign;\n            if (CompareISODate(y1, m1, d1, y2, m2, d2) < 0) {\n                smaller = { year: y1, month: m1, day: d1 };\n                larger = { year: y2, month: m2, day: d2 };\n                sign = 1;\n            }\n            else {\n                smaller = { year: y2, month: m2, day: d2 };\n                larger = { year: y1, month: m1, day: d1 };\n                sign = -1;\n            }\n            let days = DayOfYear(larger.year, larger.month, larger.day) - DayOfYear(smaller.year, smaller.month, smaller.day);\n            for (let year = smaller.year; year < larger.year; ++year) {\n                days += LeapYear(year) ? 366 : 365;\n            }\n            let weeks = 0;\n            if (largestUnit === 'week') {\n                weeks = MathFloor(days / 7);\n                days %= 7;\n            }\n            weeks *= sign;\n            days *= sign;\n            return { years: 0, months: 0, weeks, days };\n        }\n        default:\n            throw new Error('assert not reached');\n    }\n}\nfunction DifferenceTime(h1, min1, s1, ms1, µs1, ns1, h2, min2, s2, ms2, µs2, ns2) {\n    let hours = h2 - h1;\n    let minutes = min2 - min1;\n    let seconds = s2 - s1;\n    let milliseconds = ms2 - ms1;\n    let microseconds = µs2 - µs1;\n    let nanoseconds = ns2 - ns1;\n    const sign = DurationSign(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    hours *= sign;\n    minutes *= sign;\n    seconds *= sign;\n    milliseconds *= sign;\n    microseconds *= sign;\n    nanoseconds *= sign;\n    let deltaDays = 0;\n    ({\n        deltaDays,\n        hour: hours,\n        minute: minutes,\n        second: seconds,\n        millisecond: milliseconds,\n        microsecond: microseconds,\n        nanosecond: nanoseconds\n    } = BalanceTime(hours, minutes, seconds, milliseconds, microseconds, nanoseconds));\n    if (deltaDays != 0)\n        throw new Error('assertion failure in DifferenceTime: _bt_.[[Days]] should be 0');\n    hours *= sign;\n    minutes *= sign;\n    seconds *= sign;\n    milliseconds *= sign;\n    microseconds *= sign;\n    nanoseconds *= sign;\n    return { hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction DifferenceInstant(ns1, ns2, increment, unit, roundingMode) {\n    const diff = JSBI.subtract(ns2, ns1);\n    const remainder = JSBI.remainder(diff, JSBI.BigInt(86400e9));\n    const wholeDays = JSBI.subtract(diff, remainder);\n    const roundedRemainder = RoundNumberToIncrement(remainder, nsPerTimeUnit[unit] * increment, roundingMode);\n    const roundedDiff = JSBI.add(wholeDays, roundedRemainder);\n    const nanoseconds = JSBI.toNumber(JSBI.remainder(roundedDiff, THOUSAND));\n    const microseconds = JSBI.toNumber(JSBI.remainder(JSBI.divide(roundedDiff, THOUSAND), THOUSAND));\n    const milliseconds = JSBI.toNumber(JSBI.remainder(JSBI.divide(roundedDiff, MILLION), THOUSAND));\n    const seconds = JSBI.toNumber(JSBI.divide(roundedDiff, BILLION));\n    return { seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction DifferenceISODateTime(y1Param, mon1Param, d1Param, h1, min1, s1, ms1, µs1, ns1, y2, mon2, d2, h2, min2, s2, ms2, µs2, ns2, calendar, largestUnit, options) {\n    let y1 = y1Param;\n    let mon1 = mon1Param;\n    let d1 = d1Param;\n    let { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = DifferenceTime(h1, min1, s1, ms1, µs1, ns1, h2, min2, s2, ms2, µs2, ns2);\n    const timeSign = DurationSign(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    const dateSign = CompareISODate(y2, mon2, d2, y1, mon1, d1);\n    if (dateSign === -timeSign) {\n        ({ year: y1, month: mon1, day: d1 } = BalanceISODate(y1, mon1, d1 - timeSign));\n        ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(-timeSign, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    }\n    const date1 = CreateTemporalDate(y1, mon1, d1, calendar);\n    const date2 = CreateTemporalDate(y2, mon2, d2, calendar);\n    const dateLargestUnit = LargerOfTwoTemporalUnits('day', largestUnit);\n    const untilOptions = MergeLargestUnitOption(options, dateLargestUnit);\n    // TODO untilOptions doesn't want to compile as it seems that smallestUnit is not clamped?\n    // Type 'SmallestUnit<DateTimeUnit> | undefined' is not assignable to type\n    //      'SmallestUnit<\"year\" | \"month\" | \"day\" | \"week\"> | undefined'.\n    // Type '\"hour\"' is not assignable to type\n    //      'SmallestUnit<\"year\" | \"month\" | \"day\" | \"week\"> | undefined'.ts(2345)\n    let { years, months, weeks, days } = CalendarDateUntil(calendar, date1, date2, untilOptions);\n    // Signs of date part and time part may not agree; balance them together\n    ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction DifferenceZonedDateTime(ns1, ns2, timeZone, calendar, largestUnit, options) {\n    const nsDiff = JSBI.subtract(ns2, ns1);\n    if (JSBI.equal(nsDiff, ZERO)) {\n        return {\n            years: 0,\n            months: 0,\n            weeks: 0,\n            days: 0,\n            hours: 0,\n            minutes: 0,\n            seconds: 0,\n            milliseconds: 0,\n            microseconds: 0,\n            nanoseconds: 0\n        };\n    }\n    // Find the difference in dates only.\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const start = new TemporalInstant(ns1);\n    const end = new TemporalInstant(ns2);\n    const dtStart = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, start, calendar);\n    const dtEnd = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, end, calendar);\n    let { years, months, weeks, days } = DifferenceISODateTime(GetSlot(dtStart, ISO_YEAR), GetSlot(dtStart, ISO_MONTH), GetSlot(dtStart, ISO_DAY), GetSlot(dtStart, ISO_HOUR), GetSlot(dtStart, ISO_MINUTE), GetSlot(dtStart, ISO_SECOND), GetSlot(dtStart, ISO_MILLISECOND), GetSlot(dtStart, ISO_MICROSECOND), GetSlot(dtStart, ISO_NANOSECOND), GetSlot(dtEnd, ISO_YEAR), GetSlot(dtEnd, ISO_MONTH), GetSlot(dtEnd, ISO_DAY), GetSlot(dtEnd, ISO_HOUR), GetSlot(dtEnd, ISO_MINUTE), GetSlot(dtEnd, ISO_SECOND), GetSlot(dtEnd, ISO_MILLISECOND), GetSlot(dtEnd, ISO_MICROSECOND), GetSlot(dtEnd, ISO_NANOSECOND), calendar, largestUnit, options);\n    const intermediateNs = AddZonedDateTime(start, timeZone, calendar, years, months, weeks, 0, 0, 0, 0, 0, 0, 0);\n    // may disambiguate\n    let timeRemainderNs = JSBI.subtract(ns2, intermediateNs);\n    const intermediate = CreateTemporalZonedDateTime(intermediateNs, timeZone, calendar);\n    ({ nanoseconds: timeRemainderNs, days } = NanosecondsToDays(timeRemainderNs, intermediate));\n    // Finally, merge the date and time durations and return the merged result.\n    const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, 0, 0, 0, JSBI.toNumber(timeRemainderNs), 'hour');\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\n// TODO: does it make sense to explicitly union the other and options types for each operation?\nexport function DifferenceTemporalInstant(operation, instant, otherParam, optionsParam) {\n    const other = ToTemporalInstant(otherParam);\n    let first, second;\n    if (operation === 'until') {\n        [first, second] = [instant, other];\n    }\n    else {\n        [first, second] = [other, instant];\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'time', 'nanosecond');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('second', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'time', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    const roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    const MAX_DIFFERENCE_INCREMENTS = {\n        hour: 24,\n        minute: 60,\n        second: 60,\n        millisecond: 1000,\n        microsecond: 1000,\n        nanosecond: 1000\n    };\n    const roundingIncrement = ToTemporalRoundingIncrement(options, MAX_DIFFERENCE_INCREMENTS[smallestUnit], false);\n    const onens = GetSlot(first, EPOCHNANOSECONDS);\n    const twons = GetSlot(second, EPOCHNANOSECONDS);\n    let { seconds, milliseconds, microseconds, nanoseconds } = DifferenceInstant(onens, twons, roundingIncrement, smallestUnit, roundingMode);\n    let hours, minutes;\n    ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n}\nexport function DifferenceTemporalPlainDate(operation, plainDate, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalDate(otherParam);\n    const calendar = GetSlot(plainDate, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarId = ToString(calendar);\n    const otherCalendarId = ToString(otherCalendar);\n    if (calendarId !== otherCalendarId) {\n        throw new RangeError(`cannot compute difference between dates of ${calendarId} and ${otherCalendarId} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'date', 'day');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('day', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'date', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalRoundingIncrement(options, undefined, false);\n    const untilOptions = MergeLargestUnitOption(options, largestUnit);\n    let { years, months, weeks, days } = CalendarDateUntil(calendar, plainDate, other, untilOptions);\n    if (smallestUnit !== 'day' || roundingIncrement !== 1) {\n        ({ years, months, weeks, days } = RoundDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0, roundingIncrement, smallestUnit, roundingMode, plainDate));\n    }\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, sign * weeks, sign * days, 0, 0, 0, 0, 0, 0);\n}\nexport function DifferenceTemporalPlainDateTime(operation, plainDateTime, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalDateTime(otherParam);\n    const calendar = GetSlot(plainDateTime, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarId = ToString(calendar);\n    const otherCalendarId = ToString(otherCalendar);\n    if (calendarId !== otherCalendarId) {\n        throw new RangeError(`cannot compute difference between dates of ${calendarId} and ${otherCalendarId} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'datetime', 'nanosecond');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('day', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'datetime', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalDateTimeRoundingIncrement(options, smallestUnit);\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = DifferenceISODateTime(GetSlot(plainDateTime, ISO_YEAR), GetSlot(plainDateTime, ISO_MONTH), GetSlot(plainDateTime, ISO_DAY), GetSlot(plainDateTime, ISO_HOUR), GetSlot(plainDateTime, ISO_MINUTE), GetSlot(plainDateTime, ISO_SECOND), GetSlot(plainDateTime, ISO_MILLISECOND), GetSlot(plainDateTime, ISO_MICROSECOND), GetSlot(plainDateTime, ISO_NANOSECOND), GetSlot(other, ISO_YEAR), GetSlot(other, ISO_MONTH), GetSlot(other, ISO_DAY), GetSlot(other, ISO_HOUR), GetSlot(other, ISO_MINUTE), GetSlot(other, ISO_SECOND), GetSlot(other, ISO_MILLISECOND), GetSlot(other, ISO_MICROSECOND), GetSlot(other, ISO_NANOSECOND), calendar, largestUnit, options);\n    const relativeTo = TemporalDateTimeToDate(plainDateTime);\n    ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, relativeTo));\n    ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n}\nexport function DifferenceTemporalPlainTime(operation, plainTime, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalTime(otherParam);\n    const options = GetOptionsObject(optionsParam);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'time', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = 'hour';\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'time', 'nanosecond');\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const MAX_INCREMENTS = {\n        hour: 24,\n        minute: 60,\n        second: 60,\n        millisecond: 1000,\n        microsecond: 1000,\n        nanosecond: 1000\n    };\n    const roundingIncrement = ToTemporalRoundingIncrement(options, MAX_INCREMENTS[smallestUnit], false);\n    let { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = DifferenceTime(GetSlot(plainTime, ISO_HOUR), GetSlot(plainTime, ISO_MINUTE), GetSlot(plainTime, ISO_SECOND), GetSlot(plainTime, ISO_MILLISECOND), GetSlot(plainTime, ISO_MICROSECOND), GetSlot(plainTime, ISO_NANOSECOND), GetSlot(other, ISO_HOUR), GetSlot(other, ISO_MINUTE), GetSlot(other, ISO_SECOND), GetSlot(other, ISO_MILLISECOND), GetSlot(other, ISO_MICROSECOND), GetSlot(other, ISO_NANOSECOND));\n    ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = RoundDuration(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode));\n    ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(0, 0, 0, 0, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n}\nexport function DifferenceTemporalPlainYearMonth(operation, yearMonth, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalYearMonth(otherParam);\n    const calendar = GetSlot(yearMonth, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarID = ToString(calendar);\n    const otherCalendarID = ToString(otherCalendar);\n    if (calendarID !== otherCalendarID) {\n        throw new RangeError(`cannot compute difference between months of ${calendarID} and ${otherCalendarID} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const ALLOWED_UNITS = SINGULAR_PLURAL_UNITS.reduce((allowed, [p, s, c]) => {\n        if (c === 'date' && s !== 'week' && s !== 'day')\n            allowed.push(s, p);\n        return allowed;\n    }, []);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'date', 'month');\n    if (smallestUnit === 'week' || smallestUnit === 'day') {\n        throw new RangeError(`smallestUnit must be one of ${ALLOWED_UNITS.join(', ')}, not ${smallestUnit}`);\n    }\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'date', 'auto');\n    if (largestUnit === 'week' || largestUnit === 'day') {\n        throw new RangeError(`largestUnit must be one of ${ALLOWED_UNITS.join(', ')}, not ${largestUnit}`);\n    }\n    if (largestUnit === 'auto')\n        largestUnit = 'year';\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalRoundingIncrement(options, undefined, false);\n    const fieldNames = CalendarFields(calendar, ['monthCode', 'year']);\n    const otherFields = PrepareTemporalFields(other, fieldNames, []);\n    otherFields.day = 1;\n    const thisFields = PrepareTemporalFields(yearMonth, fieldNames, []);\n    thisFields.day = 1;\n    // The calls to PrepareTemporalFields don't mark day as a required property,\n    // and TS doesn't automatically narrow the type of the object because of the\n    // assignments above, so we must \"cast\" the inputs.\n    const otherDate = CalendarDateFromFields(calendar, otherFields);\n    const thisDate = CalendarDateFromFields(calendar, thisFields);\n    const untilOptions = MergeLargestUnitOption(options, largestUnit);\n    let { years, months } = CalendarDateUntil(calendar, thisDate, otherDate, untilOptions);\n    if (smallestUnit !== 'month' || roundingIncrement !== 1) {\n        ({ years, months } = RoundDuration(years, months, 0, 0, 0, 0, 0, 0, 0, 0, roundingIncrement, smallestUnit, roundingMode, thisDate));\n    }\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, 0, 0, 0, 0, 0, 0, 0, 0);\n}\nexport function DifferenceTemporalZonedDateTime(operation, zonedDateTime, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalZonedDateTime(otherParam);\n    const calendar = GetSlot(zonedDateTime, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarId = ToString(calendar);\n    const otherCalendarId = ToString(otherCalendar);\n    if (calendarId !== otherCalendarId) {\n        throw new RangeError(`cannot compute difference between dates of ${calendarId} and ${otherCalendarId} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'datetime', 'nanosecond');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('hour', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'datetime', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalDateTimeRoundingIncrement(options, smallestUnit);\n    const ns1 = GetSlot(zonedDateTime, EPOCHNANOSECONDS);\n    const ns2 = GetSlot(other, EPOCHNANOSECONDS);\n    let years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds;\n    if (largestUnit !== 'year' && largestUnit !== 'month' && largestUnit !== 'week' && largestUnit !== 'day') {\n        // The user is only asking for a time difference, so return difference of instants.\n        years = 0;\n        months = 0;\n        weeks = 0;\n        days = 0;\n        ({ seconds, milliseconds, microseconds, nanoseconds } = DifferenceInstant(ns1, ns2, roundingIncrement, \n        // TODO this doesn't type-check as it includes >= day-size units\n        // This is probably safe as the typing for ToSmallestTemporalUnit isn't\n        // very good.\n        smallestUnit, roundingMode));\n        ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    }\n    else {\n        const timeZone = GetSlot(zonedDateTime, TIME_ZONE);\n        if (!TimeZoneEquals(timeZone, GetSlot(other, TIME_ZONE))) {\n            throw new RangeError(\"When calculating difference between time zones, largestUnit must be 'hours' \" +\n                'or smaller because day lengths can vary between time zones due to DST or time zone offset changes.');\n        }\n        const untilOptions = MergeLargestUnitOption(options, largestUnit);\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            DifferenceZonedDateTime(ns1, ns2, timeZone, calendar, largestUnit, untilOptions));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, zonedDateTime));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            AdjustRoundedDurationDays(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, zonedDateTime));\n    }\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n}\nexport function AddISODate(yearParam, monthParam, dayParam, yearsParam, monthsParam, weeksParam, daysParam, overflow) {\n    let year = yearParam;\n    let month = monthParam;\n    let day = dayParam;\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    year += years;\n    month += months;\n    ({ year, month } = BalanceISOYearMonth(year, month));\n    ({ year, month, day } = RegulateISODate(year, month, day, overflow));\n    days += 7 * weeks;\n    day += days;\n    ({ year, month, day } = BalanceISODate(year, month, day));\n    return { year, month, day };\n}\nfunction AddTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, hours, minutes, seconds, milliseconds, microseconds, nanoseconds) {\n    let hour = hourParam;\n    let minute = minuteParam;\n    let second = secondParam;\n    let millisecond = millisecondParam;\n    let microsecond = microsecondParam;\n    let nanosecond = nanosecondParam;\n    hour += hours;\n    minute += minutes;\n    second += seconds;\n    millisecond += milliseconds;\n    microsecond += microseconds;\n    nanosecond += nanoseconds;\n    let deltaDays = 0;\n    ({ deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceTime(hour, minute, second, millisecond, microsecond, nanosecond));\n    return { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nfunction AddDuration(y1, mon1, w1, d1, h1, min1, s1, ms1, µs1, ns1, y2, mon2, w2, d2, h2, min2, s2, ms2, µs2, ns2, relativeTo) {\n    const largestUnit1 = DefaultTemporalLargestUnit(y1, mon1, w1, d1, h1, min1, s1, ms1, µs1, ns1);\n    const largestUnit2 = DefaultTemporalLargestUnit(y2, mon2, w2, d2, h2, min2, s2, ms2, µs2, ns2);\n    const largestUnit = LargerOfTwoTemporalUnits(largestUnit1, largestUnit2);\n    let years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds;\n    if (!relativeTo) {\n        if (largestUnit === 'year' || largestUnit === 'month' || largestUnit === 'week') {\n            throw new RangeError('relativeTo is required for years, months, or weeks arithmetic');\n        }\n        years = months = weeks = 0;\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(d1 + d2, h1 + h2, min1 + min2, s1 + s2, ms1 + ms2, µs1 + µs2, ns1 + ns2, largestUnit));\n    }\n    else if (IsTemporalDate(relativeTo)) {\n        const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n        const calendar = GetSlot(relativeTo, CALENDAR);\n        const dateDuration1 = new TemporalDuration(y1, mon1, w1, d1, 0, 0, 0, 0, 0, 0);\n        const dateDuration2 = new TemporalDuration(y2, mon2, w2, d2, 0, 0, 0, 0, 0, 0);\n        const dateAdd = calendar.dateAdd;\n        const intermediate = CalendarDateAdd(calendar, relativeTo, dateDuration1, undefined, dateAdd);\n        const end = CalendarDateAdd(calendar, intermediate, dateDuration2, undefined, dateAdd);\n        const dateLargestUnit = LargerOfTwoTemporalUnits('day', largestUnit);\n        const differenceOptions = ObjectCreate(null);\n        differenceOptions.largestUnit = dateLargestUnit;\n        ({ years, months, weeks, days } = CalendarDateUntil(calendar, relativeTo, end, differenceOptions));\n        // Signs of date part and time part may not agree; balance them together\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(days, h1 + h2, min1 + min2, s1 + s2, ms1 + ms2, µs1 + µs2, ns1 + ns2, largestUnit));\n    }\n    else {\n        // relativeTo is a ZonedDateTime\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        const timeZone = GetSlot(relativeTo, TIME_ZONE);\n        const calendar = GetSlot(relativeTo, CALENDAR);\n        const intermediateNs = AddZonedDateTime(GetSlot(relativeTo, INSTANT), timeZone, calendar, y1, mon1, w1, d1, h1, min1, s1, ms1, µs1, ns1);\n        const endNs = AddZonedDateTime(new TemporalInstant(intermediateNs), timeZone, calendar, y2, mon2, w2, d2, h2, min2, s2, ms2, µs2, ns2);\n        if (largestUnit !== 'year' && largestUnit !== 'month' && largestUnit !== 'week' && largestUnit !== 'day') {\n            // The user is only asking for a time difference, so return difference of instants.\n            years = 0;\n            months = 0;\n            weeks = 0;\n            days = 0;\n            ({ seconds, milliseconds, microseconds, nanoseconds } = DifferenceInstant(GetSlot(relativeTo, EPOCHNANOSECONDS), endNs, 1, 'nanosecond', 'halfExpand'));\n            ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n        }\n        else {\n            ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n                DifferenceZonedDateTime(GetSlot(relativeTo, EPOCHNANOSECONDS), endNs, timeZone, calendar, largestUnit, ObjectCreate(null)));\n        }\n    }\n    RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction AddInstant(epochNanoseconds, h, min, s, ms, µs, ns) {\n    let sum = ZERO;\n    sum = JSBI.add(sum, JSBI.BigInt(ns));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(µs), THOUSAND));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(ms), MILLION));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(s), BILLION));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(min), JSBI.BigInt(60 * 1e9)));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(h), JSBI.BigInt(60 * 60 * 1e9)));\n    const result = JSBI.add(epochNanoseconds, sum);\n    ValidateEpochNanoseconds(result);\n    return result;\n}\nfunction AddDateTime(year, month, day, hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, calendar, years, months, weeks, daysParam, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, options) {\n    let days = daysParam;\n    // Add the time part\n    let { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = AddTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    days += deltaDays;\n    // Delegate the date part addition to the calendar\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    const datePart = CreateTemporalDate(year, month, day, calendar);\n    const dateDuration = new TemporalDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const addedDate = CalendarDateAdd(calendar, datePart, dateDuration, options);\n    return {\n        year: GetSlot(addedDate, ISO_YEAR),\n        month: GetSlot(addedDate, ISO_MONTH),\n        day: GetSlot(addedDate, ISO_DAY),\n        hour,\n        minute,\n        second,\n        millisecond,\n        microsecond,\n        nanosecond\n    };\n}\nexport function AddZonedDateTime(instant, timeZone, calendar, years, months, weeks, days, h, min, s, ms, µs, ns, options) {\n    // If only time is to be added, then use Instant math. It's not OK to fall\n    // through to the date/time code below because compatible disambiguation in\n    // the PlainDateTime=>Instant conversion will change the offset of any\n    // ZonedDateTime in the repeated clock time after a backwards transition.\n    // When adding/subtracting time units and not dates, this disambiguation is\n    // not expected and so is avoided below via a fast path for time-only\n    // arithmetic.\n    // BTW, this behavior is similar in spirit to offset: 'prefer' in `with`.\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    if (DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0) === 0) {\n        return AddInstant(GetSlot(instant, EPOCHNANOSECONDS), h, min, s, ms, µs, ns);\n    }\n    // RFC 5545 requires the date portion to be added in calendar days and the\n    // time portion to be added in exact time.\n    const dt = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, instant, calendar);\n    const datePart = CreateTemporalDate(GetSlot(dt, ISO_YEAR), GetSlot(dt, ISO_MONTH), GetSlot(dt, ISO_DAY), calendar);\n    const dateDuration = new TemporalDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const addedDate = CalendarDateAdd(calendar, datePart, dateDuration, options);\n    const dtIntermediate = CreateTemporalDateTime(GetSlot(addedDate, ISO_YEAR), GetSlot(addedDate, ISO_MONTH), GetSlot(addedDate, ISO_DAY), GetSlot(dt, ISO_HOUR), GetSlot(dt, ISO_MINUTE), GetSlot(dt, ISO_SECOND), GetSlot(dt, ISO_MILLISECOND), GetSlot(dt, ISO_MICROSECOND), GetSlot(dt, ISO_NANOSECOND), calendar);\n    // Note that 'compatible' is used below because this disambiguation behavior\n    // is required by RFC 5545.\n    const instantIntermediate = BuiltinTimeZoneGetInstantFor(timeZone, dtIntermediate, 'compatible');\n    return AddInstant(GetSlot(instantIntermediate, EPOCHNANOSECONDS), h, min, s, ms, µs, ns);\n}\nexport function AddDurationToOrSubtractDurationFromDuration(operation, duration, other, optionsParam) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(other);\n    const options = GetOptionsObject(optionsParam);\n    const relativeTo = ToRelativeTemporalObject(options);\n    ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = AddDuration(GetSlot(duration, YEARS), GetSlot(duration, MONTHS), GetSlot(duration, WEEKS), GetSlot(duration, DAYS), GetSlot(duration, HOURS), GetSlot(duration, MINUTES), GetSlot(duration, SECONDS), GetSlot(duration, MILLISECONDS), GetSlot(duration, MICROSECONDS), GetSlot(duration, NANOSECONDS), sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds, relativeTo));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n}\nexport function AddDurationToOrSubtractDurationFromInstant(operation, instant, durationLike) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToLimitedTemporalDuration(durationLike, [\n        'years',\n        'months',\n        'weeks',\n        'days'\n    ]);\n    const ns = AddInstant(GetSlot(instant, EPOCHNANOSECONDS), sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n    const Instant = GetIntrinsic('%Temporal.Instant%');\n    return new Instant(ns);\n}\nexport function AddDurationToOrSubtractDurationFromPlainDateTime(operation, dateTime, durationLike, optionsParam) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(durationLike);\n    const options = GetOptionsObject(optionsParam);\n    const calendar = GetSlot(dateTime, CALENDAR);\n    const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = AddDateTime(GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND), calendar, sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds, options);\n    return CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n}\nexport function AddDurationToOrSubtractDurationFromPlainTime(operation, temporalTime, durationLike) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(durationLike);\n    let { hour, minute, second, millisecond, microsecond, nanosecond } = AddTime(GetSlot(temporalTime, ISO_HOUR), GetSlot(temporalTime, ISO_MINUTE), GetSlot(temporalTime, ISO_SECOND), GetSlot(temporalTime, ISO_MILLISECOND), GetSlot(temporalTime, ISO_MICROSECOND), GetSlot(temporalTime, ISO_NANOSECOND), sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n    ({ hour, minute, second, millisecond, microsecond, nanosecond } = RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, 'reject'));\n    const PlainTime = GetIntrinsic('%Temporal.PlainTime%');\n    return new PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n}\nexport function AddDurationToOrSubtractDurationFromPlainYearMonth(operation, yearMonth, durationLike, optionsParam) {\n    let duration = ToTemporalDurationRecord(durationLike);\n    if (operation === 'subtract') {\n        duration = {\n            years: -duration.years,\n            months: -duration.months,\n            weeks: -duration.weeks,\n            days: -duration.days,\n            hours: -duration.hours,\n            minutes: -duration.minutes,\n            seconds: -duration.seconds,\n            milliseconds: -duration.milliseconds,\n            microseconds: -duration.microseconds,\n            nanoseconds: -duration.nanoseconds\n        };\n    }\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;\n    ({ days } = BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 'day'));\n    const options = GetOptionsObject(optionsParam);\n    const calendar = GetSlot(yearMonth, CALENDAR);\n    const fieldNames = CalendarFields(calendar, ['monthCode', 'year']);\n    const fields = PrepareTemporalFields(yearMonth, fieldNames, []);\n    const sign = DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    fields.day = sign < 0 ? ToPositiveInteger(CalendarDaysInMonth(calendar, yearMonth)) : 1;\n    // PrepareTemporalFields returns a type where 'day' is potentially undefined,\n    // and TS doesn't narrow the type as a result of the assignment above, so we\n    // cast the fields input to the new type.\n    const startDate = CalendarDateFromFields(calendar, fields);\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    const durationToAdd = new Duration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const optionsCopy = ObjectAssign(ObjectCreate(null), options);\n    const addedDate = CalendarDateAdd(calendar, startDate, durationToAdd, options);\n    const addedDateFields = PrepareTemporalFields(addedDate, fieldNames, []);\n    return CalendarYearMonthFromFields(calendar, addedDateFields, optionsCopy);\n}\nexport function AddDurationToOrSubtractDurationFromZonedDateTime(operation, zonedDateTime, durationLike, optionsParam) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(durationLike);\n    const options = GetOptionsObject(optionsParam);\n    const timeZone = GetSlot(zonedDateTime, TIME_ZONE);\n    const calendar = GetSlot(zonedDateTime, CALENDAR);\n    const epochNanoseconds = AddZonedDateTime(GetSlot(zonedDateTime, INSTANT), timeZone, calendar, sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds, options);\n    return CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar);\n}\nfunction RoundNumberToIncrement(quantity, increment, mode) {\n    if (increment === 1)\n        return quantity;\n    let { quotient, remainder } = divmod(quantity, JSBI.BigInt(increment));\n    if (JSBI.equal(remainder, ZERO))\n        return quantity;\n    const sign = JSBI.lessThan(remainder, ZERO) ? -1 : 1;\n    switch (mode) {\n        case 'ceil':\n            if (sign > 0)\n                quotient = JSBI.add(quotient, JSBI.BigInt(sign));\n            break;\n        case 'floor':\n            if (sign < 0)\n                quotient = JSBI.add(quotient, JSBI.BigInt(sign));\n            break;\n        case 'trunc':\n            // no change needed, because divmod is a truncation\n            break;\n        case 'halfExpand':\n            // \"half up away from zero\"\n            if (JSBI.toNumber(abs(JSBI.multiply(remainder, JSBI.BigInt(2)))) >= increment) {\n                quotient = JSBI.add(quotient, JSBI.BigInt(sign));\n            }\n            break;\n    }\n    return JSBI.multiply(quotient, JSBI.BigInt(increment));\n}\nexport function RoundInstant(epochNs, increment, unit, roundingMode) {\n    // Note: NonNegativeModulo, but with BigInt\n    let remainder = JSBI.remainder(epochNs, JSBI.BigInt(86400e9));\n    if (JSBI.lessThan(remainder, ZERO))\n        remainder = JSBI.add(remainder, JSBI.BigInt(86400e9));\n    const wholeDays = JSBI.subtract(epochNs, remainder);\n    const roundedRemainder = RoundNumberToIncrement(remainder, nsPerTimeUnit[unit] * increment, roundingMode);\n    return JSBI.add(wholeDays, roundedRemainder);\n}\nexport function RoundISODateTime(yearParam, monthParam, dayParam, hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, increment, unit, roundingMode, dayLengthNs = 86400e9) {\n    const { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = RoundTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, increment, unit, roundingMode, dayLengthNs);\n    const { year, month, day } = BalanceISODate(yearParam, monthParam, dayParam + deltaDays);\n    return { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function RoundTime(hour, minute, second, millisecond, microsecond, nanosecond, increment, unit, roundingMode, dayLengthNs = 86400e9) {\n    let quantity = ZERO;\n    switch (unit) {\n        case 'day':\n        case 'hour':\n            quantity = JSBI.BigInt(hour);\n        // fall through\n        case 'minute':\n            quantity = JSBI.add(JSBI.multiply(quantity, SIXTY), JSBI.BigInt(minute));\n        // fall through\n        case 'second':\n            quantity = JSBI.add(JSBI.multiply(quantity, SIXTY), JSBI.BigInt(second));\n        // fall through\n        case 'millisecond':\n            quantity = JSBI.add(JSBI.multiply(quantity, THOUSAND), JSBI.BigInt(millisecond));\n        // fall through\n        case 'microsecond':\n            quantity = JSBI.add(JSBI.multiply(quantity, THOUSAND), JSBI.BigInt(microsecond));\n        // fall through\n        case 'nanosecond':\n            quantity = JSBI.add(JSBI.multiply(quantity, THOUSAND), JSBI.BigInt(nanosecond));\n    }\n    const nsPerUnit = unit === 'day' ? dayLengthNs : nsPerTimeUnit[unit];\n    const rounded = RoundNumberToIncrement(quantity, nsPerUnit * increment, roundingMode);\n    const result = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(nsPerUnit)));\n    switch (unit) {\n        case 'day':\n            return { deltaDays: result, hour: 0, minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0 };\n        case 'hour':\n            return BalanceTime(result, 0, 0, 0, 0, 0);\n        case 'minute':\n            return BalanceTime(hour, result, 0, 0, 0, 0);\n        case 'second':\n            return BalanceTime(hour, minute, result, 0, 0, 0);\n        case 'millisecond':\n            return BalanceTime(hour, minute, second, result, 0, 0);\n        case 'microsecond':\n            return BalanceTime(hour, minute, second, millisecond, result, 0);\n        case 'nanosecond':\n            return BalanceTime(hour, minute, second, millisecond, microsecond, result);\n        default:\n            throw new Error(`Invalid unit ${unit}`);\n    }\n}\nfunction DaysUntil(earlier, later) {\n    return DifferenceISODate(GetSlot(earlier, ISO_YEAR), GetSlot(earlier, ISO_MONTH), GetSlot(earlier, ISO_DAY), GetSlot(later, ISO_YEAR), GetSlot(later, ISO_MONTH), GetSlot(later, ISO_DAY), 'day').days;\n}\nfunction MoveRelativeDate(calendar, relativeToParam, duration) {\n    const later = CalendarDateAdd(calendar, relativeToParam, duration, undefined);\n    const days = DaysUntil(relativeToParam, later);\n    return { relativeTo: later, days };\n}\nexport function MoveRelativeZonedDateTime(relativeTo, years, months, weeks, days) {\n    const timeZone = GetSlot(relativeTo, TIME_ZONE);\n    const calendar = GetSlot(relativeTo, CALENDAR);\n    const intermediateNs = AddZonedDateTime(GetSlot(relativeTo, INSTANT), timeZone, calendar, years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    return CreateTemporalZonedDateTime(intermediateNs, timeZone, calendar);\n}\nexport function AdjustRoundedDurationDays(yearsParam, monthsParam, weeksParam, daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, increment, unit, roundingMode, relativeTo) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    let hours = hoursParam;\n    let minutes = minutesParam;\n    let seconds = secondsParam;\n    let milliseconds = millisecondsParam;\n    let microseconds = microsecondsParam;\n    let nanoseconds = nanosecondsParam;\n    if (!IsTemporalZonedDateTime(relativeTo) ||\n        unit === 'year' ||\n        unit === 'month' ||\n        unit === 'week' ||\n        unit === 'day' ||\n        (unit === 'nanosecond' && increment === 1)) {\n        return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n    }\n    // There's one more round of rounding possible: if relativeTo is a\n    // ZonedDateTime, the time units could have rounded up into enough hours\n    // to exceed the day length. If this happens, grow the date part by a\n    // single day and re-run exact time rounding on the smaller remainder. DO\n    // NOT RECURSE, because once the extra hours are sucked up into the date\n    // duration, there's no way for another full day to come from the next\n    // round of rounding. And if it were possible (e.g. contrived calendar\n    // with 30-minute-long \"days\") then it'd risk an infinite loop.\n    let timeRemainderNs = TotalDurationNanoseconds(0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 0);\n    const direction = MathSign(JSBI.toNumber(timeRemainderNs));\n    const timeZone = GetSlot(relativeTo, TIME_ZONE);\n    const calendar = GetSlot(relativeTo, CALENDAR);\n    const dayStart = AddZonedDateTime(GetSlot(relativeTo, INSTANT), timeZone, calendar, years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const dayEnd = AddZonedDateTime(new TemporalInstant(dayStart), timeZone, calendar, 0, 0, 0, direction, 0, 0, 0, 0, 0, 0);\n    const dayLengthNs = JSBI.subtract(dayEnd, dayStart);\n    if (JSBI.greaterThanOrEqual(JSBI.multiply(JSBI.subtract(timeRemainderNs, dayLengthNs), JSBI.BigInt(direction)), ZERO)) {\n        ({ years, months, weeks, days } = AddDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0, 0, 0, 0, direction, 0, 0, 0, 0, 0, 0, relativeTo));\n        timeRemainderNs = RoundInstant(JSBI.subtract(timeRemainderNs, dayLengthNs), increment, unit, roundingMode);\n        ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, 0, 0, 0, JSBI.toNumber(timeRemainderNs), 'hour'));\n    }\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nexport function RoundDuration(yearsParam, monthsParam, weeksParam, daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, increment, unit, roundingMode, relativeToParam = undefined) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    let hours = hoursParam;\n    let minutes = minutesParam;\n    let seconds = secondsParam;\n    let milliseconds = millisecondsParam;\n    let microseconds = microsecondsParam;\n    let nanoseconds = JSBI.BigInt(nanosecondsParam);\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    let calendar, zdtRelative;\n    // A cast is used below because relativeTo will be either PlainDate or\n    // undefined for the rest of this long method (after any ZDT=>PlainDate\n    // conversion below), and TS isn't smart enough to know that the type has\n    // changed. See https://github.com/microsoft/TypeScript/issues/27706.\n    let relativeTo = relativeToParam;\n    if (relativeTo) {\n        if (IsTemporalZonedDateTime(relativeTo)) {\n            zdtRelative = relativeTo;\n            relativeTo = ToTemporalDate(relativeTo);\n        }\n        else if (!IsTemporalDate(relativeTo)) {\n            throw new TypeError('starting point must be PlainDate or ZonedDateTime');\n        }\n        calendar = GetSlot(relativeTo, CALENDAR);\n    }\n    // First convert time units up to days, if rounding to days or higher units.\n    // If rounding relative to a ZonedDateTime, then some days may not be 24h.\n    // TS doesn't know that `dayLengthNs` is only used if the unit is day or\n    // larger. We'll cast away `undefined` when it's used lower down below.\n    let dayLengthNs;\n    if (unit === 'year' || unit === 'month' || unit === 'week' || unit === 'day') {\n        nanoseconds = TotalDurationNanoseconds(0, hours, minutes, seconds, milliseconds, microseconds, nanosecondsParam, 0);\n        let intermediate;\n        if (zdtRelative) {\n            intermediate = MoveRelativeZonedDateTime(zdtRelative, years, months, weeks, days);\n        }\n        let deltaDays;\n        let dayLength;\n        ({ days: deltaDays, nanoseconds, dayLengthNs: dayLength } = NanosecondsToDays(nanoseconds, intermediate));\n        dayLengthNs = JSBI.BigInt(dayLength);\n        days += deltaDays;\n        hours = minutes = seconds = milliseconds = microseconds = 0;\n    }\n    let total;\n    switch (unit) {\n        case 'year': {\n            if (!calendar)\n                throw new RangeError('A starting point is required for years rounding');\n            // convert months and weeks to days by calculating difference(\n            // relativeTo + years, relativeTo + { years, months, weeks })\n            const yearsDuration = new TemporalDuration(years);\n            const dateAdd = calendar.dateAdd;\n            const yearsLater = CalendarDateAdd(calendar, relativeTo, yearsDuration, undefined, dateAdd);\n            const yearsMonthsWeeks = new TemporalDuration(years, months, weeks);\n            const yearsMonthsWeeksLater = CalendarDateAdd(calendar, relativeTo, yearsMonthsWeeks, undefined, dateAdd);\n            const monthsWeeksInDays = DaysUntil(yearsLater, yearsMonthsWeeksLater);\n            relativeTo = yearsLater;\n            days += monthsWeeksInDays;\n            const daysLater = CalendarDateAdd(calendar, relativeTo, { days }, undefined, dateAdd);\n            const untilOptions = ObjectCreate(null);\n            untilOptions.largestUnit = 'year';\n            const yearsPassed = CalendarDateUntil(calendar, relativeTo, daysLater, untilOptions).years;\n            years += yearsPassed;\n            const oldRelativeTo = relativeTo;\n            relativeTo = CalendarDateAdd(calendar, relativeTo, { years: yearsPassed }, undefined, dateAdd);\n            const daysPassed = DaysUntil(oldRelativeTo, relativeTo);\n            days -= daysPassed;\n            const oneYear = new TemporalDuration(days < 0 ? -1 : 1);\n            let { days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear);\n            // Note that `nanoseconds` below (here and in similar code for months,\n            // weeks, and days further below) isn't actually nanoseconds for the\n            // full date range.  Instead, it's a BigInt representation of total\n            // days multiplied by the number of nanoseconds in the last day of\n            // the duration. This lets us do days-or-larger rounding using BigInt\n            // math which reduces precision loss.\n            oneYearDays = MathAbs(oneYearDays);\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = JSBI.multiply(JSBI.BigInt(oneYearDays), dayLengthNs);\n            nanoseconds = JSBI.add(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(years)), JSBI.multiply(JSBI.BigInt(days), dayLengthNs)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            years = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            months = weeks = days = 0;\n            break;\n        }\n        case 'month': {\n            if (!calendar)\n                throw new RangeError('A starting point is required for months rounding');\n            // convert weeks to days by calculating difference(relativeTo +\n            //   { years, months }, relativeTo + { years, months, weeks })\n            const yearsMonths = new TemporalDuration(years, months);\n            const dateAdd = calendar.dateAdd;\n            const yearsMonthsLater = CalendarDateAdd(calendar, relativeTo, yearsMonths, undefined, dateAdd);\n            const yearsMonthsWeeks = new TemporalDuration(years, months, weeks);\n            const yearsMonthsWeeksLater = CalendarDateAdd(calendar, relativeTo, yearsMonthsWeeks, undefined, dateAdd);\n            const weeksInDays = DaysUntil(yearsMonthsLater, yearsMonthsWeeksLater);\n            relativeTo = yearsMonthsLater;\n            days += weeksInDays;\n            // Months may be different lengths of days depending on the calendar,\n            // convert days to months in a loop as described above under 'years'.\n            const sign = MathSign(days);\n            const oneMonth = new TemporalDuration(0, days < 0 ? -1 : 1);\n            let oneMonthDays;\n            ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            while (MathAbs(days) >= MathAbs(oneMonthDays)) {\n                months += sign;\n                days -= oneMonthDays;\n                ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            }\n            oneMonthDays = MathAbs(oneMonthDays);\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = JSBI.multiply(JSBI.BigInt(oneMonthDays), dayLengthNs);\n            nanoseconds = JSBI.add(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(months)), JSBI.multiply(JSBI.BigInt(days), dayLengthNs)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            months = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            weeks = days = 0;\n            break;\n        }\n        case 'week': {\n            if (!calendar)\n                throw new RangeError('A starting point is required for weeks rounding');\n            // Weeks may be different lengths of days depending on the calendar,\n            // convert days to weeks in a loop as described above under 'years'.\n            const sign = MathSign(days);\n            const oneWeek = new TemporalDuration(0, 0, days < 0 ? -1 : 1);\n            let oneWeekDays;\n            ({ relativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            while (MathAbs(days) >= MathAbs(oneWeekDays)) {\n                weeks += sign;\n                days -= oneWeekDays;\n                ({ relativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            }\n            oneWeekDays = MathAbs(oneWeekDays);\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = JSBI.multiply(JSBI.BigInt(oneWeekDays), dayLengthNs);\n            nanoseconds = JSBI.add(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(weeks)), JSBI.multiply(JSBI.BigInt(days), dayLengthNs)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            weeks = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            days = 0;\n            break;\n        }\n        case 'day': {\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = dayLengthNs;\n            nanoseconds = JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(days)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            days = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            break;\n        }\n        case 'hour': {\n            const divisor = 3600e9;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(hours), JSBI.BigInt(3600e9));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(minutes), JSBI.BigInt(60e9)));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(seconds), BILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(milliseconds), MILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            hours = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            minutes = seconds = milliseconds = microseconds = 0;\n            break;\n        }\n        case 'minute': {\n            const divisor = 60e9;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(minutes), JSBI.BigInt(60e9));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(seconds), BILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(milliseconds), MILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            minutes = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            seconds = milliseconds = microseconds = 0;\n            break;\n        }\n        case 'second': {\n            const divisor = 1e9;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(seconds), BILLION);\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(milliseconds), MILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            seconds = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            milliseconds = microseconds = 0;\n            break;\n        }\n        case 'millisecond': {\n            const divisor = 1e6;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(milliseconds), MILLION);\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            milliseconds = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            microseconds = 0;\n            break;\n        }\n        case 'microsecond': {\n            const divisor = 1e3;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND);\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            microseconds = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            break;\n        }\n        case 'nanosecond': {\n            total = JSBI.toNumber(nanoseconds);\n            nanoseconds = RoundNumberToIncrement(nanoseconds, increment, roundingMode);\n            break;\n        }\n    }\n    return {\n        years,\n        months,\n        weeks,\n        days,\n        hours,\n        minutes,\n        seconds,\n        milliseconds,\n        microseconds,\n        nanoseconds: JSBI.toNumber(nanoseconds),\n        total\n    };\n}\nexport function CompareISODate(y1, m1, d1, y2, m2, d2) {\n    for (const [x, y] of [\n        [y1, y2],\n        [m1, m2],\n        [d1, d2]\n    ]) {\n        if (x !== y)\n            return ComparisonResult(x - y);\n    }\n    return 0;\n}\nfunction NonNegativeModulo(x, y) {\n    let result = x % y;\n    if (ObjectIs(result, -0))\n        return 0;\n    if (result < 0)\n        result += y;\n    return result;\n}\nexport function ToBigIntExternal(arg) {\n    const jsbiBI = ToBigInt(arg);\n    if (typeof globalThis.BigInt !== 'undefined')\n        return globalThis.BigInt(jsbiBI.toString(10));\n    return jsbiBI;\n}\nexport function ToBigInt(arg) {\n    if (arg instanceof JSBI) {\n        return arg;\n    }\n    let prim = arg;\n    if (typeof arg === 'object') {\n        const toPrimFn = arg[Symbol.toPrimitive];\n        if (toPrimFn && typeof toPrimFn === 'function') {\n            prim = ReflectApply(toPrimFn, arg, ['number']);\n        }\n    }\n    switch (typeof prim) {\n        case 'undefined':\n        case 'object':\n        case 'number':\n        case 'symbol':\n        default:\n            throw new TypeError(`cannot convert ${typeof arg} to bigint`);\n        case 'string':\n            if (!prim.match(/^\\s*(?:[+-]?\\d+\\s*)?$/)) {\n                throw new SyntaxError('invalid BigInt syntax');\n            }\n        // eslint: no-fallthrough: false\n        case 'bigint':\n            try {\n                return JSBI.BigInt(prim.toString());\n            }\n            catch (e) {\n                if (e instanceof Error && e.message.startsWith('Invalid integer'))\n                    throw new SyntaxError(e.message);\n                throw e;\n            }\n        case 'boolean':\n            if (prim) {\n                return ONE;\n            }\n            else {\n                return ZERO;\n            }\n    }\n}\n// Note: This method returns values with bogus nanoseconds based on the previous iteration's\n// milliseconds. That way there is a guarantee that the full nanoseconds are always going to be\n// increasing at least and that the microsecond and nanosecond fields are likely to be non-zero.\nexport const SystemUTCEpochNanoSeconds = (() => {\n    let ns = JSBI.BigInt(Date.now() % 1e6);\n    return () => {\n        const ms = JSBI.BigInt(Date.now());\n        const result = JSBI.add(JSBI.multiply(ms, MILLION), ns);\n        ns = JSBI.remainder(ms, MILLION);\n        if (JSBI.greaterThan(result, NS_MAX))\n            return NS_MAX;\n        if (JSBI.lessThan(result, NS_MIN))\n            return NS_MIN;\n        return result;\n    };\n})();\nexport function SystemTimeZone() {\n    const fmt = new IntlDateTimeFormat('en-us');\n    const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n    return new TemporalTimeZone(ParseTemporalTimeZone(fmt.resolvedOptions().timeZone));\n}\nexport function ComparisonResult(value) {\n    return value < 0 ? -1 : value > 0 ? 1 : value;\n}\nexport function GetOptionsObject(options) {\n    if (options === undefined)\n        return ObjectCreate(null);\n    if (IsObject(options) && options !== null)\n        return options;\n    throw new TypeError(`Options parameter must be an object, not ${options === null ? 'null' : `${typeof options}`}`);\n}\nexport function CreateOnePropObject(propName, propValue) {\n    const o = ObjectCreate(null);\n    o[propName] = propValue;\n    return o;\n}\nfunction GetOption(options, property, allowedValues, fallback) {\n    let value = options[property];\n    if (value !== undefined) {\n        value = ToString(value);\n        if (!allowedValues.includes(value)) {\n            throw new RangeError(`${property} must be one of ${allowedValues.join(', ')}, not ${value}`);\n        }\n        return value;\n    }\n    return fallback;\n}\nfunction GetNumberOption(options, property, minimum, maximum, fallback) {\n    let valueRaw = options[property];\n    if (valueRaw === undefined)\n        return fallback;\n    const value = ToNumber(valueRaw);\n    if (NumberIsNaN(value) || value < minimum || value > maximum) {\n        throw new RangeError(`${String(property)} must be between ${minimum} and ${maximum}, not ${value}`);\n    }\n    return MathFloor(value);\n}\nexport function IsBuiltinCalendar(id) {\n    return ArrayIncludes.call(BUILTIN_CALENDAR_IDS, id);\n}\nconst OFFSET = new RegExp(`^${PARSE.offset.source}$`);\nfunction bisect(getState, leftParam, rightParam, lstateParam = getState(leftParam), rstateParam = getState(rightParam)) {\n    // This doesn't make much sense - why do these get converted unnecessarily?\n    let left = JSBI.BigInt(leftParam);\n    let right = JSBI.BigInt(rightParam);\n    let lstate = lstateParam;\n    let rstate = rstateParam;\n    while (JSBI.greaterThan(JSBI.subtract(right, left), ONE)) {\n        const middle = JSBI.divide(JSBI.add(left, right), JSBI.BigInt(2));\n        const mstate = getState(middle);\n        if (mstate === lstate) {\n            left = middle;\n            lstate = mstate;\n        }\n        else if (mstate === rstate) {\n            right = middle;\n            rstate = mstate;\n        }\n        else {\n            throw new Error(`invalid state in bisection ${lstate} - ${mstate} - ${rstate}`);\n        }\n    }\n    return right;\n}\nconst nsPerTimeUnit = {\n    hour: 3600e9,\n    minute: 60e9,\n    second: 1e9,\n    millisecond: 1e6,\n    microsecond: 1e3,\n    nanosecond: 1\n};\n//# sourceMappingURL=ecmascript.js.map", "import * as ES from './ecmascript';\nimport { GetIntrinsic } from './intrinsicclass';\nimport { GetSlot, INSTANT, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, TIME_ZONE } from './slots';\nconst DATE = Symbol('date');\nconst YM = Symbol('ym');\nconst MD = Symbol('md');\nconst TIME = Symbol('time');\nconst DATETIME = Symbol('datetime');\nconst ZONED = Symbol('zoneddatetime');\nconst INST = Symbol('instant');\nconst ORIGINAL = Symbol('original');\nconst TZ_RESOLVED = Symbol('timezone');\nconst TZ_GIVEN = Symbol('timezone-id-given');\nconst CAL_ID = Symbol('calendar-id');\nconst LOCALE = Symbol('locale');\nconst OPTIONS = Symbol('options');\nconst descriptor = (value) => {\n    return {\n        value,\n        enumerable: true,\n        writable: false,\n        configurable: true\n    };\n};\nconst IntlDateTimeFormat = globalThis.Intl.DateTimeFormat;\nconst ObjectAssign = Object.assign;\nconst ObjectHasOwnProperty = Object.prototype.hasOwnProperty;\nconst ReflectApply = Reflect.apply;\n// Construction of built-in Intl.DateTimeFormat objects is sloooooow,\n// so we'll only create those instances when we need them.\n// See https://bugs.chromium.org/p/v8/issues/detail?id=6528\nfunction getPropLazy(obj, prop) {\n    let val = obj[prop];\n    if (typeof val === 'function') {\n        // If we get here, `val` is an \"amender function\". It will take the user's\n        // options and transform them into suitable options to be passed into the\n        // built-in (non-polyfill) Intl.DateTimeFormat constructor. These options\n        // will vary depending on the Temporal type, so that's why we store separate\n        // formatters in separate props on the polyfill's DateTimeFormat instances.\n        // The efficiency happens because we don't create an (expensive) formatter\n        // until the user calls toLocaleString for that Temporal type.\n        val = new IntlDateTimeFormat(obj[LOCALE], val(obj[OPTIONS]));\n        // TODO: can this be typed more cleanly?\n        obj[prop] = val;\n    }\n    return val;\n}\n// Similarly, lazy-init TimeZone instances.\nfunction getResolvedTimeZoneLazy(obj) {\n    let val = obj[TZ_RESOLVED];\n    if (typeof val === 'string') {\n        val = ES.ToTemporalTimeZone(val);\n        obj[TZ_RESOLVED] = val;\n    }\n    return val;\n}\nfunction DateTimeFormatImpl(locale = undefined, optionsParam = {}) {\n    if (!(this instanceof DateTimeFormatImpl)) {\n        return new DateTimeFormatImpl(locale, optionsParam);\n    }\n    const hasOptions = typeof optionsParam !== 'undefined';\n    const options = hasOptions ? ObjectAssign({}, optionsParam) : {};\n    // TODO: remove type assertion after Temporal types land in TS lib types\n    const original = new IntlDateTimeFormat(locale, options);\n    const ro = original.resolvedOptions();\n    // DateTimeFormat instances are very expensive to create. Therefore, they will\n    // be lazily created only when needed, using the locale and options provided.\n    // But it's possible for callers to mutate those inputs before lazy creation\n    // happens. For this reason, we clone the inputs instead of caching the\n    // original objects. To avoid the complexity of deep cloning any inputs that\n    // are themselves objects (e.g. the locales array, or options property values\n    // that will be coerced to strings), we rely on `resolvedOptions()` to do the\n    // coercion and cloning for us. Unfortunately, we can't just use the resolved\n    // options as-is because our options-amending logic adds additional fields if\n    // the user doesn't supply any unit fields like year, month, day, hour, etc.\n    // Therefore, we limit the properties in the clone to properties that were\n    // present in the original input.\n    if (hasOptions) {\n        const clonedResolved = ObjectAssign({}, ro);\n        for (const prop in clonedResolved) {\n            if (!ReflectApply(ObjectHasOwnProperty, options, [prop])) {\n                delete clonedResolved[prop];\n            }\n        }\n        this[OPTIONS] = clonedResolved;\n    }\n    else {\n        this[OPTIONS] = options;\n    }\n    this[TZ_GIVEN] = options.timeZone ? options.timeZone : null;\n    this[LOCALE] = ro.locale;\n    this[ORIGINAL] = original;\n    this[TZ_RESOLVED] = ro.timeZone;\n    this[CAL_ID] = ro.calendar;\n    this[DATE] = dateAmend;\n    this[YM] = yearMonthAmend;\n    this[MD] = monthDayAmend;\n    this[TIME] = timeAmend;\n    this[DATETIME] = datetimeAmend;\n    this[ZONED] = zonedDateTimeAmend;\n    this[INST] = instantAmend;\n    return undefined; // TODO: I couldn't satisfy TS without adding this. Is there another way?\n}\nObject.defineProperty(DateTimeFormatImpl, 'name', {\n    writable: true,\n    value: 'DateTimeFormat'\n});\nDateTimeFormatImpl.supportedLocalesOf = function (locales, options) {\n    return IntlDateTimeFormat.supportedLocalesOf(locales, options);\n};\nconst propertyDescriptors = {\n    resolvedOptions: descriptor(resolvedOptions),\n    format: descriptor(format),\n    formatRange: descriptor(formatRange)\n};\nif ('formatToParts' in IntlDateTimeFormat.prototype) {\n    propertyDescriptors.formatToParts = descriptor(formatToParts);\n}\nif ('formatRangeToParts' in IntlDateTimeFormat.prototype) {\n    propertyDescriptors.formatRangeToParts = descriptor(formatRangeToParts);\n}\nDateTimeFormatImpl.prototype = Object.create(IntlDateTimeFormat.prototype, propertyDescriptors);\n// Ensure that the prototype isn't writeable.\nObject.defineProperty(DateTimeFormatImpl, 'prototype', {\n    writable: false,\n    enumerable: false,\n    configurable: false\n});\nexport const DateTimeFormat = DateTimeFormatImpl;\nfunction resolvedOptions() {\n    return this[ORIGINAL].resolvedOptions();\n}\nfunction adjustFormatterTimeZone(formatter, timeZone) {\n    if (!timeZone)\n        return formatter;\n    const options = formatter.resolvedOptions();\n    if (options.timeZone === timeZone)\n        return formatter;\n    // Existing Intl isn't typed to accept Temporal-specific options and the lib\n    // types for resolved options are less restrictive than the types for options.\n    // For example, `weekday` is\n    // `'long' | 'short' | 'narrow'` in options but `string` in resolved options.\n    // TODO: investigate why, and file an issue against TS if it's a bug.\n    if (options['dateStyle'] || options['timeStyle']) {\n        // Unfortunately, Safari's resolvedOptions include parameters that will\n        // cause errors at runtime if passed along with\n        // dateStyle or timeStyle options as per\n        // https://tc39.es/proposal-intl-datetime-style/#table-datetimeformat-components.\n        // This has been fixed in newer versions of Safari:\n        // https://bugs.webkit.org/show_bug.cgi?id=231041\n        delete options['weekday'];\n        delete options['era'];\n        delete options['year'];\n        delete options['month'];\n        delete options['day'];\n        delete options['hour'];\n        delete options['minute'];\n        delete options['second'];\n        delete options['timeZoneName'];\n        delete options['hourCycle'];\n        delete options['hour12'];\n        delete options['dayPeriod'];\n    }\n    return new IntlDateTimeFormat(options.locale, { ...options, timeZone });\n}\n// TODO: investigate why there's a rest parameter here. Does this function really need to accept extra params?\n// And if so, why doesn't formatRange also accept extra params?\nfunction format(datetime, ...rest) {\n    let { instant, formatter, timeZone } = extractOverrides(datetime, this);\n    if (instant && formatter) {\n        formatter = adjustFormatterTimeZone(formatter, timeZone);\n        return formatter.format(instant.epochMilliseconds);\n    }\n    return this[ORIGINAL].format(datetime, ...rest);\n}\nfunction formatToParts(datetime, ...rest) {\n    let { instant, formatter, timeZone } = extractOverrides(datetime, this);\n    if (instant && formatter) {\n        formatter = adjustFormatterTimeZone(formatter, timeZone);\n        return formatter.formatToParts(instant.epochMilliseconds);\n    }\n    return this[ORIGINAL].formatToParts(datetime, ...rest);\n}\nfunction formatRange(a, b) {\n    if (isTemporalObject(a) || isTemporalObject(b)) {\n        if (!sameTemporalType(a, b)) {\n            throw new TypeError('Intl.DateTimeFormat.formatRange accepts two values of the same type');\n        }\n        const { instant: aa, formatter: aformatter, timeZone: atz } = extractOverrides(a, this);\n        const { instant: bb, formatter: bformatter, timeZone: btz } = extractOverrides(b, this);\n        if (atz && btz && atz !== btz) {\n            throw new RangeError('cannot format range between different time zones');\n        }\n        if (aa && bb && aformatter && bformatter && aformatter === bformatter) {\n            const formatter = adjustFormatterTimeZone(aformatter, atz);\n            // TODO: Remove type assertion after this method lands in TS lib types\n            return formatter.formatRange(aa.epochMilliseconds, bb.epochMilliseconds);\n        }\n    }\n    // TODO: Remove type assertion after this method lands in TS lib types\n    return this[ORIGINAL].formatRange(a, b);\n}\nfunction formatRangeToParts(a, b) {\n    if (isTemporalObject(a) || isTemporalObject(b)) {\n        if (!sameTemporalType(a, b)) {\n            throw new TypeError('Intl.DateTimeFormat.formatRangeToParts accepts two values of the same type');\n        }\n        const { instant: aa, formatter: aformatter, timeZone: atz } = extractOverrides(a, this);\n        const { instant: bb, formatter: bformatter, timeZone: btz } = extractOverrides(b, this);\n        if (atz && btz && atz !== btz) {\n            throw new RangeError('cannot format range between different time zones');\n        }\n        if (aa && bb && aformatter && bformatter && aformatter === bformatter) {\n            const formatter = adjustFormatterTimeZone(aformatter, atz);\n            // TODO: Remove type assertion after this method lands in TS lib types\n            return formatter.formatRangeToParts(aa.epochMilliseconds, bb.epochMilliseconds);\n        }\n    }\n    // TODO: Remove type assertion after this method lands in TS lib types\n    return this[ORIGINAL].formatRangeToParts(a, b);\n}\nfunction amend(optionsParam = {}, amended = {}) {\n    const options = ObjectAssign({}, optionsParam);\n    for (const opt of [\n        'year',\n        'month',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'weekday',\n        'dayPeriod',\n        'timeZoneName',\n        'dateStyle',\n        'timeStyle'\n    ]) {\n        options[opt] = opt in amended ? amended[opt] : options[opt];\n        if (options[opt] === false || options[opt] === undefined)\n            delete options[opt];\n    }\n    return options;\n}\nfunction timeAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        year: false,\n        month: false,\n        day: false,\n        weekday: false,\n        timeZoneName: false,\n        dateStyle: false\n    });\n    if (!hasTimeOptions(options)) {\n        options = ObjectAssign({}, options, {\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n    }\n    return options;\n}\nfunction yearMonthAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        day: false,\n        hour: false,\n        minute: false,\n        second: false,\n        weekday: false,\n        dayPeriod: false,\n        timeZoneName: false,\n        dateStyle: false,\n        timeStyle: false\n    });\n    if (!('year' in options || 'month' in options)) {\n        options = ObjectAssign(options, { year: 'numeric', month: 'numeric' });\n    }\n    return options;\n}\nfunction monthDayAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        year: false,\n        hour: false,\n        minute: false,\n        second: false,\n        weekday: false,\n        dayPeriod: false,\n        timeZoneName: false,\n        dateStyle: false,\n        timeStyle: false\n    });\n    if (!('month' in options || 'day' in options)) {\n        options = ObjectAssign({}, options, { month: 'numeric', day: 'numeric' });\n    }\n    return options;\n}\nfunction dateAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        hour: false,\n        minute: false,\n        second: false,\n        dayPeriod: false,\n        timeZoneName: false,\n        timeStyle: false\n    });\n    if (!hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric'\n        });\n    }\n    return options;\n}\nfunction datetimeAmend(optionsParam) {\n    let options = amend(optionsParam, { timeZoneName: false });\n    if (!hasTimeOptions(options) && !hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n    }\n    return options;\n}\nfunction zonedDateTimeAmend(optionsParam) {\n    let options = optionsParam;\n    if (!hasTimeOptions(options) && !hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n        if (options.timeZoneName === undefined)\n            options.timeZoneName = 'short';\n    }\n    return options;\n}\nfunction instantAmend(optionsParam) {\n    let options = optionsParam;\n    if (!hasTimeOptions(options) && !hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n    }\n    return options;\n}\nfunction hasDateOptions(options) {\n    return 'year' in options || 'month' in options || 'day' in options || 'weekday' in options || 'dateStyle' in options;\n}\nfunction hasTimeOptions(options) {\n    return ('hour' in options || 'minute' in options || 'second' in options || 'timeStyle' in options || 'dayPeriod' in options);\n}\nfunction isTemporalObject(obj) {\n    return (ES.IsTemporalDate(obj) ||\n        ES.IsTemporalTime(obj) ||\n        ES.IsTemporalDateTime(obj) ||\n        ES.IsTemporalZonedDateTime(obj) ||\n        ES.IsTemporalYearMonth(obj) ||\n        ES.IsTemporalMonthDay(obj) ||\n        ES.IsTemporalInstant(obj));\n}\nfunction sameTemporalType(x, y) {\n    if (!isTemporalObject(x) || !isTemporalObject(y))\n        return false;\n    if (ES.IsTemporalTime(x) && !ES.IsTemporalTime(y))\n        return false;\n    if (ES.IsTemporalDate(x) && !ES.IsTemporalDate(y))\n        return false;\n    if (ES.IsTemporalDateTime(x) && !ES.IsTemporalDateTime(y))\n        return false;\n    if (ES.IsTemporalZonedDateTime(x) && !ES.IsTemporalZonedDateTime(y))\n        return false;\n    if (ES.IsTemporalYearMonth(x) && !ES.IsTemporalYearMonth(y))\n        return false;\n    if (ES.IsTemporalMonthDay(x) && !ES.IsTemporalMonthDay(y))\n        return false;\n    if (ES.IsTemporalInstant(x) && !ES.IsTemporalInstant(y))\n        return false;\n    return true;\n}\nfunction extractOverrides(temporalObj, main) {\n    const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n    if (ES.IsTemporalTime(temporalObj)) {\n        const hour = GetSlot(temporalObj, ISO_HOUR);\n        const minute = GetSlot(temporalObj, ISO_MINUTE);\n        const second = GetSlot(temporalObj, ISO_SECOND);\n        const millisecond = GetSlot(temporalObj, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalObj, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalObj, ISO_NANOSECOND);\n        const datetime = new DateTime(1970, 1, 1, hour, minute, second, millisecond, microsecond, nanosecond, main[CAL_ID]);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, TIME)\n        };\n    }\n    if (ES.IsTemporalYearMonth(temporalObj)) {\n        const isoYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const referenceISODay = GetSlot(temporalObj, ISO_DAY);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainYearMonth with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const datetime = new DateTime(isoYear, isoMonth, referenceISODay, 12, 0, 0, 0, 0, 0, calendar);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, YM)\n        };\n    }\n    if (ES.IsTemporalMonthDay(temporalObj)) {\n        const referenceISOYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const isoDay = GetSlot(temporalObj, ISO_DAY);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainMonthDay with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const datetime = new DateTime(referenceISOYear, isoMonth, isoDay, 12, 0, 0, 0, 0, 0, calendar);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, MD)\n        };\n    }\n    if (ES.IsTemporalDate(temporalObj)) {\n        const isoYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const isoDay = GetSlot(temporalObj, ISO_DAY);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== 'iso8601' && calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainDate with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const datetime = new DateTime(isoYear, isoMonth, isoDay, 12, 0, 0, 0, 0, 0, main[CAL_ID]);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, DATE)\n        };\n    }\n    if (ES.IsTemporalDateTime(temporalObj)) {\n        const isoYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const isoDay = GetSlot(temporalObj, ISO_DAY);\n        const hour = GetSlot(temporalObj, ISO_HOUR);\n        const minute = GetSlot(temporalObj, ISO_MINUTE);\n        const second = GetSlot(temporalObj, ISO_SECOND);\n        const millisecond = GetSlot(temporalObj, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalObj, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalObj, ISO_NANOSECOND);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== 'iso8601' && calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainDateTime with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        let datetime = temporalObj;\n        if (calendar === 'iso8601') {\n            datetime = new DateTime(isoYear, isoMonth, isoDay, hour, minute, second, millisecond, microsecond, nanosecond, main[CAL_ID]);\n        }\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, DATETIME)\n        };\n    }\n    if (ES.IsTemporalZonedDateTime(temporalObj)) {\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== 'iso8601' && calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format ZonedDateTime with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const timeZone = GetSlot(temporalObj, TIME_ZONE);\n        const objTimeZone = ES.ToString(timeZone);\n        if (main[TZ_GIVEN] && main[TZ_GIVEN] !== objTimeZone) {\n            throw new RangeError(`timeZone option ${main[TZ_GIVEN]} doesn't match actual time zone ${objTimeZone}`);\n        }\n        return {\n            instant: GetSlot(temporalObj, INSTANT),\n            formatter: getPropLazy(main, ZONED),\n            timeZone: objTimeZone\n        };\n    }\n    if (ES.IsTemporalInstant(temporalObj)) {\n        return {\n            instant: temporalObj,\n            formatter: getPropLazy(main, INST)\n        };\n    }\n    return {};\n}\n//# sourceMappingURL=intl.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { EPOCHNANOSECONDS, CreateSlots, GetSlot, SetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nimport JSBI from 'jsbi';\nimport { BILLION, MILLION, THOUSAND } from './ecmascript';\nexport class Instant {\n    constructor(epochNanoseconds) {\n        // Note: if the argument is not passed, ToBigInt(undefined) will throw. This check exists only\n        //       to improve the error message.\n        if (arguments.length < 1) {\n            throw new TypeError('missing argument: epochNanoseconds is required');\n        }\n        const ns = ES.ToBigInt(epochNanoseconds);\n        ES.ValidateEpochNanoseconds(ns);\n        CreateSlots(this);\n        SetSlot(this, EPOCHNANOSECONDS, ns);\n        if (DEBUG) {\n            const repr = ES.TemporalInstantToString(this, undefined, 'auto');\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${repr}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get epochSeconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.divide(value, BILLION));\n    }\n    get epochMilliseconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const value = JSBI.BigInt(GetSlot(this, EPOCHNANOSECONDS));\n        return JSBI.toNumber(JSBI.divide(value, MILLION));\n    }\n    get epochMicroseconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const value = JSBI.BigInt(GetSlot(this, EPOCHNANOSECONDS));\n        return ES.ToBigIntExternal(JSBI.divide(value, THOUSAND));\n    }\n    get epochNanoseconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToBigIntExternal(JSBI.BigInt(GetSlot(this, EPOCHNANOSECONDS)));\n    }\n    add(temporalDurationLike) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromInstant('add', this, temporalDurationLike);\n    }\n    subtract(temporalDurationLike) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromInstant('subtract', this, temporalDurationLike);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalInstant('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalInstant('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const maximumIncrements = {\n            hour: 24,\n            minute: 1440,\n            second: 86400,\n            millisecond: 86400e3,\n            microsecond: 86400e6,\n            nanosecond: 86400e9\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], true);\n        const ns = GetSlot(this, EPOCHNANOSECONDS);\n        const roundedNs = ES.RoundInstant(ns, roundingIncrement, smallestUnit, roundingMode);\n        return new Instant(roundedNs);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalInstant(otherParam);\n        const one = GetSlot(this, EPOCHNANOSECONDS);\n        const two = GetSlot(other, EPOCHNANOSECONDS);\n        return JSBI.equal(JSBI.BigInt(one), JSBI.BigInt(two));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        let timeZone = options.timeZone;\n        if (timeZone !== undefined)\n            timeZone = ES.ToTemporalTimeZone(timeZone);\n        // Although TS doesn't acknowledge it, below here `timeZone` is a Temporal.TimeZoneProtocol\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        const ns = GetSlot(this, EPOCHNANOSECONDS);\n        const roundedNs = ES.RoundInstant(ns, increment, unit, roundingMode);\n        const roundedInstant = new Instant(roundedNs);\n        return ES.TemporalInstantToString(roundedInstant, timeZone, precision);\n    }\n    toJSON() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalInstantToString(this, undefined, 'auto');\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.Instant');\n    }\n    toZonedDateTime(item) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item)) {\n            throw new TypeError('invalid argument in toZonedDateTime');\n        }\n        const calendarLike = item.calendar;\n        if (calendarLike === undefined) {\n            throw new TypeError('missing calendar property in toZonedDateTime');\n        }\n        const calendar = ES.ToTemporalCalendar(calendarLike);\n        const temporalTimeZoneLike = item.timeZone;\n        if (temporalTimeZoneLike === undefined) {\n            throw new TypeError('missing timeZone property in toZonedDateTime');\n        }\n        const timeZone = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    toZonedDateTimeISO(itemParam) {\n        let item = itemParam;\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        if (ES.IsObject(item)) {\n            const timeZoneProperty = item.timeZone;\n            if (timeZoneProperty !== undefined) {\n                item = timeZoneProperty;\n            }\n        }\n        const timeZone = ES.ToTemporalTimeZone(item);\n        const calendar = ES.GetISO8601Calendar();\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    static fromEpochSeconds(epochSecondsParam) {\n        const epochSeconds = ES.ToNumber(epochSecondsParam);\n        const epochNanoseconds = JSBI.multiply(JSBI.BigInt(epochSeconds), BILLION);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static fromEpochMilliseconds(epochMillisecondsParam) {\n        const epochMilliseconds = ES.ToNumber(epochMillisecondsParam);\n        const epochNanoseconds = JSBI.multiply(JSBI.BigInt(epochMilliseconds), MILLION);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static fromEpochMicroseconds(epochMicrosecondsParam) {\n        const epochMicroseconds = ES.ToBigInt(epochMicrosecondsParam);\n        const epochNanoseconds = JSBI.multiply(epochMicroseconds, THOUSAND);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static fromEpochNanoseconds(epochNanosecondsParam) {\n        const epochNanoseconds = ES.ToBigInt(epochNanosecondsParam);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static from(item) {\n        if (ES.IsTemporalInstant(item)) {\n            return new Instant(GetSlot(item, EPOCHNANOSECONDS));\n        }\n        return ES.ToTemporalInstant(item);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalInstant(oneParam);\n        const two = ES.ToTemporalInstant(twoParam);\n        const oneNs = GetSlot(one, EPOCHNANOSECONDS);\n        const twoNs = GetSlot(two, EPOCHNANOSECONDS);\n        if (JSBI.lessThan(oneNs, twoNs))\n            return -1;\n        if (JSBI.greaterThan(oneNs, twoNs))\n            return 1;\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(Instant, 'Temporal.Instant');\n//# sourceMappingURL=instant.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass, DefineIntrinsic } from './intrinsicclass';\nimport { CALENDAR_ID, ISO_YEAR, ISO_MONTH, ISO_DAY, YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS, CreateSlots, GetSlot, HasSlot, SetSlot } from './slots';\nconst ArrayIncludes = Array.prototype.includes;\nconst ArrayPrototypePush = Array.prototype.push;\nconst IntlDateTimeFormat = globalThis.Intl.DateTimeFormat;\nconst ArraySort = Array.prototype.sort;\nconst MathAbs = Math.abs;\nconst MathFloor = Math.floor;\nconst ObjectEntries = Object.entries;\nconst ObjectKeys = Object.keys;\n/**\n * Implementations for each calendar. Non-ISO calendars have an extra `helper`\n * property that provides additional per-calendar logic.\n */\nconst impl = {};\n/**\n * Thin wrapper around the implementation of each built-in calendar. This\n * class's methods follow a similar pattern:\n * 1. Validate parameters\n * 2. Fill in default options (for methods where options are present)\n * 3. Simplify and/or normalize parameters. For example, some methods accept\n *    PlainDate, PlainDateTime, ZonedDateTime, etc. and these are normalized to\n *    PlainDate.\n * 4. Look up the ID of the built-in calendar\n * 5. Fetch the implementation object for that ID.\n * 6. Call the corresponding method in the implementation object.\n */\nexport class Calendar {\n    constructor(idParam) {\n        // Note: if the argument is not passed, IsBuiltinCalendar(\"undefined\") will fail. This check\n        //       exists only to improve the error message.\n        if (arguments.length < 1) {\n            throw new RangeError('missing argument: id is required');\n        }\n        const id = ES.ToString(idParam);\n        if (!ES.IsBuiltinCalendar(id))\n            throw new RangeError(`invalid calendar identifier ${id}`);\n        CreateSlots(this);\n        SetSlot(this, CALENDAR_ID, id);\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${id}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get id() {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    dateFromFields(fields, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(fields))\n            throw new TypeError('invalid fields');\n        const options = ES.GetOptionsObject(optionsParam);\n        return impl[GetSlot(this, CALENDAR_ID)].dateFromFields(fields, options, this);\n    }\n    yearMonthFromFields(fields, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(fields))\n            throw new TypeError('invalid fields');\n        const options = ES.GetOptionsObject(optionsParam);\n        return impl[GetSlot(this, CALENDAR_ID)].yearMonthFromFields(fields, options, this);\n    }\n    monthDayFromFields(fields, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(fields))\n            throw new TypeError('invalid fields');\n        const options = ES.GetOptionsObject(optionsParam);\n        return impl[GetSlot(this, CALENDAR_ID)].monthDayFromFields(fields, options, this);\n    }\n    fields(fields) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const fieldsArray = [];\n        const allowed = new Set([\n            'year',\n            'month',\n            'monthCode',\n            'day',\n            'hour',\n            'minute',\n            'second',\n            'millisecond',\n            'microsecond',\n            'nanosecond'\n        ]);\n        for (const name of fields) {\n            if (typeof name !== 'string')\n                throw new TypeError('invalid fields');\n            if (!allowed.has(name))\n                throw new RangeError(`invalid field name ${name}`);\n            allowed.delete(name);\n            ArrayPrototypePush.call(fieldsArray, name);\n        }\n        return impl[GetSlot(this, CALENDAR_ID)].fields(fieldsArray);\n    }\n    mergeFields(fields, additionalFields) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return impl[GetSlot(this, CALENDAR_ID)].mergeFields(fields, additionalFields);\n    }\n    dateAdd(dateParam, durationParam, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        const duration = ES.ToTemporalDuration(durationParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        const overflow = ES.ToTemporalOverflow(options);\n        const { days } = ES.BalanceDuration(GetSlot(duration, DAYS), GetSlot(duration, HOURS), GetSlot(duration, MINUTES), GetSlot(duration, SECONDS), GetSlot(duration, MILLISECONDS), GetSlot(duration, MICROSECONDS), GetSlot(duration, NANOSECONDS), 'day');\n        return impl[GetSlot(this, CALENDAR_ID)].dateAdd(date, GetSlot(duration, YEARS), GetSlot(duration, MONTHS), GetSlot(duration, WEEKS), days, overflow, this);\n    }\n    dateUntil(oneParam, twoParam, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const one = ES.ToTemporalDate(oneParam);\n        const two = ES.ToTemporalDate(twoParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        let largestUnit = ES.GetTemporalUnit(options, 'largestUnit', 'date', 'auto');\n        if (largestUnit === 'auto')\n            largestUnit = 'day';\n        const { years, months, weeks, days } = impl[GetSlot(this, CALENDAR_ID)].dateUntil(one, two, largestUnit);\n        const Duration = GetIntrinsic('%Temporal.Duration%');\n        return new Duration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    }\n    year(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].year(date);\n    }\n    month(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (ES.IsTemporalMonthDay(date))\n            throw new TypeError('use monthCode on PlainMonthDay instead');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].month(date);\n    }\n    monthCode(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date) && !ES.IsTemporalMonthDay(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].monthCode(date);\n    }\n    day(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalMonthDay(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].day(date);\n    }\n    era(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].era(date);\n    }\n    eraYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].eraYear(date);\n    }\n    dayOfWeek(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].dayOfWeek(date);\n    }\n    dayOfYear(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].dayOfYear(date);\n    }\n    weekOfYear(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].weekOfYear(date);\n    }\n    daysInWeek(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].daysInWeek(date);\n    }\n    daysInMonth(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].daysInMonth(date);\n    }\n    daysInYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].daysInYear(date);\n    }\n    monthsInYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].monthsInYear(date);\n    }\n    inLeapYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].inLeapYear(date);\n    }\n    toString() {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR_ID);\n    }\n    toJSON() {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    static from(item) {\n        return ES.ToTemporalCalendar(item);\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(Calendar, 'Temporal.Calendar');\nDefineIntrinsic('Temporal.Calendar.from', Calendar.from);\n/**\n * Implementation for the ISO 8601 calendar. This is the only calendar that's\n * guaranteed to be supported by all ECMAScript implementations, including those\n * without Intl (ECMA-402) support.\n */\nimpl['iso8601'] = {\n    dateFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        let fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'month', 'monthCode', 'year'], ['year', 'day']);\n        fields = resolveNonLunisolarMonth(fields);\n        let { year, month, day } = fields;\n        ({ year, month, day } = ES.RegulateISODate(year, month, day, overflow));\n        return ES.CreateTemporalDate(year, month, day, calendar);\n    },\n    yearMonthFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        let fields = ES.PrepareTemporalFields(fieldsParam, ['month', 'monthCode', 'year'], ['year']);\n        fields = resolveNonLunisolarMonth(fields);\n        let { year, month } = fields;\n        ({ year, month } = ES.RegulateISOYearMonth(year, month, overflow));\n        return ES.CreateTemporalYearMonth(year, month, calendar, /* referenceISODay = */ 1);\n    },\n    monthDayFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        let fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'month', 'monthCode', 'year'], ['day']);\n        if (fields.month !== undefined && fields.year === undefined && fields.monthCode === undefined) {\n            throw new TypeError('either year or monthCode required with month');\n        }\n        const useYear = fields.monthCode === undefined;\n        const referenceISOYear = 1972;\n        fields = resolveNonLunisolarMonth(fields);\n        let { month, day, year } = fields;\n        ({ month, day } = ES.RegulateISODate(useYear ? year : referenceISOYear, month, day, overflow));\n        return ES.CreateTemporalMonthDay(month, day, calendar, referenceISOYear);\n    },\n    fields(fields) {\n        return fields;\n    },\n    mergeFields(fields, additionalFields) {\n        const merged = {};\n        for (const nextKey of ObjectKeys(fields)) {\n            if (nextKey === 'month' || nextKey === 'monthCode')\n                continue;\n            merged[nextKey] = fields[nextKey];\n        }\n        const newKeys = ObjectKeys(additionalFields);\n        for (const nextKey of newKeys) {\n            merged[nextKey] = additionalFields[nextKey];\n        }\n        if (!ArrayIncludes.call(newKeys, 'month') && !ArrayIncludes.call(newKeys, 'monthCode')) {\n            const { month, monthCode } = fields;\n            if (month !== undefined)\n                merged.month = month;\n            if (monthCode !== undefined)\n                merged.monthCode = monthCode;\n        }\n        return merged;\n    },\n    dateAdd(date, years, months, weeks, days, overflow, calendar) {\n        let year = GetSlot(date, ISO_YEAR);\n        let month = GetSlot(date, ISO_MONTH);\n        let day = GetSlot(date, ISO_DAY);\n        ({ year, month, day } = ES.AddISODate(year, month, day, years, months, weeks, days, overflow));\n        return ES.CreateTemporalDate(year, month, day, calendar);\n    },\n    dateUntil(one, two, largestUnit) {\n        return ES.DifferenceISODate(GetSlot(one, ISO_YEAR), GetSlot(one, ISO_MONTH), GetSlot(one, ISO_DAY), GetSlot(two, ISO_YEAR), GetSlot(two, ISO_MONTH), GetSlot(two, ISO_DAY), largestUnit);\n    },\n    year(date) {\n        return GetSlot(date, ISO_YEAR);\n    },\n    era() {\n        return undefined;\n    },\n    eraYear() {\n        return undefined;\n    },\n    month(date) {\n        return GetSlot(date, ISO_MONTH);\n    },\n    monthCode(date) {\n        return buildMonthCode(GetSlot(date, ISO_MONTH));\n    },\n    day(date) {\n        return GetSlot(date, ISO_DAY);\n    },\n    dayOfWeek(date) {\n        return ES.DayOfWeek(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH), GetSlot(date, ISO_DAY));\n    },\n    dayOfYear(date) {\n        return ES.DayOfYear(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH), GetSlot(date, ISO_DAY));\n    },\n    weekOfYear(date) {\n        return ES.WeekOfYear(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH), GetSlot(date, ISO_DAY));\n    },\n    daysInWeek() {\n        return 7;\n    },\n    daysInMonth(date) {\n        return ES.ISODaysInMonth(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH));\n    },\n    daysInYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        return ES.LeapYear(GetSlot(date, ISO_YEAR)) ? 366 : 365;\n    },\n    monthsInYear() {\n        return 12;\n    },\n    inLeapYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        return ES.LeapYear(GetSlot(date, ISO_YEAR));\n    }\n};\nfunction monthCodeNumberPart(monthCode) {\n    if (!monthCode.startsWith('M')) {\n        throw new RangeError(`Invalid month code: ${monthCode}.  Month codes must start with M.`);\n    }\n    const month = +monthCode.slice(1);\n    if (isNaN(month))\n        throw new RangeError(`Invalid month code: ${monthCode}`);\n    return month;\n}\nfunction buildMonthCode(month, leap = false) {\n    return `M${month.toString().padStart(2, '0')}${leap ? 'L' : ''}`;\n}\n/**\n * Safely merge a month, monthCode pair into an integer month.\n * If both are present, make sure they match.\n * This logic doesn't work for lunisolar calendars!\n * */\nfunction resolveNonLunisolarMonth(calendarDate, overflow = undefined, monthsPerYear = 12) {\n    let { month, monthCode } = calendarDate;\n    if (monthCode === undefined) {\n        if (month === undefined)\n            throw new TypeError('Either month or monthCode are required');\n        // The ISO calendar uses the default (undefined) value because it does\n        // constrain/reject after this method returns. Non-ISO calendars, however,\n        // rely on this function to constrain/reject out-of-range `month` values.\n        if (overflow === 'reject')\n            ES.RejectToRange(month, 1, monthsPerYear);\n        if (overflow === 'constrain')\n            month = ES.ConstrainToRange(month, 1, monthsPerYear);\n        monthCode = buildMonthCode(month);\n    }\n    else {\n        const numberPart = monthCodeNumberPart(monthCode);\n        if (month !== undefined && month !== numberPart) {\n            throw new RangeError(`monthCode ${monthCode} and month ${month} must match if both are present`);\n        }\n        if (monthCode !== buildMonthCode(numberPart)) {\n            throw new RangeError(`Invalid month code: ${monthCode}`);\n        }\n        month = numberPart;\n        if (month < 1 || month > monthsPerYear)\n            throw new RangeError(`Invalid monthCode: ${monthCode}`);\n    }\n    return { ...calendarDate, month, monthCode };\n}\n/**\n * This prototype implementation of non-ISO calendars makes many repeated calls\n * to Intl APIs which may be slow (e.g. >0.2ms). This trivial cache will speed\n * up these repeat accesses. Each cache instance is associated (via a WeakMap)\n * to a specific Temporal object, which speeds up multiple calendar calls on the\n * same Temporal object instance.  No invalidation or pruning is necessary\n * because each object's cache is thrown away when the object is GC-ed.\n */\nclass OneObjectCache {\n    constructor(cacheToClone) {\n        this.map = new Map();\n        this.calls = 0;\n        this.hits = 0;\n        this.misses = 0;\n        this.now = globalThis.performance ? globalThis.performance.now() : Date.now();\n        if (cacheToClone !== undefined) {\n            let i = 0;\n            for (const entry of cacheToClone.map.entries()) {\n                if (++i > OneObjectCache.MAX_CACHE_ENTRIES)\n                    break;\n                this.map.set(...entry);\n            }\n        }\n    }\n    get(key) {\n        const result = this.map.get(key);\n        if (result) {\n            this.hits++;\n            this.report();\n        }\n        this.calls++;\n        return result;\n    }\n    set(key, value) {\n        this.map.set(key, value);\n        this.misses++;\n        this.report();\n    }\n    report() {\n        /*\n        if (this.calls === 0) return;\n        const ms = (globalThis.performance ? globalThis.performance.now() : Date.now()) - this.now;\n        const hitRate = ((100 * this.hits) / this.calls).toFixed(0);\n        console.log(`${this.calls} calls in ${ms.toFixed(2)}ms. Hits: ${this.hits} (${hitRate}%). Misses: ${this.misses}.`);\n        */\n    }\n    setObject(obj) {\n        if (OneObjectCache.objectMap.get(obj))\n            throw new RangeError('object already cached');\n        OneObjectCache.objectMap.set(obj, this);\n        this.report();\n    }\n    /**\n     * Returns a WeakMap-backed cache that's used to store expensive results\n     * that are associated with a particular Temporal object instance.\n     *\n     * @param obj - object to associate with the cache\n     */\n    static getCacheForObject(obj) {\n        let cache = OneObjectCache.objectMap.get(obj);\n        if (!cache) {\n            cache = new OneObjectCache();\n            OneObjectCache.objectMap.set(obj, cache);\n        }\n        return cache;\n    }\n}\nOneObjectCache.objectMap = new WeakMap();\nOneObjectCache.MAX_CACHE_ENTRIES = 1000;\nfunction toUtcIsoDateString({ isoYear, isoMonth, isoDay }) {\n    const yearString = ES.ISOYearString(isoYear);\n    const monthString = ES.ISODateTimePartString(isoMonth);\n    const dayString = ES.ISODateTimePartString(isoDay);\n    return `${yearString}-${monthString}-${dayString}T00:00Z`;\n}\nfunction simpleDateDiff(one, two) {\n    return {\n        years: one.year - two.year,\n        months: one.month - two.month,\n        days: one.day - two.day\n    };\n}\n/**\n * Implementation helper that's common to all non-ISO calendars\n */\nclass HelperBase {\n    constructor() {\n        // The short era format works for all calendars except Japanese, which will\n        // override.\n        this.eraLength = 'short';\n        // All built-in calendars except Chinese/Dangi and Hebrew use an era\n        this.hasEra = true;\n    }\n    getFormatter() {\n        // `new Intl.DateTimeFormat()` is amazingly slow and chews up RAM. Per\n        // https://bugs.chromium.org/p/v8/issues/detail?id=6528#c4, we cache one\n        // DateTimeFormat instance per calendar. Caching is lazy so we only pay for\n        // calendars that are used. Note that the nonIsoHelperBase object is spread\n        // into each each calendar's implementation before any cache is created, so\n        // each calendar gets its own separate cached formatter.\n        if (typeof this.formatter === 'undefined') {\n            this.formatter = new IntlDateTimeFormat(`en-US-u-ca-${this.id}`, {\n                day: 'numeric',\n                month: 'numeric',\n                year: 'numeric',\n                era: this.eraLength,\n                timeZone: 'UTC'\n            });\n        }\n        return this.formatter;\n    }\n    isoToCalendarDate(isoDate, cache) {\n        const { year: isoYear, month: isoMonth, day: isoDay } = isoDate;\n        const key = JSON.stringify({ func: 'isoToCalendarDate', isoYear, isoMonth, isoDay, id: this.id });\n        const cached = cache.get(key);\n        if (cached)\n            return cached;\n        const dateTimeFormat = this.getFormatter();\n        let parts, isoString;\n        try {\n            isoString = toUtcIsoDateString({ isoYear, isoMonth, isoDay });\n            parts = dateTimeFormat.formatToParts(new Date(isoString));\n        }\n        catch (e) {\n            throw new RangeError(`Invalid ISO date: ${JSON.stringify({ isoYear, isoMonth, isoDay })}`);\n        }\n        const result = {};\n        for (let { type, value } of parts) {\n            if (type === 'year')\n                result.eraYear = +value;\n            // TODO: remove this type annotation when `relatedYear` gets into TS lib types\n            if (type === 'relatedYear')\n                result.eraYear = +value;\n            if (type === 'month') {\n                const matches = /^([0-9]*)(.*?)$/.exec(value);\n                if (!matches || matches.length != 3 || (!matches[1] && !matches[2])) {\n                    throw new RangeError(`Unexpected month: ${value}`);\n                }\n                // If the month has no numeric part (should only see this for the Hebrew\n                // calendar with newer FF / Chromium versions; see\n                // https://bugzilla.mozilla.org/show_bug.cgi?id=1751833) then set a\n                // placeholder month index of `1` and rely on the derived class to\n                // calculate the correct month index from the month name stored in\n                // `monthExtra`.\n                result.month = matches[1] ? +matches[1] : 1;\n                if (result.month < 1) {\n                    throw new RangeError(`Invalid month ${value} from ${isoString}[u-ca-${this.id}]` +\n                        ' (probably due to https://bugs.chromium.org/p/v8/issues/detail?id=10527)');\n                }\n                if (result.month > 13) {\n                    throw new RangeError(`Invalid month ${value} from ${isoString}[u-ca-${this.id}]` +\n                        ' (probably due to https://bugs.chromium.org/p/v8/issues/detail?id=10529)');\n                }\n                // The ICU formats for the Hebrew calendar no longer support a numeric\n                // month format. So we'll rely on the derived class to interpret it.\n                // `monthExtra` is also used on the Chinese calendar to handle a suffix\n                // \"bis\" indicating a leap month.\n                if (matches[2])\n                    result.monthExtra = matches[2];\n            }\n            if (type === 'day')\n                result.day = +value;\n            if (this.hasEra && type === 'era' && value != null && value !== '') {\n                // The convention for Temporal era values is lowercase, so following\n                // that convention in this prototype. Punctuation is removed, accented\n                // letters are normalized, and spaces are replaced with dashes.\n                // E.g.: \"ERA0\" => \"era0\", \"Before R.O.C.\" => \"before-roc\", \"En’ō\" => \"eno\"\n                // The call to normalize() and the replacement regex deals with era\n                // names that contain non-ASCII characters like Japanese eras. Also\n                // ignore extra content in parentheses like JPN era date ranges.\n                value = value.split(' (')[0];\n                result.era = value\n                    .normalize('NFD')\n                    .replace(/[^-0-9 \\p{L}]/gu, '')\n                    .replace(' ', '-')\n                    .toLowerCase();\n            }\n        }\n        if (result.eraYear === undefined) {\n            // Node 12 has outdated ICU data that lacks the `relatedYear` field in the\n            // output of Intl.DateTimeFormat.formatToParts.\n            throw new RangeError(`Intl.DateTimeFormat.formatToParts lacks relatedYear in ${this.id} calendar. Try Node 14+ or modern browsers.`);\n        }\n        // Translate eras that may be handled differently by Temporal vs. by Intl\n        // (e.g. Japanese pre-Meiji eras). See https://github.com/tc39/proposal-temporal/issues/526.\n        if (this.reviseIntlEra) {\n            const { era, eraYear } = this.reviseIntlEra(result, isoDate);\n            result.era = era;\n            result.eraYear = eraYear;\n        }\n        if (this.checkIcuBugs)\n            this.checkIcuBugs(isoDate);\n        const calendarDate = this.adjustCalendarDate(result, cache, 'constrain', true);\n        if (calendarDate.year === undefined)\n            throw new RangeError(`Missing year converting ${JSON.stringify(isoDate)}`);\n        if (calendarDate.month === undefined)\n            throw new RangeError(`Missing month converting ${JSON.stringify(isoDate)}`);\n        if (calendarDate.day === undefined)\n            throw new RangeError(`Missing day converting ${JSON.stringify(isoDate)}`);\n        cache.set(key, calendarDate);\n        // Also cache the reverse mapping\n        ['constrain', 'reject'].forEach((overflow) => {\n            const keyReverse = JSON.stringify({\n                func: 'calendarToIsoDate',\n                year: calendarDate.year,\n                month: calendarDate.month,\n                day: calendarDate.day,\n                overflow,\n                id: this.id\n            });\n            cache.set(keyReverse, isoDate);\n        });\n        return calendarDate;\n    }\n    validateCalendarDate(calendarDate) {\n        const { era, month, year, day, eraYear, monthCode, monthExtra } = calendarDate;\n        // When there's a suffix (e.g. \"5bis\" for a leap month in Chinese calendar)\n        // the derived class must deal with it.\n        if (monthExtra !== undefined)\n            throw new RangeError('Unexpected `monthExtra` value');\n        if (year === undefined && eraYear === undefined)\n            throw new TypeError('year or eraYear is required');\n        if (month === undefined && monthCode === undefined)\n            throw new TypeError('month or monthCode is required');\n        if (day === undefined)\n            throw new RangeError('Missing day');\n        if (monthCode !== undefined) {\n            if (typeof monthCode !== 'string') {\n                throw new RangeError(`monthCode must be a string, not ${typeof monthCode}`);\n            }\n            if (!/^M([01]?\\d)(L?)$/.test(monthCode))\n                throw new RangeError(`Invalid monthCode: ${monthCode}`);\n        }\n        if (this.constantEra) {\n            if (era !== undefined && era !== this.constantEra) {\n                throw new RangeError(`era must be ${this.constantEra}, not ${era}`);\n            }\n            if (eraYear !== undefined && year !== undefined && eraYear !== year) {\n                throw new RangeError(`eraYear ${eraYear} does not match year ${year}`);\n            }\n        }\n    }\n    /**\n     * Allows derived calendars to add additional fields and/or to make\n     * adjustments e.g. to set the era based on the date or to revise the month\n     * number in lunisolar calendars per\n     * https://github.com/tc39/proposal-temporal/issues/1203.\n     *\n     * The base implementation fills in missing values by assuming the simplest\n     * possible calendar:\n     * - no eras or a constant era defined in `.constantEra`\n     * - non-lunisolar calendar (no leap months)\n     * */\n    adjustCalendarDate(calendarDateParam, cache = undefined, overflow = 'constrain', \n    // This param is only used by derived classes\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    fromLegacyDate = false) {\n        if (this.calendarType === 'lunisolar')\n            throw new RangeError('Override required for lunisolar calendars');\n        let calendarDate = calendarDateParam;\n        this.validateCalendarDate(calendarDate);\n        // For calendars that always use the same era, set it here so that derived\n        // calendars won't need to implement this method simply to set the era.\n        if (this.constantEra) {\n            // year and eraYear always match when there's only one possible era\n            const { year, eraYear } = calendarDate;\n            calendarDate = {\n                ...calendarDate,\n                era: this.constantEra,\n                year: year !== undefined ? year : eraYear,\n                eraYear: eraYear !== undefined ? eraYear : year\n            };\n        }\n        const largestMonth = this.monthsInYear(calendarDate, cache);\n        let { month, monthCode } = calendarDate;\n        ({ month, monthCode } = resolveNonLunisolarMonth(calendarDate, overflow, largestMonth));\n        return { ...calendarDate, month, monthCode };\n    }\n    regulateMonthDayNaive(calendarDate, overflow, cache) {\n        const largestMonth = this.monthsInYear(calendarDate, cache);\n        let { month, day } = calendarDate;\n        if (overflow === 'reject') {\n            ES.RejectToRange(month, 1, largestMonth);\n            ES.RejectToRange(day, 1, this.maximumMonthLength(calendarDate));\n        }\n        else {\n            month = ES.ConstrainToRange(month, 1, largestMonth);\n            day = ES.ConstrainToRange(day, 1, this.maximumMonthLength({ ...calendarDate, month }));\n        }\n        return { ...calendarDate, month, day };\n    }\n    calendarToIsoDate(dateParam, overflow = 'constrain', cache) {\n        const originalDate = dateParam;\n        // First, normalize the calendar date to ensure that (year, month, day)\n        // are all present, converting monthCode and eraYear if needed.\n        let date = this.adjustCalendarDate(dateParam, cache, overflow, false);\n        // Fix obviously out-of-bounds values. Values that are valid generally, but\n        // not in this particular year, may not be caught here for some calendars.\n        // If so, these will be handled lower below.\n        date = this.regulateMonthDayNaive(date, overflow, cache);\n        const { year, month, day } = date;\n        const key = JSON.stringify({ func: 'calendarToIsoDate', year, month, day, overflow, id: this.id });\n        let cached = cache.get(key);\n        if (cached)\n            return cached;\n        // If YMD are present in the input but the input has been constrained\n        // already, then cache both the original value and the constrained value.\n        let keyOriginal;\n        if (originalDate.year !== undefined &&\n            originalDate.month !== undefined &&\n            originalDate.day !== undefined &&\n            (originalDate.year !== date.year || originalDate.month !== date.month || originalDate.day !== date.day)) {\n            keyOriginal = JSON.stringify({\n                func: 'calendarToIsoDate',\n                year: originalDate.year,\n                month: originalDate.month,\n                day: originalDate.day,\n                overflow,\n                id: this.id\n            });\n            cached = cache.get(keyOriginal);\n            if (cached)\n                return cached;\n        }\n        // First, try to roughly guess the result\n        let isoEstimate = this.estimateIsoDate({ year, month, day });\n        const calculateSameMonthResult = (diffDays) => {\n            // If the estimate is in the same year & month as the target, then we can\n            // calculate the result exactly and short-circuit any additional logic.\n            // This optimization assumes that months are continuous. It would break if\n            // a calendar skipped days, like the Julian->Gregorian switchover. But the\n            // only ICU calendars that currently skip days (japanese/roc/buddhist) is\n            // a bug (https://bugs.chromium.org/p/chromium/issues/detail?id=1173158)\n            // that's currently detected by `checkIcuBugs()` which will throw. So\n            // this optimization should be safe for all ICU calendars.\n            let testIsoEstimate = this.addDaysIso(isoEstimate, diffDays);\n            if (date.day > this.minimumMonthLength(date)) {\n                // There's a chance that the calendar date is out of range. Throw or\n                // constrain if so.\n                let testCalendarDate = this.isoToCalendarDate(testIsoEstimate, cache);\n                while (testCalendarDate.month !== month || testCalendarDate.year !== year) {\n                    if (overflow === 'reject') {\n                        throw new RangeError(`day ${day} does not exist in month ${month} of year ${year}`);\n                    }\n                    // Back up a day at a time until we're not hanging over the month end\n                    testIsoEstimate = this.addDaysIso(testIsoEstimate, -1);\n                    testCalendarDate = this.isoToCalendarDate(testIsoEstimate, cache);\n                }\n            }\n            return testIsoEstimate;\n        };\n        let sign = 0;\n        let roundtripEstimate = this.isoToCalendarDate(isoEstimate, cache);\n        let diff = simpleDateDiff(date, roundtripEstimate);\n        if (diff.years !== 0 || diff.months !== 0 || diff.days !== 0) {\n            const diffTotalDaysEstimate = diff.years * 365 + diff.months * 30 + diff.days;\n            isoEstimate = this.addDaysIso(isoEstimate, diffTotalDaysEstimate);\n            roundtripEstimate = this.isoToCalendarDate(isoEstimate, cache);\n            diff = simpleDateDiff(date, roundtripEstimate);\n            if (diff.years === 0 && diff.months === 0) {\n                isoEstimate = calculateSameMonthResult(diff.days);\n            }\n            else {\n                sign = this.compareCalendarDates(date, roundtripEstimate);\n            }\n        }\n        // If the initial guess is not in the same month, then then bisect the\n        // distance to the target, starting with 8 days per step.\n        let increment = 8;\n        let maybeConstrained = false;\n        while (sign) {\n            isoEstimate = this.addDaysIso(isoEstimate, sign * increment);\n            const oldRoundtripEstimate = roundtripEstimate;\n            roundtripEstimate = this.isoToCalendarDate(isoEstimate, cache);\n            const oldSign = sign;\n            sign = this.compareCalendarDates(date, roundtripEstimate);\n            if (sign) {\n                diff = simpleDateDiff(date, roundtripEstimate);\n                if (diff.years === 0 && diff.months === 0) {\n                    isoEstimate = calculateSameMonthResult(diff.days);\n                    // Signal the loop condition that there's a match.\n                    sign = 0;\n                    // If the calendar day is larger than the minimal length for this\n                    // month, then it might be larger than the actual length of the month.\n                    // So we won't cache it as the correct calendar date for this ISO\n                    // date.\n                    maybeConstrained = date.day > this.minimumMonthLength(date);\n                }\n                else if (oldSign && sign !== oldSign) {\n                    if (increment > 1) {\n                        // If the estimate overshot the target, try again with a smaller increment\n                        // in the reverse direction.\n                        increment /= 2;\n                    }\n                    else {\n                        // Increment is 1, and neither the previous estimate nor the new\n                        // estimate is correct. The only way that can happen is if the\n                        // original date was an invalid value that will be constrained or\n                        // rejected here.\n                        if (overflow === 'reject') {\n                            throw new RangeError(`Can't find ISO date from calendar date: ${JSON.stringify({ ...originalDate })}`);\n                        }\n                        else {\n                            // To constrain, pick the earliest value\n                            const order = this.compareCalendarDates(roundtripEstimate, oldRoundtripEstimate);\n                            // If current value is larger, then back up to the previous value.\n                            if (order > 0)\n                                isoEstimate = this.addDaysIso(isoEstimate, -1);\n                            maybeConstrained = true;\n                            sign = 0;\n                        }\n                    }\n                }\n            }\n        }\n        cache.set(key, isoEstimate);\n        if (keyOriginal)\n            cache.set(keyOriginal, isoEstimate);\n        if (date.year === undefined ||\n            date.month === undefined ||\n            date.day === undefined ||\n            date.monthCode === undefined ||\n            (this.hasEra && (date.era === undefined || date.eraYear === undefined))) {\n            throw new RangeError('Unexpected missing property');\n        }\n        if (!maybeConstrained) {\n            // Also cache the reverse mapping\n            const keyReverse = JSON.stringify({\n                func: 'isoToCalendarDate',\n                isoYear: isoEstimate.year,\n                isoMonth: isoEstimate.month,\n                isoDay: isoEstimate.day,\n                id: this.id\n            });\n            cache.set(keyReverse, date);\n        }\n        return isoEstimate;\n    }\n    temporalToCalendarDate(date, cache) {\n        const isoDate = { year: GetSlot(date, ISO_YEAR), month: GetSlot(date, ISO_MONTH), day: GetSlot(date, ISO_DAY) };\n        const result = this.isoToCalendarDate(isoDate, cache);\n        return result;\n    }\n    compareCalendarDates(date1Param, date2Param) {\n        // `date1` and `date2` are already records. The calls below simply validate\n        // that all three required fields are present.\n        const date1 = ES.PrepareTemporalFields(date1Param, ['day', 'month', 'year'], ['day', 'month', 'year']);\n        const date2 = ES.PrepareTemporalFields(date2Param, ['day', 'month', 'year'], ['day', 'month', 'year']);\n        if (date1.year !== date2.year)\n            return ES.ComparisonResult(date1.year - date2.year);\n        if (date1.month !== date2.month)\n            return ES.ComparisonResult(date1.month - date2.month);\n        if (date1.day !== date2.day)\n            return ES.ComparisonResult(date1.day - date2.day);\n        return 0;\n    }\n    /** Ensure that a calendar date actually exists. If not, return the closest earlier date. */\n    regulateDate(calendarDate, overflow = 'constrain', cache) {\n        const isoDate = this.calendarToIsoDate(calendarDate, overflow, cache);\n        return this.isoToCalendarDate(isoDate, cache);\n    }\n    addDaysIso(isoDate, days) {\n        const added = ES.AddISODate(isoDate.year, isoDate.month, isoDate.day, 0, 0, 0, days, 'constrain');\n        return added;\n    }\n    addDaysCalendar(calendarDate, days, cache) {\n        const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n        const addedIso = this.addDaysIso(isoDate, days);\n        const addedCalendar = this.isoToCalendarDate(addedIso, cache);\n        return addedCalendar;\n    }\n    addMonthsCalendar(calendarDateParam, months, overflow, cache) {\n        let calendarDate = calendarDateParam;\n        const { day } = calendarDate;\n        for (let i = 0, absMonths = MathAbs(months); i < absMonths; i++) {\n            const { month } = calendarDate;\n            const oldCalendarDate = calendarDate;\n            const days = months < 0\n                ? -Math.max(day, this.daysInPreviousMonth(calendarDate, cache))\n                : this.daysInMonth(calendarDate, cache);\n            const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n            let addedIso = this.addDaysIso(isoDate, days);\n            calendarDate = this.isoToCalendarDate(addedIso, cache);\n            // Normally, we can advance one month by adding the number of days in the\n            // current month. However, if we're at the end of the current month and\n            // the next month has fewer days, then we rolled over to the after-next\n            // month. Below we detect this condition and back up until we're back in\n            // the desired month.\n            if (months > 0) {\n                const monthsInOldYear = this.monthsInYear(oldCalendarDate, cache);\n                while (calendarDate.month - 1 !== month % monthsInOldYear) {\n                    addedIso = this.addDaysIso(addedIso, -1);\n                    calendarDate = this.isoToCalendarDate(addedIso, cache);\n                }\n            }\n            if (calendarDate.day !== day) {\n                // try to retain the original day-of-month, if possible\n                calendarDate = this.regulateDate({ ...calendarDate, day }, 'constrain', cache);\n            }\n        }\n        if (overflow === 'reject' && calendarDate.day !== day) {\n            throw new RangeError(`Day ${day} does not exist in resulting calendar month`);\n        }\n        return calendarDate;\n    }\n    addCalendar(calendarDate, { years = 0, months = 0, weeks = 0, days = 0 }, overflow, cache) {\n        const { year, day, monthCode } = calendarDate;\n        const addedYears = this.adjustCalendarDate({ year: year + years, monthCode, day }, cache);\n        const addedMonths = this.addMonthsCalendar(addedYears, months, overflow, cache);\n        const initialDays = days + weeks * 7;\n        const addedDays = this.addDaysCalendar(addedMonths, initialDays, cache);\n        return addedDays;\n    }\n    untilCalendar(calendarOne, calendarTwo, largestUnit, cache) {\n        let days = 0;\n        let weeks = 0;\n        let months = 0;\n        let years = 0;\n        switch (largestUnit) {\n            case 'day':\n                days = this.calendarDaysUntil(calendarOne, calendarTwo, cache);\n                break;\n            case 'week': {\n                const totalDays = this.calendarDaysUntil(calendarOne, calendarTwo, cache);\n                days = totalDays % 7;\n                weeks = (totalDays - days) / 7;\n                break;\n            }\n            case 'month':\n            case 'year': {\n                const diffYears = calendarTwo.year - calendarOne.year;\n                const diffMonths = calendarTwo.month - calendarOne.month;\n                const diffDays = calendarTwo.day - calendarOne.day;\n                const sign = this.compareCalendarDates(calendarTwo, calendarOne);\n                if (!sign) {\n                    return { years: 0, months: 0, weeks: 0, days: 0 };\n                }\n                if (largestUnit === 'year' && diffYears) {\n                    const isOneFurtherInYear = diffMonths * sign < 0 || (diffMonths === 0 && diffDays * sign < 0);\n                    years = isOneFurtherInYear ? diffYears - sign : diffYears;\n                }\n                const yearsAdded = years ? this.addCalendar(calendarOne, { years }, 'constrain', cache) : calendarOne;\n                // Now we have less than one year remaining. Add one month at a time\n                // until we go over the target, then back up one month and calculate\n                // remaining days and weeks.\n                let current;\n                let next = yearsAdded;\n                do {\n                    months += sign;\n                    current = next;\n                    next = this.addMonthsCalendar(current, sign, 'constrain', cache);\n                    if (next.day !== calendarOne.day) {\n                        // In case the day was constrained down, try to un-constrain it\n                        next = this.regulateDate({ ...next, day: calendarOne.day }, 'constrain', cache);\n                    }\n                } while (this.compareCalendarDates(calendarTwo, next) * sign >= 0);\n                months -= sign; // correct for loop above which overshoots by 1\n                const remainingDays = this.calendarDaysUntil(current, calendarTwo, cache);\n                days = remainingDays;\n                break;\n            }\n        }\n        return { years, months, weeks, days };\n    }\n    daysInMonth(calendarDate, cache) {\n        // Add enough days to roll over to the next month. One we're in the next\n        // month, we can calculate the length of the current month. NOTE: This\n        // algorithm assumes that months are continuous. It would break if a\n        // calendar skipped days, like the Julian->Gregorian switchover. But the\n        // only ICU calendars that currently skip days (japanese/roc/buddhist) is a\n        // bug (https://bugs.chromium.org/p/chromium/issues/detail?id=1173158)\n        // that's currently detected by `checkIcuBugs()` which will throw. So this\n        // code should be safe for all ICU calendars.\n        const { day } = calendarDate;\n        const max = this.maximumMonthLength(calendarDate);\n        const min = this.minimumMonthLength(calendarDate);\n        // easiest case: we already know the month length if min and max are the same.\n        if (min === max)\n            return min;\n        // Add enough days to get into the next month, without skipping it\n        const increment = day <= max - min ? max : min;\n        const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n        const addedIsoDate = this.addDaysIso(isoDate, increment);\n        const addedCalendarDate = this.isoToCalendarDate(addedIsoDate, cache);\n        // Now back up to the last day of the original month\n        const endOfMonthIso = this.addDaysIso(addedIsoDate, -addedCalendarDate.day);\n        const endOfMonthCalendar = this.isoToCalendarDate(endOfMonthIso, cache);\n        return endOfMonthCalendar.day;\n    }\n    daysInPreviousMonth(calendarDate, cache) {\n        const { day, month, year } = calendarDate;\n        // Check to see if we already know the month length, and return it if so\n        const previousMonthYear = month > 1 ? year : year - 1;\n        let previousMonthDate = { year: previousMonthYear, month, day: 1 };\n        const previousMonth = month > 1 ? month - 1 : this.monthsInYear(previousMonthDate, cache);\n        previousMonthDate = { ...previousMonthDate, month: previousMonth };\n        const min = this.minimumMonthLength(previousMonthDate);\n        const max = this.maximumMonthLength(previousMonthDate);\n        if (min === max)\n            return max;\n        const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n        const lastDayOfPreviousMonthIso = this.addDaysIso(isoDate, -day);\n        const lastDayOfPreviousMonthCalendar = this.isoToCalendarDate(lastDayOfPreviousMonthIso, cache);\n        return lastDayOfPreviousMonthCalendar.day;\n    }\n    startOfCalendarYear(calendarDate) {\n        return { year: calendarDate.year, month: 1, monthCode: 'M01', day: 1 };\n    }\n    startOfCalendarMonth(calendarDate) {\n        return { year: calendarDate.year, month: calendarDate.month, day: 1 };\n    }\n    calendarDaysUntil(calendarOne, calendarTwo, cache) {\n        const oneIso = this.calendarToIsoDate(calendarOne, 'constrain', cache);\n        const twoIso = this.calendarToIsoDate(calendarTwo, 'constrain', cache);\n        return this.isoDaysUntil(oneIso, twoIso);\n    }\n    isoDaysUntil(oneIso, twoIso) {\n        const duration = ES.DifferenceISODate(oneIso.year, oneIso.month, oneIso.day, twoIso.year, twoIso.month, twoIso.day, 'day');\n        return duration.days;\n    }\n    monthDayFromFields(fields, overflow, cache) {\n        let { year, month, monthCode, day, era, eraYear } = fields;\n        if (monthCode === undefined) {\n            if (year === undefined && (era === undefined || eraYear === undefined)) {\n                throw new TypeError('`monthCode`, `year`, or `era` and `eraYear` is required');\n            }\n            ({ monthCode, year } = this.adjustCalendarDate({ year, month, monthCode, day, era, eraYear }, cache, overflow));\n        }\n        let isoYear, isoMonth, isoDay;\n        let closestCalendar, closestIso;\n        // Look backwards starting from the calendar year of 1972-01-01 up to 100\n        // calendar years to find a year that has this month and day. Normal months\n        // and days will match immediately, but for leap days and leap months we may\n        // have to look for a while.\n        const startDateIso = { year: 1972, month: 1, day: 1 };\n        const { year: calendarYear } = this.isoToCalendarDate(startDateIso, cache);\n        for (let i = 0; i < 100; i++) {\n            const testCalendarDate = this.adjustCalendarDate({ day, monthCode, year: calendarYear - i }, cache);\n            const isoDate = this.calendarToIsoDate(testCalendarDate, 'constrain', cache);\n            const roundTripCalendarDate = this.isoToCalendarDate(isoDate, cache);\n            ({ year: isoYear, month: isoMonth, day: isoDay } = isoDate);\n            if (roundTripCalendarDate.monthCode === monthCode && roundTripCalendarDate.day === day) {\n                return { month: isoMonth, day: isoDay, year: isoYear };\n            }\n            else if (overflow === 'constrain') {\n                // non-ISO constrain algorithm tries to find the closest date in a matching month\n                if (closestCalendar === undefined ||\n                    (roundTripCalendarDate.monthCode === closestCalendar.monthCode &&\n                        roundTripCalendarDate.day > closestCalendar.day)) {\n                    closestCalendar = roundTripCalendarDate;\n                    closestIso = isoDate;\n                }\n            }\n        }\n        if (overflow === 'constrain' && closestIso !== undefined)\n            return closestIso;\n        throw new RangeError(`No recent ${this.id} year with monthCode ${monthCode} and day ${day}`);\n    }\n}\nclass HebrewHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.id = 'hebrew';\n        this.calendarType = 'lunisolar';\n        this.months = {\n            Tishri: { leap: 1, regular: 1, monthCode: 'M01', days: 30 },\n            Heshvan: { leap: 2, regular: 2, monthCode: 'M02', days: { min: 29, max: 30 } },\n            Kislev: { leap: 3, regular: 3, monthCode: 'M03', days: { min: 29, max: 30 } },\n            Tevet: { leap: 4, regular: 4, monthCode: 'M04', days: 29 },\n            Shevat: { leap: 5, regular: 5, monthCode: 'M05', days: 30 },\n            Adar: { leap: undefined, regular: 6, monthCode: 'M06', days: 29 },\n            'Adar I': { leap: 6, regular: undefined, monthCode: 'M05L', days: 30 },\n            'Adar II': { leap: 7, regular: undefined, monthCode: 'M06', days: 29 },\n            Nisan: { leap: 8, regular: 7, monthCode: 'M07', days: 30 },\n            Iyar: { leap: 9, regular: 8, monthCode: 'M08', days: 29 },\n            Sivan: { leap: 10, regular: 9, monthCode: 'M09', days: 30 },\n            Tamuz: { leap: 11, regular: 10, monthCode: 'M10', days: 29 },\n            Av: { leap: 12, regular: 11, monthCode: 'M11', days: 30 },\n            Elul: { leap: 13, regular: 12, monthCode: 'M12', days: 29 }\n        };\n        // All built-in calendars except Chinese/Dangi and Hebrew use an era\n        this.hasEra = false;\n    }\n    inLeapYear(calendarDate) {\n        const { year } = calendarDate;\n        // FYI: In addition to adding a month in leap years, the Hebrew calendar\n        // also has per-year changes to the number of days of Heshvan and Kislev.\n        // Given that these can be calculated by counting the number of days in\n        // those months, I assume that these DO NOT need to be exposed as\n        // Hebrew-only prototype fields or methods.\n        return (7 * year + 1) % 19 < 7;\n    }\n    monthsInYear(calendarDate) {\n        return this.inLeapYear(calendarDate) ? 13 : 12;\n    }\n    minimumMonthLength(calendarDate) {\n        return this.minMaxMonthLength(calendarDate, 'min');\n    }\n    maximumMonthLength(calendarDate) {\n        return this.minMaxMonthLength(calendarDate, 'max');\n    }\n    minMaxMonthLength(calendarDate, minOrMax) {\n        const { month, year } = calendarDate;\n        const monthCode = this.getMonthCode(year, month);\n        const monthInfo = ObjectEntries(this.months).find((m) => m[1].monthCode === monthCode);\n        if (monthInfo === undefined)\n            throw new RangeError(`unmatched Hebrew month: ${month}`);\n        const daysInMonth = monthInfo[1].days;\n        return typeof daysInMonth === 'number' ? daysInMonth : daysInMonth[minOrMax];\n    }\n    /** Take a guess at what ISO date a particular calendar date corresponds to */\n    estimateIsoDate(calendarDate) {\n        const { year } = calendarDate;\n        return { year: year - 3760, month: 1, day: 1 };\n    }\n    getMonthCode(year, month) {\n        if (this.inLeapYear({ year })) {\n            return month === 6 ? buildMonthCode(5, true) : buildMonthCode(month < 6 ? month : month - 1);\n        }\n        else {\n            return buildMonthCode(month);\n        }\n    }\n    adjustCalendarDate(calendarDate, cache, overflow = 'constrain', fromLegacyDate = false) {\n        // The incoming type is actually CalendarDate (same as args to\n        // Calendar.dateFromParams) but TS isn't smart enough to follow all the\n        // reassignments below, so as an alternative to 10+ type casts, we'll lie\n        // here and claim that the type has `day` and `year` filled in already.\n        let { year, eraYear, month, monthCode, day, monthExtra } = calendarDate;\n        if (year === undefined && eraYear !== undefined)\n            year = eraYear;\n        if (eraYear === undefined && year !== undefined)\n            eraYear = year;\n        if (fromLegacyDate) {\n            // In Pre Node-14 V8, DateTimeFormat.formatToParts `month: 'numeric'`\n            // output returns the numeric equivalent of `month` as a string, meaning\n            // that `'6'` in a leap year is Adar I, while `'6'` in a non-leap year\n            // means Adar. In this case, `month` will already be correct and no action\n            // is needed. However, in Node 14 and later formatToParts returns the name\n            // of the Hebrew month (e.g. \"Tevet\"), so we'll need to look up the\n            // correct `month` using the string name as a key.\n            if (monthExtra) {\n                const monthInfo = this.months[monthExtra];\n                if (!monthInfo)\n                    throw new RangeError(`Unrecognized month from formatToParts: ${monthExtra}`);\n                month = this.inLeapYear({ year }) ? monthInfo.leap : monthInfo.regular;\n            }\n            // Because we're getting data from legacy Date, then `month` will always be present\n            monthCode = this.getMonthCode(year, month);\n            const result = { year, month: month, day, era: undefined, eraYear, monthCode };\n            return result;\n        }\n        else {\n            // When called without input coming from legacy Date output, simply ensure\n            // that all fields are present.\n            this.validateCalendarDate(calendarDate);\n            if (month === undefined) {\n                if (monthCode.endsWith('L')) {\n                    if (monthCode !== 'M05L') {\n                        throw new RangeError(`Hebrew leap month must have monthCode M05L, not ${monthCode}`);\n                    }\n                    month = 6;\n                    if (!this.inLeapYear({ year })) {\n                        if (overflow === 'reject') {\n                            throw new RangeError(`Hebrew monthCode M05L is invalid in year ${year} which is not a leap year`);\n                        }\n                        else {\n                            // constrain to last day of previous month (Av)\n                            month = 5;\n                            day = 30;\n                            monthCode = 'M05';\n                        }\n                    }\n                }\n                else {\n                    month = monthCodeNumberPart(monthCode);\n                    // if leap month is before this one, the month index is one more than the month code\n                    if (this.inLeapYear({ year }) && month >= 6)\n                        month++;\n                    const largestMonth = this.monthsInYear({ year });\n                    if (month < 1 || month > largestMonth)\n                        throw new RangeError(`Invalid monthCode: ${monthCode}`);\n                }\n            }\n            else {\n                if (overflow === 'reject') {\n                    ES.RejectToRange(month, 1, this.monthsInYear({ year }));\n                    ES.RejectToRange(day, 1, this.maximumMonthLength({ year, month }));\n                }\n                else {\n                    month = ES.ConstrainToRange(month, 1, this.monthsInYear({ year }));\n                    day = ES.ConstrainToRange(day, 1, this.maximumMonthLength({ year, month }));\n                }\n                if (monthCode === undefined) {\n                    monthCode = this.getMonthCode(year, month);\n                }\n                else {\n                    const calculatedMonthCode = this.getMonthCode(year, month);\n                    if (calculatedMonthCode !== monthCode) {\n                        throw new RangeError(`monthCode ${monthCode} doesn't correspond to month ${month} in Hebrew year ${year}`);\n                    }\n                }\n            }\n            return { ...calendarDate, day, month, monthCode: monthCode, year, eraYear };\n        }\n    }\n}\n/**\n * For Temporal purposes, the Islamic calendar is simple because it's always the\n * same 12 months in the same order.\n */\nclass IslamicBaseHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.calendarType = 'lunar';\n        this.DAYS_PER_ISLAMIC_YEAR = 354 + 11 / 30;\n        this.DAYS_PER_ISO_YEAR = 365.2425;\n        this.constantEra = 'ah';\n    }\n    inLeapYear(calendarDate, cache) {\n        // In leap years, the 12th month has 30 days. In non-leap years: 29.\n        const days = this.daysInMonth({ year: calendarDate.year, month: 12, day: 1 }, cache);\n        return days === 30;\n    }\n    monthsInYear( /* calendarYear, cache */) {\n        return 12;\n    }\n    minimumMonthLength( /* calendarDate */) {\n        return 29;\n    }\n    maximumMonthLength( /* calendarDate */) {\n        return 30;\n    }\n    estimateIsoDate(calendarDate) {\n        const { year } = this.adjustCalendarDate(calendarDate);\n        return { year: MathFloor((year * this.DAYS_PER_ISLAMIC_YEAR) / this.DAYS_PER_ISO_YEAR) + 622, month: 1, day: 1 };\n    }\n}\n// There are 6 Islamic calendars with the same implementation in this polyfill.\n// They vary only in their ID. They do emit different output from the underlying\n// Intl implementation, but our code for each of them is identical.\nclass IslamicHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic';\n    }\n}\nclass IslamicUmalquraHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-umalqura';\n    }\n}\nclass IslamicTblaHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-tbla';\n    }\n}\nclass IslamicCivilHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-civil';\n    }\n}\nclass IslamicRgsaHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-rgsa';\n    }\n}\nclass IslamicCcHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamicc';\n    }\n}\nclass PersianHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.id = 'persian';\n        this.calendarType = 'solar';\n        this.constantEra = 'ap';\n    }\n    inLeapYear(calendarDate, cache) {\n        // Same logic (count days in the last month) for Persian as for Islamic,\n        // even though Persian is solar and Islamic is lunar.\n        return IslamicHelper.prototype.inLeapYear.call(this, calendarDate, cache);\n    }\n    monthsInYear( /* calendarYear, cache */) {\n        return 12;\n    }\n    minimumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        if (month === 12)\n            return 29;\n        return month <= 6 ? 31 : 30;\n    }\n    maximumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        if (month === 12)\n            return 30;\n        return month <= 6 ? 31 : 30;\n    }\n    estimateIsoDate(calendarDate) {\n        const { year } = this.adjustCalendarDate(calendarDate);\n        return { year: year + 621, month: 1, day: 1 };\n    }\n}\nclass IndianHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.id = 'indian';\n        this.calendarType = 'solar';\n        this.constantEra = 'saka';\n        // Indian months always start at the same well-known Gregorian month and\n        // day. So this conversion is easy and fast. See\n        // https://en.wikipedia.org/wiki/Indian_national_calendar\n        this.months = {\n            1: { length: 30, month: 3, day: 22, leap: { length: 31, month: 3, day: 21 } },\n            2: { length: 31, month: 4, day: 21 },\n            3: { length: 31, month: 5, day: 22 },\n            4: { length: 31, month: 6, day: 22 },\n            5: { length: 31, month: 7, day: 23 },\n            6: { length: 31, month: 8, day: 23 },\n            7: { length: 30, month: 9, day: 23 },\n            8: { length: 30, month: 10, day: 23 },\n            9: { length: 30, month: 11, day: 22 },\n            10: { length: 30, month: 12, day: 22 },\n            11: { length: 30, month: 1, nextYear: true, day: 21 },\n            12: { length: 30, month: 2, nextYear: true, day: 20 }\n        };\n        // https://bugs.chromium.org/p/v8/issues/detail?id=10529 causes Intl's Indian\n        // calendar output to fail for all dates before 0001-01-01 ISO.  For example,\n        // in Node 12 0000-01-01 is calculated as 6146/12/-583 instead of 10/11/-79 as\n        // expected.\n        this.vulnerableToBceBug = new Date('0000-01-01T00:00Z').toLocaleDateString('en-US-u-ca-indian', { timeZone: 'UTC' }) !== '10/11/-79 Saka';\n    }\n    inLeapYear(calendarDate) {\n        // From https://en.wikipedia.org/wiki/Indian_national_calendar:\n        // Years are counted in the Saka era, which starts its year 0 in the year 78\n        // of the Common Era. To determine leap years, add 78 to the Saka year – if\n        // the result is a leap year in the Gregorian calendar, then the Saka year\n        // is a leap year as well.\n        return isGregorianLeapYear(calendarDate.year + 78);\n    }\n    monthsInYear( /* calendarYear, cache */) {\n        return 12;\n    }\n    minimumMonthLength(calendarDate) {\n        return this.getMonthInfo(calendarDate).length;\n    }\n    maximumMonthLength(calendarDate) {\n        return this.getMonthInfo(calendarDate).length;\n    }\n    getMonthInfo(calendarDate) {\n        const { month } = calendarDate;\n        let monthInfo = this.months[month];\n        if (monthInfo === undefined)\n            throw new RangeError(`Invalid month: ${month}`);\n        if (this.inLeapYear(calendarDate) && monthInfo.leap)\n            monthInfo = monthInfo.leap;\n        return monthInfo;\n    }\n    estimateIsoDate(calendarDateParam) {\n        // FYI, this \"estimate\" is always the exact ISO date, which makes the Indian\n        // calendar fast!\n        const calendarDate = this.adjustCalendarDate(calendarDateParam);\n        const monthInfo = this.getMonthInfo(calendarDate);\n        const isoYear = calendarDate.year + 78 + (monthInfo.nextYear ? 1 : 0);\n        const isoMonth = monthInfo.month;\n        const isoDay = monthInfo.day;\n        const isoDate = ES.AddISODate(isoYear, isoMonth, isoDay, 0, 0, 0, calendarDate.day - 1, 'constrain');\n        return isoDate;\n    }\n    checkIcuBugs(isoDate) {\n        if (this.vulnerableToBceBug && isoDate.year < 1) {\n            throw new RangeError(`calendar '${this.id}' is broken for ISO dates before 0001-01-01` +\n                ' (see https://bugs.chromium.org/p/v8/issues/detail?id=10529)');\n        }\n    }\n}\n/**\n * This function adds additional metadata that makes it easier to work with\n * eras. Note that it mutates and normalizes the original era objects, which is\n * OK because this is non-observable, internal-only metadata.\n *\n * The result is an array of eras with the shape defined above.\n * */\nfunction adjustEras(erasParam) {\n    let eras = erasParam;\n    if (eras.length === 0) {\n        throw new RangeError('Invalid era data: eras are required');\n    }\n    if (eras.length === 1 && eras[0].reverseOf) {\n        throw new RangeError('Invalid era data: anchor era cannot count years backwards');\n    }\n    if (eras.length === 1 && !eras[0].name) {\n        throw new RangeError('Invalid era data: at least one named era is required');\n    }\n    if (eras.filter((e) => e.reverseOf != null).length > 1) {\n        throw new RangeError('Invalid era data: only one era can count years backwards');\n    }\n    // Find the \"anchor era\" which is the era used for (era-less) `year`. Reversed\n    // eras can never be anchors. The era without an `anchorEpoch` property is the\n    // anchor.\n    let anchorEra;\n    eras.forEach((e) => {\n        if (e.isAnchor || (!e.anchorEpoch && !e.reverseOf)) {\n            if (anchorEra)\n                throw new RangeError('Invalid era data: cannot have multiple anchor eras');\n            anchorEra = e;\n            e.anchorEpoch = { year: e.hasYearZero ? 0 : 1 };\n        }\n        else if (!e.name) {\n            throw new RangeError('If era name is blank, it must be the anchor era');\n        }\n    });\n    // If the era name is undefined, then it's an anchor that doesn't interact\n    // with eras at all. For example, Japanese `year` is always the same as ISO\n    // `year`.  So this \"era\" is the anchor era but isn't used for era matching.\n    // Strip it from the list that's returned.\n    eras = eras.filter((e) => e.name);\n    eras.forEach((e) => {\n        // Some eras are mirror images of another era e.g. B.C. is the reverse of A.D.\n        // Replace the string-valued \"reverseOf\" property with the actual era object\n        // that's reversed.\n        const { reverseOf } = e;\n        if (reverseOf) {\n            const reversedEra = eras.find((era) => era.name === reverseOf);\n            if (reversedEra === undefined)\n                throw new RangeError(`Invalid era data: unmatched reverseOf era: ${reverseOf}`);\n            e.reverseOf = reversedEra;\n            e.anchorEpoch = reversedEra.anchorEpoch;\n            e.isoEpoch = reversedEra.isoEpoch;\n        }\n        if (e.anchorEpoch.month === undefined)\n            e.anchorEpoch.month = 1;\n        if (e.anchorEpoch.day === undefined)\n            e.anchorEpoch.day = 1;\n    });\n    // Ensure that the latest epoch is first in the array. This lets us try to\n    // match eras in index order, with the last era getting the remaining older\n    // years. Any reverse-signed era must be at the end.\n    ArraySort.call(eras, (e1, e2) => {\n        if (e1.reverseOf)\n            return 1;\n        if (e2.reverseOf)\n            return -1;\n        if (!e1.isoEpoch || !e2.isoEpoch)\n            throw new RangeError('Invalid era data: missing ISO epoch');\n        return e2.isoEpoch.year - e1.isoEpoch.year;\n    });\n    // If there's a reversed era, then the one before it must be the era that's\n    // being reversed.\n    const lastEraReversed = eras[eras.length - 1].reverseOf;\n    if (lastEraReversed) {\n        if (lastEraReversed !== eras[eras.length - 2])\n            throw new RangeError('Invalid era data: invalid reverse-sign era');\n    }\n    // Finally, add a \"genericName\" property in the format \"era{n} where `n` is\n    // zero-based index, with the oldest era being zero. This format is used by\n    // older versions of ICU data.\n    eras.forEach((e, i) => {\n        e.genericName = `era${eras.length - 1 - i}`;\n    });\n    return { eras: eras, anchorEra: (anchorEra || eras[0]) };\n}\nfunction isGregorianLeapYear(year) {\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n/** Base for all Gregorian-like calendars. */\nclass GregorianBaseHelper extends HelperBase {\n    constructor(id, originalEras) {\n        super();\n        this.calendarType = 'solar';\n        // Several calendars based on the Gregorian calendar use Julian dates (not\n        // proleptic Gregorian dates) before the Julian switchover in Oct 1582. See\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=1173158.\n        this.v8IsVulnerableToJulianBug = new Date('+001001-01-01T00:00Z')\n            .toLocaleDateString('en-US-u-ca-japanese', { timeZone: 'UTC' })\n            .startsWith('12');\n        this.calendarIsVulnerableToJulianBug = false;\n        this.id = id;\n        const { eras, anchorEra } = adjustEras(originalEras);\n        this.anchorEra = anchorEra;\n        this.eras = eras;\n    }\n    inLeapYear(calendarDate) {\n        // Calendars that don't override this method use the same months and leap\n        // years as Gregorian. Once we know the ISO year corresponding to the\n        // calendar year, we'll know if it's a leap year or not.\n        const { year } = this.estimateIsoDate({ month: 1, day: 1, year: calendarDate.year });\n        return isGregorianLeapYear(year);\n    }\n    monthsInYear( /* calendarDate */) {\n        return 12;\n    }\n    minimumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        if (month === 2)\n            return this.inLeapYear(calendarDate) ? 29 : 28;\n        return [4, 6, 9, 11].indexOf(month) >= 0 ? 30 : 31;\n    }\n    maximumMonthLength(calendarDate) {\n        return this.minimumMonthLength(calendarDate);\n    }\n    /** Fill in missing parts of the (year, era, eraYear) tuple */\n    completeEraYear(calendarDate) {\n        const checkField = (name, value) => {\n            const currentValue = calendarDate[name];\n            if (currentValue != null && currentValue != value) {\n                throw new RangeError(`Input ${name} ${currentValue} doesn't match calculated value ${value}`);\n            }\n        };\n        const eraFromYear = (year) => {\n            let eraYear;\n            const adjustedCalendarDate = { ...calendarDate, year };\n            const matchingEra = this.eras.find((e, i) => {\n                if (i === this.eras.length - 1) {\n                    if (e.reverseOf) {\n                        // This is a reverse-sign era (like BCE) which must be the oldest\n                        // era. Count years backwards.\n                        if (year > 0)\n                            throw new RangeError(`Signed year ${year} is invalid for era ${e.name}`);\n                        eraYear = e.anchorEpoch.year - year;\n                        return true;\n                    }\n                    // last era always gets all \"leftover\" (older than epoch) years,\n                    // so no need for a comparison like below.\n                    eraYear = year - e.anchorEpoch.year + (e.hasYearZero ? 0 : 1);\n                    return true;\n                }\n                const comparison = this.compareCalendarDates(adjustedCalendarDate, e.anchorEpoch);\n                if (comparison >= 0) {\n                    eraYear = year - e.anchorEpoch.year + (e.hasYearZero ? 0 : 1);\n                    return true;\n                }\n                return false;\n            });\n            if (!matchingEra)\n                throw new RangeError(`Year ${year} was not matched by any era`);\n            return { eraYear: eraYear, era: matchingEra.name };\n        };\n        let { year, eraYear, era } = calendarDate;\n        if (year != null) {\n            ({ eraYear, era } = eraFromYear(year));\n            checkField('era', era);\n            checkField('eraYear', eraYear);\n        }\n        else if (eraYear != null) {\n            const matchingEra = era === undefined ? undefined : this.eras.find((e) => e.name === era || e.genericName === era);\n            if (!matchingEra)\n                throw new RangeError(`Era ${era} (ISO year ${eraYear}) was not matched by any era`);\n            if (eraYear < 1 && matchingEra.reverseOf) {\n                throw new RangeError(`Years in ${era} era must be positive, not ${year}`);\n            }\n            if (matchingEra.reverseOf) {\n                year = matchingEra.anchorEpoch.year - eraYear;\n            }\n            else {\n                year = eraYear + matchingEra.anchorEpoch.year - (matchingEra.hasYearZero ? 0 : 1);\n            }\n            checkField('year', year);\n            // We'll accept dates where the month/day is earlier than the start of\n            // the era or after its end as long as it's in the same year. If that\n            // happens, we'll adjust the era/eraYear pair to be the correct era for\n            // the `year`.\n            ({ eraYear, era } = eraFromYear(year));\n        }\n        else {\n            throw new RangeError('Either `year` or `eraYear` and `era` are required');\n        }\n        return { ...calendarDate, year, eraYear, era };\n    }\n    adjustCalendarDate(calendarDateParam, cache, overflow = 'constrain') {\n        let calendarDate = calendarDateParam;\n        // Because this is not a lunisolar calendar, it's safe to convert monthCode to a number\n        const { month, monthCode } = calendarDate;\n        if (month === undefined)\n            calendarDate = { ...calendarDate, month: monthCodeNumberPart(monthCode) };\n        this.validateCalendarDate(calendarDate);\n        calendarDate = this.completeEraYear(calendarDate);\n        return super.adjustCalendarDate(calendarDate, cache, overflow);\n    }\n    estimateIsoDate(calendarDateParam) {\n        const calendarDate = this.adjustCalendarDate(calendarDateParam);\n        const { year, month, day } = calendarDate;\n        const { anchorEra } = this;\n        const isoYearEstimate = year + anchorEra.isoEpoch.year - (anchorEra.hasYearZero ? 0 : 1);\n        return ES.RegulateISODate(isoYearEstimate, month, day, 'constrain');\n    }\n    checkIcuBugs(isoDate) {\n        if (this.calendarIsVulnerableToJulianBug && this.v8IsVulnerableToJulianBug) {\n            const beforeJulianSwitch = ES.CompareISODate(isoDate.year, isoDate.month, isoDate.day, 1582, 10, 15) < 0;\n            if (beforeJulianSwitch) {\n                throw new RangeError(`calendar '${this.id}' is broken for ISO dates before 1582-10-15` +\n                    ' (see https://bugs.chromium.org/p/chromium/issues/detail?id=1173158)');\n            }\n        }\n    }\n}\nclass OrthodoxBaseHelper extends GregorianBaseHelper {\n    constructor(id, originalEras) {\n        super(id, originalEras);\n    }\n    inLeapYear(calendarDate) {\n        // Leap years happen one year before the Julian leap year. Note that this\n        // calendar is based on the Julian calendar which has a leap year every 4\n        // years, unlike the Gregorian calendar which doesn't have leap years on\n        // years divisible by 100 except years divisible by 400.\n        //\n        // Note that we're assuming that leap years in before-epoch times match\n        // how leap years are defined now. This is probably not accurate but I'm\n        // not sure how better to do it.\n        const { year } = calendarDate;\n        return (year + 1) % 4 === 0;\n    }\n    monthsInYear( /* calendarDate */) {\n        return 13;\n    }\n    minimumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        // Ethiopian/Coptic calendars have 12 30-day months and an extra 5-6 day 13th month.\n        if (month === 13)\n            return this.inLeapYear(calendarDate) ? 6 : 5;\n        return 30;\n    }\n    maximumMonthLength(calendarDate) {\n        return this.minimumMonthLength(calendarDate);\n    }\n}\n// `coptic` and `ethiopic` calendars are very similar to `ethioaa` calendar,\n// with the following differences:\n// - Coptic uses BCE-like positive numbers for years before its epoch (the other\n//   two use negative year numbers before epoch)\n// - Coptic has a different epoch date\n// - Ethiopic has an additional second era that starts at the same date as the\n//   zero era of ethioaa.\nclass EthioaaHelper extends OrthodoxBaseHelper {\n    constructor() {\n        super('ethioaa', [{ name: 'era0', isoEpoch: { year: -5492, month: 7, day: 17 } }]);\n    }\n}\nclass CopticHelper extends OrthodoxBaseHelper {\n    constructor() {\n        super('coptic', [\n            { name: 'era1', isoEpoch: { year: 284, month: 8, day: 29 } },\n            { name: 'era0', reverseOf: 'era1' }\n        ]);\n    }\n}\n// Anchor is currently the older era to match ethioaa, but should it be the newer era?\n// See https://github.com/tc39/ecma402/issues/534 for discussion.\nclass EthiopicHelper extends OrthodoxBaseHelper {\n    constructor() {\n        super('ethiopic', [\n            { name: 'era0', isoEpoch: { year: -5492, month: 7, day: 17 } },\n            { name: 'era1', isoEpoch: { year: 8, month: 8, day: 27 }, anchorEpoch: { year: 5501 } }\n        ]);\n    }\n}\nclass RocHelper extends GregorianBaseHelper {\n    constructor() {\n        super('roc', [\n            { name: 'minguo', isoEpoch: { year: 1912, month: 1, day: 1 } },\n            { name: 'before-roc', reverseOf: 'minguo' }\n        ]);\n        this.calendarIsVulnerableToJulianBug = true;\n    }\n}\nclass BuddhistHelper extends GregorianBaseHelper {\n    constructor() {\n        super('buddhist', [{ name: 'be', hasYearZero: true, isoEpoch: { year: -543, month: 1, day: 1 } }]);\n        this.calendarIsVulnerableToJulianBug = true;\n    }\n}\nclass GregoryHelper extends GregorianBaseHelper {\n    constructor() {\n        super('gregory', [\n            { name: 'ce', isoEpoch: { year: 1, month: 1, day: 1 } },\n            { name: 'bce', reverseOf: 'ce' }\n        ]);\n    }\n    reviseIntlEra(calendarDate /*, isoDate: IsoDate*/) {\n        let { era, eraYear } = calendarDate;\n        // Firefox 96 introduced a bug where the `'short'` format of the era\n        // option mistakenly returns the one-letter (narrow) format instead. The\n        // code below handles either the correct or Firefox-buggy format. See\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=1752253\n        if (era === 'bc' || era === 'b')\n            era = 'bce';\n        if (era === 'ad' || era === 'a')\n            era = 'ce';\n        return { era, eraYear };\n    }\n}\n// NOTE: Only the 5 modern eras (Meiji and later) are included. For dates\n// before Meiji 1, the `ce` and `bce` eras are used. Challenges with pre-Meiji\n// eras include:\n// - Start/end dates of older eras are not precisely defined, which is\n//   challenging given Temporal's need for precision\n// - Some era dates and/or names are disputed by historians\n// - As historical research proceeds, new eras are discovered and existing era\n//   dates are modified, leading to considerable churn which is not good for\n//   Temporal use.\n//  - The earliest era (in 645 CE) may not end up being the earliest depending\n//    on future historical scholarship\n//  - Before Meiji, Japan used a lunar (or lunisolar?) calendar but AFAIK\n//    that's not reflected in the ICU implementation.\n//\n// For more discussion: https://github.com/tc39/proposal-temporal/issues/526.\n//\n// Here's a full list of CLDR/ICU eras:\n// https://github.com/unicode-org/icu/blob/master/icu4c/source/data/locales/root.txt#L1582-L1818\n// https://github.com/unicode-org/cldr/blob/master/common/supplemental/supplementalData.xml#L4310-L4546\n//\n// NOTE: Japan started using the Gregorian calendar in 6 Meiji, replacing a\n// lunisolar calendar. So the day before January 1 of 6 Meiji (1873) was not\n// December 31, but December 2, of 5 Meiji (1872). The existing Ecma-402\n// Japanese calendar doesn't seem to take this into account, so neither do we:\n// > args = ['en-ca-u-ca-japanese', { era: 'short' }]\n// > new Date('1873-01-01T12:00').toLocaleString(...args)\n// '1 1, 6 Meiji, 12:00:00 PM'\n// > new Date('1872-12-31T12:00').toLocaleString(...args)\n// '12 31, 5 Meiji, 12:00:00 PM'\nclass JapaneseHelper extends GregorianBaseHelper {\n    constructor() {\n        super('japanese', [\n            // The Japanese calendar `year` is just the ISO year, because (unlike other\n            // ICU calendars) there's no obvious \"default era\", we use the ISO year.\n            { name: 'reiwa', isoEpoch: { year: 2019, month: 5, day: 1 }, anchorEpoch: { year: 2019, month: 5, day: 1 } },\n            { name: 'heisei', isoEpoch: { year: 1989, month: 1, day: 8 }, anchorEpoch: { year: 1989, month: 1, day: 8 } },\n            { name: 'showa', isoEpoch: { year: 1926, month: 12, day: 25 }, anchorEpoch: { year: 1926, month: 12, day: 25 } },\n            { name: 'taisho', isoEpoch: { year: 1912, month: 7, day: 30 }, anchorEpoch: { year: 1912, month: 7, day: 30 } },\n            { name: 'meiji', isoEpoch: { year: 1868, month: 9, day: 8 }, anchorEpoch: { year: 1868, month: 9, day: 8 } },\n            { name: 'ce', isoEpoch: { year: 1, month: 1, day: 1 } },\n            { name: 'bce', reverseOf: 'ce' }\n        ]);\n        this.calendarIsVulnerableToJulianBug = true;\n        // The last 3 Japanese eras confusingly return only one character in the\n        // default \"short\" era, so need to use the long format.\n        this.eraLength = 'long';\n    }\n    reviseIntlEra(calendarDate, isoDate) {\n        const { era, eraYear } = calendarDate;\n        const { year: isoYear } = isoDate;\n        if (this.eras.find((e) => e.name === era))\n            return { era, eraYear };\n        return (isoYear < 1 ? { era: 'bce', eraYear: 1 - isoYear } : { era: 'ce', eraYear: isoYear });\n    }\n}\nclass ChineseBaseHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.calendarType = 'lunisolar';\n        // All built-in calendars except Chinese/Dangi and Hebrew use an era\n        this.hasEra = false;\n    }\n    inLeapYear(calendarDate, cache) {\n        const months = this.getMonthList(calendarDate.year, cache);\n        return ObjectEntries(months).length === 13;\n    }\n    monthsInYear(calendarDate, cache) {\n        return this.inLeapYear(calendarDate, cache) ? 13 : 12;\n    }\n    minimumMonthLength( /* calendarDate */) {\n        return 29;\n    }\n    maximumMonthLength( /* calendarDate */) {\n        return 30;\n    }\n    getMonthList(calendarYear, cache) {\n        if (calendarYear === undefined) {\n            throw new TypeError('Missing year');\n        }\n        const key = JSON.stringify({ func: 'getMonthList', calendarYear, id: this.id });\n        const cached = cache.get(key);\n        if (cached)\n            return cached;\n        const dateTimeFormat = this.getFormatter();\n        const getCalendarDate = (isoYear, daysPastFeb1) => {\n            const isoStringFeb1 = toUtcIsoDateString({ isoYear, isoMonth: 2, isoDay: 1 });\n            const legacyDate = new Date(isoStringFeb1);\n            // Now add the requested number of days, which may wrap to the next month.\n            legacyDate.setUTCDate(daysPastFeb1 + 1);\n            const newYearGuess = dateTimeFormat.formatToParts(legacyDate);\n            const calendarMonthString = newYearGuess.find((tv) => tv.type === 'month').value;\n            const calendarDay = +newYearGuess.find((tv) => tv.type === 'day').value;\n            let calendarYearToVerify = newYearGuess.find((tv) => tv.type === 'relatedYear');\n            if (calendarYearToVerify !== undefined) {\n                calendarYearToVerify = +calendarYearToVerify.value;\n            }\n            else {\n                // Node 12 has outdated ICU data that lacks the `relatedYear` field in the\n                // output of Intl.DateTimeFormat.formatToParts.\n                throw new RangeError(`Intl.DateTimeFormat.formatToParts lacks relatedYear in ${this.id} calendar. Try Node 14+ or modern browsers.`);\n            }\n            return { calendarMonthString, calendarDay, calendarYearToVerify };\n        };\n        // First, find a date close to Chinese New Year. Feb 17 will either be in\n        // the first month or near the end of the last month of the previous year.\n        let isoDaysDelta = 17;\n        let { calendarMonthString, calendarDay, calendarYearToVerify } = getCalendarDate(calendarYear, isoDaysDelta);\n        // If we didn't guess the first month correctly, add (almost in some months)\n        // a lunar month\n        if (calendarMonthString !== '1') {\n            isoDaysDelta += 29;\n            ({ calendarMonthString, calendarDay } = getCalendarDate(calendarYear, isoDaysDelta));\n        }\n        // Now back up to near the start of the first month, but not too near that\n        // off-by-one issues matter.\n        isoDaysDelta -= calendarDay - 5;\n        const result = {};\n        let monthIndex = 1;\n        let oldCalendarDay;\n        let oldMonthString;\n        let done = false;\n        do {\n            ({ calendarMonthString, calendarDay, calendarYearToVerify } = getCalendarDate(calendarYear, isoDaysDelta));\n            if (oldCalendarDay) {\n                result[oldMonthString].daysInMonth = oldCalendarDay + 30 - calendarDay;\n            }\n            if (calendarYearToVerify !== calendarYear) {\n                done = true;\n            }\n            else {\n                result[calendarMonthString] = { monthIndex: monthIndex++ };\n                // Move to the next month. Because months are sometimes 29 days, the day of the\n                // calendar month will move forward slowly but not enough to flip over to a new\n                // month before the loop ends at 12-13 months.\n                isoDaysDelta += 30;\n            }\n            oldCalendarDay = calendarDay;\n            oldMonthString = calendarMonthString;\n        } while (!done);\n        result[oldMonthString].daysInMonth = oldCalendarDay + 30 - calendarDay;\n        cache.set(key, result);\n        return result;\n    }\n    estimateIsoDate(calendarDate) {\n        const { year, month } = calendarDate;\n        return { year, month: month >= 12 ? 12 : month + 1, day: 1 };\n    }\n    adjustCalendarDate(calendarDate, cache, overflow = 'constrain', fromLegacyDate = false) {\n        let { year, month, monthExtra, day, monthCode, eraYear } = calendarDate;\n        if (fromLegacyDate) {\n            // Legacy Date output returns a string that's an integer with an optional\n            // \"bis\" suffix used only by the Chinese/Dangi calendar to indicate a leap\n            // month. Below we'll normalize the output.\n            year = eraYear;\n            if (monthExtra && monthExtra !== 'bis')\n                throw new RangeError(`Unexpected leap month suffix: ${monthExtra}`);\n            const monthCode = buildMonthCode(month, monthExtra !== undefined);\n            const monthString = `${month}${monthExtra || ''}`;\n            const months = this.getMonthList(year, cache);\n            const monthInfo = months[monthString];\n            if (monthInfo === undefined)\n                throw new RangeError(`Unmatched month ${monthString} in Chinese year ${year}`);\n            month = monthInfo.monthIndex;\n            return { year: year, month, day: day, era: undefined, eraYear, monthCode };\n        }\n        else {\n            // When called without input coming from legacy Date output,\n            // simply ensure that all fields are present.\n            this.validateCalendarDate(calendarDate);\n            if (year === undefined)\n                year = eraYear;\n            if (eraYear === undefined)\n                eraYear = year;\n            if (month === undefined) {\n                const months = this.getMonthList(year, cache);\n                let numberPart = monthCode.replace('L', 'bis').slice(1);\n                if (numberPart[0] === '0')\n                    numberPart = numberPart.slice(1);\n                let monthInfo = months[numberPart];\n                month = monthInfo && monthInfo.monthIndex;\n                // If this leap month isn't present in this year, constrain down to the last day of the previous month.\n                if (month === undefined &&\n                    monthCode.endsWith('L') &&\n                    !ArrayIncludes.call(['M01L', 'M12L', 'M13L'], monthCode) &&\n                    overflow === 'constrain') {\n                    let withoutML = monthCode.slice(1, -1);\n                    if (withoutML[0] === '0')\n                        withoutML = withoutML.slice(1);\n                    monthInfo = months[withoutML];\n                    if (monthInfo) {\n                        ({ daysInMonth: day, monthIndex: month } = monthInfo);\n                        monthCode = buildMonthCode(withoutML);\n                    }\n                }\n                if (month === undefined) {\n                    throw new RangeError(`Unmatched month ${monthCode} in Chinese year ${year}`);\n                }\n            }\n            else if (monthCode === undefined) {\n                const months = this.getMonthList(year, cache);\n                const monthEntries = ObjectEntries(months);\n                const largestMonth = monthEntries.length;\n                if (overflow === 'reject') {\n                    ES.RejectToRange(month, 1, largestMonth);\n                    ES.RejectToRange(day, 1, this.maximumMonthLength());\n                }\n                else {\n                    month = ES.ConstrainToRange(month, 1, largestMonth);\n                    day = ES.ConstrainToRange(day, 1, this.maximumMonthLength());\n                }\n                const matchingMonthEntry = monthEntries.find(([, v]) => v.monthIndex === month);\n                if (matchingMonthEntry === undefined) {\n                    throw new RangeError(`Invalid month ${month} in Chinese year ${year}`);\n                }\n                monthCode = buildMonthCode(matchingMonthEntry[0].replace('bis', ''), matchingMonthEntry[0].indexOf('bis') !== -1);\n            }\n            else {\n                // Both month and monthCode are present. Make sure they don't conflict.\n                const months = this.getMonthList(year, cache);\n                let numberPart = monthCode.replace('L', 'bis').slice(1);\n                if (numberPart[0] === '0')\n                    numberPart = numberPart.slice(1);\n                const monthInfo = months[numberPart];\n                if (!monthInfo)\n                    throw new RangeError(`Unmatched monthCode ${monthCode} in Chinese year ${year}`);\n                if (month !== monthInfo.monthIndex) {\n                    throw new RangeError(`monthCode ${monthCode} doesn't correspond to month ${month} in Chinese year ${year}`);\n                }\n            }\n            return {\n                ...calendarDate,\n                year: year,\n                eraYear,\n                month,\n                monthCode: monthCode,\n                day: day\n            };\n        }\n    }\n}\nclass ChineseHelper extends ChineseBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'chinese';\n    }\n}\n// Dangi (Korean) calendar has same implementation as Chinese\nclass DangiHelper extends ChineseBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'dangi';\n    }\n}\n/**\n * Common implementation of all non-ISO calendars.\n * Per-calendar id and logic live in `id` and `helper` properties attached later.\n * This split allowed an easy separation between code that was similar between\n * ISO and non-ISO implementations vs. code that was very different.\n */\nconst nonIsoImpl = {\n    // `helper` is added when this object is spread into each calendar's\n    // implementation\n    helper: undefined,\n    dateFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        const cache = new OneObjectCache();\n        // Intentionally alphabetical\n        const fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'era', 'eraYear', 'month', 'monthCode', 'year'], ['day']);\n        const { year, month, day } = this.helper.calendarToIsoDate(fields, overflow, cache);\n        const result = ES.CreateTemporalDate(year, month, day, calendar);\n        cache.setObject(result);\n        return result;\n    },\n    yearMonthFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        const cache = new OneObjectCache();\n        // Intentionally alphabetical\n        const fields = ES.PrepareTemporalFields(fieldsParam, ['era', 'eraYear', 'month', 'monthCode', 'year'], []);\n        const { year, month, day } = this.helper.calendarToIsoDate({ ...fields, day: 1 }, overflow, cache);\n        const result = ES.CreateTemporalYearMonth(year, month, calendar, /* referenceISODay = */ day);\n        cache.setObject(result);\n        return result;\n    },\n    monthDayFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        // All built-in calendars require `day`, but some allow other fields to be\n        // substituted for `month`. And for lunisolar calendars, either `monthCode`\n        // or `year` must be provided because `month` is ambiguous without a year or\n        // a code.\n        const cache = new OneObjectCache();\n        const fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'era', 'eraYear', 'month', 'monthCode', 'year'], ['day']);\n        const { year, month, day } = this.helper.monthDayFromFields(fields, overflow, cache);\n        // `year` is a reference year where this month/day exists in this calendar\n        const result = ES.CreateTemporalMonthDay(month, day, calendar, /* referenceISOYear = */ year);\n        cache.setObject(result);\n        return result;\n    },\n    fields(fieldsParam) {\n        let fields = fieldsParam;\n        if (ArrayIncludes.call(fields, 'year'))\n            fields = [...fields, 'era', 'eraYear'];\n        return fields;\n    },\n    mergeFields(fields, additionalFields) {\n        const fieldsCopy = { ...fields };\n        const additionalFieldsCopy = { ...additionalFields };\n        // era and eraYear are intentionally unused\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { month, monthCode, year, era, eraYear, ...original } = fieldsCopy;\n        const { month: newMonth, monthCode: newMonthCode, year: newYear, era: newEra, eraYear: newEraYear } = additionalFieldsCopy;\n        if (newMonth === undefined && newMonthCode === undefined) {\n            original.month = month;\n            original.monthCode = monthCode;\n        }\n        if (newYear === undefined && newEra === undefined && newEraYear === undefined) {\n            // Only `year` is needed. We don't set era and eraYear because it's\n            // possible to create a conflict for eras that start or end mid-year. See\n            // https://github.com/tc39/proposal-temporal/issues/1784.\n            original.year = year;\n        }\n        return { ...original, ...additionalFieldsCopy };\n    },\n    dateAdd(date, years, months, weeks, days, overflow, calendar) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const added = this.helper.addCalendar(calendarDate, { years, months, weeks, days }, overflow, cache);\n        const isoAdded = this.helper.calendarToIsoDate(added, 'constrain', cache);\n        const { year, month, day } = isoAdded;\n        const newTemporalObject = ES.CreateTemporalDate(year, month, day, calendar);\n        // The new object's cache starts with the cache of the old object\n        const newCache = new OneObjectCache(cache);\n        newCache.setObject(newTemporalObject);\n        return newTemporalObject;\n    },\n    dateUntil(one, two, largestUnit) {\n        const cacheOne = OneObjectCache.getCacheForObject(one);\n        const cacheTwo = OneObjectCache.getCacheForObject(two);\n        const calendarOne = this.helper.temporalToCalendarDate(one, cacheOne);\n        const calendarTwo = this.helper.temporalToCalendarDate(two, cacheTwo);\n        const result = this.helper.untilCalendar(calendarOne, calendarTwo, largestUnit, cacheOne);\n        return result;\n    },\n    year(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.year;\n    },\n    month(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.month;\n    },\n    day(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.day;\n    },\n    era(date) {\n        if (!this.helper.hasEra)\n            return undefined;\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.era;\n    },\n    eraYear(date) {\n        if (!this.helper.hasEra)\n            return undefined;\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.eraYear;\n    },\n    monthCode(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.monthCode;\n    },\n    dayOfWeek(date) {\n        return impl['iso8601'].dayOfWeek(date);\n    },\n    dayOfYear(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.isoToCalendarDate(date, cache);\n        const startOfYear = this.helper.startOfCalendarYear(calendarDate);\n        const diffDays = this.helper.calendarDaysUntil(startOfYear, calendarDate, cache);\n        return diffDays + 1;\n    },\n    weekOfYear(date) {\n        return impl['iso8601'].weekOfYear(date);\n    },\n    daysInWeek(date) {\n        return impl['iso8601'].daysInWeek(date);\n    },\n    daysInMonth(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        // Easy case: if the helper knows the length without any heavy calculation.\n        const max = this.helper.maximumMonthLength(calendarDate);\n        const min = this.helper.minimumMonthLength(calendarDate);\n        if (max === min)\n            return max;\n        // The harder case is where months vary every year, e.g. islamic calendars.\n        // Find the answer by calculating the difference in days between the first\n        // day of the current month and the first day of the next month.\n        const startOfMonthCalendar = this.helper.startOfCalendarMonth(calendarDate);\n        const startOfNextMonthCalendar = this.helper.addMonthsCalendar(startOfMonthCalendar, 1, 'constrain', cache);\n        const result = this.helper.calendarDaysUntil(startOfMonthCalendar, startOfNextMonthCalendar, cache);\n        return result;\n    },\n    daysInYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const startOfYearCalendar = this.helper.startOfCalendarYear(calendarDate);\n        const startOfNextYearCalendar = this.helper.addCalendar(startOfYearCalendar, { years: 1 }, 'constrain', cache);\n        const result = this.helper.calendarDaysUntil(startOfYearCalendar, startOfNextYearCalendar, cache);\n        return result;\n    },\n    monthsInYear(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const result = this.helper.monthsInYear(calendarDate, cache);\n        return result;\n    },\n    inLeapYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const result = this.helper.inLeapYear(calendarDate, cache);\n        return result;\n    }\n};\nfor (const Helper of [\n    HebrewHelper,\n    PersianHelper,\n    EthiopicHelper,\n    EthioaaHelper,\n    CopticHelper,\n    ChineseHelper,\n    DangiHelper,\n    RocHelper,\n    IndianHelper,\n    BuddhistHelper,\n    GregoryHelper,\n    JapaneseHelper,\n    IslamicHelper,\n    IslamicUmalquraHelper,\n    IslamicTblaHelper,\n    IslamicCivilHelper,\n    IslamicRgsaHelper,\n    IslamicCcHelper\n]) {\n    const helper = new Helper();\n    // Clone the singleton non-ISO implementation that's the same for all\n    // calendars. The `helper` property contains per-calendar logic.\n    impl[helper.id] = { ...nonIsoImpl, helper };\n}\n//# sourceMappingURL=calendar.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, EPOCHNANOSECONDS, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nexport class PlainDate {\n    constructor(isoYearParam, isoMonthParam, isoDayParam, calendarParam = ES.GetISO8601Calendar()) {\n        const isoYear = ES.ToIntegerThrowOnInfinity(isoYearParam);\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const isoDay = ES.ToIntegerThrowOnInfinity(isoDayParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectISODate in CreateTemporalDateSlots. This check\n        //       exists only to improve the error message.\n        if (arguments.length < 3) {\n            throw new RangeError('missing argument: isoYear, isoMonth and isoDay are required');\n        }\n        ES.CreateTemporalDateSlots(this, isoYear, isoMonth, isoDay, calendar);\n    }\n    get calendar() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get era() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), this);\n    }\n    get eraYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), this);\n    }\n    get year() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), this);\n    }\n    get month() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get day() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfWeek() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get weekOfYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInWeek() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), this);\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), this);\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), this);\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), this);\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), this);\n    }\n    with(temporalDateLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalDateLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalDateLike);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const props = ES.PrepareTemporalFields(temporalDateLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid date-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarDateFromFields(calendar, fields, options);\n    }\n    withCalendar(calendarParam) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return new PlainDate(GetSlot(this, ISO_YEAR), GetSlot(this, ISO_MONTH), GetSlot(this, ISO_DAY), calendar);\n    }\n    add(temporalDurationLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const duration = ES.ToTemporalDuration(temporalDurationLike);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarDateAdd(GetSlot(this, CALENDAR), this, duration, options);\n    }\n    subtract(temporalDurationLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const duration = ES.CreateNegatedTemporalDuration(ES.ToTemporalDuration(temporalDurationLike));\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarDateAdd(GetSlot(this, CALENDAR), this, duration, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDate('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDate('since', this, other, options);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalDate(otherParam);\n        for (const slot of [ISO_YEAR, ISO_MONTH, ISO_DAY]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        return ES.TemporalDateToString(this, showCalendar);\n    }\n    toJSON() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainDate');\n    }\n    toPlainDateTime(temporalTimeParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const year = GetSlot(this, ISO_YEAR);\n        const month = GetSlot(this, ISO_MONTH);\n        const day = GetSlot(this, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        if (temporalTimeParam === undefined)\n            return ES.CreateTemporalDateTime(year, month, day, 0, 0, 0, 0, 0, 0, calendar);\n        const temporalTime = ES.ToTemporalTime(temporalTimeParam);\n        const hour = GetSlot(temporalTime, ISO_HOUR);\n        const minute = GetSlot(temporalTime, ISO_MINUTE);\n        const second = GetSlot(temporalTime, ISO_SECOND);\n        const millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    toZonedDateTime(item) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        let timeZone, temporalTime;\n        if (ES.IsObject(item)) {\n            const timeZoneLike = item.timeZone;\n            if (timeZoneLike === undefined) {\n                // The cast below is needed because it's possible here for\n                // `timeZoneLike` here to be `{ plainTime: Temporal.PlainTimeLike }`,\n                // not a TimeZoneProtocol.\n                // TODO: should we check for that shape to improve on the (bad) error\n                // message that the caller will get from ToTemporalTimeZone?\n                timeZone = ES.ToTemporalTimeZone(item);\n            }\n            else {\n                timeZone = ES.ToTemporalTimeZone(timeZoneLike);\n                temporalTime = item.plainTime;\n            }\n        }\n        else {\n            timeZone = ES.ToTemporalTimeZone(item);\n        }\n        const year = GetSlot(this, ISO_YEAR);\n        const month = GetSlot(this, ISO_MONTH);\n        const day = GetSlot(this, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        let hour = 0, minute = 0, second = 0, millisecond = 0, microsecond = 0, nanosecond = 0;\n        if (temporalTime !== undefined) {\n            temporalTime = ES.ToTemporalTime(temporalTime);\n            hour = GetSlot(temporalTime, ISO_HOUR);\n            minute = GetSlot(temporalTime, ISO_MINUTE);\n            second = GetSlot(temporalTime, ISO_SECOND);\n            millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n            microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n            nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        }\n        const dt = ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    toPlainYearMonth() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarYearMonthFromFields(calendar, fields);\n    }\n    toPlainMonthDay() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarMonthDayFromFields(calendar, fields);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalDate(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalDate(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, CALENDAR));\n        }\n        return ES.ToTemporalDate(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalDate(oneParam);\n        const two = ES.ToTemporalDate(twoParam);\n        return ES.CompareISODate(GetSlot(one, ISO_YEAR), GetSlot(one, ISO_MONTH), GetSlot(one, ISO_DAY), GetSlot(two, ISO_YEAR), GetSlot(two, ISO_MONTH), GetSlot(two, ISO_DAY));\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainDate, 'Temporal.PlainDate');\n//# sourceMappingURL=plaindate.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, EPOCHNANOSECONDS, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nexport class PlainDateTime {\n    constructor(isoYearParam, isoMonthParam, isoDayParam, hourParam = 0, minuteParam = 0, secondParam = 0, millisecondParam = 0, microsecondParam = 0, nanosecondParam = 0, calendarParam = ES.GetISO8601Calendar()) {\n        const isoYear = ES.ToIntegerThrowOnInfinity(isoYearParam);\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const isoDay = ES.ToIntegerThrowOnInfinity(isoDayParam);\n        const hour = ES.ToIntegerThrowOnInfinity(hourParam);\n        const minute = ES.ToIntegerThrowOnInfinity(minuteParam);\n        const second = ES.ToIntegerThrowOnInfinity(secondParam);\n        const millisecond = ES.ToIntegerThrowOnInfinity(millisecondParam);\n        const microsecond = ES.ToIntegerThrowOnInfinity(microsecondParam);\n        const nanosecond = ES.ToIntegerThrowOnInfinity(nanosecondParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectDateTime in CreateTemporalDateTimeSlots. This\n        //       check exists only to improve the error message.\n        if (arguments.length < 3) {\n            throw new RangeError('missing argument: isoYear, isoMonth and isoDay are required');\n        }\n        ES.CreateTemporalDateTimeSlots(this, isoYear, isoMonth, isoDay, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    get calendar() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get year() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), this);\n    }\n    get month() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get day() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), this);\n    }\n    get hour() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_HOUR);\n    }\n    get minute() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MINUTE);\n    }\n    get second() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_SECOND);\n    }\n    get millisecond() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MILLISECOND);\n    }\n    get microsecond() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MICROSECOND);\n    }\n    get nanosecond() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_NANOSECOND);\n    }\n    get era() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), this);\n    }\n    get eraYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfWeek() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get weekOfYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInWeek() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), this);\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), this);\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), this);\n    }\n    with(temporalDateTimeLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalDateTimeLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalDateTimeLike);\n        const options = ES.GetOptionsObject(optionsParam);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const props = ES.PrepareTemporalFields(temporalDateTimeLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid date-time-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.InterpretTemporalDateTimeFields(calendar, fields, options);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    withPlainTime(temporalTimeParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const year = GetSlot(this, ISO_YEAR);\n        const month = GetSlot(this, ISO_MONTH);\n        const day = GetSlot(this, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        if (temporalTimeParam === undefined)\n            return ES.CreateTemporalDateTime(year, month, day, 0, 0, 0, 0, 0, 0, calendar);\n        const temporalTime = ES.ToTemporalTime(temporalTimeParam);\n        const hour = GetSlot(temporalTime, ISO_HOUR);\n        const minute = GetSlot(temporalTime, ISO_MINUTE);\n        const second = GetSlot(temporalTime, ISO_SECOND);\n        const millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    withPlainDate(temporalDateParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const temporalDate = ES.ToTemporalDate(temporalDateParam);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        let calendar = GetSlot(temporalDate, CALENDAR);\n        const hour = GetSlot(this, ISO_HOUR);\n        const minute = GetSlot(this, ISO_MINUTE);\n        const second = GetSlot(this, ISO_SECOND);\n        const millisecond = GetSlot(this, ISO_MILLISECOND);\n        const microsecond = GetSlot(this, ISO_MICROSECOND);\n        const nanosecond = GetSlot(this, ISO_NANOSECOND);\n        calendar = ES.ConsolidateCalendars(GetSlot(this, CALENDAR), calendar);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    withCalendar(calendarParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return new PlainDateTime(GetSlot(this, ISO_YEAR), GetSlot(this, ISO_MONTH), GetSlot(this, ISO_DAY), GetSlot(this, ISO_HOUR), GetSlot(this, ISO_MINUTE), GetSlot(this, ISO_SECOND), GetSlot(this, ISO_MILLISECOND), GetSlot(this, ISO_MICROSECOND), GetSlot(this, ISO_NANOSECOND), calendar);\n    }\n    add(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainDateTime('add', this, temporalDurationLike, options);\n    }\n    subtract(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainDateTime('subtract', this, temporalDurationLike, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDateTime('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDateTime('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED, ['day']);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const maximumIncrements = {\n            day: 1,\n            hour: 24,\n            minute: 60,\n            second: 60,\n            millisecond: 1000,\n            microsecond: 1000,\n            nanosecond: 1000\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], false);\n        let year = GetSlot(this, ISO_YEAR);\n        let month = GetSlot(this, ISO_MONTH);\n        let day = GetSlot(this, ISO_DAY);\n        let hour = GetSlot(this, ISO_HOUR);\n        let minute = GetSlot(this, ISO_MINUTE);\n        let second = GetSlot(this, ISO_SECOND);\n        let millisecond = GetSlot(this, ISO_MILLISECOND);\n        let microsecond = GetSlot(this, ISO_MICROSECOND);\n        let nanosecond = GetSlot(this, ISO_NANOSECOND);\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, roundingIncrement, smallestUnit, roundingMode));\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, GetSlot(this, CALENDAR));\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalDateTime(otherParam);\n        for (const slot of [\n            ISO_YEAR,\n            ISO_MONTH,\n            ISO_DAY,\n            ISO_HOUR,\n            ISO_MINUTE,\n            ISO_SECOND,\n            ISO_MILLISECOND,\n            ISO_MICROSECOND,\n            ISO_NANOSECOND\n        ]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        return ES.TemporalDateTimeToString(this, precision, showCalendar, { unit, increment, roundingMode });\n    }\n    toJSON() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToString(this, 'auto');\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainDateTime');\n    }\n    toZonedDateTime(temporalTimeZoneLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const timeZone = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n        const options = ES.GetOptionsObject(optionsParam);\n        const disambiguation = ES.ToTemporalDisambiguation(options);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, this, disambiguation);\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, GetSlot(this, CALENDAR));\n    }\n    toPlainDate() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToDate(this);\n    }\n    toPlainYearMonth() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarYearMonthFromFields(calendar, fields);\n    }\n    toPlainMonthDay() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarMonthDayFromFields(calendar, fields);\n    }\n    toPlainTime() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToTime(this);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoHour: GetSlot(this, ISO_HOUR),\n            isoMicrosecond: GetSlot(this, ISO_MICROSECOND),\n            isoMillisecond: GetSlot(this, ISO_MILLISECOND),\n            isoMinute: GetSlot(this, ISO_MINUTE),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoNanosecond: GetSlot(this, ISO_NANOSECOND),\n            isoSecond: GetSlot(this, ISO_SECOND),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalDateTime(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalDateTime(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, ISO_HOUR), GetSlot(item, ISO_MINUTE), GetSlot(item, ISO_SECOND), GetSlot(item, ISO_MILLISECOND), GetSlot(item, ISO_MICROSECOND), GetSlot(item, ISO_NANOSECOND), GetSlot(item, CALENDAR));\n        }\n        return ES.ToTemporalDateTime(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalDateTime(oneParam);\n        const two = ES.ToTemporalDateTime(twoParam);\n        for (const slot of [\n            ISO_YEAR,\n            ISO_MONTH,\n            ISO_DAY,\n            ISO_HOUR,\n            ISO_MINUTE,\n            ISO_SECOND,\n            ISO_MILLISECOND,\n            ISO_MICROSECOND,\n            ISO_NANOSECOND\n        ]) {\n            const val1 = GetSlot(one, slot);\n            const val2 = GetSlot(two, slot);\n            if (val1 !== val2)\n                return ES.ComparisonResult(val1 - val2);\n        }\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainDateTime, 'Temporal.PlainDateTime');\n//# sourceMappingURL=plaindatetime.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS, CreateSlots, GetSlot, SetSlot } from './slots';\nimport JSBI from 'jsbi';\nexport class Duration {\n    constructor(yearsParam = 0, monthsParam = 0, weeksParam = 0, daysParam = 0, hoursParam = 0, minutesParam = 0, secondsParam = 0, millisecondsParam = 0, microsecondsParam = 0, nanosecondsParam = 0) {\n        const years = ES.ToIntegerWithoutRounding(yearsParam);\n        const months = ES.ToIntegerWithoutRounding(monthsParam);\n        const weeks = ES.ToIntegerWithoutRounding(weeksParam);\n        const days = ES.ToIntegerWithoutRounding(daysParam);\n        const hours = ES.ToIntegerWithoutRounding(hoursParam);\n        const minutes = ES.ToIntegerWithoutRounding(minutesParam);\n        const seconds = ES.ToIntegerWithoutRounding(secondsParam);\n        const milliseconds = ES.ToIntegerWithoutRounding(millisecondsParam);\n        const microseconds = ES.ToIntegerWithoutRounding(microsecondsParam);\n        const nanoseconds = ES.ToIntegerWithoutRounding(nanosecondsParam);\n        ES.RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n        CreateSlots(this);\n        SetSlot(this, YEARS, years);\n        SetSlot(this, MONTHS, months);\n        SetSlot(this, WEEKS, weeks);\n        SetSlot(this, DAYS, days);\n        SetSlot(this, HOURS, hours);\n        SetSlot(this, MINUTES, minutes);\n        SetSlot(this, SECONDS, seconds);\n        SetSlot(this, MILLISECONDS, milliseconds);\n        SetSlot(this, MICROSECONDS, microseconds);\n        SetSlot(this, NANOSECONDS, nanoseconds);\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${ES.TemporalDurationToString(this)}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get years() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, YEARS);\n    }\n    get months() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MONTHS);\n    }\n    get weeks() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, WEEKS);\n    }\n    get days() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, DAYS);\n    }\n    get hours() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, HOURS);\n    }\n    get minutes() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MINUTES);\n    }\n    get seconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, SECONDS);\n    }\n    get milliseconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MILLISECONDS);\n    }\n    get microseconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MICROSECONDS);\n    }\n    get nanoseconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, NANOSECONDS);\n    }\n    get sign() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.DurationSign(GetSlot(this, YEARS), GetSlot(this, MONTHS), GetSlot(this, WEEKS), GetSlot(this, DAYS), GetSlot(this, HOURS), GetSlot(this, MINUTES), GetSlot(this, SECONDS), GetSlot(this, MILLISECONDS), GetSlot(this, MICROSECONDS), GetSlot(this, NANOSECONDS));\n    }\n    get blank() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return (ES.DurationSign(GetSlot(this, YEARS), GetSlot(this, MONTHS), GetSlot(this, WEEKS), GetSlot(this, DAYS), GetSlot(this, HOURS), GetSlot(this, MINUTES), GetSlot(this, SECONDS), GetSlot(this, MILLISECONDS), GetSlot(this, MICROSECONDS), GetSlot(this, NANOSECONDS)) === 0);\n    }\n    with(durationLike) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        const props = ES.PrepareTemporalFields(durationLike, \n        // NOTE: Field order here is important.\n        [\n            'days',\n            'hours',\n            'microseconds',\n            'milliseconds',\n            'minutes',\n            'months',\n            'nanoseconds',\n            'seconds',\n            'weeks',\n            'years'\n        ], 'partial');\n        if (!props) {\n            throw new TypeError('invalid duration-like');\n        }\n        const { years = GetSlot(this, YEARS), months = GetSlot(this, MONTHS), weeks = GetSlot(this, WEEKS), days = GetSlot(this, DAYS), hours = GetSlot(this, HOURS), minutes = GetSlot(this, MINUTES), seconds = GetSlot(this, SECONDS), milliseconds = GetSlot(this, MILLISECONDS), microseconds = GetSlot(this, MICROSECONDS), nanoseconds = GetSlot(this, NANOSECONDS) } = props;\n        return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    }\n    negated() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.CreateNegatedTemporalDuration(this);\n    }\n    abs() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return new Duration(Math.abs(GetSlot(this, YEARS)), Math.abs(GetSlot(this, MONTHS)), Math.abs(GetSlot(this, WEEKS)), Math.abs(GetSlot(this, DAYS)), Math.abs(GetSlot(this, HOURS)), Math.abs(GetSlot(this, MINUTES)), Math.abs(GetSlot(this, SECONDS)), Math.abs(GetSlot(this, MILLISECONDS)), Math.abs(GetSlot(this, MICROSECONDS)), Math.abs(GetSlot(this, NANOSECONDS)));\n    }\n    add(other, options = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromDuration('add', this, other, options);\n    }\n    subtract(other, options = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromDuration('subtract', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        let years = GetSlot(this, YEARS);\n        let months = GetSlot(this, MONTHS);\n        let weeks = GetSlot(this, WEEKS);\n        let days = GetSlot(this, DAYS);\n        let hours = GetSlot(this, HOURS);\n        let minutes = GetSlot(this, MINUTES);\n        let seconds = GetSlot(this, SECONDS);\n        let milliseconds = GetSlot(this, MILLISECONDS);\n        let microseconds = GetSlot(this, MICROSECONDS);\n        let nanoseconds = GetSlot(this, NANOSECONDS);\n        let defaultLargestUnit = ES.DefaultTemporalLargestUnit(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        let smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'datetime', undefined);\n        let smallestUnitPresent = true;\n        if (!smallestUnit) {\n            smallestUnitPresent = false;\n            smallestUnit = 'nanosecond';\n        }\n        defaultLargestUnit = ES.LargerOfTwoTemporalUnits(defaultLargestUnit, smallestUnit);\n        let largestUnit = ES.GetTemporalUnit(options, 'largestUnit', 'datetime', undefined, ['auto']);\n        let largestUnitPresent = true;\n        if (!largestUnit) {\n            largestUnitPresent = false;\n            largestUnit = defaultLargestUnit;\n        }\n        if (largestUnit === 'auto')\n            largestUnit = defaultLargestUnit;\n        if (!smallestUnitPresent && !largestUnitPresent) {\n            throw new RangeError('at least one of smallestUnit or largestUnit is required');\n        }\n        if (ES.LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n            throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n        }\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const roundingIncrement = ES.ToTemporalDateTimeRoundingIncrement(options, smallestUnit);\n        let relativeTo = ES.ToRelativeTemporalObject(options);\n        ({ years, months, weeks, days } = ES.UnbalanceDurationRelative(years, months, weeks, days, largestUnit, relativeTo));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            ES.RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, relativeTo));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            ES.AdjustRoundedDurationDays(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, relativeTo));\n        ({ years, months, weeks, days } = ES.BalanceDurationRelative(years, months, weeks, days, largestUnit, relativeTo));\n        if (ES.IsTemporalZonedDateTime(relativeTo)) {\n            relativeTo = ES.MoveRelativeZonedDateTime(relativeTo, years, months, weeks, 0);\n        }\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit, relativeTo));\n        return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    }\n    total(optionsParam) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        let years = GetSlot(this, YEARS);\n        let months = GetSlot(this, MONTHS);\n        let weeks = GetSlot(this, WEEKS);\n        let days = GetSlot(this, DAYS);\n        let hours = GetSlot(this, HOURS);\n        let minutes = GetSlot(this, MINUTES);\n        let seconds = GetSlot(this, SECONDS);\n        let milliseconds = GetSlot(this, MILLISECONDS);\n        let microseconds = GetSlot(this, MICROSECONDS);\n        let nanoseconds = GetSlot(this, NANOSECONDS);\n        if (optionsParam === undefined)\n            throw new TypeError('options argument is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('unit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const unit = ES.GetTemporalUnit(options, 'unit', 'datetime', ES.REQUIRED);\n        const relativeTo = ES.ToRelativeTemporalObject(options);\n        // Convert larger units down to days\n        ({ years, months, weeks, days } = ES.UnbalanceDurationRelative(years, months, weeks, days, unit, relativeTo));\n        // If the unit we're totalling is smaller than `days`, convert days down to that unit.\n        let intermediate;\n        if (ES.IsTemporalZonedDateTime(relativeTo)) {\n            intermediate = ES.MoveRelativeZonedDateTime(relativeTo, years, months, weeks, 0);\n        }\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, unit, intermediate));\n        // Finally, truncate to the correct unit and calculate remainder\n        const { total } = ES.RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 1, unit, 'trunc', relativeTo);\n        return total;\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        if (precision === 'minute')\n            throw new RangeError('smallestUnit must not be \"minute\"');\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        return ES.TemporalDurationToString(this, precision, { unit, increment, roundingMode });\n    }\n    toJSON() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDurationToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        if (typeof Intl !== 'undefined' && typeof Intl.DurationFormat !== 'undefined') {\n            return new Intl.DurationFormat(locales, options).format(this);\n        }\n        console.warn('Temporal.Duration.prototype.toLocaleString() requires Intl.DurationFormat.');\n        return ES.TemporalDurationToString(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() to compare Temporal.Duration');\n    }\n    static from(item) {\n        if (ES.IsTemporalDuration(item)) {\n            return new Duration(GetSlot(item, YEARS), GetSlot(item, MONTHS), GetSlot(item, WEEKS), GetSlot(item, DAYS), GetSlot(item, HOURS), GetSlot(item, MINUTES), GetSlot(item, SECONDS), GetSlot(item, MILLISECONDS), GetSlot(item, MICROSECONDS), GetSlot(item, NANOSECONDS));\n        }\n        return ES.ToTemporalDuration(item);\n    }\n    static compare(oneParam, twoParam, optionsParam = undefined) {\n        const one = ES.ToTemporalDuration(oneParam);\n        const two = ES.ToTemporalDuration(twoParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        const relativeTo = ES.ToRelativeTemporalObject(options);\n        const y1 = GetSlot(one, YEARS);\n        const mon1 = GetSlot(one, MONTHS);\n        const w1 = GetSlot(one, WEEKS);\n        let d1 = GetSlot(one, DAYS);\n        const h1 = GetSlot(one, HOURS);\n        const min1 = GetSlot(one, MINUTES);\n        const s1 = GetSlot(one, SECONDS);\n        const ms1 = GetSlot(one, MILLISECONDS);\n        const µs1 = GetSlot(one, MICROSECONDS);\n        let ns1 = GetSlot(one, NANOSECONDS);\n        const y2 = GetSlot(two, YEARS);\n        const mon2 = GetSlot(two, MONTHS);\n        const w2 = GetSlot(two, WEEKS);\n        let d2 = GetSlot(two, DAYS);\n        const h2 = GetSlot(two, HOURS);\n        const min2 = GetSlot(two, MINUTES);\n        const s2 = GetSlot(two, SECONDS);\n        const ms2 = GetSlot(two, MILLISECONDS);\n        const µs2 = GetSlot(two, MICROSECONDS);\n        let ns2 = GetSlot(two, NANOSECONDS);\n        const shift1 = ES.CalculateOffsetShift(relativeTo, y1, mon1, w1, d1);\n        const shift2 = ES.CalculateOffsetShift(relativeTo, y2, mon2, w2, d2);\n        if (y1 !== 0 || y2 !== 0 || mon1 !== 0 || mon2 !== 0 || w1 !== 0 || w2 !== 0) {\n            ({ days: d1 } = ES.UnbalanceDurationRelative(y1, mon1, w1, d1, 'day', relativeTo));\n            ({ days: d2 } = ES.UnbalanceDurationRelative(y2, mon2, w2, d2, 'day', relativeTo));\n        }\n        const totalNs1 = ES.TotalDurationNanoseconds(d1, h1, min1, s1, ms1, µs1, ns1, shift1);\n        const totalNs2 = ES.TotalDurationNanoseconds(d2, h2, min2, s2, ms2, µs2, ns2, shift2);\n        return ES.ComparisonResult(JSBI.toNumber(JSBI.subtract(totalNs1, totalNs2)));\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(Duration, 'Temporal.Duration');\n//# sourceMappingURL=duration.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_MONTH, ISO_DAY, ISO_YEAR, CALENDAR, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nconst ObjectCreate = Object.create;\nexport class PlainMonthDay {\n    constructor(isoMonthParam, isoDayParam, calendarParam = ES.GetISO8601Calendar(), referenceISOYearParam = 1972) {\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const isoDay = ES.ToIntegerThrowOnInfinity(isoDayParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        const referenceISOYear = ES.ToIntegerThrowOnInfinity(referenceISOYearParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectISODate in CreateTemporalMonthDaySlots. This\n        //       check exists only to improve the error message.\n        if (arguments.length < 2) {\n            throw new RangeError('missing argument: isoMonth and isoDay are required');\n        }\n        ES.CreateTemporalMonthDaySlots(this, isoMonth, isoDay, calendar, referenceISOYear);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get day() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), this);\n    }\n    get calendar() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    with(temporalMonthDayLike, optionsParam = undefined) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalMonthDayLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalMonthDayLike);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const props = ES.PrepareTemporalFields(temporalMonthDayLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid month-day-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarMonthDayFromFields(calendar, fields, options);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalMonthDay(otherParam);\n        for (const slot of [ISO_MONTH, ISO_DAY, ISO_YEAR]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        return ES.TemporalMonthDayToString(this, showCalendar);\n    }\n    toJSON() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalMonthDayToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use equals() to compare Temporal.PlainMonthDay');\n    }\n    toPlainDate(item) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item))\n            throw new TypeError('argument should be an object');\n        const calendar = GetSlot(this, CALENDAR);\n        const receiverFieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, receiverFieldNames, []);\n        const inputFieldNames = ES.CalendarFields(calendar, ['year']);\n        const inputFields = ES.PrepareTemporalFields(item, inputFieldNames, []);\n        let mergedFields = ES.CalendarMergeFields(calendar, fields, inputFields);\n        // TODO: Use MergeLists abstract operation.\n        const mergedFieldNames = [...new Set([...receiverFieldNames, ...inputFieldNames])];\n        mergedFields = ES.PrepareTemporalFields(mergedFields, mergedFieldNames, []);\n        const options = ObjectCreate(null);\n        options.overflow = 'reject';\n        return ES.CalendarDateFromFields(calendar, mergedFields, options);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalMonthDay(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalMonthDay(GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, CALENDAR), GetSlot(item, ISO_YEAR));\n        }\n        return ES.ToTemporalMonthDay(item, options);\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainMonthDay, 'Temporal.PlainMonthDay');\n//# sourceMappingURL=plainmonthday.js.map", "import * as ES from './ecmascript';\nimport { GetIntrinsic } from './intrinsicclass';\nconst instant = () => {\n    const Instant = GetIntrinsic('%Temporal.Instant%');\n    return new Instant(ES.SystemUTCEpochNanoSeconds());\n};\nconst plainDateTime = (calendarLike, temporalTimeZoneLike = timeZone()) => {\n    const tZ = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n    const calendar = ES.ToTemporalCalendar(calendarLike);\n    const inst = instant();\n    return ES.BuiltinTimeZoneGetPlainDateTimeFor(tZ, inst, calendar);\n};\nconst plainDateTimeISO = (temporalTimeZoneLike = timeZone()) => {\n    const tZ = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n    const calendar = ES.GetISO8601Calendar();\n    const inst = instant();\n    return ES.BuiltinTimeZoneGetPlainDateTimeFor(tZ, inst, calendar);\n};\nconst zonedDateTime = (calendarLike, temporalTimeZoneLike = timeZone()) => {\n    const tZ = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n    const calendar = ES.ToTemporalCalendar(calendarLike);\n    return ES.CreateTemporalZonedDateTime(ES.SystemUTCEpochNanoSeconds(), tZ, calendar);\n};\nconst zonedDateTimeISO = (temporalTimeZoneLike = timeZone()) => {\n    return zonedDateTime(ES.GetISO8601Calendar(), temporalTimeZoneLike);\n};\nconst plainDate = (calendarLike, temporalTimeZoneLike = timeZone()) => {\n    return ES.TemporalDateTimeToDate(plainDateTime(calendarLike, temporalTimeZoneLike));\n};\nconst plainDateISO = (temporalTimeZoneLike = timeZone()) => {\n    return ES.TemporalDateTimeToDate(plainDateTimeISO(temporalTimeZoneLike));\n};\nconst plainTimeISO = (temporalTimeZoneLike = timeZone()) => {\n    return ES.TemporalDateTimeToTime(plainDateTimeISO(temporalTimeZoneLike));\n};\nconst timeZone = () => {\n    return ES.SystemTimeZone();\n};\nexport const Now = {\n    instant,\n    plainDateTime,\n    plainDateTimeISO,\n    plainDate,\n    plainDateISO,\n    plainTimeISO,\n    timeZone,\n    zonedDateTime,\n    zonedDateTimeISO,\n    [Symbol.toStringTag]: 'Temporal.Now'\n};\nObject.defineProperty(Now, Symbol.toStringTag, {\n    value: 'Temporal.Now',\n    writable: false,\n    enumerable: false,\n    configurable: true\n});\n//# sourceMappingURL=now.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, EPOCHNANOSECONDS, CreateSlots, GetSlot, SetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nconst ObjectAssign = Object.assign;\nfunction TemporalTimeToString(time, precision, options = undefined) {\n    let hour = GetSlot(time, ISO_HOUR);\n    let minute = GetSlot(time, ISO_MINUTE);\n    let second = GetSlot(time, ISO_SECOND);\n    let millisecond = GetSlot(time, ISO_MILLISECOND);\n    let microsecond = GetSlot(time, ISO_MICROSECOND);\n    let nanosecond = GetSlot(time, ISO_NANOSECOND);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundTime(hour, minute, second, millisecond, microsecond, nanosecond, increment, unit, roundingMode));\n    }\n    const hourString = ES.ISODateTimePartString(hour);\n    const minuteString = ES.ISODateTimePartString(minute);\n    const seconds = ES.FormatSecondsStringPart(second, millisecond, microsecond, nanosecond, precision);\n    return `${hourString}:${minuteString}${seconds}`;\n}\nexport class PlainTime {\n    constructor(isoHourParam = 0, isoMinuteParam = 0, isoSecondParam = 0, isoMillisecondParam = 0, isoMicrosecondParam = 0, isoNanosecondParam = 0) {\n        const isoHour = ES.ToIntegerThrowOnInfinity(isoHourParam);\n        const isoMinute = ES.ToIntegerThrowOnInfinity(isoMinuteParam);\n        const isoSecond = ES.ToIntegerThrowOnInfinity(isoSecondParam);\n        const isoMillisecond = ES.ToIntegerThrowOnInfinity(isoMillisecondParam);\n        const isoMicrosecond = ES.ToIntegerThrowOnInfinity(isoMicrosecondParam);\n        const isoNanosecond = ES.ToIntegerThrowOnInfinity(isoNanosecondParam);\n        ES.RejectTime(isoHour, isoMinute, isoSecond, isoMillisecond, isoMicrosecond, isoNanosecond);\n        CreateSlots(this);\n        SetSlot(this, ISO_HOUR, isoHour);\n        SetSlot(this, ISO_MINUTE, isoMinute);\n        SetSlot(this, ISO_SECOND, isoSecond);\n        SetSlot(this, ISO_MILLISECOND, isoMillisecond);\n        SetSlot(this, ISO_MICROSECOND, isoMicrosecond);\n        SetSlot(this, ISO_NANOSECOND, isoNanosecond);\n        SetSlot(this, CALENDAR, ES.GetISO8601Calendar());\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${TemporalTimeToString(this, 'auto')}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get calendar() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        // PlainTime's calendar isn't settable, so can't be a userland calendar\n        return GetSlot(this, CALENDAR);\n    }\n    get hour() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_HOUR);\n    }\n    get minute() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MINUTE);\n    }\n    get second() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_SECOND);\n    }\n    get millisecond() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MILLISECOND);\n    }\n    get microsecond() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MICROSECOND);\n    }\n    get nanosecond() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_NANOSECOND);\n    }\n    with(temporalTimeLike, optionsParam = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalTimeLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalTimeLike);\n        const partialTime = ES.ToTemporalTimeRecord(temporalTimeLike, 'partial');\n        const options = ES.GetOptionsObject(optionsParam);\n        const overflow = ES.ToTemporalOverflow(options);\n        const fields = ES.ToTemporalTimeRecord(this);\n        let { hour, minute, second, millisecond, microsecond, nanosecond } = ObjectAssign(fields, partialTime);\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ES.RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, overflow));\n        return new PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n    }\n    add(temporalDurationLike) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainTime('add', this, temporalDurationLike);\n    }\n    subtract(temporalDurationLike) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainTime('subtract', this, temporalDurationLike);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainTime('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainTime('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const MAX_INCREMENTS = {\n            hour: 24,\n            minute: 60,\n            second: 60,\n            millisecond: 1000,\n            microsecond: 1000,\n            nanosecond: 1000\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, MAX_INCREMENTS[smallestUnit], false);\n        let hour = GetSlot(this, ISO_HOUR);\n        let minute = GetSlot(this, ISO_MINUTE);\n        let second = GetSlot(this, ISO_SECOND);\n        let millisecond = GetSlot(this, ISO_MILLISECOND);\n        let microsecond = GetSlot(this, ISO_MICROSECOND);\n        let nanosecond = GetSlot(this, ISO_NANOSECOND);\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundTime(hour, minute, second, millisecond, microsecond, nanosecond, roundingIncrement, smallestUnit, roundingMode));\n        return new PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalTime(otherParam);\n        for (const slot of [ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return true;\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        return TemporalTimeToString(this, precision, { unit, increment, roundingMode });\n    }\n    toJSON() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return TemporalTimeToString(this, 'auto');\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainTime');\n    }\n    toPlainDateTime(temporalDateParam) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        const temporalDate = ES.ToTemporalDate(temporalDateParam);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        const calendar = GetSlot(temporalDate, CALENDAR);\n        const hour = GetSlot(this, ISO_HOUR);\n        const minute = GetSlot(this, ISO_MINUTE);\n        const second = GetSlot(this, ISO_SECOND);\n        const millisecond = GetSlot(this, ISO_MILLISECOND);\n        const microsecond = GetSlot(this, ISO_MICROSECOND);\n        const nanosecond = GetSlot(this, ISO_NANOSECOND);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    toZonedDateTime(item) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item)) {\n            throw new TypeError('invalid argument');\n        }\n        const dateLike = item.plainDate;\n        if (dateLike === undefined) {\n            throw new TypeError('missing date property');\n        }\n        const temporalDate = ES.ToTemporalDate(dateLike);\n        const timeZoneLike = item.timeZone;\n        if (timeZoneLike === undefined) {\n            throw new TypeError('missing timeZone property');\n        }\n        const timeZone = ES.ToTemporalTimeZone(timeZoneLike);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        const calendar = GetSlot(temporalDate, CALENDAR);\n        const hour = GetSlot(this, ISO_HOUR);\n        const minute = GetSlot(this, ISO_MINUTE);\n        const second = GetSlot(this, ISO_SECOND);\n        const millisecond = GetSlot(this, ISO_MILLISECOND);\n        const microsecond = GetSlot(this, ISO_MICROSECOND);\n        const nanosecond = GetSlot(this, ISO_NANOSECOND);\n        const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const dt = new PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoHour: GetSlot(this, ISO_HOUR),\n            isoMicrosecond: GetSlot(this, ISO_MICROSECOND),\n            isoMillisecond: GetSlot(this, ISO_MILLISECOND),\n            isoMinute: GetSlot(this, ISO_MINUTE),\n            isoNanosecond: GetSlot(this, ISO_NANOSECOND),\n            isoSecond: GetSlot(this, ISO_SECOND)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        const overflow = ES.ToTemporalOverflow(options);\n        if (ES.IsTemporalTime(item)) {\n            return new PlainTime(GetSlot(item, ISO_HOUR), GetSlot(item, ISO_MINUTE), GetSlot(item, ISO_SECOND), GetSlot(item, ISO_MILLISECOND), GetSlot(item, ISO_MICROSECOND), GetSlot(item, ISO_NANOSECOND));\n        }\n        return ES.ToTemporalTime(item, overflow);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalTime(oneParam);\n        const two = ES.ToTemporalTime(twoParam);\n        for (const slot of [ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND]) {\n            const val1 = GetSlot(one, slot);\n            const val2 = GetSlot(two, slot);\n            if (val1 !== val2)\n                return ES.ComparisonResult(val1 - val2);\n        }\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainTime, 'Temporal.PlainTime');\n//# sourceMappingURL=plaintime.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass } from './intrinsicclass';\nimport { TIMEZONE_ID, EPOCHNANOSECONDS, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CreateSlots, GetSlot, SetSlot } from './slots';\nimport JSBI from 'jsbi';\nexport class TimeZone {\n    constructor(timeZoneIdentifierParam) {\n        // Note: if the argument is not passed, GetCanonicalTimeZoneIdentifier(undefined) will throw.\n        //       This check exists only to improve the error message.\n        if (arguments.length < 1) {\n            throw new RangeError('missing argument: identifier is required');\n        }\n        const timeZoneIdentifier = ES.GetCanonicalTimeZoneIdentifier(timeZoneIdentifierParam);\n        CreateSlots(this);\n        SetSlot(this, TIMEZONE_ID, timeZoneIdentifier);\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${timeZoneIdentifier}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get id() {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    getOffsetNanosecondsFor(instantParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const instant = ES.ToTemporalInstant(instantParam);\n        const id = GetSlot(this, TIMEZONE_ID);\n        if (ES.TestTimeZoneOffsetString(id)) {\n            return ES.ParseTimeZoneOffsetString(id);\n        }\n        return ES.GetIANATimeZoneOffsetNanoseconds(GetSlot(instant, EPOCHNANOSECONDS), id);\n    }\n    getOffsetStringFor(instantParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const instant = ES.ToTemporalInstant(instantParam);\n        return ES.BuiltinTimeZoneGetOffsetStringFor(this, instant);\n    }\n    getPlainDateTimeFor(instantParam, calendarParam = ES.GetISO8601Calendar()) {\n        const instant = ES.ToTemporalInstant(instantParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return ES.BuiltinTimeZoneGetPlainDateTimeFor(this, instant, calendar);\n    }\n    getInstantFor(dateTimeParam, optionsParam = undefined) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const dateTime = ES.ToTemporalDateTime(dateTimeParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        const disambiguation = ES.ToTemporalDisambiguation(options);\n        return ES.BuiltinTimeZoneGetInstantFor(this, dateTime, disambiguation);\n    }\n    getPossibleInstantsFor(dateTimeParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const dateTime = ES.ToTemporalDateTime(dateTimeParam);\n        const Instant = GetIntrinsic('%Temporal.Instant%');\n        const id = GetSlot(this, TIMEZONE_ID);\n        if (ES.TestTimeZoneOffsetString(id)) {\n            const epochNs = ES.GetEpochFromISOParts(GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND));\n            if (epochNs === null)\n                throw new RangeError('DateTime outside of supported range');\n            const offsetNs = ES.ParseTimeZoneOffsetString(id);\n            return [new Instant(JSBI.subtract(epochNs, JSBI.BigInt(offsetNs)))];\n        }\n        const possibleEpochNs = ES.GetIANATimeZoneEpochValue(id, GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND));\n        return possibleEpochNs.map((ns) => new Instant(ns));\n    }\n    getNextTransition(startingPointParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const startingPoint = ES.ToTemporalInstant(startingPointParam);\n        const id = GetSlot(this, TIMEZONE_ID);\n        // Offset time zones or UTC have no transitions\n        if (ES.TestTimeZoneOffsetString(id) || id === 'UTC') {\n            return null;\n        }\n        let epochNanoseconds = GetSlot(startingPoint, EPOCHNANOSECONDS);\n        const Instant = GetIntrinsic('%Temporal.Instant%');\n        epochNanoseconds = ES.GetIANATimeZoneNextTransition(epochNanoseconds, id);\n        return epochNanoseconds === null ? null : new Instant(epochNanoseconds);\n    }\n    getPreviousTransition(startingPointParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const startingPoint = ES.ToTemporalInstant(startingPointParam);\n        const id = GetSlot(this, TIMEZONE_ID);\n        // Offset time zones or UTC have no transitions\n        if (ES.TestTimeZoneOffsetString(id) || id === 'UTC') {\n            return null;\n        }\n        let epochNanoseconds = GetSlot(startingPoint, EPOCHNANOSECONDS);\n        const Instant = GetIntrinsic('%Temporal.Instant%');\n        epochNanoseconds = ES.GetIANATimeZonePreviousTransition(epochNanoseconds, id);\n        return epochNanoseconds === null ? null : new Instant(epochNanoseconds);\n    }\n    toString() {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(GetSlot(this, TIMEZONE_ID));\n    }\n    toJSON() {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    static from(item) {\n        return ES.ToTemporalTimeZone(item);\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(TimeZone, 'Temporal.TimeZone');\n//# sourceMappingURL=timezone.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, CALENDAR, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nconst ObjectCreate = Object.create;\nexport class PlainYearMonth {\n    constructor(isoYearParam, isoMonthParam, calendarParam = ES.GetISO8601Calendar(), referenceISODayParam = 1) {\n        const isoYear = ES.ToIntegerThrowOnInfinity(isoYearParam);\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        const referenceISODay = ES.ToIntegerThrowOnInfinity(referenceISODayParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectISODate in CreateTemporalYearMonthSlots. This\n        //       check exists only to improve the error message.\n        if (arguments.length < 2) {\n            throw new RangeError('missing argument: isoYear and isoMonth are required');\n        }\n        ES.CreateTemporalYearMonthSlots(this, isoYear, isoMonth, calendar, referenceISODay);\n    }\n    get year() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), this);\n    }\n    get month() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get calendar() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get era() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), this);\n    }\n    get eraYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), this);\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), this);\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), this);\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), this);\n    }\n    with(temporalYearMonthLike, optionsParam = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalYearMonthLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalYearMonthLike);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['month', 'monthCode', 'year']);\n        const props = ES.PrepareTemporalFields(temporalYearMonthLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid year-month-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarYearMonthFromFields(calendar, fields, options);\n    }\n    add(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainYearMonth('add', this, temporalDurationLike, options);\n    }\n    subtract(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainYearMonth('subtract', this, temporalDurationLike, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainYearMonth('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainYearMonth('since', this, other, options);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalYearMonth(otherParam);\n        for (const slot of [ISO_YEAR, ISO_MONTH, ISO_DAY]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        return ES.TemporalYearMonthToString(this, showCalendar);\n    }\n    toJSON() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalYearMonthToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainYearMonth');\n    }\n    toPlainDate(item) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item))\n            throw new TypeError('argument should be an object');\n        const calendar = GetSlot(this, CALENDAR);\n        const receiverFieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, receiverFieldNames, []);\n        const inputFieldNames = ES.CalendarFields(calendar, ['day']);\n        const inputFields = ES.PrepareTemporalFields(item, inputFieldNames, []);\n        let mergedFields = ES.CalendarMergeFields(calendar, fields, inputFields);\n        // TODO: Use MergeLists abstract operation.\n        const mergedFieldNames = [...new Set([...receiverFieldNames, ...inputFieldNames])];\n        mergedFields = ES.PrepareTemporalFields(mergedFields, mergedFieldNames, []);\n        const options = ObjectCreate(null);\n        options.overflow = 'reject';\n        return ES.CalendarDateFromFields(calendar, mergedFields, options);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalYearMonth(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalYearMonth(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, CALENDAR), GetSlot(item, ISO_DAY));\n        }\n        return ES.ToTemporalYearMonth(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalYearMonth(oneParam);\n        const two = ES.ToTemporalYearMonth(twoParam);\n        return ES.CompareISODate(GetSlot(one, ISO_YEAR), GetSlot(one, ISO_MONTH), GetSlot(one, ISO_DAY), GetSlot(two, ISO_YEAR), GetSlot(two, ISO_MONTH), GetSlot(two, ISO_DAY));\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainYearMonth, 'Temporal.PlainYearMonth');\n//# sourceMappingURL=plainyearmonth.js.map", "import * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass } from './intrinsicclass';\nimport { CALENDAR, EPOCHNANOSECONDS, ISO_HOUR, INSTANT, ISO_DAY, ISO_MONTH, ISO_YEAR, ISO_MICROSECOND, ISO_MILLISECOND, ISO_MINUTE, ISO_NANOSECOND, ISO_SECOND, TIME_ZONE, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nimport JSBI from 'jsbi';\nimport { BILLION, MILLION, THOUSAND, ZERO } from './ecmascript';\nexport class ZonedDateTime {\n    constructor(epochNanosecondsParam, timeZoneParam, calendarParam = ES.GetISO8601Calendar()) {\n        // Note: if the argument is not passed, ToBigInt(undefined) will throw. This check exists only\n        //       to improve the error message.\n        //       ToTemporalTimeZone(undefined) will end up calling TimeZone.from(\"undefined\"), which\n        //       could succeed.\n        if (arguments.length < 1) {\n            throw new TypeError('missing argument: epochNanoseconds is required');\n        }\n        const epochNanoseconds = ES.ToBigInt(epochNanosecondsParam);\n        const timeZone = ES.ToTemporalTimeZone(timeZoneParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        ES.CreateTemporalZonedDateTimeSlots(this, epochNanoseconds, timeZone, calendar);\n    }\n    get calendar() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get timeZone() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, TIME_ZONE);\n    }\n    get year() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get month() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get monthCode() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get day() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get hour() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_HOUR);\n    }\n    get minute() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_MINUTE);\n    }\n    get second() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_SECOND);\n    }\n    get millisecond() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_MILLISECOND);\n    }\n    get microsecond() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_MICROSECOND);\n    }\n    get nanosecond() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_NANOSECOND);\n    }\n    get era() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get eraYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get epochSeconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.divide(value, BILLION));\n    }\n    get epochMilliseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.divide(value, MILLION));\n    }\n    get epochMicroseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return ES.ToBigIntExternal(JSBI.divide(value, THOUSAND));\n    }\n    get epochNanoseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToBigIntExternal(GetSlot(this, EPOCHNANOSECONDS));\n    }\n    get dayOfWeek() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get dayOfYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get weekOfYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get hoursInDay() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const dt = dateTime(this);\n        const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const year = GetSlot(dt, ISO_YEAR);\n        const month = GetSlot(dt, ISO_MONTH);\n        const day = GetSlot(dt, ISO_DAY);\n        const today = new DateTime(year, month, day, 0, 0, 0, 0, 0, 0);\n        const tomorrowFields = ES.AddISODate(year, month, day, 0, 0, 0, 1, 'reject');\n        const tomorrow = new DateTime(tomorrowFields.year, tomorrowFields.month, tomorrowFields.day, 0, 0, 0, 0, 0, 0);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const todayNs = GetSlot(ES.BuiltinTimeZoneGetInstantFor(timeZone, today, 'compatible'), EPOCHNANOSECONDS);\n        const tomorrowNs = GetSlot(ES.BuiltinTimeZoneGetInstantFor(timeZone, tomorrow, 'compatible'), EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.subtract(tomorrowNs, todayNs)) / 3.6e12;\n    }\n    get daysInWeek() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get offset() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.BuiltinTimeZoneGetOffsetStringFor(GetSlot(this, TIME_ZONE), GetSlot(this, INSTANT));\n    }\n    get offsetNanoseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.GetOffsetNanosecondsFor(GetSlot(this, TIME_ZONE), GetSlot(this, INSTANT));\n    }\n    with(temporalZonedDateTimeLike, optionsParam = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalZonedDateTimeLike)) {\n            throw new TypeError('invalid zoned-date-time-like');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalZonedDateTimeLike);\n        // TODO: Reorder according to spec.\n        const options = ES.GetOptionsObject(optionsParam);\n        const disambiguation = ES.ToTemporalDisambiguation(options);\n        const offset = ES.ToTemporalOffset(options, 'prefer');\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fieldsWithOffset = ES.ArrayPush(fieldNames, 'offset');\n        const props = ES.PrepareTemporalFields(temporalZonedDateTimeLike, fieldsWithOffset, 'partial');\n        const fieldsWithTimeZoneAndOffset = ES.ArrayPush(fieldsWithOffset, 'timeZone');\n        let fields = ES.PrepareTemporalFields(this, fieldsWithTimeZoneAndOffset, ['timeZone', 'offset']);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldsWithTimeZoneAndOffset, ['timeZone', 'offset']);\n        let { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.InterpretTemporalDateTimeFields(calendar, fields, options);\n        const offsetNs = ES.ParseTimeZoneOffsetString(fields.offset);\n        const epochNanoseconds = ES.InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, 'option', offsetNs, timeZone, disambiguation, offset, \n        /* matchMinute = */ false);\n        return ES.CreateTemporalZonedDateTime(epochNanoseconds, GetSlot(this, TIME_ZONE), calendar);\n    }\n    withPlainDate(temporalDateParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const temporalDate = ES.ToTemporalDate(temporalDateParam);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        let calendar = GetSlot(temporalDate, CALENDAR);\n        const thisDt = dateTime(this);\n        const hour = GetSlot(thisDt, ISO_HOUR);\n        const minute = GetSlot(thisDt, ISO_MINUTE);\n        const second = GetSlot(thisDt, ISO_SECOND);\n        const millisecond = GetSlot(thisDt, ISO_MILLISECOND);\n        const microsecond = GetSlot(thisDt, ISO_MICROSECOND);\n        const nanosecond = GetSlot(thisDt, ISO_NANOSECOND);\n        calendar = ES.ConsolidateCalendars(GetSlot(this, CALENDAR), calendar);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const dt = new PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    withPlainTime(temporalTimeParam = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const PlainTime = GetIntrinsic('%Temporal.PlainTime%');\n        const temporalTime = temporalTimeParam === undefined ? new PlainTime() : ES.ToTemporalTime(temporalTimeParam);\n        const thisDt = dateTime(this);\n        const year = GetSlot(thisDt, ISO_YEAR);\n        const month = GetSlot(thisDt, ISO_MONTH);\n        const day = GetSlot(thisDt, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        const hour = GetSlot(temporalTime, ISO_HOUR);\n        const minute = GetSlot(temporalTime, ISO_MINUTE);\n        const second = GetSlot(temporalTime, ISO_SECOND);\n        const millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const dt = new PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    withTimeZone(timeZoneParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const timeZone = ES.ToTemporalTimeZone(timeZoneParam);\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), timeZone, GetSlot(this, CALENDAR));\n    }\n    withCalendar(calendarParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), GetSlot(this, TIME_ZONE), calendar);\n    }\n    add(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromZonedDateTime('add', this, temporalDurationLike, options);\n    }\n    subtract(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromZonedDateTime('subtract', this, temporalDurationLike, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalZonedDateTime('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalZonedDateTime('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED, ['day']);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const maximumIncrements = {\n            day: 1,\n            hour: 24,\n            minute: 60,\n            second: 60,\n            millisecond: 1000,\n            microsecond: 1000,\n            nanosecond: 1000\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], false);\n        // first, round the underlying DateTime fields\n        const dt = dateTime(this);\n        let year = GetSlot(dt, ISO_YEAR);\n        let month = GetSlot(dt, ISO_MONTH);\n        let day = GetSlot(dt, ISO_DAY);\n        let hour = GetSlot(dt, ISO_HOUR);\n        let minute = GetSlot(dt, ISO_MINUTE);\n        let second = GetSlot(dt, ISO_SECOND);\n        let millisecond = GetSlot(dt, ISO_MILLISECOND);\n        let microsecond = GetSlot(dt, ISO_MICROSECOND);\n        let nanosecond = GetSlot(dt, ISO_NANOSECOND);\n        const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const calendar = GetSlot(this, CALENDAR);\n        const dtStart = new DateTime(GetSlot(dt, ISO_YEAR), GetSlot(dt, ISO_MONTH), GetSlot(dt, ISO_DAY), 0, 0, 0, 0, 0, 0);\n        const instantStart = ES.BuiltinTimeZoneGetInstantFor(timeZone, dtStart, 'compatible');\n        const endNs = ES.AddZonedDateTime(instantStart, timeZone, calendar, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);\n        const dayLengthNs = JSBI.subtract(endNs, JSBI.BigInt(GetSlot(instantStart, EPOCHNANOSECONDS)));\n        if (JSBI.equal(dayLengthNs, ZERO)) {\n            throw new RangeError('cannot round a ZonedDateTime in a calendar with zero-length days');\n        }\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, roundingIncrement, smallestUnit, roundingMode, \n        // Days are guaranteed to be shorter than Number.MAX_SAFE_INTEGER\n        // (which can hold up to 104 days in nanoseconds)\n        JSBI.toNumber(dayLengthNs)));\n        // Now reset all DateTime fields but leave the TimeZone. The offset will\n        // also be retained if the new date/time values are still OK with the old\n        // offset. Otherwise the offset will be changed to be compatible with the\n        // new date/time values. If DST disambiguation is required, the `compatible`\n        // disambiguation algorithm will be used.\n        const offsetNs = ES.GetOffsetNanosecondsFor(timeZone, GetSlot(this, INSTANT));\n        const epochNanoseconds = ES.InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, 'option', offsetNs, timeZone, 'compatible', 'prefer', \n        /* matchMinute = */ false);\n        return ES.CreateTemporalZonedDateTime(epochNanoseconds, timeZone, GetSlot(this, CALENDAR));\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalZonedDateTime(otherParam);\n        const one = GetSlot(this, EPOCHNANOSECONDS);\n        const two = GetSlot(other, EPOCHNANOSECONDS);\n        if (!JSBI.equal(JSBI.BigInt(one), JSBI.BigInt(two)))\n            return false;\n        if (!ES.TimeZoneEquals(GetSlot(this, TIME_ZONE), GetSlot(other, TIME_ZONE)))\n            return false;\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        const showCalendar = ES.ToShowCalendarOption(options);\n        const showTimeZone = ES.ToShowTimeZoneNameOption(options);\n        const showOffset = ES.ToShowOffsetOption(options);\n        return ES.TemporalZonedDateTimeToString(this, precision, showCalendar, showTimeZone, showOffset, {\n            unit,\n            increment,\n            roundingMode\n        });\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    toJSON() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalZonedDateTimeToString(this, 'auto');\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.ZonedDateTime');\n    }\n    startOfDay() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const dt = dateTime(this);\n        const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const calendar = GetSlot(this, CALENDAR);\n        const dtStart = new DateTime(GetSlot(dt, ISO_YEAR), GetSlot(dt, ISO_MONTH), GetSlot(dt, ISO_DAY), 0, 0, 0, 0, 0, 0, calendar);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dtStart, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    toInstant() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        return new TemporalInstant(GetSlot(this, EPOCHNANOSECONDS));\n    }\n    toPlainDate() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToDate(dateTime(this));\n    }\n    toPlainTime() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToTime(dateTime(this));\n    }\n    toPlainDateTime() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return dateTime(this);\n    }\n    toPlainYearMonth() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarYearMonthFromFields(calendar, fields);\n    }\n    toPlainMonthDay() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarMonthDayFromFields(calendar, fields);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const dt = dateTime(this);\n        const tz = GetSlot(this, TIME_ZONE);\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(dt, ISO_DAY),\n            isoHour: GetSlot(dt, ISO_HOUR),\n            isoMicrosecond: GetSlot(dt, ISO_MICROSECOND),\n            isoMillisecond: GetSlot(dt, ISO_MILLISECOND),\n            isoMinute: GetSlot(dt, ISO_MINUTE),\n            isoMonth: GetSlot(dt, ISO_MONTH),\n            isoNanosecond: GetSlot(dt, ISO_NANOSECOND),\n            isoSecond: GetSlot(dt, ISO_SECOND),\n            isoYear: GetSlot(dt, ISO_YEAR),\n            offset: ES.BuiltinTimeZoneGetOffsetStringFor(tz, GetSlot(this, INSTANT)),\n            timeZone: tz\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalZonedDateTime(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            ES.ToTemporalDisambiguation(options);\n            ES.ToTemporalOffset(options, 'reject');\n            return ES.CreateTemporalZonedDateTime(GetSlot(item, EPOCHNANOSECONDS), GetSlot(item, TIME_ZONE), GetSlot(item, CALENDAR));\n        }\n        return ES.ToTemporalZonedDateTime(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalZonedDateTime(oneParam);\n        const two = ES.ToTemporalZonedDateTime(twoParam);\n        const ns1 = GetSlot(one, EPOCHNANOSECONDS);\n        const ns2 = GetSlot(two, EPOCHNANOSECONDS);\n        if (JSBI.lessThan(JSBI.BigInt(ns1), JSBI.BigInt(ns2)))\n            return -1;\n        if (JSBI.greaterThan(JSBI.BigInt(ns1), JSBI.BigInt(ns2)))\n            return 1;\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(ZonedDateTime, 'Temporal.ZonedDateTime');\nfunction dateTime(zdt) {\n    return ES.BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(zdt, TIME_ZONE), GetSlot(zdt, INSTANT), GetSlot(zdt, CALENDAR));\n}\n//# sourceMappingURL=zoneddatetime.js.map", "import { Instant } from './instant';\nimport JSBI from 'jsbi';\nimport * as ES from './ecmascript';\nimport { MILLION } from './ecmascript';\nexport function toTemporalInstant() {\n    // Observable access to valueOf is not correct here, but unavoidable\n    const epochNanoseconds = JSBI.multiply(JSBI.BigInt(+this), MILLION);\n    return new Instant(ES.ToBigInt(epochNanoseconds));\n}\n//# sourceMappingURL=legacydate.js.map", "// This entry point treats Temporal as a library, and does not polyfill it onto\n// the global object.\n// This is in order to avoid breaking the web in the future, if the polyfill\n// gains wide adoption before the API is finalized. We do not want checks such\n// as `if (typeof Temporal === 'undefined')` in the wild, until browsers start\n// shipping the finalized API.\nimport * as Temporal from './temporal';\nimport * as Intl from './intl';\nimport { toTemporalInstant } from './legacydate';\n// Work around https://github.com/babel/babel/issues/2025.\nconst types = [\n    Temporal.Instant,\n    Temporal.Calendar,\n    Temporal.PlainDate,\n    Temporal.PlainDateTime,\n    Temporal.Duration,\n    Temporal.PlainMonthDay,\n    // Temporal.Now, // plain object (not a constructor), so no `prototype`\n    Temporal.PlainTime,\n    Temporal.TimeZone,\n    Temporal.PlainYearMonth,\n    Temporal.ZonedDateTime\n];\nfor (const type of types) {\n    const descriptor = Object.getOwnPropertyDescriptor(type, 'prototype');\n    if (descriptor.configurable || descriptor.enumerable || descriptor.writable) {\n        descriptor.configurable = false;\n        descriptor.enumerable = false;\n        descriptor.writable = false;\n        Object.defineProperty(type, 'prototype', descriptor);\n    }\n}\nexport { Temporal, Intl, toTemporalInstant };\n//# sourceMappingURL=index.js.map", "import type { AbstractBatchOperation, AbstractDatabaseOptions, AbstractIteratorOptions, AbstractLevel } from 'abstract-level';\n\nimport { abortOr } from '../utils/abort.js';\nimport { sleep } from '../utils/time.js';\n\nexport type CreateLevelDatabaseOptions<V> = AbstractDatabaseOptions<string, V>;\n\nexport type LevelDatabase<V> = AbstractLevel<string | Buffer | Uint8Array, string, V>;\n\nexport async function createLevelDatabase<V>(location: string, options?: CreateLevelDatabaseOptions<V>): Promise<LevelDatabase<V>> {\n  // Only import `'level'` when it's actually necessary (i.e. only when the default `createLevelDatabase` is used).\n  // Overriding `createLevelDatabase` will prevent this from happening.\n  const { Level } = await import('level');\n  return new Level(location, { ...options, keyEncoding: 'utf8' });\n}\n\nexport interface LevelWrapperOptions {\n  signal?: AbortSignal;\n}\n\nexport type LevelWrapperBatchOperation<V> = AbstractBatchOperation<LevelDatabase<V>, string, V>;\n\nexport type LevelWrapperIteratorOptions<V> = AbstractIteratorOptions<string, V>;\n\n// `Level` works in Node.js 12+ and Electron 5+ on Linux, Mac OS, Windows and FreeBSD, including any\n// future Node.js and Electron release thanks to Node-API, including ARM platforms like Raspberry Pi\n// and Android, as well as in Chrome, Firefox, Edge, Safari, iOS Safari and Chrome for Android.\nexport class LevelWrapper<V> {\n  config: LevelWrapperConfig<V>;\n\n  db: LevelDatabase<V>;\n\n  /**\n   * @param config.location - must be a directory path (relative or absolute) where `Level`` will\n   * store its files, or in browsers, the name of the {@link https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase `IDBDatabase`}\n   * to be opened.\n   */\n  constructor(config: LevelWrapperConfig<V>, db?: LevelDatabase<V>) {\n    this.config = {\n      createLevelDatabase,\n      ...config\n    };\n\n    this.db = db!;\n  }\n\n  async open(): Promise<void> {\n    await this.createLevelDatabase();\n\n    while (this.db.status === 'opening' || this.db.status === 'closing') {\n      await sleep(200);\n    }\n\n    if (this.db.status === 'open') {\n      return;\n    }\n\n    // `db.open()` is automatically called by the database constructor.  We're calling it explicitly\n    // in order to explicitly catch an error that would otherwise not surface until another method\n    // like `db.get()` is called.  Once `db.open()` has then been called, any read & write\n    // operations will again be queued internally until opening has finished.\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    if (!this.db) {\n      return;\n    }\n\n    while (this.db.status === 'opening' || this.db.status === 'closing') {\n      await sleep(200);\n    }\n\n    if (this.db.status === 'closed') {\n      return;\n    }\n\n    return this.db.close();\n  }\n\n  async partition(name: string): Promise<LevelWrapper<V>> {\n    await this.createLevelDatabase();\n\n    return new LevelWrapper(this.config, this.db.sublevel(name, {\n      keyEncoding   : 'utf8',\n      valueEncoding : this.config.valueEncoding\n    }));\n  }\n\n  async get(key: string, options?: LevelWrapperOptions): Promise<V|undefined>{\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    try {\n      const value = await abortOr(options?.signal, this.db.get(String(key)));\n      return value;\n    } catch (error) {\n      const e = error as { code: string };\n      // `Level`` throws an error if the key is not present.  Return `undefined` in this case.\n      if (e.code === 'LEVEL_NOT_FOUND') {\n        return undefined;\n      } else {\n        throw error;\n      }\n    }\n  }\n\n  async has(key: string, options?: LevelWrapperOptions): Promise<boolean> {\n    return !! await this.get(key, options);\n  }\n\n  async * keys(options?: LevelWrapperOptions): AsyncGenerator<string> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    for await (const key of this.db.keys()) {\n      options?.signal?.throwIfAborted();\n\n      yield key;\n    }\n  }\n\n  async * iterator(iteratorOptions?: LevelWrapperIteratorOptions<V>, options?: LevelWrapperOptions): AsyncGenerator<[string, V]> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    for await (const entry of this.db.iterator(iteratorOptions!)) {\n      options?.signal?.throwIfAborted();\n\n      yield entry;\n    }\n  }\n\n  async put(key: string, value: V, options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    return abortOr(options?.signal, this.db.put(String(key), value));\n  }\n\n  async delete(key: string, options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    return abortOr(options?.signal, this.db.del(String(key)));\n  }\n\n  async isEmpty(options?: LevelWrapperOptions): Promise<boolean> {\n    for await (const _key of this.keys(options)) {\n      return false;\n    }\n    return true;\n  }\n\n  async clear(): Promise<void> {\n    await this.createLevelDatabase();\n\n    await this.db.clear();\n\n    await this.compactUnderlyingStorage();\n  }\n\n  async batch(operations: Array<LevelWrapperBatchOperation<V>>, options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    return abortOr(options?.signal, this.db.batch(operations));\n  }\n\n  private async compactUnderlyingStorage(options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    const range = this.sublevelRange;\n    if (!range) {\n      return;\n    }\n\n    // additional methods are only available on the root API instance\n    const root = this.root;\n\n    if (root.db.supports.additionalMethods.compactRange) {\n      return abortOr(options?.signal, (root.db as any).compactRange?.(...range));\n    }\n  }\n\n  private get sublevelRange(): [ string, string ] | undefined {\n    const prefix = (this.db as any).prefix;\n    if (!prefix) {\n      return undefined;\n    }\n\n    // use the separator to derive an exclusive `end` that will never match to a key (which matches how `abstract-level` creates a `boundary`)\n    return [ prefix, prefix.slice(0, -1) + String.fromCharCode(prefix.charCodeAt(prefix.length - 1) + 1) ];\n  }\n\n  private get root(): LevelWrapper<V> {\n    let db = this.db;\n    for (const parent = (db as any).db; parent && parent !== db; ) {\n      db = parent;\n    }\n    return new LevelWrapper(this.config, db);\n  }\n\n  private async createLevelDatabase(): Promise<void> {\n    this.db ??= await this.config.createLevelDatabase!<V>(this.config.location, {\n      keyEncoding   : 'utf8',\n      valueEncoding : this.config.valueEncoding\n    });\n  }\n\n  async dump(): Promise<void> {\n    if (!this.db) {\n      return;\n    }\n\n    for await (const [ key, value ] of this.db.iterator()) {\n      console.debug(key, value);\n    }\n  }\n}\n\ntype LevelWrapperConfig<V> = CreateLevelDatabaseOptions<V> & {\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import { CID } from 'multiformats';\nimport type { AbortOptions, AwaitIterable } from 'interface-store';\nimport type { Blockstore, Pair } from 'interface-blockstore';\n\nimport { createLevelDatabase, LevelWrapper } from './level-wrapper.js';\n\n// `level` works in Node.js 12+ and Electron 5+ on Linux, Mac OS, Windows and\n// FreeBSD, including any future Node.js and Electron release thanks to Node-API, including ARM\n// platforms like Raspberry Pi and Android, as well as in Chrome, Firefox, Edge, Safari, iOS Safari\n//  and Chrome for Android.\n\n/**\n * Blockstore implementation using LevelDB for storing the actual messages (in the case of MessageStore)\n * or the data associated with messages (in the case of a DataStore).\n */\nexport class BlockstoreLevel implements Blockstore {\n  config: BlockstoreLevelConfig;\n\n  db: LevelWrapper<Uint8Array>;\n\n  constructor(config: BlockstoreLevelConfig, db?: LevelWrapper<Uint8Array>) {\n    this.config = {\n      createLevelDatabase,\n      ...config\n    };\n\n    this.db = db ?? new LevelWrapper<Uint8Array>({ ...this.config, valueEncoding: 'binary' });\n  }\n\n  async open(): Promise<void> {\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    return this.db.close();\n  }\n\n  async partition(name: string): Promise<BlockstoreLevel> {\n    const db = await this.db.partition(name);\n    return new BlockstoreLevel({ ...this.config, location: '' }, db);\n  }\n\n  async put(key: CID | string, val: Uint8Array, options?: AbortOptions): Promise<CID> {\n    await this.db.put(String(key), val, options);\n    return CID.parse(key.toString());\n  }\n\n  async get(key: CID | string, options?: AbortOptions): Promise<Uint8Array> {\n    const result = await this.db.get(String(key), options);\n    return result!;\n  }\n\n  async has(key: CID | string, options?: AbortOptions): Promise<boolean> {\n    return this.db.has(String(key), options);\n  }\n\n  async delete(key: CID | string, options?: AbortOptions): Promise<void> {\n    return this.db.delete(String(key), options);\n  }\n\n  async isEmpty(options?: AbortOptions): Promise<boolean> {\n    return this.db.isEmpty(options);\n  }\n\n  async * putMany(source: AwaitIterable<Pair>, options?: AbortOptions): AsyncIterable<CID> {\n    for await (const entry of source) {\n      await this.put(entry.cid, entry.block, options);\n\n      yield entry.cid;\n    }\n  }\n\n  async * getMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<Pair> {\n    for await (const key of source) {\n      yield {\n        cid   : key,\n        block : await this.get(key, options)\n      };\n    }\n  }\n\n  async * getAll(options?: AbortOptions): AsyncIterable<Pair> {\n    // @ts-expect-error keyEncoding is 'buffer' but types for db.iterator always return the key type as 'string'\n    const li: AsyncGenerator<[Uint8Array, Uint8Array]> = this.db.iterator({\n      keys        : true,\n      keyEncoding : 'buffer'\n    }, options);\n\n    for await (const [key, value] of li) {\n      yield { cid: CID.decode(key), block: value };\n    }\n  }\n\n  async * deleteMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<CID> {\n    for await (const key of source) {\n      await this.delete(key, options);\n\n      yield key;\n    }\n  }\n\n  /**\n   * deletes all entries\n   */\n  async clear(): Promise<void> {\n    return this.db.clear();\n  }\n\n  async dump(): Promise<void> {\n    console.group('db');\n    await this.db['dump']?.();\n    console.groupEnd();\n  }\n}\n\ntype BlockstoreLevelConfig = {\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import errCode from 'err-code'\nimport { CID } from 'multiformats/cid'\nimport resolve from './resolvers/index.js'\nimport last from 'it-last'\nimport type { UnixFS } from 'ipfs-unixfs'\nimport type { PBNode } from '@ipld/dag-pb'\nimport type { Blockstore } from 'interface-blockstore'\nimport type { Bucket } from 'hamt-sharding'\nimport type { ProgressOptions, ProgressEvent } from 'progress-events'\n\nexport interface ExportProgress {\n  /**\n   * How many bytes of the file have been read\n   */\n  bytesRead: bigint\n\n  /**\n   * How many bytes of the file will be read - n.b. this may be\n   * smaller than `fileSize` if `offset`/`length` have been\n   * specified\n   */\n  totalBytes: bigint\n\n  /**\n   * The size of the file being read - n.b. this may be\n   * larger than `total` if `offset`/`length` has been\n   * specified\n   */\n  fileSize: bigint\n}\n\nexport interface ExportWalk {\n  cid: CID\n}\n\n/**\n * Progress events emitted by the exporter\n */\nexport type ExporterProgressEvents =\n  ProgressEvent<'unixfs:exporter:progress:unixfs:file', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:progress:unixfs:raw', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:progress:raw', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:progress:identity', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:walk:file', ExportWalk> |\n  ProgressEvent<'unixfs:exporter:walk:directory', ExportWalk> |\n  ProgressEvent<'unixfs:exporter:walk:hamt-sharded-directory', ExportWalk> |\n  ProgressEvent<'unixfs:exporter:walk:raw', ExportWalk>\n\nexport interface ExporterOptions extends ProgressOptions<ExporterProgressEvents> {\n  offset?: number\n  length?: number\n  signal?: AbortSignal\n}\n\nexport interface Exportable<T> {\n  type: 'file' | 'directory' | 'object' | 'raw' | 'identity'\n  name: string\n  path: string\n  cid: CID\n  depth: number\n  size: bigint\n  content: (options?: ExporterOptions) => AsyncGenerator<T, void, unknown>\n}\n\nexport interface UnixFSFile extends Exportable<Uint8Array> {\n  type: 'file'\n  unixfs: UnixFS\n  node: PBNode\n}\n\nexport interface UnixFSDirectory extends Exportable<UnixFSEntry> {\n  type: 'directory'\n  unixfs: UnixFS\n  node: PBNode\n}\n\nexport interface ObjectNode extends Exportable<any> {\n  type: 'object'\n  node: Uint8Array\n}\n\nexport interface RawNode extends Exportable<Uint8Array> {\n  type: 'raw'\n  node: Uint8Array\n}\n\nexport interface IdentityNode extends Exportable<Uint8Array> {\n  type: 'identity'\n  node: Uint8Array\n}\n\nexport type UnixFSEntry = UnixFSFile | UnixFSDirectory | ObjectNode | RawNode | IdentityNode\n\nexport interface NextResult {\n  cid: CID\n  name: string\n  path: string\n  toResolve: string[]\n}\n\nexport interface ResolveResult {\n  entry: UnixFSEntry\n  next?: NextResult\n}\n\nexport interface Resolve { (cid: CID, name: string, path: string, toResolve: string[], depth: number, blockstore: ReadableStorage, options: ExporterOptions): Promise<ResolveResult> }\nexport interface Resolver { (cid: CID, name: string, path: string, toResolve: string[], resolve: Resolve, depth: number, blockstore: ReadableStorage, options: ExporterOptions): Promise<ResolveResult> }\n\nexport type UnixfsV1FileContent = AsyncIterable<Uint8Array> | Iterable<Uint8Array>\nexport type UnixfsV1DirectoryContent = AsyncIterable<UnixFSEntry> | Iterable<UnixFSEntry>\nexport type UnixfsV1Content = UnixfsV1FileContent | UnixfsV1DirectoryContent\nexport interface UnixfsV1Resolver { (cid: CID, node: PBNode, unixfs: UnixFS, path: string, resolve: Resolve, depth: number, blockstore: ReadableStorage): (options: ExporterOptions) => UnixfsV1Content }\n\nexport interface ShardTraversalContext {\n  hamtDepth: number\n  rootBucket: Bucket<boolean>\n  lastBucket: Bucket<boolean>\n}\n\nexport type ReadableStorage = Pick<Blockstore, 'get'>\n\nconst toPathComponents = (path: string = ''): string[] => {\n  // split on / unless escaped with \\\n  return (path\n    .trim()\n    .match(/([^\\\\^/]|\\\\\\/)+/g) ?? [])\n    .filter(Boolean)\n}\n\nconst cidAndRest = (path: string | Uint8Array | CID): { cid: CID, toResolve: string[] } => {\n  if (path instanceof Uint8Array) {\n    return {\n      cid: CID.decode(path),\n      toResolve: []\n    }\n  }\n\n  const cid = CID.asCID(path)\n  if (cid != null) {\n    return {\n      cid,\n      toResolve: []\n    }\n  }\n\n  if (typeof path === 'string') {\n    if (path.indexOf('/ipfs/') === 0) {\n      path = path.substring(6)\n    }\n\n    const output = toPathComponents(path)\n\n    return {\n      cid: CID.parse(output[0]),\n      toResolve: output.slice(1)\n    }\n  }\n\n  throw errCode(new Error(`Unknown path type ${path}`), 'ERR_BAD_PATH')\n}\n\nexport async function * walkPath (path: string | CID, blockstore: ReadableStorage, options: ExporterOptions = {}): AsyncGenerator<UnixFSEntry, void, any> {\n  let {\n    cid,\n    toResolve\n  } = cidAndRest(path)\n  let name = cid.toString()\n  let entryPath = name\n  const startingDepth = toResolve.length\n\n  while (true) {\n    const result = await resolve(cid, name, entryPath, toResolve, startingDepth, blockstore, options)\n\n    if (result.entry == null && result.next == null) {\n      throw errCode(new Error(`Could not resolve ${path}`), 'ERR_NOT_FOUND')\n    }\n\n    if (result.entry != null) {\n      yield result.entry\n    }\n\n    if (result.next == null) {\n      return\n    }\n\n    // resolve further parts\n    toResolve = result.next.toResolve\n    cid = result.next.cid\n    name = result.next.name\n    entryPath = result.next.path\n  }\n}\n\nexport async function exporter (path: string | CID, blockstore: ReadableStorage, options: ExporterOptions = {}): Promise<UnixFSEntry> {\n  const result = await last(walkPath(path, blockstore, options))\n\n  if (result == null) {\n    throw errCode(new Error(`Could not resolve ${path}`), 'ERR_NOT_FOUND')\n  }\n\n  return result\n}\n\nexport async function * recursive (path: string | CID, blockstore: ReadableStorage, options: ExporterOptions = {}): AsyncGenerator<UnixFSEntry, void, any> {\n  const node = await exporter(path, blockstore, options)\n\n  if (node == null) {\n    return\n  }\n\n  yield node\n\n  if (node.type === 'directory') {\n    for await (const child of recurse(node, options)) {\n      yield child\n    }\n  }\n\n  async function * recurse (node: UnixFSDirectory, options: ExporterOptions): AsyncGenerator<UnixFSEntry, void, any> {\n    for await (const file of node.content(options)) {\n      yield file\n\n      if (file instanceof Uint8Array) {\n        continue\n      }\n\n      if (file.type === 'directory') {\n        yield * recurse(file, options)\n      }\n    }\n  }\n}\n", "import errCode from 'err-code'\n\nimport * as dagPb from '@ipld/dag-pb'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport * as raw from 'multiformats/codecs/raw'\nimport { identity } from 'multiformats/hashes/identity'\n\nimport dagPbResolver from './unixfs-v1/index.js'\nimport rawResolver from './raw.js'\nimport dagCborResolver from './dag-cbor.js'\nimport identifyResolver from './identity.js'\nimport type { Resolve, Resolver } from '../index.js'\n\nconst resolvers: Record<number, Resolver> = {\n  [dagPb.code]: dagPbResolver,\n  [raw.code]: rawResolver,\n  [dagCbor.code]: dagCborResolver,\n  [identity.code]: identifyResolver\n}\n\nconst resolve: Resolve = async (cid, name, path, toResolve, depth, blockstore, options) => {\n  const resolver = resolvers[cid.code]\n\n  if (resolver == null) {\n    throw errCode(new Error(`No resolver for code ${cid.code}`), 'ERR_NO_RESOLVER')\n  }\n\n  return await resolver(cid, name, path, toResolve, resolve, depth, blockstore, options)\n}\n\nexport default resolve\n", "import errCode from 'err-code'\nimport { UnixFS } from 'ipfs-unixfs'\nimport findShardCid from '../../utils/find-cid-in-shard.js'\nimport { decode, PBNode } from '@ipld/dag-pb'\nimport contentFile from './content/file.js'\nimport contentDirectory from './content/directory.js'\nimport contentHamtShardedDirectory from './content/hamt-sharded-directory.js'\nimport type { CID } from 'multiformats/cid'\nimport type { Resolver, UnixfsV1Resolver } from '../../index.js'\n\nconst findLinkCid = (node: PBNode, name: string): CID | undefined => {\n  const link = node.Links.find(link => link.Name === name)\n\n  return link?.Hash\n}\n\nconst contentExporters: Record<string, UnixfsV1Resolver> = {\n  raw: contentFile,\n  file: contentFile,\n  directory: contentDirectory,\n  'hamt-sharded-directory': contentHamtShardedDirectory,\n  metadata: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n    return () => []\n  },\n  symlink: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n    return () => []\n  }\n}\n\n// @ts-expect-error types are wrong\nconst unixFsResolver: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  const block = await blockstore.get(cid, options)\n  const node = decode(block)\n  let unixfs\n  let next\n\n  if (name == null) {\n    name = cid.toString()\n  }\n\n  if (node.Data == null) {\n    throw errCode(new Error('no data in PBNode'), 'ERR_NOT_UNIXFS')\n  }\n\n  try {\n    unixfs = UnixFS.unmarshal(node.Data)\n  } catch (err: any) {\n    // non-UnixFS dag-pb node? It could happen.\n    throw errCode(err, 'ERR_NOT_UNIXFS')\n  }\n\n  if (path == null) {\n    path = name\n  }\n\n  if (toResolve.length > 0) {\n    let linkCid\n\n    if (unixfs?.type === 'hamt-sharded-directory') {\n      // special case - unixfs v1 hamt shards\n      linkCid = await findShardCid(node, toResolve[0], blockstore)\n    } else {\n      linkCid = findLinkCid(node, toResolve[0])\n    }\n\n    if (linkCid == null) {\n      throw errCode(new Error('file does not exist'), 'ERR_NOT_FOUND')\n    }\n\n    // remove the path component we have resolved\n    const nextName = toResolve.shift()\n    const nextPath = `${path}/${nextName}`\n\n    next = {\n      cid: linkCid,\n      toResolve,\n      name: nextName ?? '',\n      path: nextPath\n    }\n  }\n\n  const content = contentExporters[unixfs.type](cid, node, unixfs, path, resolve, depth, blockstore)\n\n  if (content == null) {\n    throw errCode(new Error('could not find content exporter'), 'ERR_NOT_FOUND')\n  }\n\n  if (unixfs.isDirectory()) {\n    return {\n      entry: {\n        type: 'directory',\n        name,\n        path,\n        cid,\n        content,\n        unixfs,\n        depth,\n        node,\n        size: unixfs.fileSize()\n      },\n      next\n    }\n  }\n\n  return {\n    entry: {\n      type: 'file',\n      name,\n      path,\n      cid,\n      content,\n      unixfs,\n      depth,\n      node,\n      size: unixfs.fileSize()\n    },\n    next\n  }\n}\n\nexport default unixFsResolver\n", "\nimport { Bucket, BucketPosition, createHAMT } from 'hamt-sharding'\nimport { decode, PBLink, PBNode } from '@ipld/dag-pb'\nimport { murmur3128 } from '@multiformats/murmur3'\nimport type { ExporterOptions, ShardTraversalContext, ReadableStorage } from '../index.js'\nimport type { CID } from 'multiformats/cid'\n\n// FIXME: this is copy/pasted from ipfs-unixfs-importer/src/options.js\nconst hashFn = async function (buf: Uint8Array): Promise<Uint8Array> {\n  return (await murmur3128.encode(buf))\n    // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n    // implementation only uses the first 64, so we must do the same\n    // for parity..\n    .slice(0, 8)\n    // Invert buffer because that's how Go impl does it\n    .reverse()\n}\n\nconst addLinksToHamtBucket = async (links: PBLink[], bucket: Bucket<boolean>, rootBucket: Bucket<boolean>): Promise<void> => {\n  await Promise.all(\n    links.map(async link => {\n      if (link.Name == null) {\n        // TODO(@rvagg): what do? this is technically possible\n        throw new Error('Unexpected Link without a Name')\n      }\n      if (link.Name.length === 2) {\n        const pos = parseInt(link.Name, 16)\n\n        bucket._putObjectAt(pos, new Bucket({\n          hash: rootBucket._options.hash,\n          bits: rootBucket._options.bits\n        }, bucket, pos))\n        return\n      }\n\n      await rootBucket.put(link.Name.substring(2), true)\n    })\n  )\n}\n\nconst toPrefix = (position: number): string => {\n  return position\n    .toString(16)\n    .toUpperCase()\n    .padStart(2, '0')\n    .substring(0, 2)\n}\n\nconst toBucketPath = (position: BucketPosition<boolean>): Array<Bucket<boolean>> => {\n  let bucket = position.bucket\n  const path = []\n\n  while (bucket._parent != null) {\n    path.push(bucket)\n\n    bucket = bucket._parent\n  }\n\n  path.push(bucket)\n\n  return path.reverse()\n}\n\nconst findShardCid = async (node: PBNode, name: string, blockstore: ReadableStorage, context?: ShardTraversalContext, options?: ExporterOptions): Promise<CID | undefined> => {\n  if (context == null) {\n    const rootBucket = createHAMT<boolean>({\n      hashFn\n    })\n\n    context = {\n      rootBucket,\n      hamtDepth: 1,\n      lastBucket: rootBucket\n    }\n  }\n\n  await addLinksToHamtBucket(node.Links, context.lastBucket, context.rootBucket)\n\n  const position = await context.rootBucket._findNewBucketAndPos(name)\n  let prefix = toPrefix(position.pos)\n  const bucketPath = toBucketPath(position)\n\n  if (bucketPath.length > context.hamtDepth) {\n    context.lastBucket = bucketPath[context.hamtDepth]\n\n    prefix = toPrefix(context.lastBucket._posAtParent)\n  }\n\n  const link = node.Links.find(link => {\n    if (link.Name == null) {\n      return false\n    }\n\n    const entryPrefix = link.Name.substring(0, 2)\n    const entryName = link.Name.substring(2)\n\n    if (entryPrefix !== prefix) {\n      // not the entry or subshard we're looking for\n      return false\n    }\n\n    if (entryName !== '' && entryName !== name) {\n      // not the entry we're looking for\n      return false\n    }\n\n    return true\n  })\n\n  if (link == null) {\n    return\n  }\n\n  if (link.Name != null && link.Name.substring(2) === name) {\n    return link.Hash\n  }\n\n  context.hamtDepth++\n\n  const block = await blockstore.get(link.Hash, options)\n  node = decode(block)\n\n  return await findShardCid(node, name, blockstore, context, options)\n}\n\nexport default findShardCid\n", "import extractDataFromBlock from '../../../utils/extract-data-from-block.js'\nimport validateOffsetAndLength from '../../../utils/validate-offset-and-length.js'\nimport { UnixFS } from 'ipfs-unixfs'\nimport errCode from 'err-code'\nimport * as dagPb from '@ipld/dag-pb'\nimport * as raw from 'multiformats/codecs/raw'\nimport { Pushable, pushable } from 'it-pushable'\nimport parallel from 'it-parallel'\nimport { pipe } from 'it-pipe'\nimport map from 'it-map'\nimport PQueue from 'p-queue'\nimport type { ExporterOptions, UnixfsV1FileContent, UnixfsV1Resolver, ReadableStorage, ExportProgress, ExportWalk } from '../../../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nasync function walkDAG (blockstore: ReadableStorage, node: dagPb.PBNode | Uint8Array, queue: Pushable<Uint8Array>, streamPosition: bigint, start: bigint, end: bigint, options: ExporterOptions): Promise<void> {\n  // a `raw` node\n  if (node instanceof Uint8Array) {\n    const buf = extractDataFromBlock(node, streamPosition, start, end)\n\n    queue.push(buf)\n\n    return\n  }\n\n  if (node.Data == null) {\n    throw errCode(new Error('no data in PBNode'), 'ERR_NOT_UNIXFS')\n  }\n\n  let file: UnixFS\n\n  try {\n    file = UnixFS.unmarshal(node.Data)\n  } catch (err: any) {\n    throw errCode(err, 'ERR_NOT_UNIXFS')\n  }\n\n  // might be a unixfs `raw` node or have data on intermediate nodes\n  if (file.data != null) {\n    const data = file.data\n    const buf = extractDataFromBlock(data, streamPosition, start, end)\n\n    queue.push(buf)\n\n    streamPosition += BigInt(buf.byteLength)\n  }\n\n  const childOps: Array<{ link: dagPb.PBLink, blockStart: bigint }> = []\n\n  if (node.Links.length !== file.blockSizes.length) {\n    throw errCode(new Error('Inconsistent block sizes and dag links'), 'ERR_NOT_UNIXFS')\n  }\n\n  for (let i = 0; i < node.Links.length; i++) {\n    const childLink = node.Links[i]\n    const childStart = streamPosition // inclusive\n    const childEnd = childStart + file.blockSizes[i] // exclusive\n\n    if ((start >= childStart && start < childEnd) || // child has offset byte\n        (end >= childStart && end <= childEnd) || // child has end byte\n        (start < childStart && end > childEnd)) { // child is between offset and end bytes\n      childOps.push({\n        link: childLink,\n        blockStart: streamPosition\n      })\n    }\n\n    streamPosition = childEnd\n\n    if (streamPosition > end) {\n      break\n    }\n  }\n\n  await pipe(\n    childOps,\n    (source) => map(source, (op) => {\n      return async () => {\n        const block = await blockstore.get(op.link.Hash, options)\n\n        return {\n          ...op,\n          block\n        }\n      }\n    }),\n    (source) => parallel(source, {\n      ordered: true\n    }),\n    async (source) => {\n      for await (const { link, block, blockStart } of source) {\n        let child: dagPb.PBNode | Uint8Array\n        switch (link.Hash.code) {\n          case dagPb.code:\n            child = dagPb.decode(block)\n            break\n          case raw.code:\n            child = block\n            break\n          default:\n            queue.end(errCode(new Error(`Unsupported codec: ${link.Hash.code}`), 'ERR_NOT_UNIXFS'))\n            return\n        }\n\n        // create a queue for this child - we use a queue instead of recursion\n        // to avoid overflowing the stack\n        const childQueue = new PQueue({\n          concurrency: 1\n        })\n        // if any of the child jobs error, end the read queue with the error\n        childQueue.on('error', error => {\n          queue.end(error)\n        })\n\n        // if the job rejects the 'error' event will be emitted on the child queue\n        void childQueue.add(async () => {\n          options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:file', {\n            cid: link.Hash\n          }))\n\n          await walkDAG(blockstore, child, queue, blockStart, start, end, options)\n        })\n\n        // wait for this child to complete before moving on to the next\n        await childQueue.onIdle()\n      }\n    }\n  )\n\n  if (streamPosition >= end) {\n    queue.end()\n  }\n}\n\nconst fileContent: UnixfsV1Resolver = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n  async function * yieldFileContent (options: ExporterOptions = {}): UnixfsV1FileContent {\n    const fileSize = unixfs.fileSize()\n\n    if (fileSize === undefined) {\n      throw new Error('File was a directory')\n    }\n\n    const {\n      start,\n      end\n    } = validateOffsetAndLength(fileSize, options.offset, options.length)\n\n    if (end === 0n) {\n      return\n    }\n\n    let read = 0n\n    const wanted = end - start\n    const queue = pushable()\n\n    options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:file', {\n      cid\n    }))\n\n    void walkDAG(blockstore, node, queue, 0n, start, end, options)\n      .catch(err => {\n        queue.end(err)\n      })\n\n    for await (const buf of queue) {\n      if (buf == null) {\n        continue\n      }\n\n      read += BigInt(buf.byteLength)\n\n      if (read > wanted) {\n        queue.end()\n        throw errCode(new Error('Read too many bytes - the file size reported by the UnixFS data in the root node may be incorrect'), 'ERR_OVER_READ')\n      }\n\n      if (read === wanted) {\n        queue.end()\n      }\n\n      options.onProgress?.(new CustomProgressEvent<ExportProgress>('unixfs:exporter:progress:unixfs:file', {\n        bytesRead: read,\n        totalBytes: wanted,\n        fileSize\n      }))\n\n      yield buf\n    }\n\n    if (read < wanted) {\n      throw errCode(new Error('Traversed entire DAG but did not read enough bytes'), 'ERR_UNDER_READ')\n    }\n  }\n\n  return yieldFileContent\n}\n\nexport default fileContent\n", "\nfunction extractDataFromBlock (block: Uint8Array, blockStart: bigint, requestedStart: bigint, requestedEnd: bigint): Uint8Array {\n  const blockLength = BigInt(block.length)\n  const blockEnd = BigInt(blockStart + blockLength)\n\n  if (requestedStart >= blockEnd || requestedEnd < blockStart) {\n    // If we are looking for a byte range that is starts after the start of the block,\n    // return an empty block.  This can happen when internal nodes contain data\n    return new Uint8Array(0)\n  }\n\n  if (requestedEnd >= blockStart && requestedEnd < blockEnd) {\n    // If the end byte is in the current block, truncate the block to the end byte\n    block = block.subarray(0, Number(requestedEnd - blockStart))\n  }\n\n  if (requestedStart >= blockStart && requestedStart < blockEnd) {\n    // If the start byte is in the current block, skip to the start byte\n    block = block.subarray(Number(requestedStart - blockStart))\n  }\n\n  return block\n}\n\nexport default extractDataFromBlock\n", "import errCode from 'err-code'\n\nconst validateOffsetAndLength = (size: number | bigint, offset: number | bigint = 0, length: number | bigint = size): { start: bigint, end: bigint } => {\n  const fileSize = BigInt(size)\n  const start = BigInt(offset ?? 0)\n  let end = BigInt(length)\n\n  if (end !== fileSize) {\n    end = start + end\n  }\n\n  if (end > fileSize) {\n    end = fileSize\n  }\n\n  if (start < 0n) {\n    throw errCode(new Error('Offset must be greater than or equal to 0'), 'ERR_INVALID_PARAMS')\n  }\n\n  if (start > fileSize) {\n    throw errCode(new Error('Offset must be less than the file size'), 'ERR_INVALID_PARAMS')\n  }\n\n  if (end < 0n) {\n    throw errCode(new Error('Length must be greater than or equal to 0'), 'ERR_INVALID_PARAMS')\n  }\n\n  if (end > fileSize) {\n    throw errCode(new Error('Length must be less than the file size'), 'ERR_INVALID_PARAMS')\n  }\n\n  return {\n    start,\n    end\n  }\n}\n\nexport default validateOffsetAndLength\n", "/**\n * @packageDocumentation\n *\n * An iterable that you can push values into.\n *\n * @example\n *\n * ```js\n * import { pushable } from 'it-pushable'\n *\n * const source = pushable()\n *\n * setTimeout(() => source.push('hello'), 100)\n * setTimeout(() => source.push('world'), 200)\n * setTimeout(() => source.end(), 300)\n *\n * const start = Date.now()\n *\n * for await (const value of source) {\n *   console.log(`got \"${value}\" after ${Date.now() - start}ms`)\n * }\n * console.log(`done after ${Date.now() - start}ms`)\n *\n * // Output:\n * // got \"hello\" after 105ms\n * // got \"world\" after 207ms\n * // done after 309ms\n * ```\n *\n * @example\n *\n * ```js\n * import { pushableV } from 'it-pushable'\n * import all from 'it-all'\n *\n * const source = pushableV()\n *\n * source.push(1)\n * source.push(2)\n * source.push(3)\n * source.end()\n *\n * console.info(await all(source))\n *\n * // Output:\n * // [ [1, 2, 3] ]\n * ```\n */\n\nimport { FIFO, Next } from './fifo.js'\n\ninterface BasePushable<T> {\n  /**\n   * End the iterable after all values in the buffer (if any) have been yielded. If an\n   * error is passed the buffer is cleared immediately and the next iteration will\n   * throw the passed error\n   */\n  end: (err?: Error) => this\n\n  /**\n   * Push a value into the iterable. Values are yielded from the iterable in the order\n   * they are pushed. Values not yet consumed from the iterable are buffered.\n   */\n  push: (value: T) => this\n\n  /**\n   * This property contains the number of bytes (or objects) in the queue ready to be read.\n   *\n   * If `objectMode` is true, this is the number of objects in the queue, if false it's the\n   * total number of bytes in the queue.\n   */\n  readableLength: number\n}\n\n/**\n * An iterable that you can push values into.\n */\nexport interface Pushable<T, R = void, N = unknown> extends AsyncGenerator<T, R, N>, BasePushable<T> {}\n\n/**\n * Similar to `pushable`, except it yields multiple buffered chunks at a time. All values yielded from the iterable will be arrays.\n */\nexport interface PushableV<T, R = void, N = unknown> extends AsyncGenerator<T[], R, N>, BasePushable<T> {}\n\nexport interface Options {\n  /**\n   * A boolean value that means non-`Uint8Array`s will be passed to `.push`, default: `false`\n   */\n  objectMode?: boolean\n\n  /**\n   * A function called after *all* values have been yielded from the iterator (including\n   * buffered values). In the case when the iterator is ended with an error it will be\n   * passed the error as a parameter.\n   */\n  onEnd?: (err?: Error) => void\n}\n\ntype NextResult<T> = { done: false, value: T } | { done: true }\n\ninterface getNext<T, V = T> { (buffer: FIFO<T>): NextResult<V> }\n\nexport interface ObjectPushableOptions extends Options {\n  objectMode: true\n}\n\nexport interface BytePushableOptions extends Options {\n  objectMode?: false\n}\n\n/**\n * Create a new async iterable. The values yielded from calls to `.next()`\n * or when used in a `for await of`loop are \"pushed\" into the iterable.\n * Returns an async iterable object with additional methods.\n */\nexport function pushable<T extends { byteLength: number } = Uint8Array> (options?: BytePushableOptions): Pushable<T>\nexport function pushable<T> (options: ObjectPushableOptions): Pushable<T>\nexport function pushable<T> (options: Options = {}): Pushable<T> {\n  const getNext = (buffer: FIFO<T>): NextResult<T> => {\n    const next: Next<T> | undefined = buffer.shift()\n\n    if (next == null) {\n      return { done: true }\n    }\n\n    if (next.error != null) {\n      throw next.error\n    }\n\n    return {\n      done: next.done === true,\n      // @ts-expect-error\n      value: next.value\n    }\n  }\n\n  return _pushable<T, T, Pushable<T>>(getNext, options)\n}\n\nexport function pushableV<T extends { byteLength: number } = Uint8Array> (options?: BytePushableOptions): PushableV<T>\nexport function pushableV<T> (options: ObjectPushableOptions): PushableV<T>\nexport function pushableV<T> (options: Options = {}): PushableV<T> {\n  const getNext = (buffer: FIFO<T>): NextResult<T[]> => {\n    let next: Next<T> | undefined\n    const values: T[] = []\n\n    while (!buffer.isEmpty()) {\n      next = buffer.shift()\n\n      if (next == null) {\n        break\n      }\n\n      if (next.error != null) {\n        throw next.error\n      }\n\n      if (next.done === false) {\n        // @ts-expect-error\n        values.push(next.value)\n      }\n    }\n\n    if (next == null) {\n      return { done: true }\n    }\n\n    return {\n      done: next.done === true,\n      value: values\n    }\n  }\n\n  return _pushable<T, T[], PushableV<T>>(getNext, options)\n}\n\nfunction _pushable<PushType, ValueType, ReturnType> (getNext: getNext<PushType, ValueType>, options?: Options): ReturnType {\n  options = options ?? {}\n  let onEnd = options.onEnd\n  let buffer = new FIFO<PushType>()\n  let pushable: any\n  let onNext: ((next: Next<PushType>) => ReturnType) | null\n  let ended: boolean\n\n  const waitNext = async (): Promise<NextResult<ValueType>> => {\n    if (!buffer.isEmpty()) {\n      return getNext(buffer)\n    }\n\n    if (ended) {\n      return { done: true }\n    }\n\n    return await new Promise((resolve, reject) => {\n      onNext = (next: Next<PushType>) => {\n        onNext = null\n        buffer.push(next)\n\n        try {\n          resolve(getNext(buffer))\n        } catch (err) {\n          reject(err)\n        }\n\n        return pushable\n      }\n    })\n  }\n\n  const bufferNext = (next: Next<PushType>): ReturnType => {\n    if (onNext != null) {\n      return onNext(next)\n    }\n\n    buffer.push(next)\n    return pushable\n  }\n\n  const bufferError = (err: Error): ReturnType => {\n    buffer = new FIFO()\n\n    if (onNext != null) {\n      return onNext({ error: err })\n    }\n\n    buffer.push({ error: err })\n    return pushable\n  }\n\n  const push = (value: PushType): ReturnType => {\n    if (ended) {\n      return pushable\n    }\n\n    // @ts-expect-error `byteLength` is not declared on PushType\n    if (options?.objectMode !== true && value?.byteLength == null) {\n      throw new Error('objectMode was not true but tried to push non-Uint8Array value')\n    }\n\n    return bufferNext({ done: false, value })\n  }\n  const end = (err?: Error): ReturnType => {\n    if (ended) return pushable\n    ended = true\n\n    return (err != null) ? bufferError(err) : bufferNext({ done: true })\n  }\n  const _return = (): NextResult<ValueType> => {\n    buffer = new FIFO()\n    end()\n\n    return { done: true }\n  }\n  const _throw = (err: Error): NextResult<ValueType> => {\n    end(err)\n\n    return { done: true }\n  }\n\n  pushable = {\n    [Symbol.asyncIterator] () { return this },\n    next: waitNext,\n    return: _return,\n    throw: _throw,\n    push,\n    end,\n    get readableLength () {\n      return buffer.size\n    }\n  }\n\n  if (onEnd == null) {\n    return pushable\n  }\n\n  const _pushable = pushable\n\n  pushable = {\n    [Symbol.asyncIterator] () { return this },\n    next () {\n      return _pushable.next()\n    },\n    throw (err: Error) {\n      _pushable.throw(err)\n\n      if (onEnd != null) {\n        onEnd(err)\n        onEnd = undefined\n      }\n\n      return { done: true }\n    },\n    return () {\n      _pushable.return()\n\n      if (onEnd != null) {\n        onEnd()\n        onEnd = undefined\n      }\n\n      return { done: true }\n    },\n    push,\n    end (err: Error) {\n      _pushable.end(err)\n\n      if (onEnd != null) {\n        onEnd(err)\n        onEnd = undefined\n      }\n\n      return pushable\n    },\n    get readableLength () {\n      return _pushable.readableLength\n    }\n  }\n\n  return pushable\n}\n", "// ported from https://www.npmjs.com/package/fast-fifo\n\nexport interface Next<T> {\n  done?: boolean\n  error?: Error\n  value?: T\n}\n\nclass FixedFIFO<T> {\n  public buffer: Array<Next<T> | undefined>\n  private readonly mask: number\n  private top: number\n  private btm: number\n  public next: FixedFIFO<T> | null\n\n  constructor (hwm: number) {\n    if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) {\n      throw new Error('Max size for a FixedFIFO should be a power of two')\n    }\n\n    this.buffer = new Array(hwm)\n    this.mask = hwm - 1\n    this.top = 0\n    this.btm = 0\n    this.next = null\n  }\n\n  push (data: Next<T>): boolean {\n    if (this.buffer[this.top] !== undefined) {\n      return false\n    }\n\n    this.buffer[this.top] = data\n    this.top = (this.top + 1) & this.mask\n\n    return true\n  }\n\n  shift (): Next<T> | undefined {\n    const last = this.buffer[this.btm]\n\n    if (last === undefined) {\n      return undefined\n    }\n\n    this.buffer[this.btm] = undefined\n    this.btm = (this.btm + 1) & this.mask\n    return last\n  }\n\n  isEmpty (): boolean {\n    return this.buffer[this.btm] === undefined\n  }\n}\n\nexport interface FIFOOptions {\n  /**\n   * When the queue reaches this size, it will be split into head/tail parts\n   */\n  splitLimit?: number\n}\n\nexport class FIFO<T> {\n  public size: number\n  private readonly hwm: number\n  private head: FixedFIFO<T>\n  private tail: FixedFIFO<T>\n\n  constructor (options: FIFOOptions = {}) {\n    this.hwm = options.splitLimit ?? 16\n    this.head = new FixedFIFO<T>(this.hwm)\n    this.tail = this.head\n    this.size = 0\n  }\n\n  calculateSize (obj: any): number {\n    if (obj?.byteLength != null) {\n      return obj.byteLength\n    }\n\n    return 1\n  }\n\n  push (val: Next<T>): void {\n    if (val?.value != null) {\n      this.size += this.calculateSize(val.value)\n    }\n\n    if (!this.head.push(val)) {\n      const prev = this.head\n      this.head = prev.next = new FixedFIFO<T>(2 * this.head.buffer.length)\n      this.head.push(val)\n    }\n  }\n\n  shift (): Next<T> | undefined {\n    let val = this.tail.shift()\n\n    if (val === undefined && (this.tail.next != null)) {\n      const next = this.tail.next\n      this.tail.next = null\n      this.tail = next\n      val = this.tail.shift()\n    }\n\n    if (val?.value != null) {\n      this.size -= this.calculateSize(val.value)\n    }\n\n    return val\n  }\n\n  isEmpty (): boolean {\n    return this.head.isEmpty()\n  }\n}\n", "/* global EventTarget Event */\n\nimport defer from 'p-defer'\n\ninterface Operation<T> {\n  done: boolean\n  ok: boolean\n  err: Error\n  value: T\n}\n\nconst CustomEvent = globalThis.CustomEvent ?? Event\n\nexport interface ParallelOptions {\n  /**\n   * How many jobs to execute in parallel (default: )\n   */\n  concurrency?: number\n  ordered?: boolean\n}\n\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function * parallel <T> (source: Iterable<() => Promise<T>> | AsyncIterable<() => Promise<T>>, options: ParallelOptions = {}): AsyncGenerator<T, void, undefined> {\n  let concurrency = options.concurrency ?? Infinity\n\n  if (concurrency < 1) {\n    concurrency = Infinity\n  }\n\n  const ordered = options.ordered == null ? false : options.ordered\n  const emitter = new EventTarget()\n\n  const ops: Array<Operation<T>> = []\n  let slotAvailable = defer()\n  let resultAvailable = defer()\n  let sourceFinished = false\n  let sourceErr: Error | undefined\n  let opErred = false\n\n  emitter.addEventListener('task-complete', () => {\n    resultAvailable.resolve()\n  })\n\n  void Promise.resolve().then(async () => {\n    try {\n      for await (const task of source) {\n        if (ops.length === concurrency) {\n          slotAvailable = defer()\n          await slotAvailable.promise\n        }\n\n        if (opErred) {\n          break\n        }\n\n        const op: any = {\n          done: false\n        }\n        ops.push(op)\n\n        task()\n          .then(result => {\n            op.done = true\n            op.ok = true\n            op.value = result\n            emitter.dispatchEvent(new CustomEvent('task-complete'))\n          }, err => {\n            op.done = true\n            op.err = err\n            emitter.dispatchEvent(new CustomEvent('task-complete'))\n          })\n      }\n\n      sourceFinished = true\n      emitter.dispatchEvent(new CustomEvent('task-complete'))\n    } catch (err: any) {\n      sourceErr = err\n      emitter.dispatchEvent(new CustomEvent('task-complete'))\n    }\n  })\n\n  function valuesAvailable (): boolean {\n    if (ordered) {\n      return ops[0]?.done\n    }\n\n    return Boolean(ops.find(op => op.done))\n  }\n\n  function * yieldOrderedValues (): Generator<T, void, unknown> {\n    while ((ops.length > 0) && ops[0].done) {\n      const op = ops[0]\n      ops.shift()\n\n      if (op.ok) {\n        yield op.value\n      } else {\n        // allow the source to exit\n        opErred = true\n        slotAvailable.resolve()\n\n        throw op.err\n      }\n\n      slotAvailable.resolve()\n    }\n  }\n\n  function * yieldUnOrderedValues (): Generator<T, void, unknown> {\n    // more values can become available while we wait for `yield`\n    // to return control to this function\n    while (valuesAvailable()) {\n      for (let i = 0; i < ops.length; i++) {\n        if (ops[i].done) {\n          const op = ops[i]\n          ops.splice(i, 1)\n          i--\n\n          if (op.ok) {\n            yield op.value\n          } else {\n            opErred = true\n            slotAvailable.resolve()\n\n            throw op.err\n          }\n\n          slotAvailable.resolve()\n        }\n      }\n    }\n  }\n\n  while (true) {\n    if (!valuesAvailable()) {\n      resultAvailable = defer()\n      await resultAvailable.promise\n    }\n\n    if (sourceErr != null) {\n      // the source threw an error, propagate it\n      throw sourceErr\n    }\n\n    if (ordered) {\n      yield * yieldOrderedValues()\n    } else {\n      yield * yieldUnOrderedValues()\n    }\n\n    if (sourceFinished && ops.length === 0) {\n      // not waiting for any results and no more tasks so we are done\n      break\n    }\n  }\n}\n", "export default function pDefer() {\n\tconst deferred = {};\n\n\tdeferred.promise = new Promise((resolve, reject) => {\n\t\tdeferred.resolve = resolve;\n\t\tdeferred.reject = reject;\n\t});\n\n\treturn deferred;\n}\n", "import { pushable } from 'it-pushable'\nimport merge from 'it-merge'\nimport type { Duplex, Transform, Sink } from 'it-stream-types'\n\ninterface SourceFn<A = any> { (): A }\n\ntype PipeSource<A = any> =\n  Iterable<A> |\n  AsyncIterable<A> |\n  SourceFn<A> |\n  Duplex<A, any, any>\n\ntype PipeTransform<A = any, B = any> =\n  Transform<A, B> |\n  Duplex<B, A>\n\ntype PipeSink<A = any, B = any> =\n  Sink<A, B> |\n  Duplex<any, A, B>\n\ntype PipeOutput<A> =\n  A extends Sink<any> ? ReturnType<A> :\n    A extends Duplex<any, any, any> ? ReturnType<A['sink']> :\n      never\n\n// single item pipe output includes pipe source types\ntype SingleItemPipeOutput<A> =\n  A extends Iterable<any> ? A :\n    A extends AsyncIterable<any> ? A :\n      A extends SourceFn ? ReturnType<A> :\n        A extends Duplex<any, any, any> ? A['source'] :\n          PipeOutput<A>\n\ntype PipeFnInput<A> =\n  A extends Iterable<any> ? A :\n    A extends AsyncIterable<any> ? A :\n      A extends SourceFn ? ReturnType<A> :\n        A extends Transform<any, any> ? ReturnType<A> :\n          A extends Duplex<any, any, any> ? A['source'] :\n            never\n\n// one item, just a pass-through\nexport function pipe<\n  A extends PipeSource\n> (\n  source: A\n): SingleItemPipeOutput<A>\n\n// two items, source to sink\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeSink<PipeFnInput<A>>\n> (\n  source: A,\n  sink: B\n): PipeOutput<B>\n\n// three items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeSink<PipeFnInput<B>>\n> (\n  source: A,\n  transform1: B,\n  sink: C\n): PipeOutput<C>\n\n// many items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeSink<PipeFnInput<C>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  sink: D\n): PipeOutput<D>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeSink<PipeFnInput<D>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  sink: E\n): PipeOutput<E>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeSink<PipeFnInput<E>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  sink: F\n): PipeOutput<F>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeSink<PipeFnInput<F>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  sink: G\n): PipeOutput<G>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeSink<PipeFnInput<G>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  sink: H\n): PipeOutput<H>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeSink<PipeFnInput<H>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  sink: I\n): PipeOutput<I>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeTransform<PipeFnInput<H>>,\n  J extends PipeSink<PipeFnInput<I>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  transform8: I,\n  sink: J\n): PipeOutput<J>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeTransform<PipeFnInput<H>>,\n  J extends PipeTransform<PipeFnInput<I>>,\n  K extends PipeSink<PipeFnInput<J>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  transform8: I,\n  transform9: J,\n  sink: K\n): PipeOutput<K>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeTransform<PipeFnInput<H>>,\n  J extends PipeTransform<PipeFnInput<I>>,\n  K extends PipeTransform<PipeFnInput<J>>,\n  L extends PipeSink<PipeFnInput<K>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  transform8: I,\n  transform9: J,\n  transform10: K,\n  sink: L\n): PipeOutput<L>\n\nexport function pipe (first: any, ...rest: any[]): any {\n  if (first == null) {\n    throw new Error('Empty pipeline')\n  }\n\n  // Duplex at start: wrap in function and return duplex source\n  if (isDuplex(first)) {\n    const duplex = first\n    first = () => duplex.source\n  // Iterable at start: wrap in function\n  } else if (isIterable(first) || isAsyncIterable(first)) {\n    const source = first\n    first = () => source\n  }\n\n  const fns = [first, ...rest]\n\n  if (fns.length > 1) {\n    // Duplex at end: use duplex sink\n    if (isDuplex(fns[fns.length - 1])) {\n      fns[fns.length - 1] = fns[fns.length - 1].sink\n    }\n  }\n\n  if (fns.length > 2) {\n    // Duplex in the middle, consume source with duplex sink and return duplex source\n    for (let i = 1; i < fns.length - 1; i++) {\n      if (isDuplex(fns[i])) {\n        fns[i] = duplexPipelineFn(fns[i])\n      }\n    }\n  }\n\n  return rawPipe(...fns)\n}\n\nexport const rawPipe = (...fns: any): any => {\n  let res\n  while (fns.length > 0) {\n    res = fns.shift()(res)\n  }\n  return res\n}\n\nconst isAsyncIterable = (obj: any): obj is AsyncIterable<unknown> => {\n  return obj?.[Symbol.asyncIterator] != null\n}\n\nconst isIterable = (obj: any): obj is Iterable<unknown> => {\n  return obj?.[Symbol.iterator] != null\n}\n\nconst isDuplex = (obj: any): obj is Duplex => {\n  if (obj == null) {\n    return false\n  }\n\n  return obj.sink != null && obj.source != null\n}\n\nconst duplexPipelineFn = (duplex: Duplex<any, any, any>) => {\n  return (source: any) => {\n    const p = duplex.sink(source)\n\n    if (p?.then != null) {\n      const stream = pushable<any>({\n        objectMode: true\n      })\n      p.then(() => {\n        stream.end()\n      }, (err: Error) => {\n        stream.end(err)\n      })\n\n      let sourceWrap: () => Iterable<any> | AsyncIterable<any>\n      const source = duplex.source\n\n      if (isAsyncIterable(source)) {\n        sourceWrap = async function * () {\n          yield * source\n          stream.end()\n        }\n      } else if (isIterable(source)) {\n        sourceWrap = function * () {\n          yield * source\n          stream.end()\n        }\n      } else {\n        throw new Error('Unknown duplex source type - must be Iterable or AsyncIterable')\n      }\n\n      return merge(stream, sourceWrap())\n    }\n\n    return duplex.source\n  }\n}\n", "import { pushable } from 'it-pushable'\n\nfunction isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Treat one or more iterables as a single iterable.\n *\n * Nb. sources are iterated over in parallel so the\n * order of emitted items is not guaranteed.\n */\nfunction merge <T> (...sources: Array<Iterable<T>>): Generator<T, void, undefined>\nfunction merge <T> (...sources: Array<AsyncIterable<T> | Iterable<T>>): AsyncGenerator<T, void, undefined>\nfunction merge <T> (...sources: Array<AsyncIterable<T> | Iterable<T>>): AsyncGenerator<T, void, undefined> | Generator<T, void, undefined> {\n  const syncSources: Array<Iterable<T>> = []\n\n  for (const source of sources) {\n    if (!isAsyncIterable(source)) {\n      syncSources.push(source)\n    }\n  }\n\n  if (syncSources.length === sources.length) {\n    // all sources are synchronous\n    return (function * () {\n      for (const source of syncSources) {\n        yield * source\n      }\n    })()\n  }\n\n  return (async function * () {\n    const output = pushable<T>({\n      objectMode: true\n    })\n\n    void Promise.resolve().then(async () => {\n      try {\n        await Promise.all(\n          sources.map(async (source) => {\n            for await (const item of source) {\n              output.push(item)\n            }\n          })\n        )\n\n        output.end()\n      } catch (err: any) {\n        output.end(err)\n      }\n    })\n\n    yield * output\n  })()\n}\n\nexport default merge\n", "import peek from 'it-peekable'\n\nfunction isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Takes an (async) iterable and returns one with each item mapped by the passed\n * function\n */\nfunction map <I, O> (source: Iterable<I>, func: (val: I) => Promise<O>): AsyncGenerator<O, void, undefined>\nfunction map <I, O> (source: Iterable<I>, func: (val: I) => O): Generator<O, void, undefined>\nfunction map <I, O> (source: AsyncIterable<I> | Iterable<I>, func: (val: I) => O | Promise<O>): AsyncGenerator<O, void, undefined>\nfunction map <I, O> (source: AsyncIterable<I> | Iterable<I>, func: (val: I) => O | Promise<O>): AsyncGenerator<O, void, undefined> | Generator<O, void, undefined> {\n  if (isAsyncIterable(source)) {\n    return (async function * () {\n      for await (const val of source) {\n        yield func(val)\n      }\n    })()\n  }\n\n  // if mapping function returns a promise we have to return an async generator\n  const peekable = peek(source)\n  const { value, done } = peekable.next()\n\n  if (done === true) {\n    return (function * () {}())\n  }\n\n  const res = func(value)\n\n  // @ts-expect-error .then is not present on O\n  if (typeof res.then === 'function') {\n    return (async function * () {\n      yield await res\n\n      for await (const val of peekable) {\n        yield func(val)\n      }\n    })()\n  }\n\n  const fn = func as (val: I) => O\n\n  return (function * () {\n    yield res as O\n\n    for (const val of peekable) {\n      yield fn(val)\n    }\n  })()\n}\n\nexport default map\n", "\ninterface Peek <T> {\n  peek: () => IteratorResult<T, undefined>\n}\n\ninterface AsyncPeek <T> {\n  peek: () => Promise<IteratorResult<T, undefined>>\n}\n\ninterface Push <T> {\n  push: (value: T) => void\n}\n\ntype Peekable <T> = Iterable<T> & Peek<T> & Push<T> & Iterator<T>\n\ntype AsyncPeekable <T> = AsyncIterable<T> & AsyncPeek<T> & Push<T> & AsyncIterator<T>\n\nfunction peekable <T> (iterable: Iterable<T>): Peekable<T>\nfunction peekable <T> (iterable: AsyncIterable<T>): AsyncPeekable<T>\nfunction peekable <T> (iterable: Iterable<T> | AsyncIterable<T>): Peekable<T> | AsyncPeekable<T> {\n  // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n  const [iterator, symbol] = iterable[Symbol.asyncIterator] != null\n    // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n    ? [iterable[Symbol.asyncIterator](), Symbol.asyncIterator]\n    // @ts-expect-error can't use Symbol.iterator to index iterable since it might be AsyncIterable\n    : [iterable[Symbol.iterator](), Symbol.iterator]\n\n  const queue: any[] = []\n\n  // @ts-expect-error can't use symbol to index peekable\n  return {\n    peek: () => {\n      return iterator.next()\n    },\n    push: (value: any) => {\n      queue.push(value)\n    },\n    next: () => {\n      if (queue.length > 0) {\n        return {\n          done: false,\n          value: queue.shift()\n        }\n      }\n\n      return iterator.next()\n    },\n    [symbol] () {\n      return this\n    }\n  }\n}\n\nexport default peekable\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PQueue_instances, _PQueue_carryoverConcurrencyCount, _PQueue_isIntervalIgnored, _PQueue_intervalCount, _PQueue_intervalCap, _PQueue_interval, _PQueue_intervalEnd, _PQueue_intervalId, _PQueue_timeoutId, _PQueue_queue, _PQueue_queueClass, _PQueue_pending, _PQueue_concurrency, _PQueue_isPaused, _PQueue_throwOnTimeout, _PQueue_doesIntervalAllowAnother_get, _PQueue_doesConcurrentAllowAnother_get, _PQueue_next, _PQueue_onResumeInterval, _PQueue_isIntervalPaused_get, _PQueue_tryToStartAnother, _PQueue_initializeIntervalIfNeeded, _PQueue_onInterval, _PQueue_processQueue, _PQueue_throwOnAbort, _PQueue_onEvent;\nimport EventEmitter from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nThe error thrown by `queue.add()` when a job is aborted before it is run. See `signal`.\n*/\nexport class AbortError extends Error {\n}\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n    // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n    constructor(options) {\n        var _a, _b, _c, _d;\n        super();\n        _PQueue_instances.add(this);\n        _PQueue_carryoverConcurrencyCount.set(this, void 0);\n        _PQueue_isIntervalIgnored.set(this, void 0);\n        _PQueue_intervalCount.set(this, 0);\n        _PQueue_intervalCap.set(this, void 0);\n        _PQueue_interval.set(this, void 0);\n        _PQueue_intervalEnd.set(this, 0);\n        _PQueue_intervalId.set(this, void 0);\n        _PQueue_timeoutId.set(this, void 0);\n        _PQueue_queue.set(this, void 0);\n        _PQueue_queueClass.set(this, void 0);\n        _PQueue_pending.set(this, 0);\n        // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n        _PQueue_concurrency.set(this, void 0);\n        _PQueue_isPaused.set(this, void 0);\n        _PQueue_throwOnTimeout.set(this, void 0);\n        /**\n        Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n    \n        Applies to each future operation.\n        */\n        Object.defineProperty(this, \"timeout\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        options = {\n            carryoverConcurrencyCount: false,\n            intervalCap: Number.POSITIVE_INFINITY,\n            interval: 0,\n            concurrency: Number.POSITIVE_INFINITY,\n            autoStart: true,\n            queueClass: PriorityQueue,\n            ...options,\n        };\n        if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n            throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(_b = (_a = options.intervalCap) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''}\\` (${typeof options.intervalCap})`);\n        }\n        if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n            throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(_d = (_c = options.interval) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : ''}\\` (${typeof options.interval})`);\n        }\n        __classPrivateFieldSet(this, _PQueue_carryoverConcurrencyCount, options.carryoverConcurrencyCount, \"f\");\n        __classPrivateFieldSet(this, _PQueue_isIntervalIgnored, options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0, \"f\");\n        __classPrivateFieldSet(this, _PQueue_intervalCap, options.intervalCap, \"f\");\n        __classPrivateFieldSet(this, _PQueue_interval, options.interval, \"f\");\n        __classPrivateFieldSet(this, _PQueue_queue, new options.queueClass(), \"f\");\n        __classPrivateFieldSet(this, _PQueue_queueClass, options.queueClass, \"f\");\n        this.concurrency = options.concurrency;\n        this.timeout = options.timeout;\n        __classPrivateFieldSet(this, _PQueue_throwOnTimeout, options.throwOnTimeout === true, \"f\");\n        __classPrivateFieldSet(this, _PQueue_isPaused, options.autoStart === false, \"f\");\n    }\n    get concurrency() {\n        return __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n    }\n    set concurrency(newConcurrency) {\n        if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n            throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n        }\n        __classPrivateFieldSet(this, _PQueue_concurrency, newConcurrency, \"f\");\n        __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n    }\n    async add(function_, options = {}) {\n        options = {\n            timeout: this.timeout,\n            throwOnTimeout: __classPrivateFieldGet(this, _PQueue_throwOnTimeout, \"f\"),\n            ...options,\n        };\n        return new Promise((resolve, reject) => {\n            __classPrivateFieldGet(this, _PQueue_queue, \"f\").enqueue(async () => {\n                var _a;\n                var _b, _c;\n                __classPrivateFieldSet(this, _PQueue_pending, (_b = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _b++, _b), \"f\");\n                __classPrivateFieldSet(this, _PQueue_intervalCount, (_c = __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\"), _c++, _c), \"f\");\n                try {\n                    // TODO: Use options.signal?.throwIfAborted() when targeting Node.js 18\n                    if ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n                        // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n                        throw new AbortError('The task was aborted.');\n                    }\n                    let operation = function_({ signal: options.signal });\n                    if (options.timeout) {\n                        operation = pTimeout(Promise.resolve(operation), options.timeout);\n                    }\n                    if (options.signal) {\n                        operation = Promise.race([operation, __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_throwOnAbort).call(this, options.signal)]);\n                    }\n                    const result = await operation;\n                    resolve(result);\n                    this.emit('completed', result);\n                }\n                catch (error) {\n                    if (error instanceof TimeoutError && !options.throwOnTimeout) {\n                        resolve();\n                        return;\n                    }\n                    reject(error);\n                    this.emit('error', error);\n                }\n                finally {\n                    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_next).call(this);\n                }\n            }, options);\n            this.emit('add');\n            __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n        });\n    }\n    async addAll(functions, options) {\n        return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n    }\n    /**\n    Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n    */\n    start() {\n        if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n            return this;\n        }\n        __classPrivateFieldSet(this, _PQueue_isPaused, false, \"f\");\n        __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n        return this;\n    }\n    /**\n    Put queue execution on hold.\n    */\n    pause() {\n        __classPrivateFieldSet(this, _PQueue_isPaused, true, \"f\");\n    }\n    /**\n    Clear the queue.\n    */\n    clear() {\n        __classPrivateFieldSet(this, _PQueue_queue, new (__classPrivateFieldGet(this, _PQueue_queueClass, \"f\"))(), \"f\");\n    }\n    /**\n    Can be called multiple times. Useful if you for example add additional items at a later time.\n\n    @returns A promise that settles when the queue becomes empty.\n    */\n    async onEmpty() {\n        // Instantly resolve if the queue is empty\n        if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n            return;\n        }\n        await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'empty');\n    }\n    /**\n    @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n    If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n    Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n    */\n    async onSizeLessThan(limit) {\n        // Instantly resolve if the queue is empty.\n        if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit) {\n            return;\n        }\n        await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'next', () => __classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit);\n    }\n    /**\n    The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n    @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n    */\n    async onIdle() {\n        // Instantly resolve if none pending and if nothing else is queued\n        if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n            return;\n        }\n        await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'idle');\n    }\n    /**\n    Size of the queue, the number of queued items waiting to run.\n    */\n    get size() {\n        return __classPrivateFieldGet(this, _PQueue_queue, \"f\").size;\n    }\n    /**\n    Size of the queue, filtered by the given options.\n\n    For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n    */\n    sizeBy(options) {\n        // eslint-disable-next-line unicorn/no-array-callback-reference\n        return __classPrivateFieldGet(this, _PQueue_queue, \"f\").filter(options).length;\n    }\n    /**\n    Number of running items (no longer in the queue).\n    */\n    get pending() {\n        return __classPrivateFieldGet(this, _PQueue_pending, \"f\");\n    }\n    /**\n    Whether the queue is currently paused.\n    */\n    get isPaused() {\n        return __classPrivateFieldGet(this, _PQueue_isPaused, \"f\");\n    }\n}\n_PQueue_carryoverConcurrencyCount = new WeakMap(), _PQueue_isIntervalIgnored = new WeakMap(), _PQueue_intervalCount = new WeakMap(), _PQueue_intervalCap = new WeakMap(), _PQueue_interval = new WeakMap(), _PQueue_intervalEnd = new WeakMap(), _PQueue_intervalId = new WeakMap(), _PQueue_timeoutId = new WeakMap(), _PQueue_queue = new WeakMap(), _PQueue_queueClass = new WeakMap(), _PQueue_pending = new WeakMap(), _PQueue_concurrency = new WeakMap(), _PQueue_isPaused = new WeakMap(), _PQueue_throwOnTimeout = new WeakMap(), _PQueue_instances = new WeakSet(), _PQueue_doesIntervalAllowAnother_get = function _PQueue_doesIntervalAllowAnother_get() {\n    return __classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") < __classPrivateFieldGet(this, _PQueue_intervalCap, \"f\");\n}, _PQueue_doesConcurrentAllowAnother_get = function _PQueue_doesConcurrentAllowAnother_get() {\n    return __classPrivateFieldGet(this, _PQueue_pending, \"f\") < __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n}, _PQueue_next = function _PQueue_next() {\n    var _a;\n    __classPrivateFieldSet(this, _PQueue_pending, (_a = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _a--, _a), \"f\");\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n    this.emit('next');\n}, _PQueue_onResumeInterval = function _PQueue_onResumeInterval() {\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n    __classPrivateFieldSet(this, _PQueue_timeoutId, undefined, \"f\");\n}, _PQueue_isIntervalPaused_get = function _PQueue_isIntervalPaused_get() {\n    const now = Date.now();\n    if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\") === undefined) {\n        const delay = __classPrivateFieldGet(this, _PQueue_intervalEnd, \"f\") - now;\n        if (delay < 0) {\n            // Act as the interval was done\n            // We don't need to resume it here because it will be resumed on line 160\n            __classPrivateFieldSet(this, _PQueue_intervalCount, (__classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\")) ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n        }\n        else {\n            // Act as the interval is pending\n            if (__classPrivateFieldGet(this, _PQueue_timeoutId, \"f\") === undefined) {\n                __classPrivateFieldSet(this, _PQueue_timeoutId, setTimeout(() => {\n                    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onResumeInterval).call(this);\n                }, delay), \"f\");\n            }\n            return true;\n        }\n    }\n    return false;\n}, _PQueue_tryToStartAnother = function _PQueue_tryToStartAnother() {\n    if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n        // We can clear the interval (\"pause\")\n        // Because we can redo it later (\"resume\")\n        if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n            clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n        }\n        __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n        this.emit('empty');\n        if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0) {\n            this.emit('idle');\n        }\n        return false;\n    }\n    if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n        const canInitializeInterval = !__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_isIntervalPaused_get);\n        if (__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesIntervalAllowAnother_get) && __classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesConcurrentAllowAnother_get)) {\n            const job = __classPrivateFieldGet(this, _PQueue_queue, \"f\").dequeue();\n            if (!job) {\n                return false;\n            }\n            this.emit('active');\n            job();\n            if (canInitializeInterval) {\n                __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n            }\n            return true;\n        }\n    }\n    return false;\n}, _PQueue_initializeIntervalIfNeeded = function _PQueue_initializeIntervalIfNeeded() {\n    if (__classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalId, \"f\") !== undefined) {\n        return;\n    }\n    __classPrivateFieldSet(this, _PQueue_intervalId, setInterval(() => {\n        __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n    }, __classPrivateFieldGet(this, _PQueue_interval, \"f\")), \"f\");\n    __classPrivateFieldSet(this, _PQueue_intervalEnd, Date.now() + __classPrivateFieldGet(this, _PQueue_interval, \"f\"), \"f\");\n}, _PQueue_onInterval = function _PQueue_onInterval() {\n    if (__classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n        clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n        __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n    }\n    __classPrivateFieldSet(this, _PQueue_intervalCount, __classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\") ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n}, _PQueue_processQueue = function _PQueue_processQueue() {\n    // eslint-disable-next-line no-empty\n    while (__classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this)) { }\n}, _PQueue_throwOnAbort = async function _PQueue_throwOnAbort(signal) {\n    return new Promise((_resolve, reject) => {\n        signal.addEventListener('abort', () => {\n            // TODO: Reject with signal.throwIfAborted() when targeting Node.js 18\n            // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n            reject(new AbortError('The task was aborted.'));\n        }, { once: true });\n    });\n}, _PQueue_onEvent = async function _PQueue_onEvent(event, filter) {\n    return new Promise(resolve => {\n        const listener = () => {\n            if (filter && !filter()) {\n                return;\n            }\n            this.off(event, listener);\n            resolve();\n        };\n        this.on(event, listener);\n    });\n};\n", "export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined ?\n\tnew AbortError(errorMessage) :\n\tnew DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined ?\n\t\tgetDOMException('This operation was aborted.') :\n\t\tsignal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, milliseconds, fallback, options) {\n\tlet timer;\n\n\tconst cancelablePromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tresolve(promise);\n\t\t\treturn;\n\t\t}\n\n\t\toptions = {\n\t\t\tcustomTimers: {setTimeout, clearTimeout},\n\t\t\t...options\n\t\t};\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\ttimer = options.customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (typeof fallback === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\treject(timeoutError);\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t} finally {\n\t\t\t\toptions.customTimers.clearTimeout.call(undefined, timer);\n\t\t\t}\n\t\t})();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PriorityQueue_queue;\nimport lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n    constructor() {\n        _PriorityQueue_queue.set(this, []);\n    }\n    enqueue(run, options) {\n        options = {\n            priority: 0,\n            ...options,\n        };\n        const element = {\n            priority: options.priority,\n            run,\n        };\n        if (this.size && __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\")[this.size - 1].priority >= options.priority) {\n            __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").push(element);\n            return;\n        }\n        const index = lowerBound(__classPrivateFieldGet(this, _PriorityQueue_queue, \"f\"), element, (a, b) => b.priority - a.priority);\n        __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").splice(index, 0, element);\n    }\n    dequeue() {\n        const item = __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").shift();\n        return item === null || item === void 0 ? void 0 : item.run;\n    }\n    filter(options) {\n        return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").filter((element) => element.priority === options.priority).map((element) => element.run);\n    }\n    get size() {\n        return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").length;\n    }\n}\n_PriorityQueue_queue = new WeakMap();\n", "// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n    let first = 0;\n    let count = array.length;\n    while (count > 0) {\n        const step = Math.trunc(count / 2);\n        let it = first + step;\n        if (comparator(array[it], value) <= 0) {\n            first = ++it;\n            count -= step + 1;\n        }\n        else {\n            count = step;\n        }\n    }\n    return first;\n}\n", "import parallel from 'it-parallel'\nimport { pipe } from 'it-pipe'\nimport map from 'it-map'\nimport filter from 'it-filter'\nimport type { ExporterOptions, ExportWalk, UnixfsV1DirectoryContent, UnixfsV1Resolver } from '../../../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst directoryContent: UnixfsV1Resolver = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n  async function * yieldDirectoryContent (options: ExporterOptions = {}): UnixfsV1DirectoryContent {\n    const offset = options.offset ?? 0\n    const length = options.length ?? node.Links.length\n    const links = node.Links.slice(offset, length)\n\n    options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:directory', {\n      cid\n    }))\n\n    yield * pipe(\n      links,\n      source => map(source, link => {\n        return async () => {\n          const linkName = link.Name ?? ''\n          const linkPath = `${path}/${linkName}`\n          const result = await resolve(link.Hash, linkName, linkPath, [], depth + 1, blockstore, options)\n          return result.entry\n        }\n      }),\n      source => parallel(source, { ordered: true }),\n      source => filter(source, entry => entry != null)\n    )\n  }\n\n  return yieldDirectoryContent\n}\n\nexport default directoryContent\n", "import peek from 'it-peekable'\n\nfunction isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Filters the passed (async) iterable by using the filter function\n */\nfunction filter <T> (source: Iterable<T>, fn: (val: T) => Promise<boolean>): AsyncGenerator<T, void, undefined>\nfunction filter <T> (source: Iterable<T>, fn: (val: T) => boolean): Generator<T, void, undefined>\nfunction filter <T> (source: Iterable<T> | AsyncIterable<T>, fn: (val: T) => boolean | Promise<boolean>): AsyncGenerator<T, void, undefined>\nfunction filter <T> (source: Iterable<T> | AsyncIterable<T>, fn: (val: T) => boolean | Promise<boolean>): Generator<T, void, undefined> | AsyncGenerator<T, void, undefined> {\n  if (isAsyncIterable(source)) {\n    return (async function * () {\n      for await (const entry of source) {\n        if (await fn(entry)) {\n          yield entry\n        }\n      }\n    })()\n  }\n\n  // if mapping function returns a promise we have to return an async generator\n  const peekable = peek(source)\n  const { value, done } = peekable.next()\n\n  if (done === true) {\n    return (function * () {}())\n  }\n\n  const res = fn(value)\n\n  // @ts-expect-error .then is not present on O\n  if (typeof res.then === 'function') {\n    return (async function * () {\n      if (await res) {\n        yield value\n      }\n\n      for await (const entry of peekable) {\n        if (await fn(entry)) {\n          yield entry\n        }\n      }\n    })()\n  }\n\n  const func = fn as (val: T) => boolean\n\n  return (function * () {\n    if (res === true) {\n      yield value\n    }\n\n    for (const entry of peekable) {\n      if (func(entry)) {\n        yield entry\n      }\n    }\n  })()\n}\n\nexport default filter\n", "import parallel from 'it-parallel'\nimport { pipe } from 'it-pipe'\nimport map from 'it-map'\nimport { decode, PBNode } from '@ipld/dag-pb'\nimport type { ExporterOptions, Resolve, UnixfsV1DirectoryContent, UnixfsV1Resolver, ReadableStorage, ExportWalk } from '../../../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst hamtShardedDirectoryContent: UnixfsV1Resolver = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n  function yieldHamtDirectoryContent (options: ExporterOptions = {}): UnixfsV1DirectoryContent {\n    options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:hamt-sharded-directory', {\n      cid\n    }))\n\n    return listDirectory(node, path, resolve, depth, blockstore, options)\n  }\n\n  return yieldHamtDirectoryContent\n}\n\nasync function * listDirectory (node: PBNode, path: string, resolve: Resolve, depth: number, blockstore: ReadableStorage, options: ExporterOptions): UnixfsV1DirectoryContent {\n  const links = node.Links\n\n  const results = pipe(\n    links,\n    source => map(source, link => {\n      return async () => {\n        const name = link.Name != null ? link.Name.substring(2) : null\n\n        if (name != null && name !== '') {\n          const result = await resolve(link.Hash, name, `${path}/${name}`, [], depth + 1, blockstore, options)\n\n          return { entries: result.entry == null ? [] : [result.entry] }\n        } else {\n          // descend into subshard\n          const block = await blockstore.get(link.Hash, options)\n          node = decode(block)\n\n          options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:hamt-sharded-directory', {\n            cid: link.Hash\n          }))\n\n          return { entries: listDirectory(node, path, resolve, depth, blockstore, options) }\n        }\n      }\n    }),\n    source => parallel(source, { ordered: true })\n  )\n\n  for await (const { entries } of results) {\n    yield * entries\n  }\n}\n\nexport default hamtShardedDirectoryContent\n", "import errCode from 'err-code'\nimport type { ExporterOptions, Resolver, ExportProgress } from '../index.js'\nimport extractDataFromBlock from '../utils/extract-data-from-block.js'\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst rawContent = (node: Uint8Array): ((options?: ExporterOptions) => AsyncGenerator<Uint8Array, void, undefined>) => {\n  async function * contentGenerator (options: ExporterOptions = {}): AsyncGenerator<Uint8Array, void, undefined> {\n    const {\n      start,\n      end\n    } = validateOffsetAndLength(node.length, options.offset, options.length)\n\n    const buf = extractDataFromBlock(node, 0n, start, end)\n\n    options.onProgress?.(new CustomProgressEvent<ExportProgress>('unixfs:exporter:progress:raw', {\n      bytesRead: BigInt(buf.byteLength),\n      totalBytes: end - start,\n      fileSize: BigInt(node.byteLength)\n    }))\n\n    yield buf\n  }\n\n  return contentGenerator\n}\n\nconst resolve: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  if (toResolve.length > 0) {\n    throw errCode(new Error(`No link named ${path} found in raw node ${cid}`), 'ERR_NOT_FOUND')\n  }\n\n  const block = await blockstore.get(cid, options)\n\n  return {\n    entry: {\n      type: 'raw',\n      name,\n      path,\n      cid,\n      content: rawContent(block),\n      depth,\n      size: BigInt(block.length),\n      node: block\n    }\n  }\n}\n\nexport default resolve\n", "import { CID } from 'multiformats/cid'\nimport errCode from 'err-code'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport type { Resolver } from '../index.js'\n\nconst resolve: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  const block = await blockstore.get(cid, options)\n  const object = dagCbor.decode<any>(block)\n  let subObject = object\n  let subPath = path\n\n  while (toResolve.length > 0) {\n    const prop = toResolve[0]\n\n    if (prop in subObject) {\n      // remove the bit of the path we have resolved\n      toResolve.shift()\n      subPath = `${subPath}/${prop}`\n\n      const subObjectCid = CID.asCID(subObject[prop])\n      if (subObjectCid != null) {\n        return {\n          entry: {\n            type: 'object',\n            name,\n            path,\n            cid,\n            node: block,\n            depth,\n            size: BigInt(block.length),\n            content: async function * () {\n              yield object\n            }\n          },\n          next: {\n            cid: subObjectCid,\n            name: prop,\n            path: subPath,\n            toResolve\n          }\n        }\n      }\n\n      subObject = subObject[prop]\n    } else {\n      // cannot resolve further\n      throw errCode(new Error(`No property named ${prop} found in cbor node ${cid}`), 'ERR_NO_PROP')\n    }\n  }\n\n  return {\n    entry: {\n      type: 'object',\n      name,\n      path,\n      cid,\n      node: block,\n      depth,\n      size: BigInt(block.length),\n      content: async function * () {\n        yield object\n      }\n    }\n  }\n}\n\nexport default resolve\n", "import errCode from 'err-code'\nimport extractDataFromBlock from '../utils/extract-data-from-block.js'\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js'\nimport * as mh from 'multiformats/hashes/digest'\nimport type { ExporterOptions, Resolver, ExportProgress } from '../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst rawContent = (node: Uint8Array): ((options?: ExporterOptions) => AsyncGenerator<Uint8Array, void, undefined>) => {\n  async function * contentGenerator (options: ExporterOptions = {}): AsyncGenerator<Uint8Array, void, undefined> {\n    const {\n      start,\n      end\n    } = validateOffsetAndLength(node.length, options.offset, options.length)\n\n    const buf = extractDataFromBlock(node, 0n, start, end)\n\n    options.onProgress?.(new CustomProgressEvent<ExportProgress>('unixfs:exporter:progress:identity', {\n      bytesRead: BigInt(buf.byteLength),\n      totalBytes: end - start,\n      fileSize: BigInt(node.byteLength)\n    }))\n\n    yield buf\n  }\n\n  return contentGenerator\n}\n\nconst resolve: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  if (toResolve.length > 0) {\n    throw errCode(new Error(`No link named ${path} found in raw node ${cid}`), 'ERR_NOT_FOUND')\n  }\n  const buf = mh.decode(cid.multihash.bytes)\n\n  return {\n    entry: {\n      type: 'identity',\n      name,\n      path,\n      cid,\n      content: rawContent(buf.digest),\n      depth,\n      size: BigInt(buf.digest.length),\n      node: buf.digest\n    }\n  }\n}\n\nexport default resolve\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Returns the last item of an (async) iterable, unless empty, in which case\n * return `undefined`\n */\nfunction last <T> (source: Iterable<T>): T | undefined\nfunction last <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined>\nfunction last <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined> | T | undefined {\n  if (isAsyncIterable(source)) {\n    return (async () => {\n      let res\n\n      for await (const entry of source) {\n        res = entry\n      }\n\n      return res\n    })()\n  }\n\n  let res\n\n  for (const entry of source) {\n    res = entry\n  }\n\n  return res\n}\n\nexport default last\n", "import type { ImportResult } from 'ipfs-unixfs-importer';\nimport type { AssociateResult, DataStore, GetResult, PutResult } from './data-store.js';\n\nimport { BlockstoreLevel } from './blockstore-level.js';\nimport { createLevelDatabase } from './level-wrapper.js';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport { importer } from 'ipfs-unixfs-importer';\nimport { Readable } from 'readable-stream';\n\n// `BlockstoreLevel` doesn't support being a `Set` (i.e. it always requires a value), so use a placeholder instead.\nconst PLACEHOLDER_VALUE = new Uint8Array();\n\n/**\n * A simple implementation of {@link DataStore} that works in both the browser and server-side.\n * Leverages LevelDB under the hood.\n *\n * It has the following structure (`+` represents a sublevel and `->` represents a key->value pair):\n *   'data' + <tenant> + <dataCid> -> <data>\n *   'references' + <tenant> + <dataCid> + <messageCid> -> PLACEHOLDER_VALUE\n *\n * This allows for the <data> to be shared for everything that uses the same <dataCid> while also making\n * sure that the <data> can only be deleted if there are no <messageCid> for any <tenant> still using it.\n */\nexport class DataStoreLevel implements DataStore {\n  config: DataStoreLevelConfig;\n\n  blockstore: BlockstoreLevel;\n\n  constructor(config: DataStoreLevelConfig = {}) {\n    this.config = {\n      blockstoreLocation: 'DATASTORE',\n      createLevelDatabase,\n      ...config\n    };\n\n    this.blockstore = new BlockstoreLevel({\n      location            : this.config.blockstoreLocation!,\n      createLevelDatabase : this.config.createLevelDatabase,\n    });\n  }\n\n  public async open(): Promise<void> {\n    await this.blockstore.open();\n  }\n\n  async close(): Promise<void> {\n    await this.blockstore.close();\n  }\n\n  async put(tenant: string, messageCid: string, dataCid: string, dataStream: Readable): Promise<PutResult> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n    await blockstoreForReferenceCounting.put(messageCid, PLACEHOLDER_VALUE);\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n\n    const asyncDataBlocks = importer([{ content: dataStream }], blockstoreForData, { cidVersion: 1 });\n\n    // NOTE: the last block contains the root CID as well as info to derive the data size\n    let dataDagRoot!: ImportResult;\n    for await (dataDagRoot of asyncDataBlocks) { ; }\n\n    return {\n      dataCid  : String(dataDagRoot.cid),\n      dataSize : Number(dataDagRoot.unixfs?.fileSize() ?? dataDagRoot.size)\n    };\n  }\n\n  public async get(tenant: string, messageCid: string, dataCid: string): Promise<GetResult | undefined> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n\n    const allowed = await blockstoreForReferenceCounting.has(messageCid);\n    if (!allowed) {\n      return undefined;\n    }\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n\n    const exists = await blockstoreForData.has(dataCid);\n    if (!exists) {\n      return undefined;\n    }\n\n    // data is chunked into dag-pb unixfs blocks. re-inflate the chunks.\n    const dataDagRoot = await exporter(dataCid, blockstoreForData);\n    const contentIterator = dataDagRoot.content();\n\n    const dataStream = new Readable({\n      async read(): Promise<void> {\n        const result = await contentIterator.next();\n        if (result.done) {\n          this.push(null); // end the stream\n        } else {\n          this.push(result.value);\n        }\n      }\n    });\n\n    let dataSize = dataDagRoot.size;\n\n    if (dataDagRoot.type === 'file' || dataDagRoot.type === 'directory') {\n      dataSize = dataDagRoot.unixfs.fileSize();\n    }\n\n    return {\n      dataCid  : String(dataDagRoot.cid),\n      dataSize : Number(dataSize),\n      dataStream,\n    };\n  }\n\n  public async associate(tenant: string, messageCid: string, dataCid: string): Promise<AssociateResult | undefined> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n\n    const noExistingReference = await blockstoreForReferenceCounting.isEmpty();\n    if (noExistingReference) {\n      return undefined;\n    }\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n\n    const dataExists = await blockstoreForData.has(dataCid);\n    if (!dataExists) {\n      return undefined;\n    }\n\n    await blockstoreForReferenceCounting.put(messageCid, PLACEHOLDER_VALUE);\n\n    const dataDagRoot = await exporter(dataCid, blockstoreForData);\n\n    let dataSize = dataDagRoot.size;\n\n    if (dataDagRoot.type === 'file' || dataDagRoot.type === 'directory') {\n      dataSize = dataDagRoot.unixfs.fileSize();\n    }\n\n    return {\n      dataCid  : String(dataDagRoot.cid),\n      dataSize : Number(dataSize)\n    };\n  }\n\n  public async delete(tenant: string, messageCid: string, dataCid: string): Promise<void> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n    await blockstoreForReferenceCounting.delete(messageCid);\n\n    const wasLastReference = await blockstoreForReferenceCounting.isEmpty();\n    if (!wasLastReference) {\n      return;\n    }\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n    await blockstoreForData.clear();\n  }\n\n  /**\n   * Deletes everything in the store. Mainly used in tests.\n   */\n  public async clear(): Promise<void> {\n    await this.blockstore.clear();\n  }\n\n  async dump() : Promise<void> {\n    console.group('blockstore');\n    await this.blockstore['dump']?.();\n    console.groupEnd();\n  }\n\n  /**\n   * Gets the blockstore used for reference counting purposes for the given `dataCid` in the given `tenant`.\n   */\n  private async getBlockstoreForReferenceCounting(tenant: string, dataCid: string): Promise<BlockstoreLevel> {\n    const referenceCountingPartitionName = 'references';\n    const blockstoreForReferenceCounting = await this.blockstore.partition(referenceCountingPartitionName);\n    const blockstoreForReferenceCountingByTenant = await blockstoreForReferenceCounting.partition(tenant);\n    const blockstoreForReferenceCountingDataCid = await blockstoreForReferenceCountingByTenant.partition(dataCid);\n    return blockstoreForReferenceCountingDataCid;\n  }\n\n  /**\n   * Gets the blockstore used for storing data for the given `dataCid` in the given `tenant`.\n   */\n  private async getBlockstoreForStoringData(tenant: string, dataCid: string): Promise<BlockstoreLevel> {\n    const dataPartitionName = 'data';\n    const blockstoreForData = await this.blockstore.partition(dataPartitionName);\n    const blockstoreOfGivenTenant = await blockstoreForData.partition(tenant);\n    const blockstoreOfGivenDataCid = await blockstoreOfGivenTenant.partition(dataCid);\n    return blockstoreOfGivenDataCid;\n  }\n}\n\ntype DataStoreLevelConfig = {\n  blockstoreLocation?: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import { base64url } from 'multiformats/bases/base64';\n\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\n\n/**\n * Utility class for encoding/converting data into various formats.\n */\nexport class Encoder {\n\n  public static base64UrlToBytes(base64urlString: string): Uint8Array {\n    const content = base64url.baseDecode(base64urlString);\n    return content;\n  }\n\n  public static base64UrlToObject(base64urlString: string): any {\n    const payloadBytes = base64url.baseDecode(base64urlString);\n    const payloadString = Encoder.bytesToString(payloadBytes);\n    const payloadObject = JSON.parse(payloadString);\n    return payloadObject;\n  }\n\n  public static bytesToBase64Url(bytes: Uint8Array): string {\n    const base64UrlString = base64url.baseEncode(bytes);\n    return base64UrlString;\n  }\n\n  public static bytesToString(content: Uint8Array): string {\n    const bytes = textDecoder.decode(content);\n    return bytes;\n  }\n\n  public static objectToBytes(obj: Record<string, any>): Uint8Array {\n    const objectString = JSON.stringify(obj);\n    const objectBytes = textEncoder.encode(objectString);\n    return objectBytes;\n  }\n\n  public static stringToBase64Url(content: string): string {\n    const bytes = textEncoder.encode(content);\n    const base64UrlString = base64url.baseEncode(bytes);\n    return base64UrlString;\n  }\n\n  public static stringToBytes(content: string): Uint8Array {\n    const bytes = textEncoder.encode(content);\n    return bytes;\n  }\n}\n", "import type { Signer } from '../../../jose/types.js';\n\nimport { ed25519 } from './ed25519.js';\nimport { Secp256k1 } from '../../../utils/secp256k1.js';\n\n// the key should be the appropriate `crv` value\nexport const signers: Record<string, Signer> = {\n  'Ed25519'   : ed25519,\n  'secp256k1' : {\n    sign            : Secp256k1.sign,\n    verify          : Secp256k1.verify,\n    generateKeyPair : Secp256k1.generateKeyPair,\n    publicKeyToJwk  : Secp256k1.publicKeyToJwk\n  },\n};", "/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst CU_O = BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989');\nconst CURVE = Object.freeze({\n    a: BigInt(-1),\n    d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n    P: BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949'),\n    l: CU_O,\n    n: CU_O,\n    h: BigInt(8),\n    Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n    Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n});\nexport { CURVE };\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nconst SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\nconst SQRT_D = BigInt('6853475219497561581579357271197624642482790079785650197046958215289687604742');\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\nclass ExtendedPoint {\n    constructor(x, y, z, t) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.t = t;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('ExtendedPoint#fromAffine: expected Point');\n        }\n        if (p.equals(Point.ZERO))\n            return ExtendedPoint.ZERO;\n        return new ExtendedPoint(p.x, p.y, _1n, mod(p.x * p.y));\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return this.toAffineBatch(points).map(this.fromAffine);\n    }\n    equals(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const X1Z2 = mod(X1 * Z2);\n        const X2Z1 = mod(X2 * Z1);\n        const Y1Z2 = mod(Y1 * Z2);\n        const Y2Z1 = mod(Y2 * Z1);\n        return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n    }\n    negate() {\n        return new ExtendedPoint(mod(-this.x), this.y, this.z, mod(-this.t));\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { a } = CURVE;\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(_2n * mod(Z1 * Z1));\n        const D = mod(a * A);\n        const x1y1 = X1 + Y1;\n        const E = mod(mod(x1y1 * x1y1) - A - B);\n        const G = D + B;\n        const F = G - C;\n        const H = D - B;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    add(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1, t: T1 } = this;\n        const { x: X2, y: Y2, z: Z2, t: T2 } = other;\n        const A = mod((Y1 - X1) * (Y2 + X2));\n        const B = mod((Y1 + X1) * (Y2 - X2));\n        const F = mod(B - A);\n        if (F === _0n)\n            return this.double();\n        const C = mod(Z1 * _2n * T2);\n        const D = mod(T1 * _2n * Z2);\n        const E = D + C;\n        const G = B + A;\n        const H = D - C;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    precomputeWindow(W) {\n        const windows = 1 + 256 / W;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(ExtendedPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = ExtendedPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = ExtendedPoint.ZERO;\n        let f = ExtendedPoint.ZERO;\n        const windows = 1 + 256 / W;\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            if (wbits === 0) {\n                let pr = precomputes[offset];\n                if (window % 2)\n                    pr = pr.negate();\n                f = f.add(pr);\n            }\n            else {\n                let cached = precomputes[offset + Math.abs(wbits) - 1];\n                if (wbits < 0)\n                    cached = cached.negate();\n                p = p.add(cached);\n            }\n        }\n        return ExtendedPoint.normalizeZ([p, f])[0];\n    }\n    multiply(scalar, affinePoint) {\n        return this.wNAF(normalizeScalar(scalar, CURVE.l), affinePoint);\n    }\n    multiplyUnsafe(scalar) {\n        let n = normalizeScalar(scalar, CURVE.l, false);\n        const G = ExtendedPoint.BASE;\n        const P0 = ExtendedPoint.ZERO;\n        if (n === _0n)\n            return P0;\n        if (this.equals(P0) || n === _1n)\n            return this;\n        if (this.equals(G))\n            return this.wNAF(n);\n        let p = P0;\n        let d = this;\n        while (n > _0n) {\n            if (n & _1n)\n                p = p.add(d);\n            d = d.double();\n            n >>= _1n;\n        }\n        return p;\n    }\n    isSmallOrder() {\n        return this.multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n    }\n    isTorsionFree() {\n        return this.multiplyUnsafe(CURVE.l).equals(ExtendedPoint.ZERO);\n    }\n    toAffine(invZ = invert(this.z)) {\n        const { x, y, z } = this;\n        const ax = mod(x * invZ);\n        const ay = mod(y * invZ);\n        const zz = mod(z * invZ);\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n    fromRistrettoBytes() {\n        legacyRist();\n    }\n    toRistrettoBytes() {\n        legacyRist();\n    }\n    fromRistrettoHash() {\n        legacyRist();\n    }\n}\nExtendedPoint.BASE = new ExtendedPoint(CURVE.Gx, CURVE.Gy, _1n, mod(CURVE.Gx * CURVE.Gy));\nExtendedPoint.ZERO = new ExtendedPoint(_0n, _1n, _1n, _0n);\nfunction assertExtPoint(other) {\n    if (!(other instanceof ExtendedPoint))\n        throw new TypeError('ExtendedPoint expected');\n}\nfunction assertRstPoint(other) {\n    if (!(other instanceof RistrettoPoint))\n        throw new TypeError('RistrettoPoint expected');\n}\nfunction legacyRist() {\n    throw new Error('Legacy method: switch to RistrettoPoint');\n}\nclass RistrettoPoint {\n    constructor(ep) {\n        this.ep = ep;\n    }\n    static calcElligatorRistrettoMap(r0) {\n        const { d } = CURVE;\n        const r = mod(SQRT_M1 * r0 * r0);\n        const Ns = mod((r + _1n) * ONE_MINUS_D_SQ);\n        let c = BigInt(-1);\n        const D = mod((c - d * r) * mod(r + d));\n        let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D);\n        let s_ = mod(s * r0);\n        if (!edIsNegative(s_))\n            s_ = mod(-s_);\n        if (!Ns_D_is_sq)\n            s = s_;\n        if (!Ns_D_is_sq)\n            c = r;\n        const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D);\n        const s2 = s * s;\n        const W0 = mod((s + s) * D);\n        const W1 = mod(Nt * SQRT_AD_MINUS_ONE);\n        const W2 = mod(_1n - s2);\n        const W3 = mod(_1n + s2);\n        return new ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n    }\n    static hashToCurve(hex) {\n        hex = ensureBytes(hex, 64);\n        const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n        const R1 = this.calcElligatorRistrettoMap(r1);\n        const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n        const R2 = this.calcElligatorRistrettoMap(r2);\n        return new RistrettoPoint(R1.add(R2));\n    }\n    static fromHex(hex) {\n        hex = ensureBytes(hex, 32);\n        const { a, d } = CURVE;\n        const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n        const s = bytes255ToNumberLE(hex);\n        if (!equalBytes(numberTo32BytesLE(s), hex) || edIsNegative(s))\n            throw new Error(emsg);\n        const s2 = mod(s * s);\n        const u1 = mod(_1n + a * s2);\n        const u2 = mod(_1n - a * s2);\n        const u1_2 = mod(u1 * u1);\n        const u2_2 = mod(u2 * u2);\n        const v = mod(a * d * u1_2 - u2_2);\n        const { isValid, value: I } = invertSqrt(mod(v * u2_2));\n        const Dx = mod(I * u2);\n        const Dy = mod(I * Dx * v);\n        let x = mod((s + s) * Dx);\n        if (edIsNegative(x))\n            x = mod(-x);\n        const y = mod(u1 * Dy);\n        const t = mod(x * y);\n        if (!isValid || edIsNegative(t) || y === _0n)\n            throw new Error(emsg);\n        return new RistrettoPoint(new ExtendedPoint(x, y, _1n, t));\n    }\n    toRawBytes() {\n        let { x, y, z, t } = this.ep;\n        const u1 = mod(mod(z + y) * mod(z - y));\n        const u2 = mod(x * y);\n        const u2sq = mod(u2 * u2);\n        const { value: invsqrt } = invertSqrt(mod(u1 * u2sq));\n        const D1 = mod(invsqrt * u1);\n        const D2 = mod(invsqrt * u2);\n        const zInv = mod(D1 * D2 * t);\n        let D;\n        if (edIsNegative(t * zInv)) {\n            let _x = mod(y * SQRT_M1);\n            let _y = mod(x * SQRT_M1);\n            x = _x;\n            y = _y;\n            D = mod(D1 * INVSQRT_A_MINUS_D);\n        }\n        else {\n            D = D2;\n        }\n        if (edIsNegative(x * zInv))\n            y = mod(-y);\n        let s = mod((z - y) * D);\n        if (edIsNegative(s))\n            s = mod(-s);\n        return numberTo32BytesLE(s);\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toString() {\n        return this.toHex();\n    }\n    equals(other) {\n        assertRstPoint(other);\n        const a = this.ep;\n        const b = other.ep;\n        const one = mod(a.x * b.y) === mod(a.y * b.x);\n        const two = mod(a.y * b.y) === mod(a.x * b.x);\n        return one || two;\n    }\n    add(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.add(other.ep));\n    }\n    subtract(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.subtract(other.ep));\n    }\n    multiply(scalar) {\n        return new RistrettoPoint(this.ep.multiply(scalar));\n    }\n    multiplyUnsafe(scalar) {\n        return new RistrettoPoint(this.ep.multiplyUnsafe(scalar));\n    }\n}\nRistrettoPoint.BASE = new RistrettoPoint(ExtendedPoint.BASE);\nRistrettoPoint.ZERO = new RistrettoPoint(ExtendedPoint.ZERO);\nconst pointPrecomputes = new WeakMap();\nclass Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    static fromHex(hex, strict = true) {\n        const { d, P } = CURVE;\n        hex = ensureBytes(hex, 32);\n        const normed = hex.slice();\n        normed[31] = hex[31] & ~0x80;\n        const y = bytesToNumberLE(normed);\n        if (strict && y >= P)\n            throw new Error('Expected 0 < hex < P');\n        if (!strict && y >= POW_2_256)\n            throw new Error('Expected 0 < hex < 2**256');\n        const y2 = mod(y * y);\n        const u = mod(y2 - _1n);\n        const v = mod(d * y2 + _1n);\n        let { isValid, value: x } = uvRatio(u, v);\n        if (!isValid)\n            throw new Error('Point.fromHex: invalid y coordinate');\n        const isXOdd = (x & _1n) === _1n;\n        const isLastByteOdd = (hex[31] & 0x80) !== 0;\n        if (isLastByteOdd !== isXOdd) {\n            x = mod(-x);\n        }\n        return new Point(x, y);\n    }\n    static async fromPrivateKey(privateKey) {\n        return (await getExtendedPublicKey(privateKey)).point;\n    }\n    toRawBytes() {\n        const bytes = numberTo32BytesLE(this.y);\n        bytes[31] |= this.x & _1n ? 0x80 : 0;\n        return bytes;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toX25519() {\n        const { y } = this;\n        const u = mod((_1n + y) * invert(_1n - y));\n        return numberTo32BytesLE(u);\n    }\n    isTorsionFree() {\n        return ExtendedPoint.fromAffine(this).isTorsionFree();\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(mod(-this.x), this.y);\n    }\n    add(other) {\n        return ExtendedPoint.fromAffine(this).add(ExtendedPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return ExtendedPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _1n);\nclass Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex, 64);\n        const r = Point.fromHex(bytes.slice(0, 32), false);\n        const s = bytesToNumberLE(bytes.slice(32, 64));\n        return new Signature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!(r instanceof Point))\n            throw new Error('Expected Point instance');\n        normalizeScalar(s, CURVE.l, false);\n        return this;\n    }\n    toRawBytes() {\n        const u8 = new Uint8Array(64);\n        u8.set(this.r.toRawBytes());\n        u8.set(numberTo32BytesLE(this.s), 32);\n        return u8;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n}\nexport { ExtendedPoint, RistrettoPoint, Point, Signature };\nfunction concatBytes(...arrays) {\n    if (!arrays.every((a) => a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array list');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Uint8Array expected');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex');\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction numberTo32BytesBE(num) {\n    const length = 32;\n    const hex = num.toString(16).padStart(length * 2, '0');\n    return hexToBytes(hex);\n}\nfunction numberTo32BytesLE(num) {\n    return numberTo32BytesBE(num).reverse();\n}\nfunction edIsNegative(num) {\n    return (mod(num) & _1n) === _1n;\n}\nfunction bytesToNumberLE(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    return BigInt('0x' + bytesToHex(Uint8Array.from(uint8a).reverse()));\n}\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nfunction bytes255ToNumberLE(bytes) {\n    return mod(bytesToNumberLE(bytes) & MAX_255B);\n}\nfunction mod(a, b = CURVE.P) {\n    const res = a % b;\n    return res >= _0n ? res : b + res;\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const tmp = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = mod(acc * tmp[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return tmp;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction pow_2_252_3(x) {\n    const { P } = CURVE;\n    const _5n = BigInt(5);\n    const _10n = BigInt(10);\n    const _20n = BigInt(20);\n    const _40n = BigInt(40);\n    const _80n = BigInt(80);\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P;\n    const b4 = (pow2(b2, _2n) * b2) % P;\n    const b5 = (pow2(b4, _1n) * x) % P;\n    const b10 = (pow2(b5, _5n) * b5) % P;\n    const b20 = (pow2(b10, _10n) * b10) % P;\n    const b40 = (pow2(b20, _20n) * b20) % P;\n    const b80 = (pow2(b40, _40n) * b40) % P;\n    const b160 = (pow2(b80, _80n) * b80) % P;\n    const b240 = (pow2(b160, _80n) * b80) % P;\n    const b250 = (pow2(b240, _10n) * b10) % P;\n    const pow_p_5_8 = (pow2(b250, _2n) * x) % P;\n    return { pow_p_5_8, b2 };\n}\nfunction uvRatio(u, v) {\n    const v3 = mod(v * v * v);\n    const v7 = mod(v3 * v3 * v);\n    const pow = pow_2_252_3(u * v7).pow_p_5_8;\n    let x = mod(u * v3 * pow);\n    const vx2 = mod(v * x * x);\n    const root1 = x;\n    const root2 = mod(x * SQRT_M1);\n    const useRoot1 = vx2 === u;\n    const useRoot2 = vx2 === mod(-u);\n    const noRoot = vx2 === mod(-u * SQRT_M1);\n    if (useRoot1)\n        x = root1;\n    if (useRoot2 || noRoot)\n        x = root2;\n    if (edIsNegative(x))\n        x = mod(-x);\n    return { isValid: useRoot1 || useRoot2, value: x };\n}\nfunction invertSqrt(number) {\n    return uvRatio(_1n, number);\n}\nfunction modlLE(hash) {\n    return mod(bytesToNumberLE(hash), CURVE.l);\n}\nfunction equalBytes(b1, b2) {\n    if (b1.length !== b2.length) {\n        return false;\n    }\n    for (let i = 0; i < b1.length; i++) {\n        if (b1[i] !== b2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction ensureBytes(hex, expectedLength) {\n    const bytes = hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n    if (typeof expectedLength === 'number' && bytes.length !== expectedLength)\n        throw new Error(`Expected ${expectedLength} bytes`);\n    return bytes;\n}\nfunction normalizeScalar(num, max, strict = true) {\n    if (!max)\n        throw new TypeError('Specify max value');\n    if (typeof num === 'number' && Number.isSafeInteger(num))\n        num = BigInt(num);\n    if (typeof num === 'bigint' && num < max) {\n        if (strict) {\n            if (_0n < num)\n                return num;\n        }\n        else {\n            if (_0n <= num)\n                return num;\n        }\n    }\n    throw new TypeError('Expected valid scalar: 0 < scalar < max');\n}\nfunction adjustBytes25519(bytes) {\n    bytes[0] &= 248;\n    bytes[31] &= 127;\n    bytes[31] |= 64;\n    return bytes;\n}\nfunction decodeScalar25519(n) {\n    return bytesToNumberLE(adjustBytes25519(ensureBytes(n, 32)));\n}\nfunction checkPrivateKey(key) {\n    key =\n        typeof key === 'bigint' || typeof key === 'number'\n            ? numberTo32BytesBE(normalizeScalar(key, POW_2_256))\n            : ensureBytes(key);\n    if (key.length !== 32)\n        throw new Error(`Expected 32 bytes`);\n    return key;\n}\nfunction getKeyFromHash(hashed) {\n    const head = adjustBytes25519(hashed.slice(0, 32));\n    const prefix = hashed.slice(32, 64);\n    const scalar = modlLE(head);\n    const point = Point.BASE.multiply(scalar);\n    const pointBytes = point.toRawBytes();\n    return { head, prefix, scalar, point, pointBytes };\n}\nlet _sha512Sync;\nfunction sha512s(...m) {\n    if (typeof _sha512Sync !== 'function')\n        throw new Error('utils.sha512Sync must be set to use sync methods');\n    return _sha512Sync(...m);\n}\nasync function getExtendedPublicKey(key) {\n    return getKeyFromHash(await utils.sha512(checkPrivateKey(key)));\n}\nfunction getExtendedPublicKeySync(key) {\n    return getKeyFromHash(sha512s(checkPrivateKey(key)));\n}\nexport async function getPublicKey(privateKey) {\n    return (await getExtendedPublicKey(privateKey)).pointBytes;\n}\nfunction getPublicKeySync(privateKey) {\n    return getExtendedPublicKeySync(privateKey).pointBytes;\n}\nexport async function sign(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = await getExtendedPublicKey(privateKey);\n    const r = modlLE(await utils.sha512(prefix, message));\n    const R = Point.BASE.multiply(r);\n    const k = modlLE(await utils.sha512(R.toRawBytes(), pointBytes, message));\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nfunction signSync(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = getExtendedPublicKeySync(privateKey);\n    const r = modlLE(sha512s(prefix, message));\n    const R = Point.BASE.multiply(r);\n    const k = modlLE(sha512s(R.toRawBytes(), pointBytes, message));\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nfunction prepareVerification(sig, message, publicKey) {\n    message = ensureBytes(message);\n    if (!(publicKey instanceof Point))\n        publicKey = Point.fromHex(publicKey, false);\n    const { r, s } = sig instanceof Signature ? sig.assertValidity() : Signature.fromHex(sig);\n    const SB = ExtendedPoint.BASE.multiplyUnsafe(s);\n    return { r, s, SB, pub: publicKey, msg: message };\n}\nfunction finishVerification(publicKey, r, SB, hashed) {\n    const k = modlLE(hashed);\n    const kA = ExtendedPoint.fromAffine(publicKey).multiplyUnsafe(k);\n    const RkA = ExtendedPoint.fromAffine(r).add(kA);\n    return RkA.subtract(SB).multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n}\nexport async function verify(sig, message, publicKey) {\n    const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n    const hashed = await utils.sha512(r.toRawBytes(), pub.toRawBytes(), msg);\n    return finishVerification(pub, r, SB, hashed);\n}\nfunction verifySync(sig, message, publicKey) {\n    const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n    const hashed = sha512s(r.toRawBytes(), pub.toRawBytes(), msg);\n    return finishVerification(pub, r, SB, hashed);\n}\nexport const sync = {\n    getExtendedPublicKey: getExtendedPublicKeySync,\n    getPublicKey: getPublicKeySync,\n    sign: signSync,\n    verify: verifySync,\n};\nexport async function getSharedSecret(privateKey, publicKey) {\n    const { head } = await getExtendedPublicKey(privateKey);\n    const u = Point.fromHex(publicKey).toX25519();\n    return curve25519.scalarMult(head, u);\n}\nPoint.BASE._setWindowSize(8);\nfunction cswap(swap, x_2, x_3) {\n    const dummy = mod(swap * (x_2 - x_3));\n    x_2 = mod(x_2 - dummy);\n    x_3 = mod(x_3 + dummy);\n    return [x_2, x_3];\n}\nfunction montgomeryLadder(pointU, scalar) {\n    const { P } = CURVE;\n    const u = normalizeScalar(pointU, P);\n    const k = normalizeScalar(scalar, P);\n    const a24 = BigInt(121665);\n    const x_1 = u;\n    let x_2 = _1n;\n    let z_2 = _0n;\n    let x_3 = u;\n    let z_3 = _1n;\n    let swap = _0n;\n    let sw;\n    for (let t = BigInt(255 - 1); t >= _0n; t--) {\n        const k_t = (k >> t) & _1n;\n        swap ^= k_t;\n        sw = cswap(swap, x_2, x_3);\n        x_2 = sw[0];\n        x_3 = sw[1];\n        sw = cswap(swap, z_2, z_3);\n        z_2 = sw[0];\n        z_3 = sw[1];\n        swap = k_t;\n        const A = x_2 + z_2;\n        const AA = mod(A * A);\n        const B = x_2 - z_2;\n        const BB = mod(B * B);\n        const E = AA - BB;\n        const C = x_3 + z_3;\n        const D = x_3 - z_3;\n        const DA = mod(D * A);\n        const CB = mod(C * B);\n        const dacb = DA + CB;\n        const da_cb = DA - CB;\n        x_3 = mod(dacb * dacb);\n        z_3 = mod(x_1 * mod(da_cb * da_cb));\n        x_2 = mod(AA * BB);\n        z_2 = mod(E * (AA + mod(a24 * E)));\n    }\n    sw = cswap(swap, x_2, x_3);\n    x_2 = sw[0];\n    x_3 = sw[1];\n    sw = cswap(swap, z_2, z_3);\n    z_2 = sw[0];\n    z_3 = sw[1];\n    const { pow_p_5_8, b2 } = pow_2_252_3(z_2);\n    const xp2 = mod(pow2(pow_p_5_8, BigInt(3)) * b2);\n    return mod(x_2 * xp2);\n}\nfunction encodeUCoordinate(u) {\n    return numberTo32BytesLE(mod(u, CURVE.P));\n}\nfunction decodeUCoordinate(uEnc) {\n    const u = ensureBytes(uEnc, 32);\n    u[31] &= 127;\n    return bytesToNumberLE(u);\n}\nexport const curve25519 = {\n    BASE_POINT_U: '0900000000000000000000000000000000000000000000000000000000000000',\n    scalarMult(privateKey, publicKey) {\n        const u = decodeUCoordinate(publicKey);\n        const p = decodeScalar25519(privateKey);\n        const pu = montgomeryLadder(u, p);\n        if (pu === _0n)\n            throw new Error('Invalid private or public key received');\n        return encodeUCoordinate(pu);\n    },\n    scalarMultBase(privateKey) {\n        return curve25519.scalarMult(privateKey, curve25519.BASE_POINT_U);\n    },\n};\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n    bytesToHex,\n    hexToBytes,\n    concatBytes,\n    getExtendedPublicKey,\n    mod,\n    invert,\n    TORSION_SUBGROUP: [\n        '0100000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n        '0000000000000000000000000000000000000000000000000000000000000080',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n        'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n        '0000000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n    ],\n    hashToPrivateScalar: (hash) => {\n        hash = ensureBytes(hash);\n        if (hash.length < 40 || hash.length > 1024)\n            throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n        return mod(bytesToNumberLE(hash), CURVE.l - _1n) + _1n;\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return new Uint8Array(randomBytes(bytesLength).buffer);\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => {\n        return utils.randomBytes(32);\n    },\n    sha512: async (...messages) => {\n        const message = concatBytes(...messages);\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-512', message.buffer);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            return Uint8Array.from(crypto.node.createHash('sha512').update(message).digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha512 function\");\n        }\n    },\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point.equals(Point.BASE) ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_2n);\n        return cached;\n    },\n    sha512Sync: undefined,\n};\nObject.defineProperties(utils, {\n    sha512Sync: {\n        configurable: false,\n        get() {\n            return _sha512Sync;\n        },\n        set(val) {\n            if (!_sha512Sync)\n                _sha512Sync = val;\n        },\n    },\n});\n", "import * as Ed25519 from '@noble/ed25519';\nimport type { PrivateJwk, PublicJwk, Signer } from '../../types.js';\n\nimport { Encoder } from '../../../utils/encoder.js';\n\nfunction validateKey(jwk: PrivateJwk | PublicJwk): void {\n  if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519') {\n    throw new Error('invalid jwk. kty MUST be OKP. crv MUST be Ed25519');\n  }\n}\n\nfunction publicKeyToJwk(publicKeyBytes: Uint8Array): PublicJwk {\n  const x = Encoder.bytesToBase64Url(publicKeyBytes);\n\n  const publicJwk: PublicJwk = {\n    alg : 'EdDSA',\n    kty : 'OKP',\n    crv : 'Ed25519',\n    x\n  };\n\n  return publicJwk;\n}\n\nexport const ed25519: Signer = {\n  sign: (content: Uint8Array, privateJwk: PrivateJwk): Promise<Uint8Array> => {\n    validateKey(privateJwk);\n\n    const privateKeyBytes = Encoder.base64UrlToBytes(privateJwk.d);\n\n    return Ed25519.sign(content, privateKeyBytes);\n  },\n\n  verify: (content: Uint8Array, signature: Uint8Array, publicJwk: PublicJwk): Promise<boolean> => {\n    validateKey(publicJwk);\n    const publicKeyBytes = Encoder.base64UrlToBytes(publicJwk.x);\n\n    return Ed25519.verify(signature, content, publicKeyBytes);\n  },\n\n  generateKeyPair: async (): Promise<{publicJwk: PublicJwk, privateJwk: PrivateJwk}> => {\n    const privateKeyBytes = Ed25519.utils.randomPrivateKey();\n    const publicKeyBytes = await Ed25519.getPublicKey(privateKeyBytes);\n\n    const d = Encoder.bytesToBase64Url(privateKeyBytes);\n\n    const publicJwk = publicKeyToJwk(publicKeyBytes);\n    const privateJwk: PrivateJwk = { ...publicJwk, d };\n\n    return { publicJwk, privateJwk };\n  },\n\n  publicKeyToJwk: async (publicKeyBytes: Uint8Array): Promise<PublicJwk> => {\n    return publicKeyToJwk(publicKeyBytes);\n  }\n};", "/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n    a: _0n,\n    b: BigInt(7),\n    P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n    n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n    h: _1n,\n    Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n    Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n    beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst endo = {\n    beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n    splitScalar(k) {\n        const { n } = CURVE;\n        const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n        const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n        const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n        const b2 = a1;\n        const POW_2_128 = BigInt('0x100000000000000000000000000000000');\n        const c1 = divNearest(b2 * k, n);\n        const c2 = divNearest(-b1 * k, n);\n        let k1 = mod(k - c1 * a1 - c2 * a2, n);\n        let k2 = mod(-c1 * b1 - c2 * b2, n);\n        const k1neg = k1 > POW_2_128;\n        const k2neg = k2 > POW_2_128;\n        if (k1neg)\n            k1 = n - k1;\n        if (k2neg)\n            k2 = n - k2;\n        if (k1 > POW_2_128 || k2 > POW_2_128) {\n            throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n        }\n        return { k1neg, k1, k2neg, k2 };\n    },\n};\nconst fieldLen = 32;\nconst groupLen = 32;\nconst hashLen = 32;\nconst compressedLen = fieldLen + 1;\nconst uncompressedLen = 2 * fieldLen + 1;\nexport { CURVE };\nfunction weierstrass(x) {\n    const { a, b } = CURVE;\n    const x2 = mod(x * x);\n    const x3 = mod(x2 * x);\n    return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n    constructor(message) {\n        super(message);\n    }\n}\nfunction assertJacPoint(other) {\n    if (!(other instanceof JacobianPoint))\n        throw new TypeError('JacobianPoint expected');\n}\nclass JacobianPoint {\n    constructor(x, y, z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('JacobianPoint#fromAffine: expected Point');\n        }\n        if (p.equals(Point.ZERO))\n            return JacobianPoint.ZERO;\n        return new JacobianPoint(p.x, p.y, _1n);\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n    }\n    equals(other) {\n        assertJacPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const Z1Z1 = mod(Z1 * Z1);\n        const Z2Z2 = mod(Z2 * Z2);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        return U1 === U2 && S1 === S2;\n    }\n    negate() {\n        return new JacobianPoint(this.x, mod(-this.y), this.z);\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(B * B);\n        const x1b = X1 + B;\n        const D = mod(_2n * (mod(x1b * x1b) - A - C));\n        const E = mod(_3n * A);\n        const F = mod(E * E);\n        const X3 = mod(F - _2n * D);\n        const Y3 = mod(E * (D - X3) - _8n * C);\n        const Z3 = mod(_2n * Y1 * Z1);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    add(other) {\n        assertJacPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        if (X2 === _0n || Y2 === _0n)\n            return this;\n        if (X1 === _0n || Y1 === _0n)\n            return other;\n        const Z1Z1 = mod(Z1 * Z1);\n        const Z2Z2 = mod(Z2 * Z2);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        const H = mod(U2 - U1);\n        const r = mod(S2 - S1);\n        if (H === _0n) {\n            if (r === _0n) {\n                return this.double();\n            }\n            else {\n                return JacobianPoint.ZERO;\n            }\n        }\n        const HH = mod(H * H);\n        const HHH = mod(H * HH);\n        const V = mod(U1 * HH);\n        const X3 = mod(r * r - HHH - _2n * V);\n        const Y3 = mod(r * (V - X3) - S1 * HHH);\n        const Z3 = mod(Z1 * Z2 * H);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiplyUnsafe(scalar) {\n        const P0 = JacobianPoint.ZERO;\n        if (typeof scalar === 'bigint' && scalar === _0n)\n            return P0;\n        let n = normalizeScalar(scalar);\n        if (n === _1n)\n            return this;\n        if (!USE_ENDOMORPHISM) {\n            let p = P0;\n            let d = this;\n            while (n > _0n) {\n                if (n & _1n)\n                    p = p.add(d);\n                d = d.double();\n                n >>= _1n;\n            }\n            return p;\n        }\n        let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n        let k1p = P0;\n        let k2p = P0;\n        let d = this;\n        while (k1 > _0n || k2 > _0n) {\n            if (k1 & _1n)\n                k1p = k1p.add(d);\n            if (k2 & _1n)\n                k2p = k2p.add(d);\n            d = d.double();\n            k1 >>= _1n;\n            k2 >>= _1n;\n        }\n        if (k1neg)\n            k1p = k1p.negate();\n        if (k2neg)\n            k2p = k2p.negate();\n        k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n        return k1p.add(k2p);\n    }\n    precomputeWindow(W) {\n        const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(JacobianPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = JacobianPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = JacobianPoint.ZERO;\n        let f = JacobianPoint.BASE;\n        const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            const offset1 = offset;\n            const offset2 = offset + Math.abs(wbits) - 1;\n            const cond1 = window % 2 !== 0;\n            const cond2 = wbits < 0;\n            if (wbits === 0) {\n                f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n            }\n            else {\n                p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n            }\n        }\n        return { p, f };\n    }\n    multiply(scalar, affinePoint) {\n        let n = normalizeScalar(scalar);\n        let point;\n        let fake;\n        if (USE_ENDOMORPHISM) {\n            const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n            let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n            let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n            k1p = constTimeNegate(k1neg, k1p);\n            k2p = constTimeNegate(k2neg, k2p);\n            k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n            point = k1p.add(k2p);\n            fake = f1p.add(f2p);\n        }\n        else {\n            const { p, f } = this.wNAF(n, affinePoint);\n            point = p;\n            fake = f;\n        }\n        return JacobianPoint.normalizeZ([point, fake])[0];\n    }\n    toAffine(invZ) {\n        const { x, y, z } = this;\n        const is0 = this.equals(JacobianPoint.ZERO);\n        if (invZ == null)\n            invZ = is0 ? _8n : invert(z);\n        const iz1 = invZ;\n        const iz2 = mod(iz1 * iz1);\n        const iz3 = mod(iz2 * iz1);\n        const ax = mod(x * iz2);\n        const ay = mod(y * iz3);\n        const zz = mod(z * iz1);\n        if (is0)\n            return Point.ZERO;\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nfunction constTimeNegate(condition, item) {\n    const neg = item.negate();\n    return condition ? neg : item;\n}\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    hasEvenY() {\n        return this.y % _2n === _0n;\n    }\n    static fromCompressedHex(bytes) {\n        const isShort = bytes.length === 32;\n        const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n        if (!isValidFieldElement(x))\n            throw new Error('Point is not on curve');\n        const y2 = weierstrass(x);\n        let y = sqrtMod(y2);\n        const isYOdd = (y & _1n) === _1n;\n        if (isShort) {\n            if (isYOdd)\n                y = mod(-y);\n        }\n        else {\n            const isFirstByteOdd = (bytes[0] & 1) === 1;\n            if (isFirstByteOdd !== isYOdd)\n                y = mod(-y);\n        }\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromUncompressedHex(bytes) {\n        const x = bytesToNumber(bytes.subarray(1, fieldLen + 1));\n        const y = bytesToNumber(bytes.subarray(fieldLen + 1, fieldLen * 2 + 1));\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        const len = bytes.length;\n        const header = bytes[0];\n        if (len === fieldLen)\n            return this.fromCompressedHex(bytes);\n        if (len === compressedLen && (header === 0x02 || header === 0x03)) {\n            return this.fromCompressedHex(bytes);\n        }\n        if (len === uncompressedLen && header === 0x04)\n            return this.fromUncompressedHex(bytes);\n        throw new Error(`Point.fromHex: received invalid point. Expected 32-${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes, not ${len}`);\n    }\n    static fromPrivateKey(privateKey) {\n        return Point.BASE.multiply(normalizePrivateKey(privateKey));\n    }\n    static fromSignature(msgHash, signature, recovery) {\n        const { r, s } = normalizeSignature(signature);\n        if (![0, 1, 2, 3].includes(recovery))\n            throw new Error('Cannot recover: invalid recovery bit');\n        const h = truncateHash(ensureBytes(msgHash));\n        const { n } = CURVE;\n        const radj = recovery === 2 || recovery === 3 ? r + n : r;\n        const rinv = invert(radj, n);\n        const u1 = mod(-h * rinv, n);\n        const u2 = mod(s * rinv, n);\n        const prefix = recovery & 1 ? '03' : '02';\n        const R = Point.fromHex(prefix + numTo32bStr(radj));\n        const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n        if (!Q)\n            throw new Error('Cannot recover signature: point at infinify');\n        Q.assertValidity();\n        return Q;\n    }\n    toRawBytes(isCompressed = false) {\n        return hexToBytes(this.toHex(isCompressed));\n    }\n    toHex(isCompressed = false) {\n        const x = numTo32bStr(this.x);\n        if (isCompressed) {\n            const prefix = this.hasEvenY() ? '02' : '03';\n            return `${prefix}${x}`;\n        }\n        else {\n            return `04${x}${numTo32bStr(this.y)}`;\n        }\n    }\n    toHexX() {\n        return this.toHex(true).slice(2);\n    }\n    toRawX() {\n        return this.toRawBytes(true).slice(1);\n    }\n    assertValidity() {\n        const msg = 'Point is not on elliptic curve';\n        const { x, y } = this;\n        if (!isValidFieldElement(x) || !isValidFieldElement(y))\n            throw new Error(msg);\n        const left = mod(y * y);\n        const right = weierstrass(x);\n        if (mod(left - right) !== _0n)\n            throw new Error(msg);\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(this.x, mod(-this.y));\n    }\n    double() {\n        return JacobianPoint.fromAffine(this).double().toAffine();\n    }\n    add(other) {\n        return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n    multiplyAndAddUnsafe(Q, a, b) {\n        const P = JacobianPoint.fromAffine(this);\n        const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n        const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n        const sum = aP.add(bQ);\n        return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n    }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n    return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n    if (data.length < 2 || data[0] !== 0x02) {\n        throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n    }\n    const len = data[1];\n    const res = data.subarray(2, len + 2);\n    if (!len || res.length !== len) {\n        throw new Error(`Invalid signature integer: wrong length`);\n    }\n    if (res[0] === 0x00 && res[1] <= 0x7f) {\n        throw new Error('Invalid signature integer: trailing length');\n    }\n    return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n    if (data.length < 2 || data[0] != 0x30) {\n        throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n    }\n    if (data[1] !== data.length - 2) {\n        throw new Error('Invalid signature: incorrect length');\n    }\n    const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n    const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n    if (rBytesLeft.length) {\n        throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n    }\n    return { r, s };\n}\nexport class Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromCompact(hex) {\n        const arr = hex instanceof Uint8Array;\n        const name = 'Signature.fromCompact';\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`${name}: Expected string or Uint8Array`);\n        const str = arr ? bytesToHex(hex) : hex;\n        if (str.length !== 128)\n            throw new Error(`${name}: Expected 64-byte hex`);\n        return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n    }\n    static fromDER(hex) {\n        const arr = hex instanceof Uint8Array;\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n        const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n        return new Signature(r, s);\n    }\n    static fromHex(hex) {\n        return this.fromDER(hex);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isWithinCurveOrder(r))\n            throw new Error('Invalid Signature: r must be 0 < r < n');\n        if (!isWithinCurveOrder(s))\n            throw new Error('Invalid Signature: s must be 0 < s < n');\n    }\n    hasHighS() {\n        const HALF = CURVE.n >> _1n;\n        return this.s > HALF;\n    }\n    normalizeS() {\n        return this.hasHighS() ? new Signature(this.r, mod(-this.s, CURVE.n)) : this;\n    }\n    toDERRawBytes() {\n        return hexToBytes(this.toDERHex());\n    }\n    toDERHex() {\n        const sHex = sliceDER(numberToHexUnpadded(this.s));\n        const rHex = sliceDER(numberToHexUnpadded(this.r));\n        const sHexL = sHex.length / 2;\n        const rHexL = rHex.length / 2;\n        const sLen = numberToHexUnpadded(sHexL);\n        const rLen = numberToHexUnpadded(rHexL);\n        const length = numberToHexUnpadded(rHexL + sHexL + 4);\n        return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n    }\n    toRawBytes() {\n        return this.toDERRawBytes();\n    }\n    toHex() {\n        return this.toDERHex();\n    }\n    toCompactRawBytes() {\n        return hexToBytes(this.toCompactHex());\n    }\n    toCompactHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n}\nfunction concatBytes(...arrays) {\n    if (!arrays.every((b) => b instanceof Uint8Array))\n        throw new Error('Uint8Array list expected');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n    if (typeof num !== 'bigint')\n        throw new Error('Expected bigint');\n    if (!(_0n <= num && num < POW_2_256))\n        throw new Error('Expected number 0 <= n < 2^256');\n    return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n    const b = hexToBytes(numTo32bStr(num));\n    if (b.length !== 32)\n        throw new Error('Error: expected 32 bytes');\n    return b;\n}\nfunction numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n    }\n    return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction bytesToNumber(bytes) {\n    return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n    return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n    if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n        return BigInt(num);\n    if (typeof num === 'bigint' && isWithinCurveOrder(num))\n        return num;\n    throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction sqrtMod(x) {\n    const { P } = CURVE;\n    const _6n = BigInt(6);\n    const _11n = BigInt(11);\n    const _22n = BigInt(22);\n    const _23n = BigInt(23);\n    const _44n = BigInt(44);\n    const _88n = BigInt(88);\n    const b2 = (x * x * x) % P;\n    const b3 = (b2 * b2 * x) % P;\n    const b6 = (pow2(b3, _3n) * b3) % P;\n    const b9 = (pow2(b6, _3n) * b3) % P;\n    const b11 = (pow2(b9, _2n) * b2) % P;\n    const b22 = (pow2(b11, _11n) * b11) % P;\n    const b44 = (pow2(b22, _22n) * b22) % P;\n    const b88 = (pow2(b44, _44n) * b44) % P;\n    const b176 = (pow2(b88, _88n) * b88) % P;\n    const b220 = (pow2(b176, _44n) * b44) % P;\n    const b223 = (pow2(b220, _3n) * b3) % P;\n    const t1 = (pow2(b223, _23n) * b22) % P;\n    const t2 = (pow2(t1, _6n) * b2) % P;\n    const rt = pow2(t2, _2n);\n    const xc = (rt * rt) % P;\n    if (xc !== x)\n        throw new Error('Cannot find square root');\n    return rt;\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const scratch = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = mod(acc * scratch[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return scratch;\n}\nfunction bits2int_2(bytes) {\n    const delta = bytes.length * 8 - groupLen * 8;\n    const num = bytesToNumber(bytes);\n    return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction truncateHash(hash, truncateOnly = false) {\n    const h = bits2int_2(hash);\n    if (truncateOnly)\n        return h;\n    const { n } = CURVE;\n    return h >= n ? h - n : h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n    constructor(hashLen, qByteLen) {\n        this.hashLen = hashLen;\n        this.qByteLen = qByteLen;\n        if (typeof hashLen !== 'number' || hashLen < 2)\n            throw new Error('hashLen must be a number');\n        if (typeof qByteLen !== 'number' || qByteLen < 2)\n            throw new Error('qByteLen must be a number');\n        this.v = new Uint8Array(hashLen).fill(1);\n        this.k = new Uint8Array(hashLen).fill(0);\n        this.counter = 0;\n    }\n    hmac(...values) {\n        return utils.hmacSha256(this.k, ...values);\n    }\n    hmacSync(...values) {\n        return _hmacSha256Sync(this.k, ...values);\n    }\n    checkSync() {\n        if (typeof _hmacSha256Sync !== 'function')\n            throw new ShaError('hmacSha256Sync needs to be set');\n    }\n    incr() {\n        if (this.counter >= 1000)\n            throw new Error('Tried 1,000 k values for sign(), all were invalid');\n        this.counter += 1;\n    }\n    async reseed(seed = new Uint8Array()) {\n        this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n        this.v = await this.hmac(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n        this.v = await this.hmac(this.v);\n    }\n    reseedSync(seed = new Uint8Array()) {\n        this.checkSync();\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n        this.v = this.hmacSync(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n        this.v = this.hmacSync(this.v);\n    }\n    async generate() {\n        this.incr();\n        let len = 0;\n        const out = [];\n        while (len < this.qByteLen) {\n            this.v = await this.hmac(this.v);\n            const sl = this.v.slice();\n            out.push(sl);\n            len += this.v.length;\n        }\n        return concatBytes(...out);\n    }\n    generateSync() {\n        this.checkSync();\n        this.incr();\n        let len = 0;\n        const out = [];\n        while (len < this.qByteLen) {\n            this.v = this.hmacSync(this.v);\n            const sl = this.v.slice();\n            out.push(sl);\n            len += this.v.length;\n        }\n        return concatBytes(...out);\n    }\n}\nfunction isWithinCurveOrder(num) {\n    return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n    return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d, lowS = true) {\n    const { n } = CURVE;\n    const k = truncateHash(kBytes, true);\n    if (!isWithinCurveOrder(k))\n        return;\n    const kinv = invert(k, n);\n    const q = Point.BASE.multiply(k);\n    const r = mod(q.x, n);\n    if (r === _0n)\n        return;\n    const s = mod(kinv * mod(m + d * r, n), n);\n    if (s === _0n)\n        return;\n    let sig = new Signature(r, s);\n    let recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n    if (lowS && sig.hasHighS()) {\n        sig = sig.normalizeS();\n        recovery ^= 1;\n    }\n    return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n    let num;\n    if (typeof key === 'bigint') {\n        num = key;\n    }\n    else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n        num = BigInt(key);\n    }\n    else if (typeof key === 'string') {\n        if (key.length !== 2 * groupLen)\n            throw new Error('Expected 32 bytes of private key');\n        num = hexToNumber(key);\n    }\n    else if (key instanceof Uint8Array) {\n        if (key.length !== groupLen)\n            throw new Error('Expected 32 bytes of private key');\n        num = bytesToNumber(key);\n    }\n    else {\n        throw new TypeError('Expected valid private key');\n    }\n    if (!isWithinCurveOrder(num))\n        throw new Error('Expected private key: 0 < key < n');\n    return num;\n}\nfunction normalizePublicKey(publicKey) {\n    if (publicKey instanceof Point) {\n        publicKey.assertValidity();\n        return publicKey;\n    }\n    else {\n        return Point.fromHex(publicKey);\n    }\n}\nfunction normalizeSignature(signature) {\n    if (signature instanceof Signature) {\n        signature.assertValidity();\n        return signature;\n    }\n    try {\n        return Signature.fromDER(signature);\n    }\n    catch (error) {\n        return Signature.fromCompact(signature);\n    }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n    return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n    return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isProbPub(item) {\n    const arr = item instanceof Uint8Array;\n    const str = typeof item === 'string';\n    const len = (arr || str) && item.length;\n    if (arr)\n        return len === compressedLen || len === uncompressedLen;\n    if (str)\n        return len === compressedLen * 2 || len === uncompressedLen * 2;\n    if (item instanceof Point)\n        return true;\n    return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n    if (isProbPub(privateA))\n        throw new TypeError('getSharedSecret: first arg must be private key');\n    if (!isProbPub(publicB))\n        throw new TypeError('getSharedSecret: second arg must be public key');\n    const b = normalizePublicKey(publicB);\n    b.assertValidity();\n    return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n    const slice = bytes.length > fieldLen ? bytes.slice(0, fieldLen) : bytes;\n    return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n    const z1 = bits2int(bytes);\n    const z2 = mod(z1, CURVE.n);\n    return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n    return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n    if (msgHash == null)\n        throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n    const h1 = ensureBytes(msgHash);\n    const d = normalizePrivateKey(privateKey);\n    const seedArgs = [int2octets(d), bits2octets(h1)];\n    if (extraEntropy != null) {\n        if (extraEntropy === true)\n            extraEntropy = utils.randomBytes(fieldLen);\n        const e = ensureBytes(extraEntropy);\n        if (e.length !== fieldLen)\n            throw new Error(`sign: Expected ${fieldLen} bytes of extra data`);\n        seedArgs.push(e);\n    }\n    const seed = concatBytes(...seedArgs);\n    const m = bits2int(h1);\n    return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n    const { sig, recovery } = recSig;\n    const { der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n    const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n    return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    const drbg = new HmacDrbg(hashLen, groupLen);\n    await drbg.reseed(seed);\n    let sig;\n    while (!(sig = kmdToSig(await drbg.generate(), m, d, opts.canonical)))\n        await drbg.reseed();\n    return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    const drbg = new HmacDrbg(hashLen, groupLen);\n    drbg.reseedSync(seed);\n    let sig;\n    while (!(sig = kmdToSig(drbg.generateSync(), m, d, opts.canonical)))\n        drbg.reseedSync();\n    return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n    let sig;\n    try {\n        sig = normalizeSignature(signature);\n        msgHash = ensureBytes(msgHash);\n    }\n    catch (error) {\n        return false;\n    }\n    const { r, s } = sig;\n    if (opts.strict && sig.hasHighS())\n        return false;\n    const h = truncateHash(msgHash);\n    let P;\n    try {\n        P = normalizePublicKey(publicKey);\n    }\n    catch (error) {\n        return false;\n    }\n    const { n } = CURVE;\n    const sinv = invert(s, n);\n    const u1 = mod(h * sinv, n);\n    const u2 = mod(r * sinv, n);\n    const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n    if (!R)\n        return false;\n    const v = mod(R.x, n);\n    return v === r;\n}\nfunction schnorrChallengeFinalize(ch) {\n    return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        if (bytes.length !== 64)\n            throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n        const r = bytesToNumber(bytes.subarray(0, 32));\n        const s = bytesToNumber(bytes.subarray(32, 64));\n        return new SchnorrSignature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n            throw new Error('Invalid signature');\n    }\n    toHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n    toRawBytes() {\n        return hexToBytes(this.toHex());\n    }\n}\nfunction schnorrGetPublicKey(privateKey) {\n    return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n    constructor(message, privateKey, auxRand = utils.randomBytes()) {\n        if (message == null)\n            throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n        this.m = ensureBytes(message);\n        const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n        this.px = x;\n        this.d = scalar;\n        this.rand = ensureBytes(auxRand);\n        if (this.rand.length !== 32)\n            throw new TypeError('sign: Expected 32 bytes of aux randomness');\n    }\n    getScalar(priv) {\n        const point = Point.fromPrivateKey(priv);\n        const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n        return { point, scalar, x: point.toRawX() };\n    }\n    initNonce(d, t0h) {\n        return numTo32b(d ^ bytesToNumber(t0h));\n    }\n    finalizeNonce(k0h) {\n        const k0 = mod(bytesToNumber(k0h), CURVE.n);\n        if (k0 === _0n)\n            throw new Error('sign: Creation of signature failed. k is zero');\n        const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n        return { R, rx, k };\n    }\n    finalizeSig(R, k, e, d) {\n        return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n    }\n    error() {\n        throw new Error('sign: Invalid signature produced');\n    }\n    async calc() {\n        const { m, d, px, rand } = this;\n        const tag = utils.taggedHash;\n        const t = this.initNonce(d, await tag(TAGS.aux, rand));\n        const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n        const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n        const sig = this.finalizeSig(R, k, e, d);\n        if (!(await schnorrVerify(sig, m, px)))\n            this.error();\n        return sig;\n    }\n    calcSync() {\n        const { m, d, px, rand } = this;\n        const tag = utils.taggedHashSync;\n        const t = this.initNonce(d, tag(TAGS.aux, rand));\n        const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n        const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n        const sig = this.finalizeSig(R, k, e, d);\n        if (!schnorrVerifySync(sig, m, px))\n            this.error();\n        return sig;\n    }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n    return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n    return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n    const raw = signature instanceof SchnorrSignature;\n    const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n    if (raw)\n        sig.assertValidity();\n    return {\n        ...sig,\n        m: ensureBytes(message),\n        P: normalizePublicKey(publicKey),\n    };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n    const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n    if (!R || !R.hasEvenY() || R.x !== r)\n        return false;\n    return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n    try {\n        const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n        const e = schnorrChallengeFinalize(await utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n        return finalizeSchnorrVerify(r, P, s, e);\n    }\n    catch (error) {\n        return false;\n    }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n    try {\n        const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n        const e = schnorrChallengeFinalize(utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n        return finalizeSchnorrVerify(r, P, s, e);\n    }\n    catch (error) {\n        if (error instanceof ShaError)\n            throw error;\n        return false;\n    }\n}\nexport const schnorr = {\n    Signature: SchnorrSignature,\n    getPublicKey: schnorrGetPublicKey,\n    sign: schnorrSign,\n    verify: schnorrVerify,\n    signSync: schnorrSignSync,\n    verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n    challenge: 'BIP0340/challenge',\n    aux: 'BIP0340/aux',\n    nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexport const utils = {\n    bytesToHex,\n    hexToBytes,\n    concatBytes,\n    mod,\n    invert,\n    isValidPrivateKey(privateKey) {\n        try {\n            normalizePrivateKey(privateKey);\n            return true;\n        }\n        catch (error) {\n            return false;\n        }\n    },\n    _bigintTo32Bytes: numTo32b,\n    _normalizePrivateKey: normalizePrivateKey,\n    hashToPrivateKey: (hash) => {\n        hash = ensureBytes(hash);\n        const minLen = groupLen + 8;\n        if (hash.length < minLen || hash.length > 1024) {\n            throw new Error(`Expected valid bytes of private key as per FIPS 186`);\n        }\n        const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n        return numTo32b(num);\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return Uint8Array.from(randomBytes(bytesLength));\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => utils.hashToPrivateKey(utils.randomBytes(groupLen + 8)),\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_3n);\n        return cached;\n    },\n    sha256: async (...messages) => {\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHash } = crypto.node;\n            const hash = createHash('sha256');\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha256 function\");\n        }\n    },\n    hmacSha256: async (key, ...messages) => {\n        if (crypto.web) {\n            const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n            const message = concatBytes(...messages);\n            const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHmac } = crypto.node;\n            const hash = createHmac('sha256', key);\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have hmac-sha256 function\");\n        }\n    },\n    sha256Sync: undefined,\n    hmacSha256Sync: undefined,\n    taggedHash: async (tag, ...messages) => {\n        let tagP = TAGGED_HASH_PREFIXES[tag];\n        if (tagP === undefined) {\n            const tagH = await utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n            tagP = concatBytes(tagH, tagH);\n            TAGGED_HASH_PREFIXES[tag] = tagP;\n        }\n        return utils.sha256(tagP, ...messages);\n    },\n    taggedHashSync: (tag, ...messages) => {\n        if (typeof _sha256Sync !== 'function')\n            throw new ShaError('sha256Sync is undefined, you need to set it');\n        let tagP = TAGGED_HASH_PREFIXES[tag];\n        if (tagP === undefined) {\n            const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n            tagP = concatBytes(tagH, tagH);\n            TAGGED_HASH_PREFIXES[tag] = tagP;\n        }\n        return _sha256Sync(tagP, ...messages);\n    },\n    _JacobianPoint: JacobianPoint,\n};\nObject.defineProperties(utils, {\n    sha256Sync: {\n        configurable: false,\n        get() {\n            return _sha256Sync;\n        },\n        set(val) {\n            if (!_sha256Sync)\n                _sha256Sync = val;\n        },\n    },\n    hmacSha256Sync: {\n        configurable: false,\n        get() {\n            return _hmacSha256Sync;\n        },\n        set(val) {\n            if (!_hmacSha256Sync)\n                _hmacSha256Sync = val;\n        },\n    },\n});\n", "import type { PrivateJwk, PublicJwk } from '../jose/types.js';\n\nimport * as secp256k1 from '@noble/secp256k1';\nimport secp256k1Derivation from 'secp256k1';\n\nimport { Encoder } from '../utils/encoder.js';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\n/**\n * Class containing SECP256K1 related utility methods.\n */\nexport class Secp256k1 {\n  /**\n   * Validates the given JWK is a SECP256K1 key.\n   * @throws {Error} if fails validation.\n   */\n  public static validateKey(jwk: PrivateJwk | PublicJwk): void {\n    if (jwk.kty !== 'EC' || jwk.crv !== 'secp256k1') {\n      throw new DwnError(DwnErrorCode.Secp256k1KeyNotValid, 'Invalid SECP256K1 JWK: `kty` MUST be `EC`. `crv` MUST be `secp256k1`');\n    }\n  }\n\n  /**\n   * Converts a public key in bytes into a JWK.\n   */\n  public static async publicKeyToJwk(publicKeyBytes: Uint8Array): Promise<PublicJwk> {\n  // ensure public key is in uncompressed format so we can convert it into both x and y value\n    let uncompressedPublicKeyBytes;\n    if (publicKeyBytes.byteLength === 33) {\n    // this means given key is compressed\n      const publicKeyHex = secp256k1.utils.bytesToHex(publicKeyBytes);\n      const curvePoints = secp256k1.Point.fromHex(publicKeyHex);\n      uncompressedPublicKeyBytes = curvePoints.toRawBytes(false); // isCompressed = false\n    } else {\n      uncompressedPublicKeyBytes = publicKeyBytes;\n    }\n\n    // the first byte is a header that indicates whether the key is uncompressed (0x04 if uncompressed), we can safely ignore\n    // bytes 1 - 32 represent X\n    // bytes 33 - 64 represent Y\n\n    // skip the first byte because it's used as a header to indicate whether the key is uncompressed\n    const x = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(1, 33));\n    const y = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(33, 65));\n\n    const publicJwk: PublicJwk = {\n      alg : 'ES256K',\n      kty : 'EC',\n      crv : 'secp256k1',\n      x,\n      y\n    };\n\n    return publicJwk;\n  }\n\n  /**\n   * Converts a private key in bytes into a JWK.\n   */\n  public static async privateKeyToJwk(privateKeyBytes: Uint8Array): Promise<PrivateJwk> {\n    const publicKeyBytes = await Secp256k1.getPublicKey(privateKeyBytes);\n\n    const jwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);\n    (jwk as PrivateJwk).d = Encoder.bytesToBase64Url(privateKeyBytes);\n\n    return jwk as PrivateJwk;\n  }\n\n  /**\n   * Creates a uncompressed key in raw bytes from the given SECP256K1 JWK.\n   */\n  public static publicJwkToBytes(publicJwk: PublicJwk): Uint8Array {\n    const x = Encoder.base64UrlToBytes(publicJwk.x);\n    const y = Encoder.base64UrlToBytes(publicJwk.y!);\n\n    // leading byte of 0x04 indicates that the public key is uncompressed\n    const publicKey = new Uint8Array([0x04, ...x, ...y]);\n    return publicKey;\n  }\n\n  /**\n   * Creates a private key in raw bytes from the given SECP256K1 JWK.\n   */\n  public static privateJwkToBytes(privateJwk: PrivateJwk): Uint8Array {\n    const privateKey = Encoder.base64UrlToBytes(privateJwk.d);\n    return privateKey;\n  }\n\n  /**\n   * Signs the provided content using the provided JWK.\n   */\n  public static async sign(content: Uint8Array, privateJwk: PrivateJwk): Promise<Uint8Array> {\n    Secp256k1.validateKey(privateJwk);\n\n    // the underlying lib expects us to hash the content ourselves:\n    // https://github.com/paulmillr/noble-secp256k1/blob/97aa518b9c12563544ea87eba471b32ecf179916/index.ts#L1160\n    const hashedContent = await sha256.encode(content);\n    const privateKeyBytes = Secp256k1.privateJwkToBytes(privateJwk);\n\n    return await secp256k1.sign(hashedContent, privateKeyBytes, { der: false });\n  }\n\n  /**\n   * Verifies a signature against the provided payload hash and public key.\n   * @returns a boolean indicating whether the signature is valid.\n   */\n  public static async verify(content: Uint8Array, signature: Uint8Array, publicJwk: PublicJwk): Promise<boolean> {\n    Secp256k1.validateKey(publicJwk);\n\n    const publicKeyBytes = Secp256k1.publicJwkToBytes(publicJwk);\n    const hashedContent = await sha256.encode(content);\n    return secp256k1.verify(signature, hashedContent, publicKeyBytes);\n  }\n\n  /**\n   * Generates a random key pair in JWK format.\n   */\n  public static async generateKeyPair(): Promise<{publicJwk: PublicJwk, privateJwk: PrivateJwk}> {\n    const privateKeyBytes = secp256k1.utils.randomPrivateKey();\n    const publicKeyBytes = secp256k1.getPublicKey(privateKeyBytes);\n\n    const d = Encoder.bytesToBase64Url(privateKeyBytes);\n    const publicJwk: PublicJwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);\n    const privateJwk: PrivateJwk = { ...publicJwk, d };\n\n    return { publicJwk, privateJwk };\n  }\n\n  /**\n   * Generates key pair in raw bytes, where the `publicKey` is uncompressed.\n   */\n  public static async generateKeyPairRaw(): Promise<{publicKey: Uint8Array, privateKey: Uint8Array}> {\n    const privateKey = secp256k1.utils.randomPrivateKey();\n    const publicKey = secp256k1.getPublicKey(privateKey);\n\n    return { publicKey, privateKey };\n  }\n\n  /**\n   * Gets the uncompressed public key of the given private key.\n   */\n  public static async getPublicKey(privateKey: Uint8Array): Promise<Uint8Array> {\n    const compressedPublicKey = false;\n    const publicKey = secp256k1.getPublicKey(privateKey, compressedPublicKey);\n    return publicKey;\n  }\n\n  /**\n   * Derives a hierarchical deterministic public key.\n   * @param key Either a private or an uncompressed public key used to derive the descendant public key.\n   * @returns uncompressed public key\n   */\n  public static async derivePublicKey(key: Uint8Array, relativePath: string[]): Promise<Uint8Array> {\n    Secp256k1.validateKeyDerivationPath(relativePath);\n\n    let currentPublicKey: Uint8Array;\n    if (key.length === 32) {\n      // private key is always 32 bytes\n      currentPublicKey = secp256k1.getPublicKey(key);\n    } else {\n      currentPublicKey = key;\n    }\n\n    for (const segment of relativePath) {\n      const hash = await sha256.encode(Encoder.stringToBytes(segment));\n      currentPublicKey = Secp256k1.deriveChildPublicKey(currentPublicKey, hash);\n    }\n\n    return currentPublicKey;\n  }\n\n  /**\n   * Derives a hierarchical deterministic private key.\n   */\n  public static async derivePrivateKey(privateKey: Uint8Array, relativePath: string[]): Promise<Uint8Array> {\n    Secp256k1.validateKeyDerivationPath(relativePath);\n\n    let currentPrivateKey = privateKey;\n    for (const segment of relativePath) {\n      const hash = await sha256.encode(Encoder.stringToBytes(segment));\n      currentPrivateKey = Secp256k1.deriveChildPrivateKey(currentPrivateKey, hash);\n    }\n\n    return currentPrivateKey;\n  }\n\n  /**\n   * Derives a child public key using the given tweak input.\n   */\n  public static deriveChildPublicKey(uncompressedPublicKey: Uint8Array, tweakInput: Uint8Array): Uint8Array {\n    // underlying library requires Buffer as input\n    const compressedPublicKey = false;\n    const publicKeyBuffer = Buffer.from(uncompressedPublicKey);\n    const tweakBuffer = Buffer.from(tweakInput);\n    const derivedPublicKey = secp256k1Derivation.publicKeyTweakAdd(publicKeyBuffer, tweakBuffer, compressedPublicKey);\n    return derivedPublicKey;\n  }\n\n  /**\n   * Derives a child private key using the given tweak input.\n   */\n  public static deriveChildPrivateKey(privateKey: Uint8Array, tweakInput: Uint8Array): Uint8Array {\n    // NOTE: passing in private key to v5.0.0 of `secp256k1.privateKeyTweakAdd()` has the side effect of modifying the input private key bytes.\n    // `secp256k1.publicKeyTweakAdd()` does not have this side effect.\n    // before there is a fix for it (we can also investigate and submit a PR), cloning the private key to workaround is a MUST\n    // also underlying library requires Buffer as input\n    const privateKeyBuffer = Buffer.from(privateKey);\n    const tweakBuffer = Buffer.from(tweakInput);\n    const derivedPrivateKey = secp256k1Derivation.privateKeyTweakAdd(privateKeyBuffer, tweakBuffer);\n    return derivedPrivateKey;\n  }\n\n  /**\n   * Parses the given key derivation path.\n   * @returns Path segments if successfully validate the derivation path.\n   * @throws {DwnError} with `DwnErrorCode.HdKeyDerivationPathInvalid` if derivation path fails validation.\n   */\n  private static validateKeyDerivationPath(pathSegments: string[]): void {\n    if (pathSegments.includes('')) {\n      throw new DwnError(DwnErrorCode.HdKeyDerivationPathInvalid, `Invalid key derivation path: ${pathSegments}`);\n    }\n  }\n}\n", "/**\n * A class that represents a DWN error.\n */\nexport class DwnError extends Error {\n  constructor (public code: string, message: string) {\n    super(`${code}: ${message}`);\n\n    this.name = 'DwnError';\n  }\n}\n\n/**\n * DWN SDK error codes.\n */\nexport enum DwnErrorCode {\n  AuthenticateJwsMissing = 'AuthenticateJwsMissing',\n  AuthorizationMissing = 'AuthorizationMissing',\n  AuthorizationUnknownAuthor = 'AuthorizationUnknownAuthor',\n  HdKeyDerivationPathInvalid = 'HdKeyDerivationPathInvalid',\n  ProtocolAuthorizationIncorrectDataFormat = 'ProtocolAuthorizationIncorrectDataFormat',\n  ProtocolAuthorizationIncorrectProtocolPath = 'ProtocolAuthorizationIncorrectProtocolPath',\n  ProtocolAuthorizationInvalidSchema = 'ProtocolAuthorizationInvalidSchema',\n  ProtocolAuthorizationInvalidType = 'ProtocolAuthorizationInvalidType',\n  ProtocolAuthorizationMissingRuleSet = 'ProtocolAuthorizationMissingRuleSet',\n  RecordsDecryptNoMatchingKeyDerivationScheme = 'RecordsDecryptNoMatchingKeyDerivationScheme',\n  RecordsDeriveLeafPrivateKeyUnSupportedCurve = 'RecordsDeriveLeafPrivateKeyUnSupportedCurve',\n  RecordsDeriveLeafPublicKeyUnSupportedCurve = 'RecordsDeriveLeafPublicKeyUnSupportedCurve',\n  RecordsInvalidAncestorKeyDerivationSegment = 'RecordsInvalidAncestorKeyDerivationSegment',\n  RecordsProtocolsDerivationSchemeMissingProtocol = 'RecordsProtocolsDerivationSchemeMissingProtocol',\n  RecordsSchemasDerivationSchemeMissingSchema = 'RecordsSchemasDerivationSchemeMissingSchema',\n  RecordsWriteGetEntryIdUndefinedAuthor = 'RecordsWriteGetEntryIdUndefinedAuthor',\n  RecordsWriteMissingDataStream = 'RecordsWriteMissingDataStream',\n  RecordsWriteValidateIntegrityEncryptionCidMismatch = 'RecordsWriteValidateIntegrityEncryptionCidMismatch',\n  Secp256k1KeyNotValid = 'Secp256k1KeyNotValid',\n  StorageControllerDataCidMismatch = 'StorageControllerDataCidMismatch',\n  StorageControllerDataSizeMismatch = 'StorageControllerDataSizeMismatch',\n  UrlProtocolNotNormalized = 'UrlProtocolNotNormalized',\n  UrlProtocolNotNormalizable = 'UrlProtocolNotNormalizable',\n  UrlSchemaNotNormalized = 'UrlSchemaNotNormalized',\n  UrlSchemaNotNormalizable = 'UrlSchemaNotNormalizable'\n};\n", "import type { GeneralJws, SignatureInput } from './types.js';\n\nimport { Encoder } from '../../../utils/encoder.js';\nimport { signers } from '../../algorithms/signing/signers.js';\n\nexport class GeneralJwsSigner {\n  private jws: GeneralJws;\n\n  constructor(jws: GeneralJws) {\n    this.jws = jws;\n  }\n\n  static async create(payload: Uint8Array, signatureInputs: SignatureInput[] = []): Promise<GeneralJwsSigner> {\n    const jws: GeneralJws = {\n      payload    : Encoder.bytesToBase64Url(payload),\n      signatures : []\n    };\n\n    const signer = new GeneralJwsSigner(jws);\n\n    for (const signatureInput of signatureInputs) {\n      await signer.addSignature(signatureInput);\n    }\n\n    return signer;\n  }\n\n  async addSignature(signatureInput: SignatureInput): Promise<void> {\n    const { privateJwk, protectedHeader } = signatureInput;\n    const signer = signers[privateJwk.crv];\n\n    if (!signer) {\n      throw new Error(`unsupported crv. crv must be one of ${Object.keys(signers)}`);\n    }\n\n    const protectedHeaderString = JSON.stringify(protectedHeader);\n    const protectedHeaderBase64UrlString = Encoder.stringToBase64Url(protectedHeaderString);\n\n    const signingInputString = `${protectedHeaderBase64UrlString}.${this.jws.payload}`;\n    const signingInputBytes = Encoder.stringToBytes(signingInputString);\n\n    const signatureBytes = await signer.sign(signingInputBytes, privateJwk);\n    const signature = Encoder.bytesToBase64Url(signatureBytes);\n\n    this.jws.signatures.push({ protected: protectedHeaderBase64UrlString, signature });\n  }\n\n  getJws(): GeneralJws {\n    return this.jws;\n  }\n}", "import type { SignatureEntry } from '../jose/jws/general/types.js';\nimport type { GeneralJws, SignatureInput } from '../jose/jws/general/types.js';\nimport type { KeyMaterial, PublicJwk } from '../jose/types.js';\n\nimport isPlainObject from 'lodash/isPlainObject.js';\n\nimport { Encoder } from './encoder.js';\nimport { signers as verifiers } from '../jose/algorithms/signing/signers.js';\n\n\n/**\n * Utility class for JWS related operations.\n */\nexport class Jws {\n  /**\n   * Gets the `kid` from a general JWS signature entry.\n   */\n  public static getKid(signatureEntry: SignatureEntry): string {\n    const { kid } = Encoder.base64UrlToObject(signatureEntry.protected);\n    return kid;\n  }\n\n  /**\n   * Gets the signer DID from a general JWS signature entry.\n   */\n  public static getSignerDid(signatureEntry: SignatureEntry): string {\n    const kid = Jws.getKid(signatureEntry);\n    const did = Jws.extractDid(kid);\n    return did;\n  }\n\n  /**\n   * Verifies the signature against the given payload.\n   * @returns `true` if signature is valid; `false` otherwise\n   */\n  public static async verifySignature(base64UrlPayload: string, signatureEntry: SignatureEntry, jwkPublic: PublicJwk): Promise<boolean> {\n    const verifier = verifiers[jwkPublic.crv];\n\n    if (!verifier) {\n      throw new Error(`unsupported crv. crv must be one of ${Object.keys(verifiers)}`);\n    }\n\n    const payload = Encoder.stringToBytes(`${signatureEntry.protected}.${base64UrlPayload}`);\n    const signatureBytes = Encoder.base64UrlToBytes(signatureEntry.signature);\n\n    return await verifier.verify(payload, signatureBytes, jwkPublic);\n  }\n\n  /**\n   * Decodes the payload of the given JWS object as a plain object.\n   */\n  public static decodePlainObjectPayload(jws: GeneralJws): any {\n    let payloadJson;\n    try {\n      payloadJson = Encoder.base64UrlToObject(jws.payload);\n    } catch {\n      throw new Error('payload is not a JSON object');\n    }\n\n    if (!isPlainObject(payloadJson)) {\n      throw new Error('signed payload must be a plain object');\n    }\n\n    return payloadJson;\n  }\n\n  /**\n   * Extracts the DID from the given `kid` string.\n   */\n  public static extractDid(kid: string): string {\n    const [ did ] = kid.split('#');\n    return did;\n  }\n\n  /**\n   * Creates a SignatureInput[] from the given Personas.\n   */\n  public static createSignatureInputs(keyMaterials: KeyMaterial[]): SignatureInput[] {\n    const signatureInputs = keyMaterials.map((keyMaterial) => Jws.createSignatureInput(keyMaterial));\n    return signatureInputs;\n  }\n\n  /**\n   * Creates a SignatureInput from the given Persona.\n   */\n  public static createSignatureInput(keyMaterial: KeyMaterial): SignatureInput {\n    const signatureInput = {\n      privateJwk      : keyMaterial.keyPair.privateJwk,\n      protectedHeader : {\n        alg : keyMaterial.keyPair.privateJwk.alg as string,\n        kid : keyMaterial.keyId\n      }\n    };\n\n    return signatureInput;\n  }\n}\n", "/**\n * Compares two string given in lexicographical order.\n * @returns 1 if `a` is larger than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same message)\n */\nexport function lexicographicalCompare(a: string, b: string): number {\n  if (a > b) {\n    return 1;\n  } else if (a < b) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n", "import * as precompiledValidators from '../generated/precompiled-validators.js';\n\n/**\n * Validates the given payload using JSON schema keyed by the given schema name. Throws if the given payload fails validation.\n * @param schemaName the schema name use to look up the JSON schema to be used for schema validation.\n *                   The list of schema names can be found in compile-validators.js\n * @param payload javascript object to be validated\n */\nexport function validateJsonSchema(schemaName: string, payload: any): void {\n  // const validateFn = validator.getSchema(schemaName);\n  const validateFn = (precompiledValidators as any)[schemaName];\n\n  if (!validateFn) {\n    throw new Error(`schema for ${schemaName} not found.`);\n  }\n\n  validateFn(payload);\n\n  if (!validateFn.errors) {\n    return;\n  }\n\n  // AJV is configured by default to stop validating after the 1st error is encountered which means\n  // there will only ever be one error;\n  const [ errorObj ] = validateFn.errors;\n  let { instancePath, message } = errorObj;\n\n  if (!instancePath) {\n    instancePath = schemaName;\n  }\n\n  throw new Error(`${instancePath}: ${message}`);\n}", null, "import type { SignatureInput } from '../jose/jws/general/types.js';\nimport type { BaseDecodedAuthorizationPayload, BaseMessage, Descriptor, TimestampedMessage } from './types.js';\n\nimport { computeCid } from '../utils/cid.js';\nimport type { GeneralJws } from '../jose/jws/general/types.js';\nimport { GeneralJwsSigner } from '../jose/jws/general/signer.js';\nimport { Jws } from '../utils/jws.js';\nimport { lexicographicalCompare } from '../utils/string.js';\nimport { validateJsonSchema } from '../schema-validator.js';\n\nexport enum DwnInterfaceName {\n  Events = 'Events',\n  Hooks = 'Hooks',\n  Messages = 'Messages',\n  Permissions = 'Permissions',\n  Protocols = 'Protocols',\n  Records = 'Records'\n}\n\nexport enum DwnMethodName {\n  Configure = 'Configure',\n  Get = 'Get',\n  Grant = 'Grant',\n  Query = 'Query',\n  Read = 'Read',\n  Request = 'Request',\n  Write = 'Write',\n  Delete = 'Delete'\n}\n\nexport abstract class Message<M extends BaseMessage> {\n  readonly message: M;\n  readonly authorizationPayload: any;\n\n  // commonly used properties for extra convenience;\n  readonly author: string | undefined;\n\n  constructor(message: M) {\n    this.message = message;\n\n    if (message.authorization !== undefined) {\n      this.authorizationPayload = Jws.decodePlainObjectPayload(message.authorization);\n      this.author = Message.getAuthor(message as BaseMessage);\n    }\n  }\n\n  /**\n   * Called by `JSON.stringify(...)` automatically.\n   */\n  toJSON(): BaseMessage {\n    return this.message;\n  }\n\n  /**\n   * Validates the given message against the corresponding JSON schema.\n   * @throws {Error} if fails validation.\n   */\n  public static validateJsonSchema(rawMessage: any): void {\n    const dwnInterface = rawMessage.descriptor.interface;\n    const dwnMethod = rawMessage.descriptor.method;\n    const schemaLookupKey = dwnInterface + dwnMethod;\n\n    // throws an error if message is invalid\n    validateJsonSchema(schemaLookupKey, rawMessage);\n  };\n\n  /**\n   * Gets the DID of the author of the given message, returned `undefined` if message is not signed.\n   */\n  public static getAuthor(message: BaseMessage): string | undefined {\n    if (message.authorization === undefined) {\n      return undefined;\n    }\n\n    const author = Jws.getSignerDid(message.authorization.signatures[0]);\n    return author;\n  }\n\n  /**\n   * Gets the CID of the given message.\n   */\n  public static async getCid(message: BaseMessage): Promise<string> {\n    // NOTE: we wrap the `computeCid()` here in case that\n    // the message will contain properties that should not be part of the CID computation\n    // and we need to strip them out (like `encodedData` that we historically had for a long time),\n    // but we can remove this method entirely if the code becomes stable and it is apparent that the wrapper is not needed\n    const cid = await computeCid(message);\n    return cid;\n  }\n\n  /**\n   * Compares message CID in lexicographical order according to the spec.\n   * @returns 1 if `a` is larger than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same message)\n   */\n  public static async compareCid(a: BaseMessage, b: BaseMessage): Promise<number> {\n    // the < and > operators compare strings in lexicographical order\n    const cidA = await Message.getCid(a);\n    const cidB = await Message.getCid(b);\n    return lexicographicalCompare(cidA, cidB);\n  }\n\n  /**\n   * Compares the CID of two messages.\n   * @returns `true` if `a` is newer than `b`; `false` otherwise\n   */\n  public static async isCidLarger(a: BaseMessage, b: BaseMessage): Promise<boolean> {\n    const aIsLarger = (await Message.compareCid(a, b) > 0);\n    return aIsLarger;\n  }\n\n  /**\n   * @returns message with the largest CID in the array using lexicographical compare. `undefined` if given array is empty.\n   */\n  public static async getMessageWithLargestCid(messages: BaseMessage[]): Promise<BaseMessage | undefined> {\n    let currentNewestMessage: BaseMessage | undefined = undefined;\n    for (const message of messages) {\n      if (currentNewestMessage === undefined || await Message.isCidLarger(message, currentNewestMessage)) {\n        currentNewestMessage = message;\n      }\n    }\n\n    return currentNewestMessage;\n  }\n\n  /**\n   * Signs over the CID of provided `descriptor`. The output is used as an `authorization` property.\n   * @param signatureInput - the signature material to use (e.g. key and header data)\n   * @returns General JWS signature used as an `authorization` property.\n   */\n  public static async signAsAuthorization(\n    descriptor: Descriptor,\n    signatureInput: SignatureInput\n  ): Promise<GeneralJws> {\n    const descriptorCid = await computeCid(descriptor);\n\n    const authPayload: BaseDecodedAuthorizationPayload = { descriptorCid };\n    const authPayloadStr = JSON.stringify(authPayload);\n    const authPayloadBytes = new TextEncoder().encode(authPayloadStr);\n\n    const signer = await GeneralJwsSigner.create(authPayloadBytes, [signatureInput]);\n\n    return signer.getJws();\n  }\n\n\n  /**\n   * @returns newest message in the array. `undefined` if given array is empty.\n   */\n  public static async getNewestMessage(messages: TimestampedMessage[]): Promise<TimestampedMessage | undefined> {\n    let currentNewestMessage: TimestampedMessage | undefined = undefined;\n    for (const message of messages) {\n      if (currentNewestMessage === undefined || await Message.isNewer(message, currentNewestMessage)) {\n        currentNewestMessage = message;\n      }\n    }\n\n    return currentNewestMessage;\n  }\n\n  /**\n   * Checks if first message is newer than second message.\n   * @returns `true` if `a` is newer than `b`; `false` otherwise\n   */\n  public static async isNewer(a: TimestampedMessage, b: TimestampedMessage): Promise<boolean> {\n    const aIsNewer = (await Message.compareModifiedTime(a, b) > 0);\n    return aIsNewer;\n  }\n\n  /**\n   * Checks if first message is older than second message.\n   * @returns `true` if `a` is older than `b`; `false` otherwise\n   */\n  public static async isOlder(a: TimestampedMessage, b: TimestampedMessage): Promise<boolean> {\n    const aIsNewer = (await Message.compareModifiedTime(a, b) < 0);\n    return aIsNewer;\n  }\n\n  /**\n   * Compares the `dateModified` of the given messages with a fallback to message CID according to the spec.\n   * @returns 1 if `a` is larger/newer than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same age)\n   */\n  public static async compareModifiedTime(a: TimestampedMessage, b: TimestampedMessage): Promise<number> {\n    if (a.descriptor.dateModified > b.descriptor.dateModified) {\n      return 1;\n    } else if (a.descriptor.dateModified < b.descriptor.dateModified) {\n      return -1;\n    }\n\n    // else `dateModified` is the same between a and b\n    // compare the `dataCid` instead, the < and > operators compare strings in lexicographical order\n    return Message.compareCid(a, b);\n  }\n}", "import flat from 'flat';\n\n/**\n * Flattens the given object.\n * e.g. `{ a: { b: { c: 42 } } }` becomes `{ 'a.b.c': 42 }`\n */\nexport function flatten(obj: unknown): object {\n  const flattened = flat.flatten<unknown, Record<string, unknown>>(obj);\n  removeEmptyObjects(flattened);\n  return flattened;\n}\n\n/**\n * Checks whether the given object has any properties.\n */\nexport function isEmptyObject(obj: unknown): boolean {\n  if (typeof(obj) !== 'object') {\n    return false;\n  }\n\n  for (const _ in obj) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Recursively removes all properties with an empty object or array as its value from the given object.\n */\nexport function removeEmptyObjects(obj: Record<string, unknown>): void {\n  Object.keys(obj).forEach(key => {\n    if (typeof(obj[key]) === 'object') {\n      // recursive remove empty object or array properties in nested objects\n      removeEmptyObjects(obj[key] as Record<string, unknown>);\n    }\n\n    if (isEmptyObject(obj[key])) {\n      delete obj[key];\n    }\n  });\n}\n\n/**\n * Recursively removes all properties with `undefined` as its value from the given object.\n */\nexport function removeUndefinedProperties(obj: Record<string, unknown>): void {\n  Object.keys(obj).forEach(key => {\n    if (obj[key] === undefined) {\n      delete obj[key];\n    } else if (typeof(obj[key]) === 'object') {\n      removeUndefinedProperties(obj[key] as Record<string, unknown>); // recursive remove `undefined` properties in nested objects\n    }\n  });\n}\n", "import type { Cache } from './types.js';\nimport LruCache from 'lru-cache';\n\n/**\n * A cache using local memory.\n */\nexport class MemoryCache implements Cache {\n  private cache: LruCache<string, any>;\n\n  /**\n   * @param timeToLiveInSeconds time-to-live for every key-value pair set in the cache\n   */\n  public constructor (private timeToLiveInSeconds: number) {\n    this.cache = new LruCache({\n      max : 100_000,\n      ttl : timeToLiveInSeconds * 1000\n    });\n  }\n\n  async set(key: string, value: any): Promise<void> {\n    try {\n      this.cache.set(key, value);\n    } catch {\n      // let the code continue as this is a non-fatal error\n    }\n  }\n\n  async get(key: string): Promise<any | undefined> {\n    return this.cache.get(key);\n  }\n\n  async dump(): Promise<void> {\n    for (const [ key, value ] of this.cache) {\n      console.debug(key, value);\n    }\n  }\n}\n", "import type { Cache } from '../../../utils/types.js';\nimport type { GeneralJws } from './types.js';\nimport type { PublicJwk } from '../../types.js';\nimport type { DidResolver, VerificationMethod } from '../../../did/did-resolver.js';\n\nimport { Jws } from '../../../utils/jws.js';\nimport { MemoryCache } from '../../../utils/memory-cache.js';\nimport { validateJsonSchema } from '../../../schema-validator.js';\n\ntype VerificationResult = {\n  /** DIDs of all signers */\n  signers: string[];\n};\n\nexport class GeneralJwsVerifier {\n  jws: GeneralJws;\n  cache: Cache;\n\n  constructor(jws: GeneralJws, cache?: Cache) {\n    this.jws = jws;\n    this.cache = cache || new MemoryCache(600);\n  }\n\n  async verify(didResolver: DidResolver): Promise<VerificationResult> {\n    const signers: string[] = [];\n\n    for (const signatureEntry of this.jws.signatures) {\n      let isVerified: boolean;\n      const cacheKey = `${signatureEntry.protected}.${this.jws.payload}.${signatureEntry.signature}`;\n      const kid = Jws.getKid(signatureEntry);\n      const publicJwk = await GeneralJwsVerifier.getPublicKey(kid, didResolver);\n\n      const cachedValue = await this.cache.get(cacheKey);\n\n      // explicit strict equality check to avoid potential buggy cache implementation causing incorrect truthy compare e.g. \"false\"\n      if (cachedValue === undefined) {\n        isVerified = await Jws.verifySignature(this.jws.payload, signatureEntry, publicJwk);\n        await this.cache.set(cacheKey, isVerified);\n      } else {\n        isVerified = cachedValue;\n      }\n\n      const did = Jws.extractDid(kid);\n\n      if (isVerified) {\n        signers.push(did);\n      } else {\n        throw new Error(`signature verification failed for ${did}`);\n      }\n    }\n\n    return { signers };\n  }\n\n  /**\n   * Gets the public key given a fully qualified key ID (`kid`).\n   */\n  public static async getPublicKey(kid: string, didResolver: DidResolver): Promise<PublicJwk> {\n    // `resolve` throws exception if DID is invalid, DID method is not supported,\n    // or resolving DID fails\n    const did = Jws.extractDid(kid);\n    const { didDocument } = await didResolver.resolve(did);\n    const { verificationMethod: verificationMethods = [] } = didDocument || {};\n\n    let verificationMethod: VerificationMethod | undefined;\n\n    for (const vm of verificationMethods) {\n      // consider optimizing using a set for O(1) lookups if needed\n      // key ID in DID Document may or may not be fully qualified. e.g.\n      // `did:ion:alice#key1` or `#key1`\n      if (kid.endsWith(vm.id)) {\n        verificationMethod = vm;\n        break;\n      }\n    }\n\n    if (!verificationMethod) {\n      throw new Error('public key needed to verify signature not found in DID Document');\n    }\n\n    validateJsonSchema('JwkVerificationMethod', verificationMethod);\n\n    const { publicKeyJwk: publicJwk } = verificationMethod;\n\n    return publicJwk as PublicJwk;\n  }\n}", "import type { BaseMessage } from './types.js';\nimport type { CID } from 'multiformats';\nimport type { DidResolver } from '../did/did-resolver.js';\nimport type { GeneralJws } from '../jose/jws/general/types.js';\nimport type { Message } from './message.js';\n\nimport { GeneralJwsVerifier } from '../jose/jws/general/verifier.js';\nimport { Jws } from '../utils/jws.js';\nimport { computeCid, parseCid } from '../utils/cid.js';\nimport { DwnError, DwnErrorCode } from './dwn-error.js';\n\ntype AuthorizationPayloadConstraints = {\n  /** permissible properties within payload. Note that `descriptorCid` is implied and does not need to be added */\n  allowedProperties: Set<string>;\n};\n\n/**\n * Authenticates then authorizes the given message using the \"canonical\" auth flow.\n * Some message auth require special handling such as `RecordsWrite` and `RecordsQuery`,\n * which would be incompatible with this auth flow.\n * @throws {Error} if auth fails\n */\nexport async function canonicalAuth(\n  tenant: string,\n  incomingMessage: Message<BaseMessage>,\n  didResolver: DidResolver\n): Promise<void> {\n  await authenticate(incomingMessage.message.authorization, didResolver);\n  await authorize(tenant, incomingMessage);\n}\n\n/**\n * Validates the structural integrity of the `authorization` property.\n * NOTE: signature is not verified.\n * @returns the parsed JSON payload object if validation succeeds.\n */\nexport async function validateAuthorizationIntegrity(\n  message: BaseMessage,\n  authorizationPayloadConstraints?: AuthorizationPayloadConstraints\n): Promise<{ descriptorCid: CID, [key: string]: any }> {\n  if (message.authorization === undefined) {\n    throw new DwnError(DwnErrorCode.AuthorizationMissing, 'Property `authorization` is missing.');\n  }\n\n  if (message.authorization.signatures.length !== 1) {\n    throw new Error('expected no more than 1 signature for authorization');\n  }\n\n  const payloadJson = Jws.decodePlainObjectPayload(message.authorization);\n  const { descriptorCid } = payloadJson;\n\n  // `descriptorCid` validation - ensure that the provided descriptorCid matches the CID of the actual message\n  const expectedDescriptorCid = await computeCid(message.descriptor);\n  if (descriptorCid !== expectedDescriptorCid) {\n    throw new Error(`provided descriptorCid ${descriptorCid} does not match expected CID ${expectedDescriptorCid}`);\n  }\n\n  // check to ensure that no other unexpected properties exist in payload.\n  const allowedProperties = authorizationPayloadConstraints?.allowedProperties ?? new Set();\n  const customProperties = { ...payloadJson };\n  delete customProperties.descriptorCid;\n  for (const propertyName in customProperties) {\n    {\n      if (!allowedProperties.has(propertyName)) {\n        throw new Error(`${propertyName} not allowed in auth payload.`);\n      }\n    }\n\n    try {\n      parseCid(payloadJson[propertyName]);\n    } catch (e) {\n      throw new Error(`${propertyName} must be a valid CID`);\n    }\n  }\n\n  return payloadJson;\n}\n\n/**\n * Validates the signature(s) of the given JWS.\n * @throws {Error} if fails authentication\n */\nexport async function authenticate(jws: GeneralJws | undefined, didResolver: DidResolver): Promise<void> {\n  if (jws === undefined) {\n    throw new DwnError(DwnErrorCode.AuthenticateJwsMissing, 'Missing JWS.');\n  }\n\n  const verifier = new GeneralJwsVerifier(jws);\n  await verifier.verify(didResolver);\n}\n\n/**\n * Authorizes the incoming message.\n * @throws {Error} if fails authentication\n */\nexport async function authorize(tenant: string, incomingMessage: Message<BaseMessage>): Promise<void> {\n  // if author/requester is the same as the target tenant, we can directly grant access\n  if (incomingMessage.author === tenant) {\n    return;\n  } else {\n    throw new Error('message failed authorization, permission grant check not yet implemented');\n  }\n}\n", "import { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\nexport function validateProtocolUrlNormalized(url: string): void {\n  let normalized: string | undefined;\n  try {\n    normalized = normalizeProtocolUrl(url);\n  } catch {\n    normalized = undefined;\n  }\n\n  if (url !== normalized) {\n    throw new DwnError(DwnErrorCode.UrlProtocolNotNormalized, `Protocol URI ${url} must be normalized.`);\n  }\n}\n\nexport function normalizeProtocolUrl(url: string): string {\n  // Keeping protocol normalization as a separate function in case\n  // protocol and schema normalization diverge in the future\n  return normalizeUrl(url);\n}\n\nexport function validateSchemaUrlNormalized(url: string): void {\n  let normalized: string | undefined;\n  try {\n    normalized = normalizeSchemaUrl(url);\n  } catch {\n    normalized = undefined;\n  }\n\n  if (url !== normalized) {\n    throw new DwnError(DwnErrorCode.UrlSchemaNotNormalized, `Schema URI ${url} must be normalized.`);\n  }\n}\n\nexport function normalizeSchemaUrl(url: string): string {\n  // Keeping schema normalization as a separate function in case\n  // protocol and schema normalization diverge in the future\n  return normalizeUrl(url);\n}\n\nfunction normalizeUrl(url: string): string {\n  let fullUrl: string;\n  if (/^[^:]+:\\/\\/./.test(url)) {\n    fullUrl = url;\n  } else {\n    fullUrl = `http://${url}`;\n  }\n\n  try {\n    const result = new URL(fullUrl);\n    result.search = '';\n    result.hash = '';\n    return removeTrailingSlash(result.href);\n  } catch (e) {\n    throw new DwnError(DwnErrorCode.UrlProtocolNotNormalizable, 'Could not normalize protocol URI');\n  }\n}\n\nfunction removeTrailingSlash(str: string): string {\n  if (str.endsWith('/')) {\n    return str.slice(0, -1);\n  } else {\n    return str;\n  }\n}\n", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { Filter, RangeFilter } from '../../../core/types.js';\nimport type { RecordsQueryDescriptor, RecordsQueryFilter, RecordsQueryMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Message } from '../../../core/message.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\nimport { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../../../utils/url.js';\n\nexport enum DateSort {\n  CreatedAscending = 'createdAscending',\n  CreatedDescending = 'createdDescending',\n  PublishedAscending = 'publishedAscending',\n  PublishedDescending = 'publishedDescending'\n}\n\nexport type RecordsQueryOptions = {\n  dateCreated?: string;\n  filter: RecordsQueryFilter;\n  dateSort?: DateSort;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class RecordsQuery extends Message<RecordsQueryMessage> {\n\n  public static async parse(message: RecordsQueryMessage): Promise<RecordsQuery> {\n    await validateAuthorizationIntegrity(message);\n\n    if (message.descriptor.filter.protocol !== undefined) {\n      validateProtocolUrlNormalized(message.descriptor.filter.protocol);\n    }\n    if (message.descriptor.filter.schema !== undefined) {\n      validateSchemaUrlNormalized(message.descriptor.filter.schema);\n    }\n\n    return new RecordsQuery(message);\n  }\n\n  public static async create(options: RecordsQueryOptions): Promise<RecordsQuery> {\n    const descriptor: RecordsQueryDescriptor = {\n      interface   : DwnInterfaceName.Records,\n      method      : DwnMethodName.Query,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      filter      : RecordsQuery.normalizeFilter(options.filter),\n      dateSort    : options.dateSort\n    };\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsQuery(message);\n  }\n\n  public async authorize(tenant: string): Promise<void> {\n    // DWN owner can do any query\n    if (this.author === tenant) {\n      return;\n    }\n\n    // extra checks if a recipient filter is specified\n    const recipientDid = this.message.descriptor.filter.recipient;\n    if (recipientDid !== undefined) {\n      // make sure the recipient is the author\n      if (recipientDid !== this.author) {\n        throw new Error(`${this.author} is not allowed to query records intended for another recipient: ${recipientDid}`);\n      }\n    }\n  }\n\n  public static convertFilter(filter: RecordsQueryFilter): Filter {\n    const filterCopy = { ...filter };\n    const { dateCreated } = filterCopy;\n\n    let rangeFilter: RangeFilter | undefined = undefined;\n    if (dateCreated !== undefined) {\n      if (dateCreated.to !== undefined && dateCreated.from !== undefined) {\n        rangeFilter = {\n          gte : dateCreated.from,\n          lt  : dateCreated.to,\n        };\n      } else if (dateCreated.to !== undefined) {\n        rangeFilter = {\n          lt: dateCreated.to,\n        };\n      } else if (dateCreated.from !== undefined) {\n        rangeFilter = {\n          gte: dateCreated.from,\n        };\n      }\n    }\n\n    if (rangeFilter) {\n      (filterCopy as Filter).dateCreated = rangeFilter;\n    }\n\n    return filterCopy as Filter;\n  }\n\n  public static normalizeFilter(filter: RecordsQueryFilter): RecordsQueryFilter {\n    let protocol;\n    if (filter.protocol === undefined) {\n      protocol = undefined;\n    } else {\n      protocol = normalizeProtocolUrl(filter.protocol);\n    }\n\n    let schema;\n    if (filter.schema === undefined) {\n      schema = undefined;\n    } else {\n      schema = normalizeSchemaUrl(filter.schema);\n    }\n\n    return {\n      ...filter,\n      protocol,\n      schema,\n    };\n  }\n}\n", "import { Encoder } from './encoder.js';\nimport { Readable } from 'readable-stream';\n\n/**\n * Utility class for readable data stream, intentionally named to disambiguate from ReadableStream, readable-stream, Readable etc.\n */\nexport class DataStream {\n  /**\n   * Reads the entire readable stream given into array of bytes.\n   */\n  public static async toBytes(readableStream: Readable): Promise<Uint8Array> {\n    return new Promise((resolve, reject) => {\n      const chunks: any[] = [];\n      readableStream.on('data', chunk => {\n        chunks.push(chunk);\n      });\n\n      readableStream.on('end', () => {\n        const uint8Array = DataStream.concatenateArrayOfBytes(chunks);\n        resolve(uint8Array);\n      });\n\n      readableStream.on('error', reject);\n    });\n  }\n\n  /**\n   * Concatenates the array of bytes given into one Uint8Array.\n   */\n  private static concatenateArrayOfBytes(arrayOfBytes: Uint8Array[]): Uint8Array {\n    // sum of individual array lengths\n    const totalLength = arrayOfBytes.reduce((accumulatedValue, currentValue) => accumulatedValue + currentValue.length, 0);\n\n    const result = new Uint8Array(totalLength);\n\n    let length = 0;\n    for (const bytes of arrayOfBytes) {\n      result.set(bytes, length);\n      length += bytes.length;\n    }\n\n    return result;\n  }\n\n  /**\n   * Creates a readable stream from the bytes given.\n   */\n  public static fromBytes(bytes: Uint8Array): Readable {\n    // chunk up the bytes to simulate a more real-world like behavior\n    const chunkLength = 100_000;\n    let currentIndex = 0;\n    const readableStream = new Readable({\n      read(_size): void {\n        // if this is the last chunk\n        if (currentIndex + chunkLength > bytes.length) {\n          this.push(bytes.subarray(currentIndex));\n          this.push(null);\n        } else {\n          this.push(bytes.subarray(currentIndex, currentIndex + chunkLength));\n\n          currentIndex = currentIndex + chunkLength;\n        }\n      }\n    });\n\n    return readableStream;\n  }\n\n  /**\n   * Creates a readable stream from the object given.\n   */\n  public static fromObject(object: Record<string, any>): Readable {\n    const bytes = Encoder.objectToBytes(object);\n    return DataStream.fromBytes(bytes);\n  }\n}", "import type { PrivateJwk } from '../jose/types.js';\n\nimport { Secp256k1 } from './secp256k1.js';\n\nexport enum KeyDerivationScheme {\n  DataFormats = 'dataFormats',\n  Protocols = 'protocols',\n  Schemas = 'schemas'\n}\n\nexport type DerivedPrivateJwk = {\n  derivationScheme: KeyDerivationScheme;\n  derivationPath?: string[];\n  derivedPrivateKey: PrivateJwk,\n};\n\n/**\n * Class containing hierarchical deterministic key related utility methods used by the DWN.\n */\nexport class HdKey {\n  /**\n   * Derives a descendant private key.\n   * NOTE: currently only supports SECP256K1 keys.\n   */\n  public static async derivePrivateKey(ancestorKey: DerivedPrivateJwk, subDerivationPath: string[]): Promise<DerivedPrivateJwk> {\n    const ancestorPrivateKey = Secp256k1.privateJwkToBytes(ancestorKey.derivedPrivateKey);\n    const ancestorPrivateKeyDerivationPath = ancestorKey.derivationPath ?? [];\n    const derivedPrivateKeyBytes = await Secp256k1.derivePrivateKey(ancestorPrivateKey, subDerivationPath);\n    const derivedPrivateJwk = await Secp256k1.privateKeyToJwk(derivedPrivateKeyBytes);\n    const derivedDescendantPrivateKey: DerivedPrivateJwk = {\n      derivationPath    : [...ancestorPrivateKeyDerivationPath, ...subDerivationPath],\n      derivationScheme  : ancestorKey.derivationScheme,\n      derivedPrivateKey : derivedPrivateJwk\n    };\n\n    return derivedDescendantPrivateKey;\n  }\n}", "import varint from 'varint';\nimport type { DidDocument, DidMethodResolver, DidResolutionResult } from './did-resolver.js';\n\nimport { base58btc } from 'multiformats/bases/base58';\nimport { Did } from './did.js';\nimport { ed25519 } from '../../src/jose/algorithms/signing/ed25519.js';\nimport { Encoder } from '../utils/encoder.js';\nimport { Secp256k1 } from '../utils/secp256k1.js';\nimport type { KeyMaterial, PublicJwk } from '../jose/types.js';\n\n/**\n * did:key Resolver.\n * * **NOTE**: Key support is limited to Ed25519 and SECP256k1.\n * * **NOTE**: `verificationMethod` support is limited to `JsonWebKey2020`\n *\n * Helpful Resources:\n * * [DID-Key Draft Spec](https://w3c-ccg.github.io/did-method-key/)\n */\nexport class DidKeyResolver implements DidMethodResolver {\n  method(): string {\n    return 'key';\n  }\n\n  /**\n   * Gets the number of bytes of the multicodec header in the `did:key` DID.\n   * @param did - A `did:key` DID\n   * @returns size of the multicodec head in number of bytes\n   */\n  public static getMulticodecSize(did: Uint8Array): number {\n    let multicodecHeaderSize = 0;\n\n    while (true) {\n      const currentByte = did[multicodecHeaderSize];\n      multicodecHeaderSize++;\n\n      // bitwise and with binary 1000 0000\n      // as soon as the result byte does not lead with a leading 1, we've reached the end of the multicodec header\n      if ((currentByte & 0x80) !== 0x80) {\n        break;\n      }\n    }\n\n    return multicodecHeaderSize;\n  }\n\n  async resolve(did: string): Promise<DidResolutionResult> {\n    const [_scheme, _method, id] = did.split(':', 3);\n\n    try {\n      const idBytes = base58btc.decode(id);\n      const multicodec = varint.decode(idBytes);\n      const multicodecSize = DidKeyResolver.getMulticodecSize(idBytes);\n      const publicKeyBytes = idBytes.slice(multicodecSize);\n\n      // key specific values\n      const keySpecificContext: string[] = [];\n      let publicJwk: PublicJwk;\n      if (multicodec === 0xed) {\n        // ed25519-pub multicodec\n        keySpecificContext.push('https://w3id.org/security/suites/ed25519-2020/v1');\n        publicJwk = await ed25519.publicKeyToJwk(publicKeyBytes);\n      } else if (multicodec === 0xe7) {\n        // secp256k1-pub multicodec\n        publicJwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);\n      } else {\n        throw Error(`key type of multicodec ${multicodec} is not supported`);\n      }\n\n      const keyId = `${did}#${id}`;\n\n      const didDocument: DidDocument = {\n        '@context': [\n          'https://www.w3.org/ns/did/v1',\n          'https://w3id.org/security/suites/jws-2020/v1',\n          ...keySpecificContext\n        ],\n        'id'                 : did,\n        'verificationMethod' : [{\n          id           : keyId,\n          type         : 'JsonWebKey2020',\n          controller   : did,\n          publicKeyJwk : publicJwk\n        }],\n        'authentication'       : [keyId],\n        'assertionMethod'      : [keyId],\n        'capabilityDelegation' : [keyId],\n        'capabilityInvocation' : [keyId]\n      };\n\n      return {\n        '@context'            : 'https://w3id.org/did-resolution/v1',\n        didDocument,\n        didDocumentMetadata   : {},\n        didResolutionMetadata : {}\n      };\n    } catch {\n      return {\n        didDocument           : undefined,\n        didDocumentMetadata   : {},\n        didResolutionMetadata : {\n          error: 'invalidDid'\n        },\n      };\n    }\n  }\n\n  /**\n   * Generates a new ed25519 public/private key pair. Creates a DID using the private key.\n   * @returns DID and its key material.\n   */\n  public static async generate(): Promise<{ did: string } & KeyMaterial> {\n    const { publicJwk, privateJwk } = await ed25519.generateKeyPair();\n\n    // multicodec code for Ed25519 public keys\n    const ed25519Multicodec = varint.encode(0xed);\n    const publicKeyBytes = Encoder.base64UrlToBytes(publicJwk.x);\n    const idBytes = new Uint8Array(ed25519Multicodec.length + publicKeyBytes.byteLength);\n    idBytes.set(ed25519Multicodec, 0);\n    idBytes.set(publicKeyBytes, ed25519Multicodec.length);\n\n    const id = base58btc.encode(idBytes);\n    const did = `did:key:${id}`;\n    const keyId = DidKeyResolver.getKeyId(did);\n\n    return { did, keyId, keyPair: { publicJwk, privateJwk } };\n  }\n\n  /**\n   * Gets the fully qualified key ID of a `did:key` DID. ie. '<did>#<method-specific-id>'\n   */\n  public static getKeyId(did: string): string {\n    const methodSpecificId = Did.getMethodSpecificId(did);\n    const keyId = `${did}#${methodSpecificId}`;\n    return keyId;\n  };\n\n  async dump(): Promise<void> {\n  }\n}", "/**\n * DID related operations.\n */\nexport class Did {\n  /**\n   * Gets the method specific ID segment of a DID. ie. did:<method-name>:<method-specific-id>\n   */\n  public static getMethodSpecificId(did: string): string {\n    const secondColonIndex = did.indexOf(':', 4); // start search for : from the method portion\n    const methodSpecificId = did.substring(secondColonIndex + 1);\n    return methodSpecificId;\n  }\n\n  /**\n   * @param did - the DID to validate\n   */\n  public static validate(did: unknown): void {\n    if (typeof did !== 'string') {\n      throw new Error(`DID is not string: ${did}`);\n    }\n\n    // eslint-disable-next-line\n    const didRegex= /^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(\\/[^#?]*)?([?][^#]*)?(#.*)?$/;\n    if (!didRegex.test(did)) {\n      throw new TypeError(`DID is not a valid DID: ${did}`);\n    }\n  }\n\n  /**\n   * Gets the method name from a DID. ie. did:<method-name>:<method-specific-id>\n   */\n  public static getMethodName(did: string): string {\n    const secondColonIndex = did.indexOf(':', 4); // start search for : from the method portion\n    const methodName = did.substring(4, secondColonIndex);\n    return methodName;\n  }\n}\n", "import type { DidMethodResolver, DidResolutionResult } from './did-resolver.js';\n\nimport crossFetch from 'cross-fetch';\n// supports fetch in: node, browsers, and browser extensions.\n// uses native fetch if available in environment or falls back to a ponyfill.\n// 'cross-fetch' is a ponyfill that uses `XMLHTTPRequest` under the hood.\n// `XMLHTTPRequest` cannot be used in browser extension background service workers.\n// browser extensions get even more strict with `fetch` in that it cannot be referenced\n// indirectly.\nconst fetch = globalThis.fetch ?? crossFetch;\n\n/**\n * Resolver for ION DIDs.\n */\nexport class DidIonResolver implements DidMethodResolver {\n  /**\n   * @param resolutionEndpoint optional custom URL to send DID resolution request to\n   */\n  constructor (private resolutionEndpoint: string = 'https://discover.did.msidentity.com/1.0/identifiers/') { }\n\n  method(): string {\n    return 'ion';\n  }\n\n  async resolve(did: string): Promise<DidResolutionResult> {\n    // using `URL` constructor to handle both existence and absence of trailing slash '/' in resolution endpoint\n    // appending './' to DID so 'did' in 'did:ion:abc' doesn't get interpreted as a URL scheme (e.g. like 'http') due to the colon\n    const resolutionUrl = new URL('./' + did, this.resolutionEndpoint).toString();\n    const response = await fetch(resolutionUrl);\n\n    if (response.status !== 200) {\n      throw new Error(`unable to resolve ${did}, got http status ${response.status}`);\n    }\n\n    const didResolutionResult = await response.json();\n    return didResolutionResult;\n  }\n\n  async dump(): Promise<void> {\n  }\n}\n", "import type { Cache } from '../utils/types.js';\nimport type { PublicJwk } from '../jose/types.js';\n\nimport { Did } from './did.js';\nimport { DidIonResolver } from './did-ion-resolver.js';\nimport { DidKeyResolver } from './did-key-resolver.js';\nimport { MemoryCache } from '../utils/memory-cache.js';\n\n/**\n * A DID resolver that by default supports `did:key` and `did:ion` DIDs.\n */\nexport class DidResolver {\n  private didResolvers: Map<string, DidMethodResolver>;\n  private cache: Cache;\n\n  constructor(resolvers?: DidMethodResolver[], cache?:Cache) {\n\n    this.cache = cache || new MemoryCache(600);\n\n    // construct default DID method resolvers if none given\n    if (resolvers === undefined || resolvers.length === 0) {\n      resolvers = [\n        new DidIonResolver(),\n        new DidKeyResolver()\n      ];\n    }\n\n    this.didResolvers = new Map();\n\n    for (const resolver of resolvers) {\n      this.didResolvers.set(resolver.method(), resolver);\n    }\n  }\n\n  /**\n   * attempt to resolve the DID provided\n   * @throws {Error} if DID is invalid\n   * @throws {Error} if DID method is not supported\n   * @throws {Error} if resolving DID fails\n   * @param did - the DID to resolve\n   * @returns {DidResolutionResult}\n   */\n  public async resolve(did: string): Promise<DidResolutionResult> {\n    // naively validate requester DID\n    Did.validate(did);\n    const splitDID = did.split(':', 3);\n\n    const didMethod = splitDID[1];\n    const didResolver = this.didResolvers.get(didMethod);\n\n    if (!didResolver) {\n      throw new Error(`${didMethod} DID method not supported`);\n    }\n\n    // use cached result if exists\n    const cachedResolutionResult = await this.cache.get(did);\n    const resolutionResult = cachedResolutionResult ?? await didResolver.resolve(did);\n    if (cachedResolutionResult === undefined){\n      await this.cache.set(did, resolutionResult);\n    }\n\n    const { didDocument, didResolutionMetadata } = resolutionResult;\n\n    if (!didDocument || didResolutionMetadata?.error) {\n      const { error } = didResolutionMetadata;\n      let errMsg = `Failed to resolve DID ${did}.`;\n      errMsg += error ? ` Error: ${error}` : '';\n\n      throw new Error(errMsg);\n    }\n\n    return resolutionResult;\n  }\n\n  async dump(): Promise<void> {\n    console.group('didResolvers');\n    for (const [ key, value ] of this.didResolvers) {\n      console.group(key);\n      // @ts-ignore\n      await value['dump']?.();\n      console.groupEnd();\n    }\n    console.groupEnd();\n\n    console.group('didCache');\n    // @ts-ignore\n    await this.cache['dump']?.();\n    console.groupEnd();\n  }\n}\n\n/**\n * A generalized interface that can be implemented for individual\n * DID methods\n */\nexport interface DidMethodResolver {\n  /**\n   * @returns the DID method supported by {@link DidMethodResolver.resolve}\n   */\n  method(): string;\n\n  /**\n   * attempts to resolve the DID provided into its respective DID Document.\n   * More info on resolving DIDs can be found\n   * {@link https://www.w3.org/TR/did-core/#resolution here}\n   * @param did - the DID to resolve\n   * @throws {Error} if unable to resolve the DID\n   */\n  resolve(did: string): Promise<DidResolutionResult>;\n}\n\nexport type DidDocument = {\n  '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n  id: string\n  alsoKnownAs?: string[]\n  controller?: string | string[]\n  verificationMethod?: VerificationMethod[]\n  service?: ServiceEndpoint[]\n  authentication?: VerificationMethod[] | string[]\n  assertionMethod?: VerificationMethod[] | string[]\n  keyAgreement?: VerificationMethod[] | string[]\n  capabilityInvocation?: VerificationMethod[] | string[]\n  capabilityDelegation?: VerificationMethod[] | string[]\n};\n\nexport type DwnServiceEndpoint = {\n  nodes: string[]\n};\n\nexport type ServiceEndpoint = {\n  id: string\n  type: string\n  serviceEndpoint: string | DwnServiceEndpoint\n  description?: string\n};\n\nexport type VerificationMethod = {\n  id: string\n  // one of the valid verification method types as per\n  // https://www.w3.org/TR/did-spec-registries/#verification-method-types\n  type: string\n  // DID of the key's controller\n  controller: string\n  // a JSON Web Key that conforms to https://datatracker.ietf.org/doc/html/rfc7517\n  publicKeyJwk?: PublicJwk\n};\n\nexport type DidResolutionResult = {\n  '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n  didResolutionMetadata: DidResolutionMetadata\n  didDocument?: DidDocument\n  didDocumentMetadata: DidDocumentMetadata\n};\n\nexport type DidResolutionMetadata = {\n  contentType?: string\n  error?: 'invalidDid' | 'notFound' | 'representationNotSupported' |\n  'unsupportedDidMethod' | string\n};\n\nexport type DidDocumentMetadata = {\n  // indicates the timestamp of the Create operation. ISO8601 timestamp\n  created?: string\n  // indicates the timestamp of the last Update operation for the document version which was\n  // resolved. ISO8601 timestamp\n  updated?: string\n  // indicates whether the DID has been deactivated\n  deactivated?: boolean\n  // indicates the version of the last Update operation for the document version which\n  // was resolved\n  versionId?: string\n  // indicates the timestamp of the next Update operation if the resolved document version\n  // is not the latest version of the document.\n  nextUpdate?: string\n  // indicates the version of the next Update operation if the resolved document version\n  // is not the latest version of the document.\n  nextVersionId?: string\n  // @see https://www.w3.org/TR/did-core/#dfn-equivalentid\n  equivalentId?: string\n  // @see https://www.w3.org/TR/did-core/#dfn-canonicalid\n  canonicalId?: string\n};", "function createError(message) {\n    var err = new Error(message);\n    err.source = \"ulid\";\n    return err;\n}\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nvar ENCODING = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"; // Crockford's Base32\nvar ENCODING_LEN = ENCODING.length;\nvar TIME_MAX = Math.pow(2, 48) - 1;\nvar TIME_LEN = 10;\nvar RANDOM_LEN = 16;\nfunction replaceCharAt(str, index, char) {\n    if (index > str.length - 1) {\n        return str;\n    }\n    return str.substr(0, index) + char + str.substr(index + 1);\n}\nfunction incrementBase32(str) {\n    var done = undefined;\n    var index = str.length;\n    var char = void 0;\n    var charIndex = void 0;\n    var maxCharIndex = ENCODING_LEN - 1;\n    while (!done && index-- >= 0) {\n        char = str[index];\n        charIndex = ENCODING.indexOf(char);\n        if (charIndex === -1) {\n            throw createError(\"incorrectly encoded string\");\n        }\n        if (charIndex === maxCharIndex) {\n            str = replaceCharAt(str, index, ENCODING[0]);\n            continue;\n        }\n        done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n    }\n    if (typeof done === \"string\") {\n        return done;\n    }\n    throw createError(\"cannot increment this string\");\n}\nfunction randomChar(prng) {\n    var rand = Math.floor(prng() * ENCODING_LEN);\n    if (rand === ENCODING_LEN) {\n        rand = ENCODING_LEN - 1;\n    }\n    return ENCODING.charAt(rand);\n}\nfunction encodeTime(now, len) {\n    if (isNaN(now)) {\n        throw new Error(now + \" must be a number\");\n    }\n    if (now > TIME_MAX) {\n        throw createError(\"cannot encode time greater than \" + TIME_MAX);\n    }\n    if (now < 0) {\n        throw createError(\"time must be positive\");\n    }\n    if (Number.isInteger(now) === false) {\n        throw createError(\"time must be an integer\");\n    }\n    var mod = void 0;\n    var str = \"\";\n    for (; len > 0; len--) {\n        mod = now % ENCODING_LEN;\n        str = ENCODING.charAt(mod) + str;\n        now = (now - mod) / ENCODING_LEN;\n    }\n    return str;\n}\nfunction encodeRandom(len, prng) {\n    var str = \"\";\n    for (; len > 0; len--) {\n        str = randomChar(prng) + str;\n    }\n    return str;\n}\nfunction decodeTime(id) {\n    if (id.length !== TIME_LEN + RANDOM_LEN) {\n        throw createError(\"malformed ulid\");\n    }\n    var time = id.substr(0, TIME_LEN).split(\"\").reverse().reduce(function (carry, char, index) {\n        var encodingIndex = ENCODING.indexOf(char);\n        if (encodingIndex === -1) {\n            throw createError(\"invalid character found: \" + char);\n        }\n        return carry += encodingIndex * Math.pow(ENCODING_LEN, index);\n    }, 0);\n    if (time > TIME_MAX) {\n        throw createError(\"malformed ulid, timestamp too large\");\n    }\n    return time;\n}\nfunction detectPrng() {\n    var allowInsecure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var root = arguments[1];\n\n    if (!root) {\n        root = typeof window !== \"undefined\" ? window : null;\n    }\n    var browserCrypto = root && (root.crypto || root.msCrypto);\n    if (browserCrypto) {\n        return function () {\n            var buffer = new Uint8Array(1);\n            browserCrypto.getRandomValues(buffer);\n            return buffer[0] / 0xff;\n        };\n    } else {\n        try {\n            var nodeCrypto = require(\"crypto\");\n            return function () {\n                return nodeCrypto.randomBytes(1).readUInt8() / 0xff;\n            };\n        } catch (e) {}\n    }\n    if (allowInsecure) {\n        try {\n            console.error(\"secure crypto unusable, falling back to insecure Math.random()!\");\n        } catch (e) {}\n        return function () {\n            return Math.random();\n        };\n    }\n    throw createError(\"secure crypto unusable, insecure Math.random not allowed\");\n}\nfunction factory(currPrng) {\n    if (!currPrng) {\n        currPrng = detectPrng();\n    }\n    return function ulid(seedTime) {\n        if (isNaN(seedTime)) {\n            seedTime = Date.now();\n        }\n        return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, currPrng);\n    };\n}\nfunction monotonicFactory(currPrng) {\n    if (!currPrng) {\n        currPrng = detectPrng();\n    }\n    var lastTime = 0;\n    var lastRandom = void 0;\n    return function ulid(seedTime) {\n        if (isNaN(seedTime)) {\n            seedTime = Date.now();\n        }\n        if (seedTime <= lastTime) {\n            var incrementedRandom = lastRandom = incrementBase32(lastRandom);\n            return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n        }\n        lastTime = seedTime;\n        var newRandom = lastRandom = encodeRandom(RANDOM_LEN, currPrng);\n        return encodeTime(seedTime, TIME_LEN) + newRandom;\n    };\n}\nvar ulid = factory();\n\nexport { replaceCharAt, incrementBase32, randomChar, encodeTime, encodeRandom, decodeTime, detectPrng, factory, monotonicFactory, ulid };\n", "import type { LevelWrapperBatchOperation } from '../store/level-wrapper.js';\nimport type { ULID } from 'ulid';\nimport type { Event, EventLog, GetEventsOptions } from './event-log.js';\n\nimport { monotonicFactory } from 'ulid';\nimport { createLevelDatabase, LevelWrapper } from '../store/level-wrapper.js';\n\ntype EventLogLevelConfig = {\n /**\n   * must be a directory path (relative or absolute) where\n   *  LevelDB will store its files, or in browsers, the name of the\n   * {@link https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase IDBDatabase} to be opened.\n  */\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};\n\nconst WATERMARKS_SUBLEVEL_NAME = 'watermarks';\nconst CIDS_SUBLEVEL_NAME = 'cids';\n\nexport class EventLogLevel implements EventLog {\n  config: EventLogLevelConfig;\n  db: LevelWrapper<string>;\n  ulid: ULID;\n\n  constructor(config?: EventLogLevelConfig) {\n    this.config = {\n      location: 'EVENTLOG',\n      createLevelDatabase,\n      ...config,\n    };\n\n    this.db = new LevelWrapper<string>({ ...this.config, valueEncoding: 'utf8' });\n    this.ulid = monotonicFactory();\n  }\n\n  async open(): Promise<void> {\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    return this.db.close();\n  }\n\n  async clear(): Promise<void> {\n    return this.db.clear();\n  }\n\n  async append(tenant: string, messageCid: string): Promise<string> {\n    const tenantEventLog = await this.db.partition(tenant);\n    const watermarkLog = await tenantEventLog.partition(WATERMARKS_SUBLEVEL_NAME);\n    const cidLog = await tenantEventLog.partition(CIDS_SUBLEVEL_NAME);\n\n    const watermark = this.ulid();\n\n    await watermarkLog.put(watermark, messageCid);\n    await cidLog.put(messageCid, watermark);\n\n    return watermark;\n  }\n\n  async getEvents(tenant: string, options?: GetEventsOptions): Promise<Event[]> {\n    const tenantEventLog = await this.db.partition(tenant);\n    const watermarkLog = await tenantEventLog.partition(WATERMARKS_SUBLEVEL_NAME);\n    const events: Array<Event> = [];\n\n    for await (const [key, value] of watermarkLog.iterator(options)) {\n      const event = { watermark: key, messageCid: value };\n      events.push(event);\n    }\n\n    return events;\n  }\n\n  async deleteEventsByCid(tenant: string, cids: Array<string>): Promise<number> {\n    if (cids.length === 0) {\n      return 0;\n    }\n\n    const tenantEventLog = await this.db.partition(tenant);\n    const cidLog = await tenantEventLog.partition(CIDS_SUBLEVEL_NAME);\n\n    let ops: LevelWrapperBatchOperation<string>[] = [];\n    const promises: Array<Promise<string | undefined>> = [];\n\n    for (const cid of cids) {\n      ops.push({ type: 'del', key: cid });\n\n      const promise = cidLog.get(cid).catch(e => e);\n      promises.push(promise);\n    }\n\n    await cidLog.batch(ops);\n\n    ops = [];\n    let numEventsDeleted = 0;\n\n    const watermarks: Array<string | undefined> = await Promise.all(promises);\n    for (const watermark of watermarks) {\n      if (watermark) {\n        ops.push({ type: 'del', key: watermark });\n        numEventsDeleted += 1;\n      }\n    }\n\n    const watermarkLog = await tenantEventLog.partition('watermarks');\n    await watermarkLog.batch(ops);\n\n    return numEventsDeleted;\n  }\n\n  async dump(): Promise<void> {\n    console.group('db');\n    await this.db['dump']?.();\n    console.groupEnd();\n  }\n}", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { EventsGetDescriptor, EventsGetMessage } from '../types.js';\n\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport type EventsGetOptions = {\n  watermark?: string;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class EventsGet extends Message<EventsGetMessage> {\n\n  public static async parse(message: EventsGetMessage): Promise<EventsGet> {\n    Message.validateJsonSchema(message);\n    await validateAuthorizationIntegrity(message);\n\n    return new EventsGet(message);\n  }\n\n  public static async create(options: EventsGetOptions): Promise<EventsGet> {\n    const descriptor: EventsGetDescriptor = {\n      interface : DwnInterfaceName.Events,\n      method    : DwnMethodName.Get,\n    };\n\n    if (options.watermark) {\n      descriptor.watermark = options.watermark;\n    }\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new EventsGet(message);\n  }\n}", "import type { QueryResultEntry } from './types.js';\nimport type { Readable } from 'readable-stream';\n\ntype Status = {\n  code: number\n  detail: string\n};\n\ntype MessageReplyOptions = {\n  status: Status,\n  entries?: QueryResultEntry[];\n  data? : Readable;\n};\n\nexport type BaseMessageReply = {\n  status: Status;\n};\n\nexport class MessageReply {\n  status: Status;\n\n  /**\n   * Resulting message entries or events returned from the invocation of the corresponding message.\n   * e.g. the resulting messages from a RecordsQuery\n   * Mutually exclusive with `data`.\n   */\n  entries?: QueryResultEntry[];\n\n  /**\n   * Data corresponding to the message received if applicable (e.g. RecordsRead).\n   * Mutually exclusive with `entries`.\n   */\n  data?: Readable;\n\n  constructor(opts: MessageReplyOptions) {\n    const { status, entries, data } = opts;\n\n    this.status = status;\n    this.entries = entries;\n    this.data = data;\n  }\n\n  static fromError(e: unknown, code: number): MessageReply {\n\n    const detail = e instanceof Error ? e.message : 'Error';\n\n    return new MessageReply({ status: { code, detail } });\n  }\n}", "import type { DidResolver } from '../../../index.js';\nimport type { EventLog } from '../../../event-log/event-log.js';\nimport type { GetEventsOptions } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { EventsGetMessage, EventsGetReply } from '../types.js';\n\nimport { EventsGet } from '../messages/events-get.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { authenticate, authorize } from '../../../core/auth.js';\n\ntype HandleArgs = {tenant: string, message: EventsGetMessage};\n\nexport class EventsGetHandler implements MethodHandler {\n  constructor(private didResolver: DidResolver, private eventLog: EventLog) {}\n\n  public async handle({ tenant, message }: HandleArgs): Promise<EventsGetReply> {\n    let eventsGet: EventsGet;\n\n    try {\n      eventsGet = await EventsGet.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await authorize(tenant, eventsGet);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // if watermark was provided in message, get all events _after_ the watermark.\n    // Otherwise, get all events.\n    let options: GetEventsOptions | undefined;\n    if (message.descriptor.watermark) {\n      options = { gt: message.descriptor.watermark };\n    }\n\n    const events = await this.eventLog.getEvents(tenant, options);\n\n    return {\n      status: { code: 200, detail: 'OK' },\n      events\n    };\n  }\n}", "export class DwnConstant {\n  /**\n   * The maximum size of raw data that will be returned as `encodedData`.\n   */\n  public static readonly maxDataSizeAllowedToBeEncoded = 10_000;\n}", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { MessagesGetDescriptor, MessagesGetMessage } from '../types.js';\n\nimport { parseCid } from '../../../utils/cid.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport type MessagesGetOptions = {\n  messageCids: string[];\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class MessagesGet extends Message<MessagesGetMessage> {\n  public static async parse(message: MessagesGetMessage): Promise<MessagesGet> {\n    Message.validateJsonSchema(message);\n    this.validateMessageCids(message.descriptor.messageCids);\n\n    await validateAuthorizationIntegrity(message);\n\n    return new MessagesGet(message);\n  }\n\n  public static async create(options: MessagesGetOptions): Promise<MessagesGet> {\n    const descriptor: MessagesGetDescriptor = {\n      interface   : DwnInterfaceName.Messages,\n      method      : DwnMethodName.Get,\n      messageCids : options.messageCids\n    };\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n    MessagesGet.validateMessageCids(options.messageCids);\n\n    return new MessagesGet(message);\n  }\n\n  /**\n   * validates the provided cids\n   * @param messageCids - the cids in question\n   * @throws {Error} if an invalid cid is found.\n   */\n  private static validateMessageCids(messageCids: string[]): void {\n    for (const cid of messageCids) {\n      try {\n        parseCid(cid);\n      } catch (_) {\n        throw new Error(`${cid} is not a valid CID`);\n      }\n    }\n  }\n}", "import type { DataStore } from '../../../store/data-store.js';\nimport type { DidResolver } from '../../../did/did-resolver.js';\nimport type { MessageStore } from '../../../store/message-store.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { MessagesGetMessage, MessagesGetReply, MessagesGetReplyEntry } from '../types.js';\n\nimport { DataStream } from '../../../utils/data-stream.js';\nimport { DwnConstant } from '../../../core/dwn-constant.js';\nimport { Encoder } from '../../../utils/encoder.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { MessagesGet } from '../messages/messages-get.js';\nimport { authenticate, authorize } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\ntype HandleArgs = { tenant: string, message: MessagesGetMessage };\n\nexport class MessagesGetHandler implements MethodHandler {\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore) {}\n\n  public async handle({ tenant, message }: HandleArgs): Promise<MessagesGetReply> {\n    let messagesGet: MessagesGet;\n\n    try {\n      messagesGet = await MessagesGet.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await authorize(tenant, messagesGet);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    const promises: Promise<MessagesGetReplyEntry>[] = [];\n    const messageCids = new Set(message.descriptor.messageCids);\n\n    for (const messageCid of messageCids) {\n      const promise = this.messageStore.get(tenant, messageCid)\n        .then(message => {\n          return { messageCid, message };\n        })\n        .catch(_ => {\n          return { messageCid, message: undefined, error: `Failed to get message ${messageCid}` };\n        });\n\n      promises.push(promise);\n    }\n\n    const messages = await Promise.all(promises);\n\n    // for every message, include associated data as `encodedData` IF:\n    //  * its a RecordsWrite\n    //  * the data size is equal or smaller than the size threshold\n    //! NOTE: this is somewhat duplicate code that also exists in `StorageController.query`.\n    for (const entry of messages) {\n      const { message } = entry;\n\n      if (!message) {\n        continue;\n      }\n\n      const { interface: messageInterface, method } = message.descriptor;\n      if (messageInterface !== DwnInterfaceName.Records || method !== DwnMethodName.Write) {\n        continue;\n      }\n\n      const dataCid = message.descriptor.dataCid;\n      const dataSize = message.descriptor.dataSize;\n\n      if (dataCid !== undefined && dataSize! <= DwnConstant.maxDataSizeAllowedToBeEncoded) {\n        const messageCid = await Message.getCid(message);\n        const result = await this.dataStore.get(tenant, messageCid, dataCid);\n\n        if (result) {\n          const dataBytes = await DataStream.toBytes(result.dataStream);\n          entry.encodedData = Encoder.bytesToBase64Url(dataBytes);\n        }\n      }\n    }\n\n    return {\n      status: { code: 200, detail: 'OK' },\n      messages\n    };\n  }\n}", "import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n  return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n  if (value != null && typeof value === 'object') {\n    if (Array.isArray(value)) {\n      for (const [index, element] of value.entries()) {\n        const elementPath = [...path, index]\n        const cid = CID.asCID(element)\n        if (cid) {\n          yield [elementPath.join('/'), cid]\n        } else if (typeof element === 'object') {\n          yield * links(element, elementPath)\n        }\n      }\n    } else {\n      const cid = CID.asCID(value)\n      if (cid) {\n        yield [path.join('/'), cid]\n      } else {\n        yield * links(value, path)\n      }\n    }\n  }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n  if (source == null || source instanceof Uint8Array) {\n    return\n  }\n  const cid = CID.asCID(source)\n  if (cid) {\n    yield [base.join('/'), cid]\n  }\n  for (const [key, value] of Object.entries(source)) {\n    const path = /** @type {[string|number, string]} */ ([...base, key])\n    yield * linksWithin(path, value)\n  }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<string>}\n */\nfunction * treeWithin (path, value) {\n  if (Array.isArray(value)) {\n    for (const [index, element] of value.entries()) {\n      const elementPath = [...path, index]\n      yield elementPath.join('/')\n      if (typeof element === 'object' && !CID.asCID(element)) {\n        yield * tree(element, elementPath)\n      }\n    }\n  } else {\n    yield * tree(value, path)\n  }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<string>}\n */\nfunction * tree (source, base) {\n  if (source == null || typeof source !== 'object') {\n    return\n  }\n  for (const [key, value] of Object.entries(source)) {\n    const path = /** @type {[string|number, string]} */ ([...base, key])\n    yield path.join('/')\n    if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n      yield * treeWithin(path, value)\n    }\n  }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView<unknown>}\n */\nfunction get (source, path) {\n  let node = /** @type {Record<string, any>} */(source)\n  for (const [index, key] of path.entries()) {\n    node = node[key]\n    if (node == null) {\n      throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`)\n    }\n    const cid = CID.asCID(node)\n    if (cid) {\n      return { value: cid, remaining: path.slice(index + 1).join('/') }\n    }\n  }\n  return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView<T, C, A, V>}\n */\nclass Block {\n  /**\n   * @param {object} options\n   * @param {CID<T, C, A, V>} options.cid\n   * @param {API.ByteView<T>} options.bytes\n   * @param {T} options.value\n   */\n  constructor ({ cid, bytes, value }) {\n    if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n    this.cid = cid\n    this.bytes = bytes\n    this.value = value\n    this.asBlock = this\n\n    // Mark all the properties immutable\n    Object.defineProperties(this, {\n      cid: readonly(),\n      bytes: readonly(),\n      value: readonly(),\n      asBlock: readonly()\n    })\n  }\n\n  links () {\n    return links(this.value, [])\n  }\n\n  tree () {\n    return tree(this.value, [])\n  }\n\n  /**\n   *\n   * @param {string} [path]\n   * @returns {API.BlockCursorView<unknown>}\n   */\n  get (path = '/') {\n    return get(this.value, path.split('/').filter(Boolean))\n  }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function encode ({ value, codec, hasher }) {\n  if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n  if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n  const bytes = codec.encode(value)\n  const hash = await hasher.digest(bytes)\n  /** @type {CID<T, Code, Alg, 1>} */\n  const cid = CID.create(\n    1,\n    codec.code,\n    hash\n  )\n\n  return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n  if (!bytes) throw new Error('Missing required argument \"bytes\"')\n  if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n  const value = codec.decode(bytes)\n  const hash = await hasher.digest(bytes)\n  /** @type {CID<T, Code, Alg, 1>} */\n  const cid = CID.create(1, codec.code, hash)\n\n  return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link<T, Code, Alg, V>, value:T, codec?: API.BlockDecoder<Code, T>, bytes: API.ByteView<T> }|{cid:API.Link<T, Code, Alg, V>, bytes:API.ByteView<T>, value?:void, codec:API.BlockDecoder<Code, T>}} options\n * @returns {API.BlockView<T, Code, Alg, V>}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n  const value = maybeValue !== undefined\n    ? maybeValue\n    : (codec && codec.decode(bytes))\n\n  if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n  return new Block({\n    // eslint-disable-next-line object-shorthand\n    cid: /** @type {CID<T, Code, Alg, V>} */ (cid),\n    bytes,\n    value\n  })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link<T, Code, Alg, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg, V>>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n  if (!bytes) throw new Error('Missing required argument \"bytes\"')\n  if (!hasher) throw new Error('Missing required argument \"hasher\"')\n  const value = codec.decode(bytes)\n  const hash = await hasher.digest(bytes)\n  if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n    throw new Error('CID hash does not match bytes')\n  }\n\n  return createUnsafe({\n    bytes,\n    cid,\n    value,\n    codec\n  })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n", "import type { Filter, RangeFilter } from '../core/types.js';\nimport type { LevelWrapperBatchOperation, LevelWrapperIteratorOptions } from './level-wrapper.js';\n\nimport { flatten } from '../utils/object.js';\nimport { createLevelDatabase, LevelWrapper } from './level-wrapper.js';\n\nexport type Entry = {\n  [property: string]: unknown\n};\n\nexport interface IndexLevelOptions {\n  signal?: AbortSignal;\n}\n\n/**\n * A LevelDB implementation for indexing the messages stored in the DWN.\n */\nexport class IndexLevel {\n  config: IndexLevelConfig;\n\n  db: LevelWrapper<string>;\n\n  constructor(config: IndexLevelConfig) {\n    this.config = {\n      createLevelDatabase,\n      ...config\n    };\n\n    this.db = new LevelWrapper<string>({ ...this.config, valueEncoding: 'utf8' });\n  }\n\n  async open(): Promise<void> {\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    return this.db.close();\n  }\n\n  async put(id: string, entry: Entry, options?: IndexLevelOptions): Promise<void> {\n    entry = flatten(entry) as Entry;\n\n    const ops: LevelWrapperBatchOperation<string>[] = [ ];\n    const prefixes: string[] = [ ];\n    for (const property in entry) {\n      const value = entry[property];\n\n      const prefix = this.join(property, this.encodeValue(value));\n      ops.push({ type: 'put', key: this.join(prefix, id), value: id });\n      prefixes.push(prefix);\n    }\n    ops.push({ type: 'put', key: `__${id}__prefixes`, value: JSON.stringify(prefixes) });\n\n    return this.db.batch(ops, options);\n  }\n\n  async query(filter: Filter, options?: IndexLevelOptions): Promise<Array<string>> {\n    const requiredProperties = new Set<string>();\n    const missingPropertiesForID: { [id: string]: Set<string> } = { };\n    const promises: Promise<Matches>[] = [ ];\n    const matchedIDs: string[] = [ ];\n\n    async function checkMatches(property: string, promise: Promise<Matches>): Promise<void> {\n      promises.push(promise);\n\n      for (const [ _, id ] of await promise) {\n        missingPropertiesForID[id] ??= new Set<string>([ ...requiredProperties ]);\n        missingPropertiesForID[id].delete(property);\n        if (missingPropertiesForID[id].size === 0) {\n          matchedIDs.push(id);\n        }\n      }\n    }\n\n    for (const propertyName in filter) {\n      const propertyFilter = filter[propertyName];\n\n      if (typeof propertyFilter === 'object' && propertyFilter !== null) {\n        if (Array.isArray(propertyFilter)) {\n          for (const propertyValue of new Set(propertyFilter)) {\n            checkMatches(propertyName, this.findExactMatches(propertyName, propertyValue, options));\n          }\n        } else {\n          checkMatches(propertyName, this.findRangeMatches(propertyName, propertyFilter, options));\n        }\n      } else {\n        checkMatches(propertyName, this.findExactMatches(propertyName, propertyFilter, options));\n      }\n\n      requiredProperties.add(propertyName);\n    }\n\n    await Promise.all(promises);\n\n    return matchedIDs;\n  }\n\n  async delete(id: string, options?: IndexLevelOptions): Promise<void> {\n    const prefixes = await this.db.get(`__${id}__prefixes`, options);\n    if (!prefixes) {\n      return;\n    }\n\n    const ops: LevelWrapperBatchOperation<string>[] = [ ];\n    for (const prefix of JSON.parse(prefixes)) {\n      ops.push({ type: 'del', key: this.join(prefix, id) });\n    }\n    ops.push({ type: 'del', key: `__${id}__prefixes` });\n\n    return this.db.batch(ops, options);\n  }\n\n  async clear(): Promise<void> {\n    return this.db.clear();\n  }\n\n  private async findExactMatches(propertyName: string, propertyValue: unknown, options?: IndexLevelOptions): Promise<Matches> {\n    const propertyKey = this.join(propertyName, this.encodeValue(propertyValue));\n\n    const iteratorOptions: LevelWrapperIteratorOptions<string> = {\n      gt: propertyKey\n    };\n\n    return this.findMatches(propertyKey, iteratorOptions, options);\n  }\n\n  private async findRangeMatches(propertyName: string, range: RangeFilter, options?: IndexLevelOptions): Promise<Matches> {\n    const propertyKey = this.join(propertyName);\n\n    const iteratorOptions: LevelWrapperIteratorOptions<string> = { };\n    for (const comparator in range) {\n      iteratorOptions[comparator] = this.join(propertyName, this.encodeValue(range[comparator]));\n    }\n\n    const matches = await this.findMatches(propertyKey, iteratorOptions, options);\n\n    if ('lte' in range) {\n      // When using `lte` we must also query for an exact match due to how we're encoding values.\n      // For example, `{ lte: 'foo' }` would not match `'foo\\x02bar'`.\n      for (const [ key, value ] of await this.findExactMatches(propertyName, range.lte, options)) {\n        matches.set(key, value);\n      }\n    }\n\n    return matches;\n  }\n\n  private async findMatches(\n    propertyName: string,\n    iteratorOptions: LevelWrapperIteratorOptions<string>,\n    options?: IndexLevelOptions\n  ): Promise<Matches> {\n    // Since we will stop iterating if we encounter entries that do not start with the `propertyName`, we need to always start from the upper bound.\n    // For example, `{ lte: 'b' }` would immediately stop if the data was `[ 'a', 'ab', 'b' ]` since `'a'` does not start with `'b'`.\n    if (('lt' in iteratorOptions || 'lte' in iteratorOptions) && !('gt' in iteratorOptions || 'gte' in iteratorOptions)) {\n      iteratorOptions.reverse = true;\n    }\n\n    const matches = new Map<string, string>;\n    for await (const [ key, value ] of this.db.iterator(iteratorOptions, options)) {\n      if (!key.startsWith(propertyName)) {\n        break;\n      }\n\n      matches.set(key, value);\n    }\n    return matches;\n  }\n\n  private encodeValue(value: unknown): string {\n    if (typeof value === 'string') {\n      // We can't just `JSON.stringify` as that'll affect the sort order of strings.\n      // For example, `'\\x00'` becomes `'\\\\u0000'`.\n      return `\"${value}\"`;\n    }\n\n    return String(value);\n  }\n\n  private join(...values: unknown[]): string {\n    return values.join(`\\x00`);\n  }\n\n  async dump(): Promise<void> {\n    console.group('db');\n    await this.db['dump']?.();\n    console.groupEnd();\n  }\n}\n\ntype IndexLevelConfig = {\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};\n\ntype Matches = Map<string, string>;", "import type { BaseMessage, Filter } from '../core/types.js';\nimport type { MessageStore, MessageStoreOptions } from './message-store.js';\n\nimport * as block from 'multiformats/block';\nimport * as cbor from '@ipld/dag-cbor';\n\nimport { abortOr } from '../utils/abort.js';\nimport { BlockstoreLevel } from './blockstore-level.js';\nimport { CID } from 'multiformats/cid';\nimport { createLevelDatabase } from './level-wrapper.js';\nimport { IndexLevel } from './index-level.js';\nimport { sha256 } from 'multiformats/hashes/sha2';\n\n/**\n * A simple implementation of {@link MessageStore} that works in both the browser and server-side.\n * Leverages LevelDB under the hood.\n */\nexport class MessageStoreLevel implements MessageStore {\n  config: MessageStoreLevelConfig;\n\n  blockstore: BlockstoreLevel;\n\n  index: IndexLevel;\n\n  /**\n   * @param {MessageStoreLevelConfig} config\n   * @param {string} config.blockstoreLocation - must be a directory path (relative or absolute) where\n   *  LevelDB will store its files, or in browsers, the name of the\n   * {@link https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase IDBDatabase} to be opened.\n   * @param {string} config.indexLocation - same as config.blockstoreLocation\n   */\n  constructor(config: MessageStoreLevelConfig = {}) {\n    this.config = {\n      blockstoreLocation : 'MESSAGESTORE',\n      indexLocation      : 'INDEX',\n      createLevelDatabase,\n      ...config\n    };\n\n    this.blockstore = new BlockstoreLevel({\n      location            : this.config.blockstoreLocation!,\n      createLevelDatabase : this.config.createLevelDatabase,\n    });\n\n    this.index = new IndexLevel({\n      location            : this.config.indexLocation!,\n      createLevelDatabase : this.config.createLevelDatabase,\n    });\n  }\n\n  async open(): Promise<void> {\n    await this.blockstore.open();\n    await this.index.open();\n  }\n\n  async close(): Promise<void> {\n    await this.blockstore.close();\n    await this.index.close();\n  }\n\n  async get(tenant: string, cidString: string, options?: MessageStoreOptions): Promise<BaseMessage | undefined> {\n    options?.signal?.throwIfAborted();\n\n    const partition = await abortOr(options?.signal, this.blockstore.partition(tenant));\n\n    const cid = CID.parse(cidString);\n    const bytes = await partition.get(cid, options);\n\n    if (!bytes) {\n      return undefined;\n    }\n\n    const decodedBlock = await abortOr(options?.signal, block.decode({ bytes, codec: cbor, hasher: sha256 }));\n\n    const messageJson = decodedBlock.value as BaseMessage;\n    return messageJson;\n  }\n\n  async query(tenant: string, filter: Filter, options?: MessageStoreOptions): Promise<BaseMessage[]> {\n    options?.signal?.throwIfAborted();\n\n    const messages: BaseMessage[] = [];\n\n    const resultIds = await this.index.query({ ...filter, tenant }, options);\n\n    for (const id of resultIds) {\n      const message = await this.get(tenant, id, options);\n      if (message) { messages.push(message); }\n    }\n\n    return messages;\n  }\n\n  async delete(tenant: string, cidString: string, options?: MessageStoreOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    const partition = await abortOr(options?.signal, this.blockstore.partition(tenant));\n\n    const cid = CID.parse(cidString);\n    await partition.delete(cid, options);\n    await this.index.delete(cidString, options);\n  }\n\n  async put(\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    options?: MessageStoreOptions\n  ): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    const partition = await abortOr(options?.signal, this.blockstore.partition(tenant));\n\n    const encodedMessageBlock = await abortOr(options?.signal, block.encode({ value: message, codec: cbor, hasher: sha256 }));\n\n    await partition.put(encodedMessageBlock.cid, encodedMessageBlock.bytes, options);\n\n    const encodedMessageBlockCid = encodedMessageBlock.cid.toString();\n    const indexDocument = {\n      ...indexes,\n      tenant,\n    };\n    await this.index.put(encodedMessageBlockCid, indexDocument, options);\n  }\n\n  /**\n   * deletes everything in the underlying blockstore and indices.\n   */\n  async clear(): Promise<void> {\n    await this.blockstore.clear();\n    await this.index.clear();\n  }\n\n  async dump(): Promise<void> {\n    console.group('blockstore');\n    await this.blockstore['dump']?.();\n    console.groupEnd();\n\n    console.group('index');\n    await this.index['dump']?.();\n    console.groupEnd();\n  }\n}\n\ntype MessageStoreLevelConfig = {\n  blockstoreLocation?: string,\n  indexLocation?: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { ProtocolDefinition, ProtocolsConfigureDescriptor, ProtocolsConfigureMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\n\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\nimport { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../../../utils/url.js';\n\nexport type ProtocolsConfigureOptions = {\n  dateCreated? : string;\n  definition : ProtocolDefinition;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class ProtocolsConfigure extends Message<ProtocolsConfigureMessage> {\n\n  public static async parse(message: ProtocolsConfigureMessage): Promise<ProtocolsConfigure> {\n    await validateAuthorizationIntegrity(message);\n    ProtocolsConfigure.validateDefinitionNormalized(message.descriptor.definition);\n\n    return new ProtocolsConfigure(message);\n  }\n\n  public static async create(options: ProtocolsConfigureOptions): Promise<ProtocolsConfigure> {\n    const descriptor: ProtocolsConfigureDescriptor = {\n      interface   : DwnInterfaceName.Protocols,\n      method      : DwnMethodName.Configure,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      // TODO: #139 - move definition out of the descriptor - https://github.com/TBD54566975/dwn-sdk-js/issues/139\n      definition  : ProtocolsConfigure.normalizeDefinition(options.definition)\n    };\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    const protocolsConfigure = new ProtocolsConfigure(message);\n    return protocolsConfigure;\n  }\n\n  private static validateDefinitionNormalized(definition: ProtocolDefinition): void {\n    const { protocol, types } = definition;\n\n    // validate protocol url\n    validateProtocolUrlNormalized(protocol);\n\n    // validate schema url normalized\n    for (const typeName in types) {\n      const schema = types[typeName].schema;\n      if (schema !== undefined) {\n        validateSchemaUrlNormalized(schema);\n      }\n    }\n  }\n\n  private static normalizeDefinition(definition: ProtocolDefinition): ProtocolDefinition {\n    const typesCopy = { ...definition.types };\n\n    // Normalize schema url\n    for (const typeName in typesCopy) {\n      const schema = typesCopy[typeName].schema;\n      if (schema !== undefined) {\n        typesCopy[typeName].schema = normalizeSchemaUrl(schema);\n      }\n    }\n\n    return {\n      ...definition,\n      protocol : normalizeProtocolUrl(definition.protocol),\n      types    : typesCopy,\n    };\n  }\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\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 '<Buffer ' + str + '>'\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", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "var _globalThis = function (Object) {\n  function get() {\n    var _global = this || self;\n\n    delete Object.prototype.__magic__;\n    return _global;\n  }\n\n  if (typeof globalThis === \"object\") {\n    return globalThis;\n  }\n\n  if (this) {\n    return get();\n  } else {\n    Object.defineProperty(Object.prototype, \"__magic__\", {\n      configurable: true,\n      get: get\n    });\n    var _global = __magic__;\n    return _global;\n  }\n}(Object);\n\nimport { Buffer } from 'buffer';\nimport process from 'process';\nvar _global = _globalThis;\nexport { Buffer, process, _global as global };\n", "'use strict';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n    for (const key in props) {\n        Object.defineProperty(obj, key, {\n            value: props[key],\n            enumerable: true,\n            configurable: true,\n        });\n    }\n\n    return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n    if (!err || typeof err === 'string') {\n        throw new TypeError('Please pass an Error to err-code');\n    }\n\n    if (!props) {\n        props = {};\n    }\n\n    if (typeof code === 'object') {\n        props = code;\n        code = '';\n    }\n\n    if (code) {\n        props.code = code;\n    }\n\n    try {\n        return assign(err, props);\n    } catch (_) {\n        props.message = err.message;\n        props.stack = err.stack;\n\n        const ErrClass = function () {};\n\n        ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n        // @ts-ignore\n        const output = assign(new ErrClass(), props);\n\n        return output;\n    }\n}\n\nmodule.exports = createError;\n", "\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params  = new Array(arguments.length - 1),\r\n        offset  = 0,\r\n        index   = 2,\r\n        pending = true;\r\n    while (index < arguments.length)\r\n        params[offset++] = arguments[index++];\r\n    return new Promise(function executor(resolve, reject) {\r\n        params[offset] = function callback(err/*, varargs */) {\r\n            if (pending) {\r\n                pending = false;\r\n                if (err)\r\n                    reject(err);\r\n                else {\r\n                    var params = new Array(arguments.length - 1),\r\n                        offset = 0;\r\n                    while (offset < params.length)\r\n                        params[offset++] = arguments[offset];\r\n                    resolve.apply(null, params);\r\n                }\r\n            }\r\n        };\r\n        try {\r\n            fn.apply(ctx || null, params);\r\n        } catch (err) {\r\n            if (pending) {\r\n                pending = false;\r\n                reject(err);\r\n            }\r\n        }\r\n    });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n    var p = string.length;\r\n    if (!p)\r\n        return 0;\r\n    var n = 0;\r\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n        ++n;\r\n    return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n    var parts = null,\r\n        chunk = [];\r\n    var i = 0, // output index\r\n        j = 0, // goto index\r\n        t;     // temporary\r\n    while (start < end) {\r\n        var b = buffer[start++];\r\n        switch (j) {\r\n            case 0:\r\n                chunk[i++] = b64[b >> 2];\r\n                t = (b & 3) << 4;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                chunk[i++] = b64[t | b >> 4];\r\n                t = (b & 15) << 2;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                chunk[i++] = b64[t | b >> 6];\r\n                chunk[i++] = b64[b & 63];\r\n                j = 0;\r\n                break;\r\n        }\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (j) {\r\n        chunk[i++] = b64[t];\r\n        chunk[i++] = 61;\r\n        if (j === 1)\r\n            chunk[i++] = 61;\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n    var start = offset;\r\n    var j = 0, // goto index\r\n        t;     // temporary\r\n    for (var i = 0; i < string.length;) {\r\n        var c = string.charCodeAt(i++);\r\n        if (c === 61 && j > 1)\r\n            break;\r\n        if ((c = s64[c]) === undefined)\r\n            throw Error(invalidEncoding);\r\n        switch (j) {\r\n            case 0:\r\n                t = c;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n                t = c;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n                t = c;\r\n                j = 3;\r\n                break;\r\n            case 3:\r\n                buffer[offset++] = (t & 3) << 6 | c;\r\n                j = 0;\r\n                break;\r\n        }\r\n    }\r\n    if (j === 1)\r\n        throw Error(invalidEncoding);\r\n    return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n        fn  : fn,\r\n        ctx : ctx || this\r\n    });\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n    if (evt === undefined)\r\n        this._listeners = {};\r\n    else {\r\n        if (fn === undefined)\r\n            this._listeners[evt] = [];\r\n        else {\r\n            var listeners = this._listeners[evt];\r\n            for (var i = 0; i < listeners.length;)\r\n                if (listeners[i].fn === fn)\r\n                    listeners.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n    var listeners = this._listeners[evt];\r\n    if (listeners) {\r\n        var args = [],\r\n            i = 1;\r\n        for (; i < arguments.length;)\r\n            args.push(arguments[i++]);\r\n        for (i = 0; i < listeners.length;)\r\n            listeners[i].fn.apply(listeners[i++].ctx, args);\r\n    }\r\n    return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n    // float: typed array\r\n    if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n        var f32 = new Float32Array([ -0 ]),\r\n            f8b = new Uint8Array(f32.buffer),\r\n            le  = f8b[3] === 128;\r\n\r\n        function writeFloat_f32_cpy(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n        }\r\n\r\n        function writeFloat_f32_rev(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[3];\r\n            buf[pos + 1] = f8b[2];\r\n            buf[pos + 2] = f8b[1];\r\n            buf[pos + 3] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n        function readFloat_f32_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        function readFloat_f32_rev(buf, pos) {\r\n            f8b[3] = buf[pos    ];\r\n            f8b[2] = buf[pos + 1];\r\n            f8b[1] = buf[pos + 2];\r\n            f8b[0] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n    // float: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0)\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n            else if (isNaN(val))\r\n                writeUint(2143289344, buf, pos);\r\n            else if (val > 3.4028234663852886e+38) // +-Infinity\r\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n            else if (val < 1.1754943508222875e-38) // denormal\r\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n            else {\r\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n            }\r\n        }\r\n\r\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n        function readFloat_ieee754(readUint, buf, pos) {\r\n            var uint = readUint(buf, pos),\r\n                sign = (uint >> 31) * 2 + 1,\r\n                exponent = uint >>> 23 & 255,\r\n                mantissa = uint & 8388607;\r\n            return exponent === 255\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 1.401298464324817e-45 * mantissa\r\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n        }\r\n\r\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n    })();\r\n\r\n    // double: typed array\r\n    if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n        var f64 = new Float64Array([-0]),\r\n            f8b = new Uint8Array(f64.buffer),\r\n            le  = f8b[7] === 128;\r\n\r\n        function writeDouble_f64_cpy(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n            buf[pos + 4] = f8b[4];\r\n            buf[pos + 5] = f8b[5];\r\n            buf[pos + 6] = f8b[6];\r\n            buf[pos + 7] = f8b[7];\r\n        }\r\n\r\n        function writeDouble_f64_rev(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[7];\r\n            buf[pos + 1] = f8b[6];\r\n            buf[pos + 2] = f8b[5];\r\n            buf[pos + 3] = f8b[4];\r\n            buf[pos + 4] = f8b[3];\r\n            buf[pos + 5] = f8b[2];\r\n            buf[pos + 6] = f8b[1];\r\n            buf[pos + 7] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n        function readDouble_f64_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            f8b[4] = buf[pos + 4];\r\n            f8b[5] = buf[pos + 5];\r\n            f8b[6] = buf[pos + 6];\r\n            f8b[7] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        function readDouble_f64_rev(buf, pos) {\r\n            f8b[7] = buf[pos    ];\r\n            f8b[6] = buf[pos + 1];\r\n            f8b[5] = buf[pos + 2];\r\n            f8b[4] = buf[pos + 3];\r\n            f8b[3] = buf[pos + 4];\r\n            f8b[2] = buf[pos + 5];\r\n            f8b[1] = buf[pos + 6];\r\n            f8b[0] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n    // double: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n            } else if (isNaN(val)) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(2146959360, buf, pos + off1);\r\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n            } else {\r\n                var mantissa;\r\n                if (val < 2.2250738585072014e-308) { // denormal\r\n                    mantissa = val / 5e-324;\r\n                    writeUint(mantissa >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n                } else {\r\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n                    if (exponent === 1024)\r\n                        exponent = 1023;\r\n                    mantissa = val * Math.pow(2, -exponent);\r\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n                }\r\n            }\r\n        }\r\n\r\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n            var lo = readUint(buf, pos + off0),\r\n                hi = readUint(buf, pos + off1);\r\n            var sign = (hi >> 31) * 2 + 1,\r\n                exponent = hi >>> 20 & 2047,\r\n                mantissa = 4294967296 * (hi & 1048575) + lo;\r\n            return exponent === 2047\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 5e-324 * mantissa\r\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n        }\r\n\r\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n    })();\r\n\r\n    return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n    buf[pos    ] =  val        & 255;\r\n    buf[pos + 1] =  val >>> 8  & 255;\r\n    buf[pos + 2] =  val >>> 16 & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n    buf[pos    ] =  val >>> 24;\r\n    buf[pos + 1] =  val >>> 16 & 255;\r\n    buf[pos + 2] =  val >>> 8  & 255;\r\n    buf[pos + 3] =  val        & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n    return (buf[pos    ]\r\n          | buf[pos + 1] << 8\r\n          | buf[pos + 2] << 16\r\n          | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n    return (buf[pos    ] << 24\r\n          | buf[pos + 1] << 16\r\n          | buf[pos + 2] << 8\r\n          | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n    try {\r\n        var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n        if (mod && (mod.length || Object.keys(mod).length))\r\n            return mod;\r\n    } catch (e) {} // eslint-disable-line no-empty\r\n    return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n    var SIZE   = size || 8192;\r\n    var MAX    = SIZE >>> 1;\r\n    var slab   = null;\r\n    var offset = SIZE;\r\n    return function pool_alloc(size) {\r\n        if (size < 1 || size > MAX)\r\n            return alloc(size);\r\n        if (offset + size > SIZE) {\r\n            slab = alloc(SIZE);\r\n            offset = 0;\r\n        }\r\n        var buf = slice.call(slab, offset, offset += size);\r\n        if (offset & 7) // align to 32 bit\r\n            offset = (offset | 7) + 1;\r\n        return buf;\r\n    };\r\n}\r\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n    // note that the casts below are theoretically unnecessary as of today, but older statically\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n    /**\n     * Low bits.\n     * @type {number}\n     */\n    this.lo = lo >>> 0;\n\n    /**\n     * High bits.\n     * @type {number}\n     */\n    this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n    if (value === 0)\n        return zero;\n    var sign = value < 0;\n    if (sign)\n        value = -value;\n    var lo = value >>> 0,\n        hi = (value - lo) / 4294967296 >>> 0;\n    if (sign) {\n        hi = ~hi >>> 0;\n        lo = ~lo >>> 0;\n        if (++lo > 4294967295) {\n            lo = 0;\n            if (++hi > 4294967295)\n                hi = 0;\n        }\n    }\n    return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n    if (typeof value === \"number\")\n        return LongBits.fromNumber(value);\n    if (util.isString(value)) {\n        /* istanbul ignore else */\n        if (util.Long)\n            value = util.Long.fromString(value);\n        else\n            return LongBits.fromNumber(parseInt(value, 10));\n    }\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n    if (!unsigned && this.hi >>> 31) {\n        var lo = ~this.lo + 1 >>> 0,\n            hi = ~this.hi     >>> 0;\n        if (!lo)\n            hi = hi + 1 >>> 0;\n        return -(lo + hi * 4294967296);\n    }\n    return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n    return util.Long\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n        /* istanbul ignore next */\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n    if (hash === zeroHash)\n        return zero;\n    return new LongBits(\n        ( charCodeAt.call(hash, 0)\n        | charCodeAt.call(hash, 1) << 8\n        | charCodeAt.call(hash, 2) << 16\n        | charCodeAt.call(hash, 3) << 24) >>> 0\n    ,\n        ( charCodeAt.call(hash, 4)\n        | charCodeAt.call(hash, 5) << 8\n        | charCodeAt.call(hash, 6) << 16\n        | charCodeAt.call(hash, 7) << 24) >>> 0\n    );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n    return String.fromCharCode(\n        this.lo        & 255,\n        this.lo >>> 8  & 255,\n        this.lo >>> 16 & 255,\n        this.lo >>> 24      ,\n        this.hi        & 255,\n        this.hi >>> 8  & 255,\n        this.hi >>> 16 & 255,\n        this.hi >>> 24\n    );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n    var mask =   this.hi >> 31;\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n    var mask = -(this.lo & 1);\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n    var part0 =  this.lo,\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n        part2 =  this.hi >>> 24;\n    return part2 === 0\n         ? part1 === 0\n           ? part0 < 16384\n             ? part0 < 128 ? 1 : 2\n             : part0 < 2097152 ? 3 : 4\n           : part1 < 16384\n             ? part1 < 128 ? 5 : 6\n             : part1 < 2097152 ? 7 : 8\n         : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n                   && global\n                   && global.process\n                   && global.process.versions\n                   && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n           || typeof window !== \"undefined\" && window\n           || typeof self   !== \"undefined\" && self\n           || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n    return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n    var value = obj[prop];\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n    return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n    try {\n        var Buffer = util.inquire(\"buffer\").Buffer;\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n    } catch (e) {\n        /* istanbul ignore next */\n        return null;\n    }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n    /* istanbul ignore next */\n    return typeof sizeOrArray === \"number\"\n        ? util.Buffer\n            ? util._Buffer_allocUnsafe(sizeOrArray)\n            : new util.Array(sizeOrArray)\n        : util.Buffer\n            ? util._Buffer_from(sizeOrArray)\n            : typeof Uint8Array === \"undefined\"\n                ? sizeOrArray\n                : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n         || /* istanbul ignore next */ util.global.Long\n         || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n    return value\n        ? util.LongBits.from(value).toHash()\n        : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n    var bits = util.LongBits.fromHash(hash);\n    if (util.Long)\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n    return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n        if (dst[keys[i]] === undefined || !ifNotSet)\n            dst[keys[i]] = src[keys[i]];\n    return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n    return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n    function CustomError(message, properties) {\n\n        if (!(this instanceof CustomError))\n            return new CustomError(message, properties);\n\n        // Error.call(this, message);\n        // ^ just returns a new error instance because the ctor can be called as a function\n\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) // node\n            Error.captureStackTrace(this, CustomError);\n        else\n            Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n        if (properties)\n            merge(this, properties);\n    }\n\n    CustomError.prototype = Object.create(Error.prototype, {\n        constructor: {\n            value: CustomError,\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n        name: {\n            get: function get() { return name; },\n            set: undefined,\n            enumerable: false,\n            // configurable: false would accurately preserve the behavior of\n            // the original, but I'm guessing that was not intentional.\n            // For an actual error subclass, this property would\n            // be configurable.\n            configurable: true,\n        },\n        toString: {\n            value: function value() { return this.name + \": \" + this.message; },\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n    });\n\n    return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n *     if (e instanceof ProtocolError && e.instance)\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n    var fieldMap = {};\n    for (var i = 0; i < fieldNames.length; ++i)\n        fieldMap[fieldNames[i]] = 1;\n\n    /**\n     * @returns {string|undefined} Set field name, if any\n     * @this Object\n     * @ignore\n     */\n    return function() { // eslint-disable-line consistent-return\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n                return keys[i];\n    };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n    /**\n     * @param {string} name Field name\n     * @returns {undefined}\n     * @this Object\n     * @ignore\n     */\n    return function(name) {\n        for (var i = 0; i < fieldNames.length; ++i)\n            if (fieldNames[i] !== name)\n                delete this[fieldNames[i]];\n    };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n    longs: String,\n    enums: String,\n    bytes: String,\n    json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n    var Buffer = util.Buffer;\n    /* istanbul ignore if */\n    if (!Buffer) {\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\n        return;\n    }\n    // because node 4.x buffers are incompatible & immutable\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n        /* istanbul ignore next */\n        function Buffer_from(value, encoding) {\n            return new Buffer(value, encoding);\n        };\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n        /* istanbul ignore next */\n        function Buffer_allocUnsafe(size) {\n            return new Buffer(size);\n        };\n};\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits  = util.LongBits,\n    utf8      = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n    /**\n     * Read buffer.\n     * @type {Uint8Array}\n     */\n    this.buf = buffer;\n\n    /**\n     * Read buffer position.\n     * @type {number}\n     */\n    this.pos = 0;\n\n    /**\n     * Read buffer length.\n     * @type {number}\n     */\n    this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n    ? function create_typed_array(buffer) {\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    }\n    /* istanbul ignore next */\n    : function create_array(buffer) {\n        if (Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    };\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup(buffer) {\n            return (Reader.create = function create_buffer(buffer) {\n                return util.Buffer.isBuffer(buffer)\n                    ? new BufferReader(buffer)\n                    /* istanbul ignore next */\n                    : create_array(buffer);\n            })(buffer);\n        }\n        /* istanbul ignore next */\n        : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n    return function read_uint32() {\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n        /* istanbul ignore if */\n        if ((this.pos += 5) > this.len) {\n            this.pos = this.len;\n            throw indexOutOfRange(this, 10);\n        }\n        return value;\n    };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n    return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n    var value = this.uint32();\n    return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n    // tends to deopt with local vars for octet etc.\n    var bits = new LongBits(0, 0);\n    var i = 0;\n    if (this.len - this.pos > 4) { // fast route (lo)\n        for (; i < 4; ++i) {\n            // 1st..4th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 5th\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\n        if (this.buf[this.pos++] < 128)\n            return bits;\n        i = 0;\n    } else {\n        for (; i < 3; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 1st..3th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 4th\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n        return bits;\n    }\n    if (this.len - this.pos > 4) { // fast route (hi)\n        for (; i < 5; ++i) {\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    } else {\n        for (; i < 5; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    }\n    /* istanbul ignore next */\n    throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n    return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n    return (buf[end - 4]\n          | buf[end - 3] << 8\n          | buf[end - 2] << 16\n          | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 8);\n\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readFloatLE(this.buf, this.pos);\n    this.pos += 4;\n    return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readDoubleLE(this.buf, this.pos);\n    this.pos += 8;\n    return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n    var length = this.uint32(),\n        start  = this.pos,\n        end    = this.pos + length;\n\n    /* istanbul ignore if */\n    if (end > this.len)\n        throw indexOutOfRange(this, length);\n\n    this.pos += length;\n    if (Array.isArray(this.buf)) // plain array\n        return this.buf.slice(start, end);\n    return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n        ? new this.buf.constructor(0)\n        : this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n    var bytes = this.bytes();\n    return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n    if (typeof length === \"number\") {\n        /* istanbul ignore if */\n        if (this.pos + length > this.len)\n            throw indexOutOfRange(this, length);\n        this.pos += length;\n    } else {\n        do {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n        } while (this.buf[this.pos++] & 128);\n    }\n    return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n    switch (wireType) {\n        case 0:\n            this.skip();\n            break;\n        case 1:\n            this.skip(8);\n            break;\n        case 2:\n            this.skip(this.uint32());\n            break;\n        case 3:\n            while ((wireType = this.uint32() & 7) !== 4) {\n                this.skipType(wireType);\n            }\n            break;\n        case 5:\n            this.skip(4);\n            break;\n\n        /* istanbul ignore next */\n        default:\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n    }\n    return this;\n};\n\nReader._configure = function(BufferReader_) {\n    BufferReader = BufferReader_;\n    Reader.create = create();\n    BufferReader._configure();\n\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n    util.merge(Reader.prototype, {\n\n        int64: function read_int64() {\n            return readLongVarint.call(this)[fn](false);\n        },\n\n        uint64: function read_uint64() {\n            return readLongVarint.call(this)[fn](true);\n        },\n\n        sint64: function read_sint64() {\n            return readLongVarint.call(this).zzDecode()[fn](false);\n        },\n\n        fixed64: function read_fixed64() {\n            return readFixed64.call(this)[fn](true);\n        },\n\n        sfixed64: function read_sfixed64() {\n            return readFixed64.call(this)[fn](false);\n        }\n\n    });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n    Reader.call(this, buffer);\n\n    /**\n     * Read buffer.\n     * @name BufferReader#buf\n     * @type {Buffer}\n     */\n}\n\nBufferReader._configure = function () {\n    /* istanbul ignore else */\n    if (util.Buffer)\n        BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n    var len = this.uint32(); // modifies pos\n    return this.buf.utf8Slice\n        ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n        : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits  = util.LongBits,\n    base64    = util.base64,\n    utf8      = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n    /**\n     * Function to call.\n     * @type {function(Uint8Array, number, *)}\n     */\n    this.fn = fn;\n\n    /**\n     * Value byte length.\n     * @type {number}\n     */\n    this.len = len;\n\n    /**\n     * Next operation.\n     * @type {Writer.Op|undefined}\n     */\n    this.next = undefined;\n\n    /**\n     * Value to write.\n     * @type {*}\n     */\n    this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n    /**\n     * Current head.\n     * @type {Writer.Op}\n     */\n    this.head = writer.head;\n\n    /**\n     * Current tail.\n     * @type {Writer.Op}\n     */\n    this.tail = writer.tail;\n\n    /**\n     * Current buffer length.\n     * @type {number}\n     */\n    this.len = writer.len;\n\n    /**\n     * Next state.\n     * @type {State|null}\n     */\n    this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n    /**\n     * Current length.\n     * @type {number}\n     */\n    this.len = 0;\n\n    /**\n     * Operations head.\n     * @type {Object}\n     */\n    this.head = new Op(noop, 0, 0);\n\n    /**\n     * Operations tail\n     * @type {Object}\n     */\n    this.tail = this.head;\n\n    /**\n     * Linked forked states.\n     * @type {Object|null}\n     */\n    this.states = null;\n\n    // When a value is written, the writer calculates its byte length and puts it into a linked\n    // list of operations to perform when finish() is called. This both allows us to allocate\n    // buffers of the exact required size and reduces the amount of work we have to do compared\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\n    // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup() {\n            return (Writer.create = function create_buffer() {\n                return new BufferWriter();\n            })();\n        }\n        /* istanbul ignore next */\n        : function create_array() {\n            return new Writer();\n        };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n    return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n    this.tail = this.tail.next = new Op(fn, len, val);\n    this.len += len;\n    return this;\n};\n\nfunction writeByte(val, buf, pos) {\n    buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n    while (val > 127) {\n        buf[pos++] = val & 127 | 128;\n        val >>>= 7;\n    }\n    buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n    this.len = len;\n    this.next = undefined;\n    this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\n    this.len += (this.tail = this.tail.next = new VarintOp(\n        (value = value >>> 0)\n                < 128       ? 1\n        : value < 16384     ? 2\n        : value < 2097152   ? 3\n        : value < 268435456 ? 4\n        :                     5,\n    value)).len;\n    return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n    return value < 0\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n        : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n    while (val.hi) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n        val.hi >>>= 7;\n    }\n    while (val.lo > 127) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = val.lo >>> 7;\n    }\n    buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n    var bits = LongBits.from(value).zzEncode();\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n    return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n    buf[pos    ] =  val         & 255;\n    buf[pos + 1] =  val >>> 8   & 255;\n    buf[pos + 2] =  val >>> 16  & 255;\n    buf[pos + 3] =  val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n    return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n    return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n    return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n    ? function writeBytes_set(val, buf, pos) {\n        buf.set(val, pos); // also works for plain array values\n    }\n    /* istanbul ignore next */\n    : function writeBytes_for(val, buf, pos) {\n        for (var i = 0; i < val.length; ++i)\n            buf[pos + i] = val[i];\n    };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n    var len = value.length >>> 0;\n    if (!len)\n        return this._push(writeByte, 1, 0);\n    if (util.isString(value)) {\n        var buf = Writer.alloc(len = base64.length(value));\n        base64.decode(value, buf, 0);\n        value = buf;\n    }\n    return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n    var len = utf8.length(value);\n    return len\n        ? this.uint32(len)._push(utf8.write, len, value)\n        : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n    this.states = new State(this);\n    this.head = this.tail = new Op(noop, 0, 0);\n    this.len = 0;\n    return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n    if (this.states) {\n        this.head   = this.states.head;\n        this.tail   = this.states.tail;\n        this.len    = this.states.len;\n        this.states = this.states.next;\n    } else {\n        this.head = this.tail = new Op(noop, 0, 0);\n        this.len  = 0;\n    }\n    return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n    var head = this.head,\n        tail = this.tail,\n        len  = this.len;\n    this.reset().uint32(len);\n    if (len) {\n        this.tail.next = head.next; // skip noop\n        this.tail = tail;\n        this.len += len;\n    }\n    return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n    var head = this.head.next, // skip noop\n        buf  = this.constructor.alloc(this.len),\n        pos  = 0;\n    while (head) {\n        head.fn(head.val, buf, pos);\n        pos += head.len;\n        head = head.next;\n    }\n    // this.head = this.tail = null;\n    return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n    BufferWriter = BufferWriter_;\n    Writer.create = create();\n    BufferWriter._configure();\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n    Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n    /**\n     * Allocates a buffer of the specified size.\n     * @function\n     * @param {number} size Buffer size\n     * @returns {Buffer} Buffer\n     */\n    BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n    BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n        ? function writeBytesBuffer_set(val, buf, pos) {\n          buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n          // also works for plain array values\n        }\n        /* istanbul ignore next */\n        : function writeBytesBuffer_copy(val, buf, pos) {\n          if (val.copy) // Buffer values\n            val.copy(buf, pos, 0, val.length);\n          else for (var i = 0; i < val.length;) // plain array values\n            buf[pos++] = val[i++];\n        };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n    if (util.isString(value))\n        value = util._Buffer_from(value, \"base64\");\n    var len = value.length >>> 0;\n    this.uint32(len);\n    if (len)\n        this._push(BufferWriter.writeBytesBuffer, len, value);\n    return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n        util.utf8.write(val, buf, pos);\n    else if (buf.utf8Write)\n        buf.utf8Write(val, pos);\n    else\n        buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n    var len = util.Buffer.byteLength(value);\n    this.uint32(len);\n    if (len)\n        this._push(writeStringBuffer, len, value);\n    return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n", "'use strict'\n\n// JS treats subjects of bitwise operators as SIGNED 32 bit numbers,\n// which means the maximum amount of bits we can store inside each byte\n// is 7..\nconst BITS_PER_BYTE = 7\n\nmodule.exports = class SparseArray {\n  constructor () {\n    this._bitArrays = []\n    this._data = []\n    this._length = 0\n    this._changedLength = false\n    this._changedData = false\n  }\n\n  set (index, value) {\n    let pos = this._internalPositionFor(index, false)\n    if (value === undefined) {\n      // unsetting\n      if (pos !== -1) {\n        // remove item from bit array and array itself\n        this._unsetInternalPos(pos)\n        this._unsetBit(index)\n        this._changedLength = true\n        this._changedData = true\n      }\n    } else {\n      let needsSort = false\n      if (pos === -1) {\n        pos = this._data.length\n        this._setBit(index)\n        this._changedData = true\n      } else {\n        needsSort = true\n      }\n      this._setInternalPos(pos, index, value, needsSort)\n      this._changedLength = true\n    }\n  }\n\n  unset (index) {\n    this.set(index, undefined)\n  }\n\n  get (index) {\n    this._sortData()\n    const pos = this._internalPositionFor(index, true)\n    if (pos === -1) {\n      return undefined\n    }\n    return this._data[pos][1]\n  }\n\n  push (value) {\n    this.set(this.length, value)\n    return this.length\n  }\n\n  get length () {\n    this._sortData()\n    if (this._changedLength) {\n      const last = this._data[this._data.length - 1]\n      this._length = last ? last[0] + 1 : 0\n      this._changedLength = false\n    }\n    return this._length\n  }\n\n  forEach (iterator) {\n    let i = 0\n    while(i < this.length) {\n      iterator(this.get(i), i, this)\n      i++\n    }\n  }\n\n  map (iterator) {\n    let i = 0\n    let mapped = new Array(this.length)\n    while(i < this.length) {\n      mapped[i] = iterator(this.get(i), i, this)\n      i++\n    }\n    return mapped\n  }\n\n  reduce (reducer, initialValue) {\n    let i = 0\n    let acc = initialValue\n    while(i < this.length) {\n      const value = this.get(i)\n      acc = reducer(acc, value, i)\n      i++\n    }\n    return acc\n  }\n\n  find (finder) {\n    let i = 0, found, last\n    while ((i < this.length) && !found) {\n      last = this.get(i)\n      found = finder(last)\n      i++\n    }\n    return found ? last : undefined\n  }\n\n  _internalPositionFor (index, noCreate) {\n    const bytePos = this._bytePosFor(index, noCreate)\n    if (bytePos >= this._bitArrays.length) {\n      return -1\n    }\n    const byte = this._bitArrays[bytePos]\n    const bitPos = index - bytePos * BITS_PER_BYTE\n    const exists = (byte & (1 << bitPos)) > 0\n    if (!exists) {\n      return -1\n    }\n    const previousPopCount = this._bitArrays.slice(0, bytePos).reduce(popCountReduce, 0)\n\n    const mask = ~(0xffffffff << (bitPos + 1))\n    const bytePopCount = popCount(byte & mask)\n    const arrayPos = previousPopCount + bytePopCount - 1\n    return arrayPos\n  }\n\n  _bytePosFor (index, noCreate) {\n    const bytePos = Math.floor(index / BITS_PER_BYTE)\n    const targetLength = bytePos + 1\n    while (!noCreate && this._bitArrays.length < targetLength) {\n      this._bitArrays.push(0)\n    }\n    return bytePos\n  }\n\n  _setBit (index) {\n    const bytePos = this._bytePosFor(index, false)\n    this._bitArrays[bytePos] |= (1 << (index - (bytePos * BITS_PER_BYTE)))\n  }\n\n  _unsetBit(index) {\n    const bytePos = this._bytePosFor(index, false)\n    this._bitArrays[bytePos] &= ~(1 << (index - (bytePos * BITS_PER_BYTE)))\n  }\n\n  _setInternalPos(pos, index, value, needsSort) {\n    const data =this._data\n    const elem = [index, value]\n    if (needsSort) {\n      this._sortData()\n      data[pos] = elem\n    } else {\n      // new element. just shove it into the array\n      // but be nice about where we shove it\n      // in order to make sorting it later easier\n      if (data.length) {\n        if (data[data.length - 1][0] >= index) {\n          data.push(elem)\n        } else if (data[0][0] <= index) {\n          data.unshift(elem)\n        } else {\n          const randomIndex = Math.round(data.length / 2)\n          this._data = data.slice(0, randomIndex).concat(elem).concat(data.slice(randomIndex))\n        }\n      } else {\n        this._data.push(elem)\n      }\n      this._changedData = true\n      this._changedLength = true\n    }\n  }\n\n  _unsetInternalPos (pos) {\n    this._data.splice(pos, 1)\n  }\n\n  _sortData () {\n    if (this._changedData) {\n      this._data.sort(sortInternal)\n    }\n\n    this._changedData = false\n  }\n\n  bitField () {\n    const bytes = []\n    let pendingBitsForResultingByte = 8\n    let pendingBitsForNewByte = 0\n    let resultingByte = 0\n    let newByte\n    const pending = this._bitArrays.slice()\n    while (pending.length || pendingBitsForNewByte) {\n      if (pendingBitsForNewByte === 0) {\n        newByte = pending.shift()\n        pendingBitsForNewByte = 7\n      }\n\n      const usingBits = Math.min(pendingBitsForNewByte, pendingBitsForResultingByte)\n      const mask = ~(0b11111111 << usingBits)\n      const masked = newByte & mask\n      resultingByte |= masked << (8 - pendingBitsForResultingByte)\n      newByte = newByte >>> usingBits\n      pendingBitsForNewByte -= usingBits\n      pendingBitsForResultingByte -= usingBits\n\n      if (!pendingBitsForResultingByte || (!pendingBitsForNewByte && !pending.length)) {\n        bytes.push(resultingByte)\n        resultingByte = 0\n        pendingBitsForResultingByte = 8\n      }\n    }\n\n    // remove trailing zeroes\n    for(var i = bytes.length - 1; i > 0; i--) {\n      const value = bytes[i]\n      if (value === 0) {\n        bytes.pop()\n      } else {\n        break\n      }\n    }\n\n    return bytes\n  }\n\n  compactArray () {\n    this._sortData()\n    return this._data.map(valueOnly)\n  }\n}\n\nfunction popCountReduce (count, byte) {\n  return count + popCount(byte)\n}\n\nfunction popCount(_v) {\n  let v = _v\n  v = v - ((v >> 1) & 0x55555555)                    // reuse input as temporary\n  v = (v & 0x33333333) + ((v >> 2) & 0x33333333)     // temp\n  return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24\n}\n\nfunction sortInternal (a, b) {\n  return a[0] - b[0]\n}\n\nfunction valueOnly (elem) {\n  return elem[1]\n}", "/* jshint -W086: true */\n// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons                                       |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license.                          |\n// +----------------------------------------------------------------------+\n\n;(function (root, undefined) {\n    'use strict';\n\n    // Create a local object that'll be exported or referenced globally.\n    var library = {\n        'version': '3.0.0',\n        'x86': {},\n        'x64': {},\n        'inputValidation': true\n    };\n\n    // PRIVATE FUNCTIONS\n    // -----------------\n\n    function _validBytes(bytes) {\n        // check the input is an array or a typed array\n        if (!Array.isArray(bytes) && !ArrayBuffer.isView(bytes)) {\n            return false;\n        }\n\n        // check all bytes are actually bytes\n        for (var i = 0; i < bytes.length; i++) {\n            if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function _x86Multiply(m, n) {\n        //\n        // Given two 32bit ints, returns the two multiplied together as a\n        // 32bit int.\n        //\n\n        return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\n    }\n\n    function _x86Rotl(m, n) {\n        //\n        // Given a 32bit int and an int representing a number of bit positions,\n        // returns the 32bit int rotated left by that number of positions.\n        //\n\n        return (m << n) | (m >>> (32 - n));\n    }\n\n    function _x86Fmix(h) {\n        //\n        // Given a block, returns murmurHash3's final x86 mix of that block.\n        //\n\n        h ^= h >>> 16;\n        h = _x86Multiply(h, 0x85ebca6b);\n        h ^= h >>> 13;\n        h = _x86Multiply(h, 0xc2b2ae35);\n        h ^= h >>> 16;\n\n        return h;\n    }\n\n    function _x64Add(m, n) {\n        //\n        // Given two 64bit ints (as an array of two 32bit ints) returns the two\n        // added together as a 64bit int (as an array of two 32bit ints).\n        //\n\n        m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n        n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n        var o = [0, 0, 0, 0];\n\n        o[3] += m[3] + n[3];\n        o[2] += o[3] >>> 16;\n        o[3] &= 0xffff;\n\n        o[2] += m[2] + n[2];\n        o[1] += o[2] >>> 16;\n        o[2] &= 0xffff;\n\n        o[1] += m[1] + n[1];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[0] += m[0] + n[0];\n        o[0] &= 0xffff;\n\n        return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n    }\n\n    function _x64Multiply(m, n) {\n        //\n        // Given two 64bit ints (as an array of two 32bit ints) returns the two\n        // multiplied together as a 64bit int (as an array of two 32bit ints).\n        //\n\n        m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n        n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n        var o = [0, 0, 0, 0];\n\n        o[3] += m[3] * n[3];\n        o[2] += o[3] >>> 16;\n        o[3] &= 0xffff;\n\n        o[2] += m[2] * n[3];\n        o[1] += o[2] >>> 16;\n        o[2] &= 0xffff;\n\n        o[2] += m[3] * n[2];\n        o[1] += o[2] >>> 16;\n        o[2] &= 0xffff;\n\n        o[1] += m[1] * n[3];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[1] += m[2] * n[2];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[1] += m[3] * n[1];\n        o[0] += o[1] >>> 16;\n        o[1] &= 0xffff;\n\n        o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\n        o[0] &= 0xffff;\n\n        return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n    }\n\n    function _x64Rotl(m, n) {\n        //\n        // Given a 64bit int (as an array of two 32bit ints) and an int\n        // representing a number of bit positions, returns the 64bit int (as an\n        // array of two 32bit ints) rotated left by that number of positions.\n        //\n\n        n %= 64;\n\n        if (n === 32) {\n            return [m[1], m[0]];\n        } else if (n < 32) {\n            return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n        } else {\n            n -= 32;\n            return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n        }\n    }\n\n    function _x64LeftShift(m, n) {\n        //\n        // Given a 64bit int (as an array of two 32bit ints) and an int\n        // representing a number of bit positions, returns the 64bit int (as an\n        // array of two 32bit ints) shifted left by that number of positions.\n        //\n\n        n %= 64;\n\n        if (n === 0) {\n            return m;\n        } else if (n < 32) {\n            return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n        } else {\n            return [m[1] << (n - 32), 0];\n        }\n    }\n\n    function _x64Xor(m, n) {\n        //\n        // Given two 64bit ints (as an array of two 32bit ints) returns the two\n        // xored together as a 64bit int (as an array of two 32bit ints).\n        //\n\n        return [m[0] ^ n[0], m[1] ^ n[1]];\n    }\n\n    function _x64Fmix(h) {\n        //\n        // Given a block, returns murmurHash3's final x64 mix of that block.\n        // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n        // only place where we need to right shift 64bit ints.)\n        //\n\n        h = _x64Xor(h, [0, h[0] >>> 1]);\n        h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n        h = _x64Xor(h, [0, h[0] >>> 1]);\n        h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n        h = _x64Xor(h, [0, h[0] >>> 1]);\n\n        return h;\n    }\n\n    // PUBLIC FUNCTIONS\n    // ----------------\n\n    library.x86.hash32 = function (bytes, seed) {\n        //\n        // Given a string and an optional seed as an int, returns a 32 bit hash\n        // using the x86 flavor of MurmurHash3, as an unsigned int.\n        //\n        if (library.inputValidation && !_validBytes(bytes)) {\n            return undefined;\n        }\n        seed = seed || 0;\n\n        var remainder = bytes.length % 4;\n        var blocks = bytes.length - remainder;\n\n        var h1 = seed;\n\n        var k1 = 0;\n\n        var c1 = 0xcc9e2d51;\n        var c2 = 0x1b873593;\n\n        for (var i = 0; i < blocks; i = i + 4) {\n            k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n            k1 = _x86Multiply(k1, c1);\n            k1 = _x86Rotl(k1, 15);\n            k1 = _x86Multiply(k1, c2);\n\n            h1 ^= k1;\n            h1 = _x86Rotl(h1, 13);\n            h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n        }\n\n        k1 = 0;\n\n        switch (remainder) {\n            case 3:\n                k1 ^= bytes[i + 2] << 16;\n\n            case 2:\n                k1 ^= bytes[i + 1] << 8;\n\n            case 1:\n                k1 ^= bytes[i];\n                k1 = _x86Multiply(k1, c1);\n                k1 = _x86Rotl(k1, 15);\n                k1 = _x86Multiply(k1, c2);\n                h1 ^= k1;\n        }\n\n        h1 ^= bytes.length;\n        h1 = _x86Fmix(h1);\n\n        return h1 >>> 0;\n    };\n\n    library.x86.hash128 = function (bytes, seed) {\n        //\n        // Given a string and an optional seed as an int, returns a 128 bit\n        // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n        //\n        if (library.inputValidation && !_validBytes(bytes)) {\n            return undefined;\n        }\n\n        seed = seed || 0;\n        var remainder = bytes.length % 16;\n        var blocks = bytes.length - remainder;\n\n        var h1 = seed;\n        var h2 = seed;\n        var h3 = seed;\n        var h4 = seed;\n\n        var k1 = 0;\n        var k2 = 0;\n        var k3 = 0;\n        var k4 = 0;\n\n        var c1 = 0x239b961b;\n        var c2 = 0xab0e9789;\n        var c3 = 0x38b34ae5;\n        var c4 = 0xa1e38b93;\n\n        for (var i = 0; i < blocks; i = i + 16) {\n            k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n            k2 = (bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n            k3 = (bytes[i + 8]) | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n            k4 = (bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n            k1 = _x86Multiply(k1, c1);\n            k1 = _x86Rotl(k1, 15);\n            k1 = _x86Multiply(k1, c2);\n            h1 ^= k1;\n\n            h1 = _x86Rotl(h1, 19);\n            h1 += h2;\n            h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n            k2 = _x86Multiply(k2, c2);\n            k2 = _x86Rotl(k2, 16);\n            k2 = _x86Multiply(k2, c3);\n            h2 ^= k2;\n\n            h2 = _x86Rotl(h2, 17);\n            h2 += h3;\n            h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n            k3 = _x86Multiply(k3, c3);\n            k3 = _x86Rotl(k3, 17);\n            k3 = _x86Multiply(k3, c4);\n            h3 ^= k3;\n\n            h3 = _x86Rotl(h3, 15);\n            h3 += h4;\n            h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n            k4 = _x86Multiply(k4, c4);\n            k4 = _x86Rotl(k4, 18);\n            k4 = _x86Multiply(k4, c1);\n            h4 ^= k4;\n\n            h4 = _x86Rotl(h4, 13);\n            h4 += h1;\n            h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n        }\n\n        k1 = 0;\n        k2 = 0;\n        k3 = 0;\n        k4 = 0;\n\n        switch (remainder) {\n            case 15:\n                k4 ^= bytes[i + 14] << 16;\n\n            case 14:\n                k4 ^= bytes[i + 13] << 8;\n\n            case 13:\n                k4 ^= bytes[i + 12];\n                k4 = _x86Multiply(k4, c4);\n                k4 = _x86Rotl(k4, 18);\n                k4 = _x86Multiply(k4, c1);\n                h4 ^= k4;\n\n            case 12:\n                k3 ^= bytes[i + 11] << 24;\n\n            case 11:\n                k3 ^= bytes[i + 10] << 16;\n\n            case 10:\n                k3 ^= bytes[i + 9] << 8;\n\n            case 9:\n                k3 ^= bytes[i + 8];\n                k3 = _x86Multiply(k3, c3);\n                k3 = _x86Rotl(k3, 17);\n                k3 = _x86Multiply(k3, c4);\n                h3 ^= k3;\n\n            case 8:\n                k2 ^= bytes[i + 7] << 24;\n\n            case 7:\n                k2 ^= bytes[i + 6] << 16;\n\n            case 6:\n                k2 ^= bytes[i + 5] << 8;\n\n            case 5:\n                k2 ^= bytes[i + 4];\n                k2 = _x86Multiply(k2, c2);\n                k2 = _x86Rotl(k2, 16);\n                k2 = _x86Multiply(k2, c3);\n                h2 ^= k2;\n\n            case 4:\n                k1 ^= bytes[i + 3] << 24;\n\n            case 3:\n                k1 ^= bytes[i + 2] << 16;\n\n            case 2:\n                k1 ^= bytes[i + 1] << 8;\n\n            case 1:\n                k1 ^= bytes[i];\n                k1 = _x86Multiply(k1, c1);\n                k1 = _x86Rotl(k1, 15);\n                k1 = _x86Multiply(k1, c2);\n                h1 ^= k1;\n        }\n\n        h1 ^= bytes.length;\n        h2 ^= bytes.length;\n        h3 ^= bytes.length;\n        h4 ^= bytes.length;\n\n        h1 += h2;\n        h1 += h3;\n        h1 += h4;\n        h2 += h1;\n        h3 += h1;\n        h4 += h1;\n\n        h1 = _x86Fmix(h1);\n        h2 = _x86Fmix(h2);\n        h3 = _x86Fmix(h3);\n        h4 = _x86Fmix(h4);\n\n        h1 += h2;\n        h1 += h3;\n        h1 += h4;\n        h2 += h1;\n        h3 += h1;\n        h4 += h1;\n\n        return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\n    };\n\n    library.x64.hash128 = function (bytes, seed) {\n        //\n        // Given a string and an optional seed as an int, returns a 128 bit\n        // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n        //\n        if (library.inputValidation && !_validBytes(bytes)) {\n            return undefined;\n        }\n        seed = seed || 0;\n\n        var remainder = bytes.length % 16;\n        var blocks = bytes.length - remainder;\n\n        var h1 = [0, seed];\n        var h2 = [0, seed];\n\n        var k1 = [0, 0];\n        var k2 = [0, 0];\n\n        var c1 = [0x87c37b91, 0x114253d5];\n        var c2 = [0x4cf5ad43, 0x2745937f];\n\n        for (var i = 0; i < blocks; i = i + 16) {\n            k1 = [(bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24), (bytes[i]) |\n                (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24)];\n            k2 = [(bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24), (bytes[i + 8]) |\n                (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24)];\n\n            k1 = _x64Multiply(k1, c1);\n            k1 = _x64Rotl(k1, 31);\n            k1 = _x64Multiply(k1, c2);\n            h1 = _x64Xor(h1, k1);\n\n            h1 = _x64Rotl(h1, 27);\n            h1 = _x64Add(h1, h2);\n            h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n            k2 = _x64Multiply(k2, c2);\n            k2 = _x64Rotl(k2, 33);\n            k2 = _x64Multiply(k2, c1);\n            h2 = _x64Xor(h2, k2);\n\n            h2 = _x64Rotl(h2, 31);\n            h2 = _x64Add(h2, h1);\n            h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n        }\n\n        k1 = [0, 0];\n        k2 = [0, 0];\n\n        switch (remainder) {\n            case 15:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 14]], 48));\n\n            case 14:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 13]], 40));\n\n            case 13:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 12]], 32));\n\n            case 12:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 11]], 24));\n\n            case 11:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 10]], 16));\n\n            case 10:\n                k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 9]], 8));\n\n            case 9:\n                k2 = _x64Xor(k2, [0, bytes[i + 8]]);\n                k2 = _x64Multiply(k2, c2);\n                k2 = _x64Rotl(k2, 33);\n                k2 = _x64Multiply(k2, c1);\n                h2 = _x64Xor(h2, k2);\n\n            case 8:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 7]], 56));\n\n            case 7:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 6]], 48));\n\n            case 6:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 5]], 40));\n\n            case 5:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 4]], 32));\n\n            case 4:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 3]], 24));\n\n            case 3:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 2]], 16));\n\n            case 2:\n                k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 1]], 8));\n\n            case 1:\n                k1 = _x64Xor(k1, [0, bytes[i]]);\n                k1 = _x64Multiply(k1, c1);\n                k1 = _x64Rotl(k1, 31);\n                k1 = _x64Multiply(k1, c2);\n                h1 = _x64Xor(h1, k1);\n        }\n\n        h1 = _x64Xor(h1, [0, bytes.length]);\n        h2 = _x64Xor(h2, [0, bytes.length]);\n\n        h1 = _x64Add(h1, h2);\n        h2 = _x64Add(h2, h1);\n\n        h1 = _x64Fmix(h1);\n        h2 = _x64Fmix(h2);\n\n        h1 = _x64Add(h1, h2);\n        h2 = _x64Add(h2, h1);\n\n        return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\n    };\n\n    // INITIALIZATION\n    // --------------\n\n    // Export murmurHash3 for CommonJS, either as an AMD module or just as part\n    // of the global object.\n    if (typeof exports !== 'undefined') {\n\n        if (typeof module !== 'undefined' && module.exports) {\n            exports = module.exports = library;\n        }\n\n        exports.murmurHash3 = library;\n\n    } else if (typeof define === 'function' && define.amd) {\n\n        define([], function () {\n            return library;\n        });\n    } else {\n\n        // Use murmurHash3.noConflict to restore `murmurHash3` back to its\n        // original value. Returns a reference to the library object, to allow\n        // it to be used under a different name.\n        library._murmurHash3 = root.murmurHash3;\n\n        library.noConflict = function () {\n            root.murmurHash3 = library._murmurHash3;\n            library._murmurHash3 = undefined;\n            library.noConflict = undefined;\n\n            return library;\n        };\n\n        root.murmurHash3 = library;\n    }\n})(this);\n", "module.exports = require('./lib/murmurHash3js');\n", "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the “License”);\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// <https://apache.org/licenses/LICENSE-2.0>.\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an “AS IS” BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nclass JSBI extends Array {\n    constructor(length, sign) {\n        super(length);\n        this.sign = sign;\n        // Explicitly set the prototype as per\n        // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n        Object.setPrototypeOf(this, JSBI.prototype);\n        if (length > JSBI.__kMaxLength) {\n            throw new RangeError('Maximum BigInt size exceeded');\n        }\n    }\n    static BigInt(arg) {\n        if (typeof arg === 'number') {\n            if (arg === 0)\n                return JSBI.__zero();\n            if (JSBI.__isOneDigitInt(arg)) {\n                if (arg < 0) {\n                    return JSBI.__oneDigit(-arg, true);\n                }\n                return JSBI.__oneDigit(arg, false);\n            }\n            if (!Number.isFinite(arg) || Math.floor(arg) !== arg) {\n                throw new RangeError('The number ' + arg + ' cannot be converted to ' +\n                    'BigInt because it is not an integer');\n            }\n            return JSBI.__fromDouble(arg);\n        }\n        else if (typeof arg === 'string') {\n            const result = JSBI.__fromString(arg);\n            if (result === null) {\n                throw new SyntaxError('Cannot convert ' + arg + ' to a BigInt');\n            }\n            return result;\n        }\n        else if (typeof arg === 'boolean') {\n            if (arg === true) {\n                return JSBI.__oneDigit(1, false);\n            }\n            return JSBI.__zero();\n        }\n        else if (typeof arg === 'object') {\n            if (arg.constructor === JSBI)\n                return arg;\n            const primitive = JSBI.__toPrimitive(arg);\n            return JSBI.BigInt(primitive);\n        }\n        throw new TypeError('Cannot convert ' + arg + ' to a BigInt');\n    }\n    toDebugString() {\n        const result = ['BigInt['];\n        for (const digit of this) {\n            result.push((digit ? (digit >>> 0).toString(16) : digit) + ', ');\n        }\n        result.push(']');\n        return result.join('');\n    }\n    toString(radix = 10) {\n        if (radix < 2 || radix > 36) {\n            throw new RangeError('toString() radix argument must be between 2 and 36');\n        }\n        if (this.length === 0)\n            return '0';\n        if ((radix & (radix - 1)) === 0) {\n            return JSBI.__toStringBasePowerOfTwo(this, radix);\n        }\n        return JSBI.__toStringGeneric(this, radix, false);\n    }\n    valueOf() {\n        throw new Error('Convert JSBI instances to native numbers using `toNumber`.');\n    }\n    // Equivalent of \"Number(my_bigint)\" in the native implementation.\n    // TODO: add more tests\n    static toNumber(x) {\n        const xLength = x.length;\n        if (xLength === 0)\n            return 0;\n        if (xLength === 1) {\n            const value = x.__unsignedDigit(0);\n            return x.sign ? -value : value;\n        }\n        const xMsd = x.__digit(xLength - 1);\n        const msdLeadingZeros = JSBI.__clz30(xMsd);\n        const xBitLength = xLength * 30 - msdLeadingZeros;\n        if (xBitLength > 1024)\n            return x.sign ? -Infinity : Infinity;\n        let exponent = xBitLength - 1;\n        let currentDigit = xMsd;\n        let digitIndex = xLength - 1;\n        const shift = msdLeadingZeros + 3;\n        let mantissaHigh = (shift === 32) ? 0 : currentDigit << shift;\n        mantissaHigh >>>= 12;\n        const mantissaHighBitsUnset = shift - 12;\n        let mantissaLow = (shift >= 12) ? 0 : (currentDigit << (20 + shift));\n        let mantissaLowBitsUnset = 20 + shift;\n        if (mantissaHighBitsUnset > 0 && digitIndex > 0) {\n            digitIndex--;\n            currentDigit = x.__digit(digitIndex);\n            mantissaHigh |= (currentDigit >>> (30 - mantissaHighBitsUnset));\n            mantissaLow = currentDigit << mantissaHighBitsUnset + 2;\n            mantissaLowBitsUnset = mantissaHighBitsUnset + 2;\n        }\n        while (mantissaLowBitsUnset > 0 && digitIndex > 0) {\n            digitIndex--;\n            currentDigit = x.__digit(digitIndex);\n            if (mantissaLowBitsUnset >= 30) {\n                mantissaLow |= (currentDigit << (mantissaLowBitsUnset - 30));\n            }\n            else {\n                mantissaLow |= (currentDigit >>> (30 - mantissaLowBitsUnset));\n            }\n            mantissaLowBitsUnset -= 30;\n        }\n        const rounding = JSBI.__decideRounding(x, mantissaLowBitsUnset, digitIndex, currentDigit);\n        if (rounding === 1 || (rounding === 0 && (mantissaLow & 1) === 1)) {\n            mantissaLow = (mantissaLow + 1) >>> 0;\n            if (mantissaLow === 0) {\n                // Incrementing mantissaLow overflowed.\n                mantissaHigh++;\n                if ((mantissaHigh >>> 20) !== 0) {\n                    // Incrementing mantissaHigh overflowed.\n                    mantissaHigh = 0;\n                    exponent++;\n                    if (exponent > 1023) {\n                        // Incrementing the exponent overflowed.\n                        return x.sign ? -Infinity : Infinity;\n                    }\n                }\n            }\n        }\n        const signBit = x.sign ? (1 << 31) : 0;\n        exponent = (exponent + 0x3FF) << 20;\n        JSBI.__kBitConversionInts[1] = signBit | exponent | mantissaHigh;\n        JSBI.__kBitConversionInts[0] = mantissaLow;\n        return JSBI.__kBitConversionDouble[0];\n    }\n    // Operations.\n    static unaryMinus(x) {\n        if (x.length === 0)\n            return x;\n        const result = x.__copy();\n        result.sign = !x.sign;\n        return result;\n    }\n    static bitwiseNot(x) {\n        if (x.sign) {\n            // ~(-x) == ~(~(x-1)) == x-1\n            return JSBI.__absoluteSubOne(x).__trim();\n        }\n        // ~x == -x-1 == -(x+1)\n        return JSBI.__absoluteAddOne(x, true);\n    }\n    static exponentiate(x, y) {\n        if (y.sign) {\n            throw new RangeError('Exponent must be positive');\n        }\n        if (y.length === 0) {\n            return JSBI.__oneDigit(1, false);\n        }\n        if (x.length === 0)\n            return x;\n        if (x.length === 1 && x.__digit(0) === 1) {\n            // (-1) ** even_number == 1.\n            if (x.sign && (y.__digit(0) & 1) === 0) {\n                return JSBI.unaryMinus(x);\n            }\n            // (-1) ** odd_number == -1, 1 ** anything == 1.\n            return x;\n        }\n        // For all bases >= 2, very large exponents would lead to unrepresentable\n        // results.\n        if (y.length > 1)\n            throw new RangeError('BigInt too big');\n        let expValue = y.__unsignedDigit(0);\n        if (expValue === 1)\n            return x;\n        if (expValue >= JSBI.__kMaxLengthBits) {\n            throw new RangeError('BigInt too big');\n        }\n        if (x.length === 1 && x.__digit(0) === 2) {\n            // Fast path for 2^n.\n            const neededDigits = 1 + ((expValue / 30) | 0);\n            const sign = x.sign && ((expValue & 1) !== 0);\n            const result = new JSBI(neededDigits, sign);\n            result.__initializeDigits();\n            // All bits are zero. Now set the n-th bit.\n            const msd = 1 << (expValue % 30);\n            result.__setDigit(neededDigits - 1, msd);\n            return result;\n        }\n        let result = null;\n        let runningSquare = x;\n        // This implicitly sets the result's sign correctly.\n        if ((expValue & 1) !== 0)\n            result = x;\n        expValue >>= 1;\n        for (; expValue !== 0; expValue >>= 1) {\n            runningSquare = JSBI.multiply(runningSquare, runningSquare);\n            if ((expValue & 1) !== 0) {\n                if (result === null) {\n                    result = runningSquare;\n                }\n                else {\n                    result = JSBI.multiply(result, runningSquare);\n                }\n            }\n        }\n        // TODO see if there's a way for tsc to infer this will always happen?\n        return result;\n    }\n    static multiply(x, y) {\n        if (x.length === 0)\n            return x;\n        if (y.length === 0)\n            return y;\n        let resultLength = x.length + y.length;\n        if (x.__clzmsd() + y.__clzmsd() >= 30) {\n            resultLength--;\n        }\n        const result = new JSBI(resultLength, x.sign !== y.sign);\n        result.__initializeDigits();\n        for (let i = 0; i < x.length; i++) {\n            JSBI.__multiplyAccumulate(y, x.__digit(i), result, i);\n        }\n        return result.__trim();\n    }\n    static divide(x, y) {\n        if (y.length === 0)\n            throw new RangeError('Division by zero');\n        if (JSBI.__absoluteCompare(x, y) < 0)\n            return JSBI.__zero();\n        const resultSign = x.sign !== y.sign;\n        const divisor = y.__unsignedDigit(0);\n        let quotient;\n        if (y.length === 1 && divisor <= 0x7FFF) {\n            if (divisor === 1) {\n                return resultSign === x.sign ? x : JSBI.unaryMinus(x);\n            }\n            quotient = JSBI.__absoluteDivSmall(x, divisor, null);\n        }\n        else {\n            quotient = JSBI.__absoluteDivLarge(x, y, true, false);\n        }\n        quotient.sign = resultSign;\n        return quotient.__trim();\n    }\n    static remainder(x, y) {\n        if (y.length === 0)\n            throw new RangeError('Division by zero');\n        if (JSBI.__absoluteCompare(x, y) < 0)\n            return x;\n        const divisor = y.__unsignedDigit(0);\n        if (y.length === 1 && divisor <= 0x7FFF) {\n            if (divisor === 1)\n                return JSBI.__zero();\n            const remainderDigit = JSBI.__absoluteModSmall(x, divisor);\n            if (remainderDigit === 0)\n                return JSBI.__zero();\n            return JSBI.__oneDigit(remainderDigit, x.sign);\n        }\n        const remainder = JSBI.__absoluteDivLarge(x, y, false, true);\n        remainder.sign = x.sign;\n        return remainder.__trim();\n    }\n    static add(x, y) {\n        const sign = x.sign;\n        if (sign === y.sign) {\n            // x + y == x + y\n            // -x + -y == -(x + y)\n            return JSBI.__absoluteAdd(x, y, sign);\n        }\n        // x + -y == x - y == -(y - x)\n        // -x + y == y - x == -(x - y)\n        if (JSBI.__absoluteCompare(x, y) >= 0) {\n            return JSBI.__absoluteSub(x, y, sign);\n        }\n        return JSBI.__absoluteSub(y, x, !sign);\n    }\n    static subtract(x, y) {\n        const sign = x.sign;\n        if (sign !== y.sign) {\n            // x - (-y) == x + y\n            // (-x) - y == -(x + y)\n            return JSBI.__absoluteAdd(x, y, sign);\n        }\n        // x - y == -(y - x)\n        // (-x) - (-y) == y - x == -(x - y)\n        if (JSBI.__absoluteCompare(x, y) >= 0) {\n            return JSBI.__absoluteSub(x, y, sign);\n        }\n        return JSBI.__absoluteSub(y, x, !sign);\n    }\n    static leftShift(x, y) {\n        if (y.length === 0 || x.length === 0)\n            return x;\n        if (y.sign)\n            return JSBI.__rightShiftByAbsolute(x, y);\n        return JSBI.__leftShiftByAbsolute(x, y);\n    }\n    static signedRightShift(x, y) {\n        if (y.length === 0 || x.length === 0)\n            return x;\n        if (y.sign)\n            return JSBI.__leftShiftByAbsolute(x, y);\n        return JSBI.__rightShiftByAbsolute(x, y);\n    }\n    static unsignedRightShift() {\n        throw new TypeError('BigInts have no unsigned right shift; use >> instead');\n    }\n    static lessThan(x, y) {\n        return JSBI.__compareToBigInt(x, y) < 0;\n    }\n    static lessThanOrEqual(x, y) {\n        return JSBI.__compareToBigInt(x, y) <= 0;\n    }\n    static greaterThan(x, y) {\n        return JSBI.__compareToBigInt(x, y) > 0;\n    }\n    static greaterThanOrEqual(x, y) {\n        return JSBI.__compareToBigInt(x, y) >= 0;\n    }\n    static equal(x, y) {\n        if (x.sign !== y.sign)\n            return false;\n        if (x.length !== y.length)\n            return false;\n        for (let i = 0; i < x.length; i++) {\n            if (x.__digit(i) !== y.__digit(i))\n                return false;\n        }\n        return true;\n    }\n    static notEqual(x, y) {\n        return !JSBI.equal(x, y);\n    }\n    static bitwiseAnd(x, y) {\n        if (!x.sign && !y.sign) {\n            return JSBI.__absoluteAnd(x, y).__trim();\n        }\n        else if (x.sign && y.sign) {\n            const resultLength = Math.max(x.length, y.length) + 1;\n            // (-x) & (-y) == ~(x-1) & ~(y-1) == ~((x-1) | (y-1))\n            // == -(((x-1) | (y-1)) + 1)\n            let result = JSBI.__absoluteSubOne(x, resultLength);\n            const y1 = JSBI.__absoluteSubOne(y);\n            result = JSBI.__absoluteOr(result, y1, result);\n            return JSBI.__absoluteAddOne(result, true, result).__trim();\n        }\n        // Assume that x is the positive BigInt.\n        if (x.sign) {\n            [x, y] = [y, x];\n        }\n        // x & (-y) == x & ~(y-1) == x &~ (y-1)\n        return JSBI.__absoluteAndNot(x, JSBI.__absoluteSubOne(y)).__trim();\n    }\n    static bitwiseXor(x, y) {\n        if (!x.sign && !y.sign) {\n            return JSBI.__absoluteXor(x, y).__trim();\n        }\n        else if (x.sign && y.sign) {\n            // (-x) ^ (-y) == ~(x-1) ^ ~(y-1) == (x-1) ^ (y-1)\n            const resultLength = Math.max(x.length, y.length);\n            const result = JSBI.__absoluteSubOne(x, resultLength);\n            const y1 = JSBI.__absoluteSubOne(y);\n            return JSBI.__absoluteXor(result, y1, result).__trim();\n        }\n        const resultLength = Math.max(x.length, y.length) + 1;\n        // Assume that x is the positive BigInt.\n        if (x.sign) {\n            [x, y] = [y, x];\n        }\n        // x ^ (-y) == x ^ ~(y-1) == ~(x ^ (y-1)) == -((x ^ (y-1)) + 1)\n        let result = JSBI.__absoluteSubOne(y, resultLength);\n        result = JSBI.__absoluteXor(result, x, result);\n        return JSBI.__absoluteAddOne(result, true, result).__trim();\n    }\n    static bitwiseOr(x, y) {\n        const resultLength = Math.max(x.length, y.length);\n        if (!x.sign && !y.sign) {\n            return JSBI.__absoluteOr(x, y).__trim();\n        }\n        else if (x.sign && y.sign) {\n            // (-x) | (-y) == ~(x-1) | ~(y-1) == ~((x-1) & (y-1))\n            // == -(((x-1) & (y-1)) + 1)\n            let result = JSBI.__absoluteSubOne(x, resultLength);\n            const y1 = JSBI.__absoluteSubOne(y);\n            result = JSBI.__absoluteAnd(result, y1, result);\n            return JSBI.__absoluteAddOne(result, true, result).__trim();\n        }\n        // Assume that x is the positive BigInt.\n        if (x.sign) {\n            [x, y] = [y, x];\n        }\n        // x | (-y) == x | ~(y-1) == ~((y-1) &~ x) == -(((y-1) ~& x) + 1)\n        let result = JSBI.__absoluteSubOne(y, resultLength);\n        result = JSBI.__absoluteAndNot(result, x, result);\n        return JSBI.__absoluteAddOne(result, true, result).__trim();\n    }\n    static asIntN(n, x) {\n        if (x.length === 0)\n            return x;\n        n = Math.floor(n);\n        if (n < 0) {\n            throw new RangeError('Invalid value: not (convertible to) a safe integer');\n        }\n        if (n === 0)\n            return JSBI.__zero();\n        // If {x} has less than {n} bits, return it directly.\n        if (n >= JSBI.__kMaxLengthBits)\n            return x;\n        const neededLength = ((n + 29) / 30) | 0;\n        if (x.length < neededLength)\n            return x;\n        const topDigit = x.__unsignedDigit(neededLength - 1);\n        const compareDigit = 1 << ((n - 1) % 30);\n        if (x.length === neededLength && topDigit < compareDigit)\n            return x;\n        // Otherwise truncate and simulate two's complement.\n        const hasBit = (topDigit & compareDigit) === compareDigit;\n        if (!hasBit)\n            return JSBI.__truncateToNBits(n, x);\n        if (!x.sign)\n            return JSBI.__truncateAndSubFromPowerOfTwo(n, x, true);\n        if ((topDigit & (compareDigit - 1)) === 0) {\n            for (let i = neededLength - 2; i >= 0; i--) {\n                if (x.__digit(i) !== 0) {\n                    return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n                }\n            }\n            if (x.length === neededLength && topDigit === compareDigit)\n                return x;\n            return JSBI.__truncateToNBits(n, x);\n        }\n        return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n    }\n    static asUintN(n, x) {\n        if (x.length === 0)\n            return x;\n        n = Math.floor(n);\n        if (n < 0) {\n            throw new RangeError('Invalid value: not (convertible to) a safe integer');\n        }\n        if (n === 0)\n            return JSBI.__zero();\n        // If {x} is negative, simulate two's complement representation.\n        if (x.sign) {\n            if (n > JSBI.__kMaxLengthBits) {\n                throw new RangeError('BigInt too big');\n            }\n            return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n        }\n        // If {x} is positive and has up to {n} bits, return it directly.\n        if (n >= JSBI.__kMaxLengthBits)\n            return x;\n        const neededLength = ((n + 29) / 30) | 0;\n        if (x.length < neededLength)\n            return x;\n        const bitsInTopDigit = n % 30;\n        if (x.length == neededLength) {\n            if (bitsInTopDigit === 0)\n                return x;\n            const topDigit = x.__digit(neededLength - 1);\n            if ((topDigit >>> bitsInTopDigit) === 0)\n                return x;\n        }\n        // Otherwise, truncate.\n        return JSBI.__truncateToNBits(n, x);\n    }\n    // Operators.\n    static ADD(x, y) {\n        x = JSBI.__toPrimitive(x);\n        y = JSBI.__toPrimitive(y);\n        if (typeof x === 'string') {\n            if (typeof y !== 'string')\n                y = y.toString();\n            return x + y;\n        }\n        if (typeof y === 'string') {\n            return x.toString() + y;\n        }\n        x = JSBI.__toNumeric(x);\n        y = JSBI.__toNumeric(y);\n        if (JSBI.__isBigInt(x) && JSBI.__isBigInt(y)) {\n            return JSBI.add(x, y);\n        }\n        if (typeof x === 'number' && typeof y === 'number') {\n            return x + y;\n        }\n        throw new TypeError('Cannot mix BigInt and other types, use explicit conversions');\n    }\n    static LT(x, y) {\n        return JSBI.__compare(x, y, 0);\n    }\n    static LE(x, y) {\n        return JSBI.__compare(x, y, 1);\n    }\n    static GT(x, y) {\n        return JSBI.__compare(x, y, 2);\n    }\n    static GE(x, y) {\n        return JSBI.__compare(x, y, 3);\n    }\n    static EQ(x, y) {\n        while (true) {\n            if (JSBI.__isBigInt(x)) {\n                if (JSBI.__isBigInt(y))\n                    return JSBI.equal(x, y);\n                return JSBI.EQ(y, x);\n            }\n            else if (typeof x === 'number') {\n                if (JSBI.__isBigInt(y))\n                    return JSBI.__equalToNumber(y, x);\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'string') {\n                if (JSBI.__isBigInt(y)) {\n                    x = JSBI.__fromString(x);\n                    if (x === null)\n                        return false;\n                    return JSBI.equal(x, y);\n                }\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'boolean') {\n                if (JSBI.__isBigInt(y))\n                    return JSBI.__equalToNumber(y, +x);\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'symbol') {\n                if (JSBI.__isBigInt(y))\n                    return false;\n                if (typeof y !== 'object')\n                    return x == y;\n                y = JSBI.__toPrimitive(y);\n            }\n            else if (typeof x === 'object') {\n                if (typeof y === 'object' && y.constructor !== JSBI)\n                    return x == y;\n                x = JSBI.__toPrimitive(x);\n            }\n            else {\n                return x == y;\n            }\n        }\n    }\n    static NE(x, y) {\n        return !JSBI.EQ(x, y);\n    }\n    // DataView-related functionality.\n    static DataViewGetBigInt64(dataview, byteOffset, littleEndian = false) {\n        return JSBI.asIntN(64, JSBI.DataViewGetBigUint64(dataview, byteOffset, littleEndian));\n    }\n    static DataViewGetBigUint64(dataview, byteOffset, littleEndian = false) {\n        const [h, l] = littleEndian ? [4, 0] : [0, 4];\n        const high = dataview.getUint32(byteOffset + h, littleEndian);\n        const low = dataview.getUint32(byteOffset + l, littleEndian);\n        const result = new JSBI(3, false);\n        result.__setDigit(0, low & 0x3FFFFFFF);\n        result.__setDigit(1, ((high & 0xFFFFFFF) << 2) | (low >>> 30));\n        result.__setDigit(2, high >>> 28);\n        return result.__trim();\n    }\n    static DataViewSetBigInt64(dataview, byteOffset, value, littleEndian = false) {\n        JSBI.DataViewSetBigUint64(dataview, byteOffset, value, littleEndian);\n    }\n    static DataViewSetBigUint64(dataview, byteOffset, value, littleEndian = false) {\n        value = JSBI.asUintN(64, value);\n        let high = 0;\n        let low = 0;\n        if (value.length > 0) {\n            low = value.__digit(0);\n            if (value.length > 1) {\n                const d1 = value.__digit(1);\n                low = low | d1 << 30;\n                high = d1 >>> 2;\n                if (value.length > 2) {\n                    high = high | (value.__digit(2) << 28);\n                }\n            }\n        }\n        const [h, l] = littleEndian ? [4, 0] : [0, 4];\n        dataview.setUint32(byteOffset + h, high, littleEndian);\n        dataview.setUint32(byteOffset + l, low, littleEndian);\n    }\n    // Helpers.\n    static __zero() {\n        return new JSBI(0, false);\n    }\n    static __oneDigit(value, sign) {\n        const result = new JSBI(1, sign);\n        result.__setDigit(0, value);\n        return result;\n    }\n    __copy() {\n        const result = new JSBI(this.length, this.sign);\n        for (let i = 0; i < this.length; i++) {\n            result[i] = this[i];\n        }\n        return result;\n    }\n    __trim() {\n        let newLength = this.length;\n        let last = this[newLength - 1];\n        while (last === 0) {\n            newLength--;\n            last = this[newLength - 1];\n            this.pop();\n        }\n        if (newLength === 0)\n            this.sign = false;\n        return this;\n    }\n    __initializeDigits() {\n        for (let i = 0; i < this.length; i++) {\n            this[i] = 0;\n        }\n    }\n    static __decideRounding(x, mantissaBitsUnset, digitIndex, currentDigit) {\n        if (mantissaBitsUnset > 0)\n            return -1;\n        let topUnconsumedBit;\n        if (mantissaBitsUnset < 0) {\n            topUnconsumedBit = -mantissaBitsUnset - 1;\n        }\n        else {\n            // {currentDigit} fit the mantissa exactly; look at the next digit.\n            if (digitIndex === 0)\n                return -1;\n            digitIndex--;\n            currentDigit = x.__digit(digitIndex);\n            topUnconsumedBit = 29;\n        }\n        // If the most significant remaining bit is 0, round down.\n        let mask = 1 << topUnconsumedBit;\n        if ((currentDigit & mask) === 0)\n            return -1;\n        // If any other remaining bit is set, round up.\n        mask -= 1;\n        if ((currentDigit & mask) !== 0)\n            return 1;\n        while (digitIndex > 0) {\n            digitIndex--;\n            if (x.__digit(digitIndex) !== 0)\n                return 1;\n        }\n        return 0;\n    }\n    static __fromDouble(value) {\n        const sign = value < 0;\n        JSBI.__kBitConversionDouble[0] = value;\n        const rawExponent = (JSBI.__kBitConversionInts[1] >>> 20) & 0x7FF;\n        const exponent = rawExponent - 0x3FF;\n        const digits = ((exponent / 30) | 0) + 1;\n        const result = new JSBI(digits, sign);\n        const kHiddenBit = 0x00100000;\n        let mantissaHigh = (JSBI.__kBitConversionInts[1] & 0xFFFFF) | kHiddenBit;\n        let mantissaLow = JSBI.__kBitConversionInts[0];\n        const kMantissaHighTopBit = 20;\n        // 0-indexed position of most significant bit in most significant digit.\n        const msdTopBit = exponent % 30;\n        // Number of unused bits in the mantissa. We'll keep them shifted to the\n        // left (i.e. most significant part).\n        let remainingMantissaBits = 0;\n        // Next digit under construction.\n        let digit;\n        // First, build the MSD by shifting the mantissa appropriately.\n        if (msdTopBit < kMantissaHighTopBit) {\n            const shift = kMantissaHighTopBit - msdTopBit;\n            remainingMantissaBits = shift + 32;\n            digit = mantissaHigh >>> shift;\n            mantissaHigh = (mantissaHigh << (32 - shift)) | (mantissaLow >>> shift);\n            mantissaLow = mantissaLow << (32 - shift);\n        }\n        else if (msdTopBit === kMantissaHighTopBit) {\n            remainingMantissaBits = 32;\n            digit = mantissaHigh;\n            mantissaHigh = mantissaLow;\n            mantissaLow = 0;\n        }\n        else {\n            const shift = msdTopBit - kMantissaHighTopBit;\n            remainingMantissaBits = 32 - shift;\n            digit = (mantissaHigh << shift) | (mantissaLow >>> (32 - shift));\n            mantissaHigh = mantissaLow << shift;\n            mantissaLow = 0;\n        }\n        result.__setDigit(digits - 1, digit);\n        // Then fill in the rest of the digits.\n        for (let digitIndex = digits - 2; digitIndex >= 0; digitIndex--) {\n            if (remainingMantissaBits > 0) {\n                remainingMantissaBits -= 30;\n                digit = mantissaHigh >>> 2;\n                mantissaHigh = (mantissaHigh << 30) | (mantissaLow >>> 2);\n                mantissaLow = (mantissaLow << 30);\n            }\n            else {\n                digit = 0;\n            }\n            result.__setDigit(digitIndex, digit);\n        }\n        return result.__trim();\n    }\n    static __isWhitespace(c) {\n        if (c <= 0x0D && c >= 0x09)\n            return true;\n        if (c <= 0x9F)\n            return c === 0x20;\n        if (c <= 0x01FFFF) {\n            return c === 0xA0 || c === 0x1680;\n        }\n        if (c <= 0x02FFFF) {\n            c &= 0x01FFFF;\n            return c <= 0x0A || c === 0x28 || c === 0x29 || c === 0x2F ||\n                c === 0x5F || c === 0x1000;\n        }\n        return c === 0xFEFF;\n    }\n    static __fromString(string, radix = 0) {\n        let sign = 0;\n        let leadingZero = false;\n        const length = string.length;\n        let cursor = 0;\n        if (cursor === length)\n            return JSBI.__zero();\n        let current = string.charCodeAt(cursor);\n        // Skip whitespace.\n        while (JSBI.__isWhitespace(current)) {\n            if (++cursor === length)\n                return JSBI.__zero();\n            current = string.charCodeAt(cursor);\n        }\n        // Detect radix.\n        if (current === 0x2B) { // '+'\n            if (++cursor === length)\n                return null;\n            current = string.charCodeAt(cursor);\n            sign = 1;\n        }\n        else if (current === 0x2D) { // '-'\n            if (++cursor === length)\n                return null;\n            current = string.charCodeAt(cursor);\n            sign = -1;\n        }\n        if (radix === 0) {\n            radix = 10;\n            if (current === 0x30) { // '0'\n                if (++cursor === length)\n                    return JSBI.__zero();\n                current = string.charCodeAt(cursor);\n                if (current === 0x58 || current === 0x78) { // 'X' or 'x'\n                    radix = 16;\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else if (current === 0x4F || current === 0x6F) { // 'O' or 'o'\n                    radix = 8;\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else if (current === 0x42 || current === 0x62) { // 'B' or 'b'\n                    radix = 2;\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else {\n                    leadingZero = true;\n                }\n            }\n        }\n        else if (radix === 16) {\n            if (current === 0x30) { // '0'\n                // Allow \"0x\" prefix.\n                if (++cursor === length)\n                    return JSBI.__zero();\n                current = string.charCodeAt(cursor);\n                if (current === 0x58 || current === 0x78) { // 'X' or 'x'\n                    if (++cursor === length)\n                        return null;\n                    current = string.charCodeAt(cursor);\n                }\n                else {\n                    leadingZero = true;\n                }\n            }\n        }\n        if (sign !== 0 && radix !== 10)\n            return null;\n        // Skip leading zeros.\n        while (current === 0x30) {\n            leadingZero = true;\n            if (++cursor === length)\n                return JSBI.__zero();\n            current = string.charCodeAt(cursor);\n        }\n        // Allocate result.\n        const chars = length - cursor;\n        let bitsPerChar = JSBI.__kMaxBitsPerChar[radix];\n        let roundup = JSBI.__kBitsPerCharTableMultiplier - 1;\n        if (chars > (1 << 30) / bitsPerChar)\n            return null;\n        const bitsMin = (bitsPerChar * chars + roundup) >>> JSBI.__kBitsPerCharTableShift;\n        const resultLength = ((bitsMin + 29) / 30) | 0;\n        const result = new JSBI(resultLength, false);\n        // Parse.\n        const limDigit = radix < 10 ? radix : 10;\n        const limAlpha = radix > 10 ? radix - 10 : 0;\n        if ((radix & (radix - 1)) === 0) {\n            // Power-of-two radix.\n            bitsPerChar >>= JSBI.__kBitsPerCharTableShift;\n            const parts = [];\n            const partsBits = [];\n            let done = false;\n            do {\n                let part = 0;\n                let bits = 0;\n                while (true) {\n                    let d;\n                    if (((current - 48) >>> 0) < limDigit) {\n                        d = current - 48;\n                    }\n                    else if ((((current | 32) - 97) >>> 0) < limAlpha) {\n                        d = (current | 32) - 87;\n                    }\n                    else {\n                        done = true;\n                        break;\n                    }\n                    bits += bitsPerChar;\n                    part = (part << bitsPerChar) | d;\n                    if (++cursor === length) {\n                        done = true;\n                        break;\n                    }\n                    current = string.charCodeAt(cursor);\n                    if (bits + bitsPerChar > 30)\n                        break;\n                }\n                parts.push(part);\n                partsBits.push(bits);\n            } while (!done);\n            JSBI.__fillFromParts(result, parts, partsBits);\n        }\n        else {\n            result.__initializeDigits();\n            let done = false;\n            let charsSoFar = 0;\n            do {\n                let part = 0;\n                let multiplier = 1;\n                while (true) {\n                    let d;\n                    if (((current - 48) >>> 0) < limDigit) {\n                        d = current - 48;\n                    }\n                    else if ((((current | 32) - 97) >>> 0) < limAlpha) {\n                        d = (current | 32) - 87;\n                    }\n                    else {\n                        done = true;\n                        break;\n                    }\n                    const m = multiplier * radix;\n                    if (m > 0x3FFFFFFF)\n                        break;\n                    multiplier = m;\n                    part = part * radix + d;\n                    charsSoFar++;\n                    if (++cursor === length) {\n                        done = true;\n                        break;\n                    }\n                    current = string.charCodeAt(cursor);\n                }\n                roundup = JSBI.__kBitsPerCharTableMultiplier * 30 - 1;\n                const digitsSoFar = (((bitsPerChar * charsSoFar + roundup) >>>\n                    JSBI.__kBitsPerCharTableShift) / 30) | 0;\n                result.__inplaceMultiplyAdd(multiplier, part, digitsSoFar);\n            } while (!done);\n        }\n        if (cursor !== length) {\n            if (!JSBI.__isWhitespace(current))\n                return null;\n            for (cursor++; cursor < length; cursor++) {\n                current = string.charCodeAt(cursor);\n                if (!JSBI.__isWhitespace(current))\n                    return null;\n            }\n        }\n        // Get result.\n        result.sign = (sign === -1);\n        return result.__trim();\n    }\n    static __fillFromParts(result, parts, partsBits) {\n        let digitIndex = 0;\n        let digit = 0;\n        let bitsInDigit = 0;\n        for (let i = parts.length - 1; i >= 0; i--) {\n            const part = parts[i];\n            const partBits = partsBits[i];\n            digit |= (part << bitsInDigit);\n            bitsInDigit += partBits;\n            if (bitsInDigit === 30) {\n                result.__setDigit(digitIndex++, digit);\n                bitsInDigit = 0;\n                digit = 0;\n            }\n            else if (bitsInDigit > 30) {\n                result.__setDigit(digitIndex++, digit & 0x3FFFFFFF);\n                bitsInDigit -= 30;\n                digit = part >>> (partBits - bitsInDigit);\n            }\n        }\n        if (digit !== 0) {\n            if (digitIndex >= result.length)\n                throw new Error('implementation bug');\n            result.__setDigit(digitIndex++, digit);\n        }\n        for (; digitIndex < result.length; digitIndex++) {\n            result.__setDigit(digitIndex, 0);\n        }\n    }\n    static __toStringBasePowerOfTwo(x, radix) {\n        const length = x.length;\n        let bits = radix - 1;\n        bits = ((bits >>> 1) & 0x55) + (bits & 0x55);\n        bits = ((bits >>> 2) & 0x33) + (bits & 0x33);\n        bits = ((bits >>> 4) & 0x0F) + (bits & 0x0F);\n        const bitsPerChar = bits;\n        const charMask = radix - 1;\n        const msd = x.__digit(length - 1);\n        const msdLeadingZeros = JSBI.__clz30(msd);\n        const bitLength = length * 30 - msdLeadingZeros;\n        let charsRequired = ((bitLength + bitsPerChar - 1) / bitsPerChar) | 0;\n        if (x.sign)\n            charsRequired++;\n        if (charsRequired > (1 << 28))\n            throw new Error('string too long');\n        const result = new Array(charsRequired);\n        let pos = charsRequired - 1;\n        let digit = 0;\n        let availableBits = 0;\n        for (let i = 0; i < length - 1; i++) {\n            const newDigit = x.__digit(i);\n            const current = (digit | (newDigit << availableBits)) & charMask;\n            result[pos--] = JSBI.__kConversionChars[current];\n            const consumedBits = bitsPerChar - availableBits;\n            digit = newDigit >>> consumedBits;\n            availableBits = 30 - consumedBits;\n            while (availableBits >= bitsPerChar) {\n                result[pos--] = JSBI.__kConversionChars[digit & charMask];\n                digit >>>= bitsPerChar;\n                availableBits -= bitsPerChar;\n            }\n        }\n        const current = (digit | (msd << availableBits)) & charMask;\n        result[pos--] = JSBI.__kConversionChars[current];\n        digit = msd >>> (bitsPerChar - availableBits);\n        while (digit !== 0) {\n            result[pos--] = JSBI.__kConversionChars[digit & charMask];\n            digit >>>= bitsPerChar;\n        }\n        if (x.sign)\n            result[pos--] = '-';\n        if (pos !== -1)\n            throw new Error('implementation bug');\n        return result.join('');\n    }\n    static __toStringGeneric(x, radix, isRecursiveCall) {\n        const length = x.length;\n        if (length === 0)\n            return '';\n        if (length === 1) {\n            let result = x.__unsignedDigit(0).toString(radix);\n            if (isRecursiveCall === false && x.sign) {\n                result = '-' + result;\n            }\n            return result;\n        }\n        const bitLength = length * 30 - JSBI.__clz30(x.__digit(length - 1));\n        const maxBitsPerChar = JSBI.__kMaxBitsPerChar[radix];\n        const minBitsPerChar = maxBitsPerChar - 1;\n        let charsRequired = bitLength * JSBI.__kBitsPerCharTableMultiplier;\n        charsRequired += minBitsPerChar - 1;\n        charsRequired = (charsRequired / minBitsPerChar) | 0;\n        const secondHalfChars = (charsRequired + 1) >> 1;\n        // Divide-and-conquer: split by a power of {radix} that's approximately\n        // the square root of {x}, then recurse.\n        const conqueror = JSBI.exponentiate(JSBI.__oneDigit(radix, false), JSBI.__oneDigit(secondHalfChars, false));\n        let quotient;\n        let secondHalf;\n        const divisor = conqueror.__unsignedDigit(0);\n        if (conqueror.length === 1 && divisor <= 0x7FFF) {\n            quotient = new JSBI(x.length, false);\n            quotient.__initializeDigits();\n            let remainder = 0;\n            for (let i = x.length * 2 - 1; i >= 0; i--) {\n                const input = (remainder << 15) | x.__halfDigit(i);\n                quotient.__setHalfDigit(i, (input / divisor) | 0);\n                remainder = (input % divisor) | 0;\n            }\n            secondHalf = remainder.toString(radix);\n        }\n        else {\n            const divisionResult = JSBI.__absoluteDivLarge(x, conqueror, true, true);\n            quotient = divisionResult.quotient;\n            const remainder = divisionResult.remainder.__trim();\n            secondHalf = JSBI.__toStringGeneric(remainder, radix, true);\n        }\n        quotient.__trim();\n        let firstHalf = JSBI.__toStringGeneric(quotient, radix, true);\n        while (secondHalf.length < secondHalfChars) {\n            secondHalf = '0' + secondHalf;\n        }\n        if (isRecursiveCall === false && x.sign) {\n            firstHalf = '-' + firstHalf;\n        }\n        return firstHalf + secondHalf;\n    }\n    static __unequalSign(leftNegative) {\n        return leftNegative ? -1 : 1;\n    }\n    static __absoluteGreater(bothNegative) {\n        return bothNegative ? -1 : 1;\n    }\n    static __absoluteLess(bothNegative) {\n        return bothNegative ? 1 : -1;\n    }\n    static __compareToBigInt(x, y) {\n        const xSign = x.sign;\n        if (xSign !== y.sign)\n            return JSBI.__unequalSign(xSign);\n        const result = JSBI.__absoluteCompare(x, y);\n        if (result > 0)\n            return JSBI.__absoluteGreater(xSign);\n        if (result < 0)\n            return JSBI.__absoluteLess(xSign);\n        return 0;\n    }\n    static __compareToNumber(x, y) {\n        if (JSBI.__isOneDigitInt(y)) {\n            const xSign = x.sign;\n            const ySign = (y < 0);\n            if (xSign !== ySign)\n                return JSBI.__unequalSign(xSign);\n            if (x.length === 0) {\n                if (ySign)\n                    throw new Error('implementation bug');\n                return y === 0 ? 0 : -1;\n            }\n            // Any multi-digit BigInt is bigger than an int32.\n            if (x.length > 1)\n                return JSBI.__absoluteGreater(xSign);\n            const yAbs = Math.abs(y);\n            const xDigit = x.__unsignedDigit(0);\n            if (xDigit > yAbs)\n                return JSBI.__absoluteGreater(xSign);\n            if (xDigit < yAbs)\n                return JSBI.__absoluteLess(xSign);\n            return 0;\n        }\n        return JSBI.__compareToDouble(x, y);\n    }\n    static __compareToDouble(x, y) {\n        if (y !== y)\n            return y; // NaN.\n        if (y === Infinity)\n            return -1;\n        if (y === -Infinity)\n            return 1;\n        const xSign = x.sign;\n        const ySign = (y < 0);\n        if (xSign !== ySign)\n            return JSBI.__unequalSign(xSign);\n        if (y === 0) {\n            throw new Error('implementation bug: should be handled elsewhere');\n        }\n        if (x.length === 0)\n            return -1;\n        JSBI.__kBitConversionDouble[0] = y;\n        const rawExponent = (JSBI.__kBitConversionInts[1] >>> 20) & 0x7FF;\n        if (rawExponent === 0x7FF) {\n            throw new Error('implementation bug: handled elsewhere');\n        }\n        const exponent = rawExponent - 0x3FF;\n        if (exponent < 0) {\n            // The absolute value of y is less than 1. Only 0n has an absolute\n            // value smaller than that, but we've already covered that case.\n            return JSBI.__absoluteGreater(xSign);\n        }\n        const xLength = x.length;\n        let xMsd = x.__digit(xLength - 1);\n        const msdLeadingZeros = JSBI.__clz30(xMsd);\n        const xBitLength = xLength * 30 - msdLeadingZeros;\n        const yBitLength = exponent + 1;\n        if (xBitLength < yBitLength)\n            return JSBI.__absoluteLess(xSign);\n        if (xBitLength > yBitLength)\n            return JSBI.__absoluteGreater(xSign);\n        // Same sign, same bit length. Shift mantissa to align with x and compare\n        // bit for bit.\n        const kHiddenBit = 0x00100000;\n        let mantissaHigh = (JSBI.__kBitConversionInts[1] & 0xFFFFF) | kHiddenBit;\n        let mantissaLow = JSBI.__kBitConversionInts[0];\n        const kMantissaHighTopBit = 20;\n        const msdTopBit = 29 - msdLeadingZeros;\n        if (msdTopBit !== (((xBitLength - 1) % 30) | 0)) {\n            throw new Error('implementation bug');\n        }\n        let compareMantissa; // Shifted chunk of mantissa.\n        let remainingMantissaBits = 0;\n        // First, compare most significant digit against beginning of mantissa.\n        if (msdTopBit < kMantissaHighTopBit) {\n            const shift = kMantissaHighTopBit - msdTopBit;\n            remainingMantissaBits = shift + 32;\n            compareMantissa = mantissaHigh >>> shift;\n            mantissaHigh = (mantissaHigh << (32 - shift)) | (mantissaLow >>> shift);\n            mantissaLow = mantissaLow << (32 - shift);\n        }\n        else if (msdTopBit === kMantissaHighTopBit) {\n            remainingMantissaBits = 32;\n            compareMantissa = mantissaHigh;\n            mantissaHigh = mantissaLow;\n            mantissaLow = 0;\n        }\n        else {\n            const shift = msdTopBit - kMantissaHighTopBit;\n            remainingMantissaBits = 32 - shift;\n            compareMantissa =\n                (mantissaHigh << shift) | (mantissaLow >>> (32 - shift));\n            mantissaHigh = mantissaLow << shift;\n            mantissaLow = 0;\n        }\n        xMsd = xMsd >>> 0;\n        compareMantissa = compareMantissa >>> 0;\n        if (xMsd > compareMantissa)\n            return JSBI.__absoluteGreater(xSign);\n        if (xMsd < compareMantissa)\n            return JSBI.__absoluteLess(xSign);\n        // Then, compare additional digits against remaining mantissa bits.\n        for (let digitIndex = xLength - 2; digitIndex >= 0; digitIndex--) {\n            if (remainingMantissaBits > 0) {\n                remainingMantissaBits -= 30;\n                compareMantissa = mantissaHigh >>> 2;\n                mantissaHigh = (mantissaHigh << 30) | (mantissaLow >>> 2);\n                mantissaLow = (mantissaLow << 30);\n            }\n            else {\n                compareMantissa = 0;\n            }\n            const digit = x.__unsignedDigit(digitIndex);\n            if (digit > compareMantissa)\n                return JSBI.__absoluteGreater(xSign);\n            if (digit < compareMantissa)\n                return JSBI.__absoluteLess(xSign);\n        }\n        // Integer parts are equal; check whether {y} has a fractional part.\n        if (mantissaHigh !== 0 || mantissaLow !== 0) {\n            if (remainingMantissaBits === 0)\n                throw new Error('implementation bug');\n            return JSBI.__absoluteLess(xSign);\n        }\n        return 0;\n    }\n    static __equalToNumber(x, y) {\n        if (JSBI.__isOneDigitInt(y)) {\n            if (y === 0)\n                return x.length === 0;\n            // Any multi-digit BigInt is bigger than an int32.\n            return (x.length === 1) && (x.sign === (y < 0)) &&\n                (x.__unsignedDigit(0) === Math.abs(y));\n        }\n        return JSBI.__compareToDouble(x, y) === 0;\n    }\n    // Comparison operations, chosen such that \"op ^ 2\" reverses direction:\n    // 0 - lessThan\n    // 1 - lessThanOrEqual\n    // 2 - greaterThan\n    // 3 - greaterThanOrEqual\n    static __comparisonResultToBool(result, op) {\n        switch (op) {\n            case 0: return result < 0;\n            case 1: return result <= 0;\n            case 2: return result > 0;\n            case 3: return result >= 0;\n        }\n    }\n    static __compare(x, y, op) {\n        x = JSBI.__toPrimitive(x);\n        y = JSBI.__toPrimitive(y);\n        if (typeof x === 'string' && typeof y === 'string') {\n            switch (op) {\n                case 0: return x < y;\n                case 1: return x <= y;\n                case 2: return x > y;\n                case 3: return x >= y;\n            }\n        }\n        if (JSBI.__isBigInt(x) && typeof y === 'string') {\n            y = JSBI.__fromString(y);\n            if (y === null)\n                return false;\n            return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n        }\n        if (typeof x === 'string' && JSBI.__isBigInt(y)) {\n            x = JSBI.__fromString(x);\n            if (x === null)\n                return false;\n            return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n        }\n        x = JSBI.__toNumeric(x);\n        y = JSBI.__toNumeric(y);\n        if (JSBI.__isBigInt(x)) {\n            if (JSBI.__isBigInt(y)) {\n                return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n            }\n            if (typeof y !== 'number')\n                throw new Error('implementation bug');\n            return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(x, y), op);\n        }\n        if (typeof x !== 'number')\n            throw new Error('implementation bug');\n        if (JSBI.__isBigInt(y)) {\n            // Note that \"op ^ 2\" reverses the op's direction.\n            return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(y, x), (op ^ 2));\n        }\n        if (typeof y !== 'number')\n            throw new Error('implementation bug');\n        switch (op) {\n            case 0: return x < y;\n            case 1: return x <= y;\n            case 2: return x > y;\n            case 3: return x >= y;\n        }\n    }\n    __clzmsd() {\n        return JSBI.__clz30(this.__digit(this.length - 1));\n    }\n    static __absoluteAdd(x, y, resultSign) {\n        if (x.length < y.length)\n            return JSBI.__absoluteAdd(y, x, resultSign);\n        if (x.length === 0)\n            return x;\n        if (y.length === 0)\n            return x.sign === resultSign ? x : JSBI.unaryMinus(x);\n        let resultLength = x.length;\n        if (x.__clzmsd() === 0 || (y.length === x.length && y.__clzmsd() === 0)) {\n            resultLength++;\n        }\n        const result = new JSBI(resultLength, resultSign);\n        let carry = 0;\n        let i = 0;\n        for (; i < y.length; i++) {\n            const r = x.__digit(i) + y.__digit(i) + carry;\n            carry = r >>> 30;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        for (; i < x.length; i++) {\n            const r = x.__digit(i) + carry;\n            carry = r >>> 30;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (i < result.length) {\n            result.__setDigit(i, carry);\n        }\n        return result.__trim();\n    }\n    static __absoluteSub(x, y, resultSign) {\n        if (x.length === 0)\n            return x;\n        if (y.length === 0)\n            return x.sign === resultSign ? x : JSBI.unaryMinus(x);\n        const result = new JSBI(x.length, resultSign);\n        let borrow = 0;\n        let i = 0;\n        for (; i < y.length; i++) {\n            const r = x.__digit(i) - y.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        for (; i < x.length; i++) {\n            const r = x.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        return result.__trim();\n    }\n    static __absoluteAddOne(x, sign, result = null) {\n        const inputLength = x.length;\n        if (result === null) {\n            result = new JSBI(inputLength, sign);\n        }\n        else {\n            result.sign = sign;\n        }\n        let carry = 1;\n        for (let i = 0; i < inputLength; i++) {\n            const r = x.__digit(i) + carry;\n            carry = r >>> 30;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (carry !== 0) {\n            result.__setDigitGrow(inputLength, 1);\n        }\n        return result;\n    }\n    static __absoluteSubOne(x, resultLength) {\n        const length = x.length;\n        resultLength = resultLength || length;\n        const result = new JSBI(resultLength, false);\n        let borrow = 1;\n        for (let i = 0; i < length; i++) {\n            const r = x.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (borrow !== 0)\n            throw new Error('implementation bug');\n        for (let i = length; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteAnd(x, y, result = null) {\n        let xLength = x.length;\n        let yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n            const tmp = x;\n            const tmpLength = xLength;\n            x = y;\n            xLength = yLength;\n            y = tmp;\n            yLength = tmpLength;\n        }\n        let resultLength = numPairs;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) & y.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteAndNot(x, y, result = null) {\n        const xLength = x.length;\n        const yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n        }\n        let resultLength = xLength;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) & ~y.__digit(i));\n        }\n        for (; i < xLength; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteOr(x, y, result = null) {\n        let xLength = x.length;\n        let yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n            const tmp = x;\n            const tmpLength = xLength;\n            x = y;\n            xLength = yLength;\n            y = tmp;\n            yLength = tmpLength;\n        }\n        let resultLength = xLength;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) | y.__digit(i));\n        }\n        for (; i < xLength; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteXor(x, y, result = null) {\n        let xLength = x.length;\n        let yLength = y.length;\n        let numPairs = yLength;\n        if (xLength < yLength) {\n            numPairs = xLength;\n            const tmp = x;\n            const tmpLength = xLength;\n            x = y;\n            xLength = yLength;\n            y = tmp;\n            yLength = tmpLength;\n        }\n        let resultLength = xLength;\n        if (result === null) {\n            result = new JSBI(resultLength, false);\n        }\n        else {\n            resultLength = result.length;\n        }\n        let i = 0;\n        for (; i < numPairs; i++) {\n            result.__setDigit(i, x.__digit(i) ^ y.__digit(i));\n        }\n        for (; i < xLength; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        for (; i < resultLength; i++) {\n            result.__setDigit(i, 0);\n        }\n        return result;\n    }\n    static __absoluteCompare(x, y) {\n        const diff = x.length - y.length;\n        if (diff !== 0)\n            return diff;\n        let i = x.length - 1;\n        while (i >= 0 && x.__digit(i) === y.__digit(i))\n            i--;\n        if (i < 0)\n            return 0;\n        return x.__unsignedDigit(i) > y.__unsignedDigit(i) ? 1 : -1;\n    }\n    static __multiplyAccumulate(multiplicand, multiplier, accumulator, accumulatorIndex) {\n        if (multiplier === 0)\n            return;\n        const m2Low = multiplier & 0x7FFF;\n        const m2High = multiplier >>> 15;\n        let carry = 0;\n        let high = 0;\n        for (let i = 0; i < multiplicand.length; i++, accumulatorIndex++) {\n            let acc = accumulator.__digit(accumulatorIndex);\n            const m1 = multiplicand.__digit(i);\n            const m1Low = m1 & 0x7FFF;\n            const m1High = m1 >>> 15;\n            const rLow = JSBI.__imul(m1Low, m2Low);\n            const rMid1 = JSBI.__imul(m1Low, m2High);\n            const rMid2 = JSBI.__imul(m1High, m2Low);\n            const rHigh = JSBI.__imul(m1High, m2High);\n            acc += high + rLow + carry;\n            carry = acc >>> 30;\n            acc &= 0x3FFFFFFF;\n            acc += ((rMid1 & 0x7FFF) << 15) + ((rMid2 & 0x7FFF) << 15);\n            carry += acc >>> 30;\n            high = rHigh + (rMid1 >>> 15) + (rMid2 >>> 15);\n            accumulator.__setDigit(accumulatorIndex, acc & 0x3FFFFFFF);\n        }\n        for (; carry !== 0 || high !== 0; accumulatorIndex++) {\n            let acc = accumulator.__digit(accumulatorIndex);\n            acc += carry + high;\n            high = 0;\n            carry = acc >>> 30;\n            accumulator.__setDigit(accumulatorIndex, acc & 0x3FFFFFFF);\n        }\n    }\n    static __internalMultiplyAdd(source, factor, summand, n, result) {\n        let carry = summand;\n        let high = 0;\n        for (let i = 0; i < n; i++) {\n            const digit = source.__digit(i);\n            const rx = JSBI.__imul(digit & 0x7FFF, factor);\n            const ry = JSBI.__imul(digit >>> 15, factor);\n            const r = rx + ((ry & 0x7FFF) << 15) + high + carry;\n            carry = r >>> 30;\n            high = ry >>> 15;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        if (result.length > n) {\n            result.__setDigit(n++, carry + high);\n            while (n < result.length) {\n                result.__setDigit(n++, 0);\n            }\n        }\n        else {\n            if (carry + high !== 0)\n                throw new Error('implementation bug');\n        }\n    }\n    __inplaceMultiplyAdd(multiplier, summand, length) {\n        if (length > this.length)\n            length = this.length;\n        const mLow = multiplier & 0x7FFF;\n        const mHigh = multiplier >>> 15;\n        let carry = 0;\n        let high = summand;\n        for (let i = 0; i < length; i++) {\n            const d = this.__digit(i);\n            const dLow = d & 0x7FFF;\n            const dHigh = d >>> 15;\n            const pLow = JSBI.__imul(dLow, mLow);\n            const pMid1 = JSBI.__imul(dLow, mHigh);\n            const pMid2 = JSBI.__imul(dHigh, mLow);\n            const pHigh = JSBI.__imul(dHigh, mHigh);\n            let result = high + pLow + carry;\n            carry = result >>> 30;\n            result &= 0x3FFFFFFF;\n            result += ((pMid1 & 0x7FFF) << 15) + ((pMid2 & 0x7FFF) << 15);\n            carry += result >>> 30;\n            high = pHigh + (pMid1 >>> 15) + (pMid2 >>> 15);\n            this.__setDigit(i, result & 0x3FFFFFFF);\n        }\n        if (carry !== 0 || high !== 0) {\n            throw new Error('implementation bug');\n        }\n    }\n    static __absoluteDivSmall(x, divisor, quotient = null) {\n        if (quotient === null)\n            quotient = new JSBI(x.length, false);\n        let remainder = 0;\n        for (let i = x.length * 2 - 1; i >= 0; i -= 2) {\n            let input = ((remainder << 15) | x.__halfDigit(i)) >>> 0;\n            const upperHalf = (input / divisor) | 0;\n            remainder = (input % divisor) | 0;\n            input = ((remainder << 15) | x.__halfDigit(i - 1)) >>> 0;\n            const lowerHalf = (input / divisor) | 0;\n            remainder = (input % divisor) | 0;\n            quotient.__setDigit(i >>> 1, (upperHalf << 15) | lowerHalf);\n        }\n        return quotient;\n    }\n    static __absoluteModSmall(x, divisor) {\n        let remainder = 0;\n        for (let i = x.length * 2 - 1; i >= 0; i--) {\n            const input = ((remainder << 15) | x.__halfDigit(i)) >>> 0;\n            remainder = (input % divisor) | 0;\n        }\n        return remainder;\n    }\n    static __absoluteDivLarge(dividend, divisor, wantQuotient, wantRemainder) {\n        const n = divisor.__halfDigitLength();\n        const n2 = divisor.length;\n        const m = dividend.__halfDigitLength() - n;\n        let q = null;\n        if (wantQuotient) {\n            q = new JSBI((m + 2) >>> 1, false);\n            q.__initializeDigits();\n        }\n        const qhatv = new JSBI((n + 2) >>> 1, false);\n        qhatv.__initializeDigits();\n        // D1.\n        const shift = JSBI.__clz15(divisor.__halfDigit(n - 1));\n        if (shift > 0) {\n            divisor = JSBI.__specialLeftShift(divisor, shift, 0 /* add no digits*/);\n        }\n        const u = JSBI.__specialLeftShift(dividend, shift, 1 /* add one digit */);\n        // D2.\n        const vn1 = divisor.__halfDigit(n - 1);\n        let halfDigitBuffer = 0;\n        for (let j = m; j >= 0; j--) {\n            // D3.\n            let qhat = 0x7FFF;\n            const ujn = u.__halfDigit(j + n);\n            if (ujn !== vn1) {\n                const input = ((ujn << 15) | u.__halfDigit(j + n - 1)) >>> 0;\n                qhat = (input / vn1) | 0;\n                let rhat = (input % vn1) | 0;\n                const vn2 = divisor.__halfDigit(n - 2);\n                const ujn2 = u.__halfDigit(j + n - 2);\n                while ((JSBI.__imul(qhat, vn2) >>> 0) > (((rhat << 16) | ujn2) >>> 0)) {\n                    qhat--;\n                    rhat += vn1;\n                    if (rhat > 0x7FFF)\n                        break;\n                }\n            }\n            // D4.\n            JSBI.__internalMultiplyAdd(divisor, qhat, 0, n2, qhatv);\n            let c = u.__inplaceSub(qhatv, j, n + 1);\n            if (c !== 0) {\n                c = u.__inplaceAdd(divisor, j, n);\n                u.__setHalfDigit(j + n, (u.__halfDigit(j + n) + c) & 0x7FFF);\n                qhat--;\n            }\n            if (wantQuotient) {\n                if (j & 1) {\n                    halfDigitBuffer = qhat << 15;\n                }\n                else {\n                    // TODO make this statically determinable\n                    q.__setDigit(j >>> 1, halfDigitBuffer | qhat);\n                }\n            }\n        }\n        if (wantRemainder) {\n            u.__inplaceRightShift(shift);\n            if (wantQuotient) {\n                return { quotient: q, remainder: u };\n            }\n            return u;\n        }\n        if (wantQuotient)\n            return q;\n        // TODO find a way to make this statically unreachable?\n        throw new Error('unreachable');\n    }\n    static __clz15(value) {\n        return JSBI.__clz30(value) - 15;\n    }\n    // TODO: work on full digits, like __inplaceSub?\n    __inplaceAdd(summand, startIndex, halfDigits) {\n        let carry = 0;\n        for (let i = 0; i < halfDigits; i++) {\n            const sum = this.__halfDigit(startIndex + i) +\n                summand.__halfDigit(i) +\n                carry;\n            carry = sum >>> 15;\n            this.__setHalfDigit(startIndex + i, sum & 0x7FFF);\n        }\n        return carry;\n    }\n    __inplaceSub(subtrahend, startIndex, halfDigits) {\n        const fullSteps = (halfDigits - 1) >>> 1;\n        let borrow = 0;\n        if (startIndex & 1) {\n            // this:   [..][..][..]\n            // subtr.:   [..][..]\n            startIndex >>= 1;\n            let current = this.__digit(startIndex);\n            let r0 = current & 0x7FFF;\n            let i = 0;\n            for (; i < fullSteps; i++) {\n                const sub = subtrahend.__digit(i);\n                const r15 = (current >>> 15) - (sub & 0x7FFF) - borrow;\n                borrow = (r15 >>> 15) & 1;\n                this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n                current = this.__digit(startIndex + i + 1);\n                r0 = (current & 0x7FFF) - (sub >>> 15) - borrow;\n                borrow = (r0 >>> 15) & 1;\n            }\n            // Unrolling the last iteration gives a 5% performance benefit!\n            const sub = subtrahend.__digit(i);\n            const r15 = (current >>> 15) - (sub & 0x7FFF) - borrow;\n            borrow = (r15 >>> 15) & 1;\n            this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n            const subTop = sub >>> 15;\n            if (startIndex + i + 1 >= this.length) {\n                throw new RangeError('out of bounds');\n            }\n            if ((halfDigits & 1) === 0) {\n                current = this.__digit(startIndex + i + 1);\n                r0 = (current & 0x7FFF) - subTop - borrow;\n                borrow = (r0 >>> 15) & 1;\n                this.__setDigit(startIndex + subtrahend.length, (current & 0x3FFF8000) | (r0 & 0x7FFF));\n            }\n        }\n        else {\n            startIndex >>= 1;\n            let i = 0;\n            for (; i < subtrahend.length - 1; i++) {\n                const current = this.__digit(startIndex + i);\n                const sub = subtrahend.__digit(i);\n                const r0 = (current & 0x7FFF) - (sub & 0x7FFF) - borrow;\n                borrow = (r0 >>> 15) & 1;\n                const r15 = (current >>> 15) - (sub >>> 15) - borrow;\n                borrow = (r15 >>> 15) & 1;\n                this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n            }\n            const current = this.__digit(startIndex + i);\n            const sub = subtrahend.__digit(i);\n            const r0 = (current & 0x7FFF) - (sub & 0x7FFF) - borrow;\n            borrow = (r0 >>> 15) & 1;\n            let r15 = 0;\n            if ((halfDigits & 1) === 0) {\n                r15 = (current >>> 15) - (sub >>> 15) - borrow;\n                borrow = (r15 >>> 15) & 1;\n            }\n            this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n        }\n        return borrow;\n    }\n    __inplaceRightShift(shift) {\n        if (shift === 0)\n            return;\n        let carry = this.__digit(0) >>> shift;\n        const last = this.length - 1;\n        for (let i = 0; i < last; i++) {\n            const d = this.__digit(i + 1);\n            this.__setDigit(i, ((d << (30 - shift)) & 0x3FFFFFFF) | carry);\n            carry = d >>> shift;\n        }\n        this.__setDigit(last, carry);\n    }\n    static __specialLeftShift(x, shift, addDigit) {\n        const n = x.length;\n        const resultLength = n + addDigit;\n        const result = new JSBI(resultLength, false);\n        if (shift === 0) {\n            for (let i = 0; i < n; i++)\n                result.__setDigit(i, x.__digit(i));\n            if (addDigit > 0)\n                result.__setDigit(n, 0);\n            return result;\n        }\n        let carry = 0;\n        for (let i = 0; i < n; i++) {\n            const d = x.__digit(i);\n            result.__setDigit(i, ((d << shift) & 0x3FFFFFFF) | carry);\n            carry = d >>> (30 - shift);\n        }\n        if (addDigit > 0) {\n            result.__setDigit(n, carry);\n        }\n        return result;\n    }\n    static __leftShiftByAbsolute(x, y) {\n        const shift = JSBI.__toShiftAmount(y);\n        if (shift < 0)\n            throw new RangeError('BigInt too big');\n        const digitShift = (shift / 30) | 0;\n        const bitsShift = shift % 30;\n        const length = x.length;\n        const grow = bitsShift !== 0 &&\n            (x.__digit(length - 1) >>> (30 - bitsShift)) !== 0;\n        const resultLength = length + digitShift + (grow ? 1 : 0);\n        const result = new JSBI(resultLength, x.sign);\n        if (bitsShift === 0) {\n            let i = 0;\n            for (; i < digitShift; i++)\n                result.__setDigit(i, 0);\n            for (; i < resultLength; i++) {\n                result.__setDigit(i, x.__digit(i - digitShift));\n            }\n        }\n        else {\n            let carry = 0;\n            for (let i = 0; i < digitShift; i++)\n                result.__setDigit(i, 0);\n            for (let i = 0; i < length; i++) {\n                const d = x.__digit(i);\n                result.__setDigit(i + digitShift, ((d << bitsShift) & 0x3FFFFFFF) | carry);\n                carry = d >>> (30 - bitsShift);\n            }\n            if (grow) {\n                result.__setDigit(length + digitShift, carry);\n            }\n            else {\n                if (carry !== 0)\n                    throw new Error('implementation bug');\n            }\n        }\n        return result.__trim();\n    }\n    static __rightShiftByAbsolute(x, y) {\n        const length = x.length;\n        const sign = x.sign;\n        const shift = JSBI.__toShiftAmount(y);\n        if (shift < 0)\n            return JSBI.__rightShiftByMaximum(sign);\n        const digitShift = (shift / 30) | 0;\n        const bitsShift = shift % 30;\n        let resultLength = length - digitShift;\n        if (resultLength <= 0)\n            return JSBI.__rightShiftByMaximum(sign);\n        // For negative numbers, round down if any bit was shifted out (so that\n        // e.g. -5n >> 1n == -3n and not -2n). Check now whether this will happen\n        // and whether itc an cause overflow into a new digit. If we allocate the\n        // result large enough up front, it avoids having to do grow it later.\n        let mustRoundDown = false;\n        if (sign) {\n            const mask = (1 << bitsShift) - 1;\n            if ((x.__digit(digitShift) & mask) !== 0) {\n                mustRoundDown = true;\n            }\n            else {\n                for (let i = 0; i < digitShift; i++) {\n                    if (x.__digit(i) !== 0) {\n                        mustRoundDown = true;\n                        break;\n                    }\n                }\n            }\n        }\n        // If bitsShift is non-zero, it frees up bits, preventing overflow.\n        if (mustRoundDown && bitsShift === 0) {\n            // Overflow cannot happen if the most significant digit has unset bits.\n            const msd = x.__digit(length - 1);\n            const roundingCanOverflow = ~msd === 0;\n            if (roundingCanOverflow)\n                resultLength++;\n        }\n        let result = new JSBI(resultLength, sign);\n        if (bitsShift === 0) {\n            // Zero out any overflow digit (see \"roundingCanOverflow\" above).\n            result.__setDigit(resultLength - 1, 0);\n            for (let i = digitShift; i < length; i++) {\n                result.__setDigit(i - digitShift, x.__digit(i));\n            }\n        }\n        else {\n            let carry = x.__digit(digitShift) >>> bitsShift;\n            const last = length - digitShift - 1;\n            for (let i = 0; i < last; i++) {\n                const d = x.__digit(i + digitShift + 1);\n                result.__setDigit(i, ((d << (30 - bitsShift)) & 0x3FFFFFFF) | carry);\n                carry = d >>> bitsShift;\n            }\n            result.__setDigit(last, carry);\n        }\n        if (mustRoundDown) {\n            // Since the result is negative, rounding down means adding one to its\n            // absolute value. This cannot overflow.\n            result = JSBI.__absoluteAddOne(result, true, result);\n        }\n        return result.__trim();\n    }\n    static __rightShiftByMaximum(sign) {\n        if (sign) {\n            return JSBI.__oneDigit(1, true);\n        }\n        return JSBI.__zero();\n    }\n    static __toShiftAmount(x) {\n        if (x.length > 1)\n            return -1;\n        const value = x.__unsignedDigit(0);\n        if (value > JSBI.__kMaxLengthBits)\n            return -1;\n        return value;\n    }\n    static __toPrimitive(obj, hint = 'default') {\n        if (typeof obj !== 'object')\n            return obj;\n        if (obj.constructor === JSBI)\n            return obj;\n        if (typeof Symbol !== 'undefined' &&\n            typeof Symbol.toPrimitive === 'symbol') {\n            const exoticToPrim = obj[Symbol.toPrimitive];\n            if (exoticToPrim) {\n                const primitive = exoticToPrim(hint);\n                if (typeof primitive !== 'object')\n                    return primitive;\n                throw new TypeError('Cannot convert object to primitive value');\n            }\n        }\n        const valueOf = obj.valueOf;\n        if (valueOf) {\n            const primitive = valueOf.call(obj);\n            if (typeof primitive !== 'object')\n                return primitive;\n        }\n        const toString = obj.toString;\n        if (toString) {\n            const primitive = toString.call(obj);\n            if (typeof primitive !== 'object')\n                return primitive;\n        }\n        throw new TypeError('Cannot convert object to primitive value');\n    }\n    static __toNumeric(value) {\n        if (JSBI.__isBigInt(value))\n            return value;\n        return +value;\n    }\n    static __isBigInt(value) {\n        return typeof value === 'object' && value !== null &&\n            value.constructor === JSBI;\n    }\n    static __truncateToNBits(n, x) {\n        const neededDigits = ((n + 29) / 30) | 0;\n        const result = new JSBI(neededDigits, x.sign);\n        const last = neededDigits - 1;\n        for (let i = 0; i < last; i++) {\n            result.__setDigit(i, x.__digit(i));\n        }\n        let msd = x.__digit(last);\n        if ((n % 30) !== 0) {\n            const drop = 32 - (n % 30);\n            msd = (msd << drop) >>> drop;\n        }\n        result.__setDigit(last, msd);\n        return result.__trim();\n    }\n    static __truncateAndSubFromPowerOfTwo(n, x, resultSign) {\n        const neededDigits = ((n + 29) / 30) | 0;\n        const result = new JSBI(neededDigits, resultSign);\n        let i = 0;\n        const last = neededDigits - 1;\n        let borrow = 0;\n        const limit = Math.min(last, x.length);\n        for (; i < limit; i++) {\n            const r = 0 - x.__digit(i) - borrow;\n            borrow = (r >>> 30) & 1;\n            result.__setDigit(i, r & 0x3FFFFFFF);\n        }\n        for (; i < last; i++) {\n            result.__setDigit(i, (-borrow & 0x3FFFFFFF) | 0);\n        }\n        let msd = last < x.length ? x.__digit(last) : 0;\n        const msdBitsConsumed = n % 30;\n        let resultMsd;\n        if (msdBitsConsumed === 0) {\n            resultMsd = 0 - msd - borrow;\n            resultMsd &= 0x3FFFFFFF;\n        }\n        else {\n            const drop = 32 - msdBitsConsumed;\n            msd = (msd << drop) >>> drop;\n            const minuendMsd = 1 << (32 - drop);\n            resultMsd = minuendMsd - msd - borrow;\n            resultMsd &= (minuendMsd - 1);\n        }\n        result.__setDigit(last, resultMsd);\n        return result.__trim();\n    }\n    // Digit helpers.\n    __digit(i) {\n        return this[i];\n    }\n    __unsignedDigit(i) {\n        return this[i] >>> 0;\n    }\n    __setDigit(i, digit) {\n        this[i] = digit | 0;\n    }\n    __setDigitGrow(i, digit) {\n        this[i] = digit | 0;\n    }\n    __halfDigitLength() {\n        const len = this.length;\n        if (this.__unsignedDigit(len - 1) <= 0x7FFF)\n            return len * 2 - 1;\n        return len * 2;\n    }\n    __halfDigit(i) {\n        return (this[i >>> 1] >>> ((i & 1) * 15)) & 0x7FFF;\n    }\n    __setHalfDigit(i, value) {\n        const digitIndex = i >>> 1;\n        const previous = this.__digit(digitIndex);\n        const updated = (i & 1) ? (previous & 0x7FFF) | (value << 15)\n            : (previous & 0x3FFF8000) | (value & 0x7FFF);\n        this.__setDigit(digitIndex, updated);\n    }\n    static __digitPow(base, exponent) {\n        let result = 1;\n        while (exponent > 0) {\n            if (exponent & 1)\n                result *= base;\n            exponent >>>= 1;\n            base *= base;\n        }\n        return result;\n    }\n    static __isOneDigitInt(x) {\n        return (x & 0x3FFFFFFF) === x;\n    }\n}\nJSBI.__kMaxLength = 1 << 25;\nJSBI.__kMaxLengthBits = JSBI.__kMaxLength << 5;\n// Lookup table for the maximum number of bits required per character of a\n// base-N string representation of a number. To increase accuracy, the array\n// value is the actual value multiplied by 32. To generate this table:\n//\n// for (let i = 0; i <= 36; i++) {\n//   console.log(Math.ceil(Math.log2(i) * 32) + ',');\n// }\nJSBI.__kMaxBitsPerChar = [\n    0, 0, 32, 51, 64, 75, 83, 90, 96,\n    102, 107, 111, 115, 119, 122, 126, 128,\n    131, 134, 136, 139, 141, 143, 145, 147,\n    149, 151, 153, 154, 156, 158, 159, 160,\n    162, 163, 165, 166, // 33..36\n];\nJSBI.__kBitsPerCharTableShift = 5;\nJSBI.__kBitsPerCharTableMultiplier = 1 << JSBI.__kBitsPerCharTableShift;\nJSBI.__kConversionChars = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nJSBI.__kBitConversionBuffer = new ArrayBuffer(8);\nJSBI.__kBitConversionDouble = new Float64Array(JSBI.__kBitConversionBuffer);\nJSBI.__kBitConversionInts = new Int32Array(JSBI.__kBitConversionBuffer);\n// For IE11 compatibility.\n// Note that the custom replacements are tailored for JSBI's needs, and as\n// such are not reusable as general-purpose polyfills.\nJSBI.__clz30 = Math.clz32 ? function (x) {\n    return Math.clz32(x) - 2;\n} : function (x) {\n    if (x === 0)\n        return 30;\n    return 29 - (Math.log(x >>> 0) / Math.LN2 | 0) | 0;\n};\nJSBI.__imul = Math.imul || function (a, b) {\n    return (a * b) | 0;\n};\nexport default JSBI;\n//# sourceMappingURL=jsbi.js.map", "'use strict'\n\nexports.supports = function supports (...manifests) {\n  const manifest = manifests.reduce((acc, m) => Object.assign(acc, m), {})\n\n  return Object.assign(manifest, {\n    snapshots: manifest.snapshots || false,\n    permanence: manifest.permanence || false,\n    seek: manifest.seek || false,\n    clear: manifest.clear || false,\n    getMany: manifest.getMany || false,\n    keyIterator: manifest.keyIterator || false,\n    valueIterator: manifest.valueIterator || false,\n    iteratorNextv: manifest.iteratorNextv || false,\n    iteratorAll: manifest.iteratorAll || false,\n    status: manifest.status || false,\n    createIfMissing: manifest.createIfMissing || false,\n    errorIfExists: manifest.errorIfExists || false,\n    deferredOpen: manifest.deferredOpen || false,\n    promises: manifest.promises || false,\n    streams: manifest.streams || false,\n    encodings: Object.assign({}, manifest.encodings),\n    events: Object.assign({}, manifest.events),\n    additionalMethods: Object.assign({}, manifest.additionalMethods)\n  })\n}\n", "'use strict'\n\nmodule.exports = class ModuleError extends Error {\n  /**\n   * @param {string} message Error message\n   * @param {{ code?: string, cause?: Error, expected?: boolean, transient?: boolean }} [options]\n   */\n  constructor (message, options) {\n    super(message || '')\n\n    if (typeof options === 'object' && options !== null) {\n      if (options.code) this.code = String(options.code)\n      if (options.expected) this.expected = true\n      if (options.transient) this.transient = true\n      if (options.cause) this.cause = options.cause\n    }\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor)\n    }\n  }\n}\n", "'use strict'\n\n/** @type {{ textEncoder: TextEncoder, textDecoder: TextDecoder }|null} */\nlet lazy = null\n\n/**\n * Get semi-global instances of TextEncoder and TextDecoder.\n * @returns {{ textEncoder: TextEncoder, textDecoder: TextDecoder }}\n */\nmodule.exports = function () {\n  if (lazy === null) {\n    lazy = {\n      textEncoder: new TextEncoder(),\n      textDecoder: new TextDecoder()\n    }\n  }\n\n  return lazy\n}\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst formats = new Set(['buffer', 'view', 'utf8'])\n\n/**\n * @template TIn, TFormat, TOut\n * @abstract\n */\nclass Encoding {\n  /**\n   * @param {IEncoding<TIn,TFormat,TOut>} options\n   */\n  constructor (options) {\n    /** @type {(data: TIn) => TFormat} */\n    this.encode = options.encode || this.encode\n\n    /** @type {(data: TFormat) => TOut} */\n    this.decode = options.decode || this.decode\n\n    /** @type {string} */\n    this.name = options.name || this.name\n\n    /** @type {string} */\n    this.format = options.format || this.format\n\n    if (typeof this.encode !== 'function') {\n      throw new TypeError(\"The 'encode' property must be a function\")\n    }\n\n    if (typeof this.decode !== 'function') {\n      throw new TypeError(\"The 'decode' property must be a function\")\n    }\n\n    this.encode = this.encode.bind(this)\n    this.decode = this.decode.bind(this)\n\n    if (typeof this.name !== 'string' || this.name === '') {\n      throw new TypeError(\"The 'name' property must be a string\")\n    }\n\n    if (typeof this.format !== 'string' || !formats.has(this.format)) {\n      throw new TypeError(\"The 'format' property must be one of 'buffer', 'view', 'utf8'\")\n    }\n\n    if (options.createViewTranscoder) {\n      this.createViewTranscoder = options.createViewTranscoder\n    }\n\n    if (options.createBufferTranscoder) {\n      this.createBufferTranscoder = options.createBufferTranscoder\n    }\n\n    if (options.createUTF8Transcoder) {\n      this.createUTF8Transcoder = options.createUTF8Transcoder\n    }\n  }\n\n  get commonName () {\n    return /** @type {string} */ (this.name.split('+')[0])\n  }\n\n  /** @return {BufferFormat<TIn,TOut>} */\n  createBufferTranscoder () {\n    throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'buffer'`, {\n      code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n    })\n  }\n\n  /** @return {ViewFormat<TIn,TOut>} */\n  createViewTranscoder () {\n    throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'view'`, {\n      code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n    })\n  }\n\n  /** @return {UTF8Format<TIn,TOut>} */\n  createUTF8Transcoder () {\n    throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'utf8'`, {\n      code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n    })\n  }\n}\n\nexports.Encoding = Encoding\n\n/**\n * @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @typedef {import('./formats').BufferFormat<TIn,TOut>} BufferFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').ViewFormat<TIn,TOut>} ViewFormat\n * @template TIn, TOut\n */\n\n/**\n * @typedef {import('./formats').UTF8Format<TIn,TOut>} UTF8Format\n * @template TIn, TOut\n */\n", "'use strict'\n\nconst { Buffer } = require('buffer') || {}\nconst { Encoding } = require('./encoding')\nconst textEndec = require('./text-endec')\n\n/**\n * @template TIn, TOut\n * @extends {Encoding<TIn,Buffer,TOut>}\n */\nclass BufferFormat extends Encoding {\n  /**\n   * @param {Omit<IEncoding<TIn, Buffer, TOut>, 'format'>} options\n   */\n  constructor (options) {\n    super({ ...options, format: 'buffer' })\n  }\n\n  /** @override */\n  createViewTranscoder () {\n    return new ViewFormat({\n      encode: this.encode, // Buffer is a view (UInt8Array)\n      decode: (data) => this.decode(\n        Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n      ),\n      name: `${this.name}+view`\n    })\n  }\n\n  /** @override */\n  createBufferTranscoder () {\n    return this\n  }\n}\n\n/**\n * @extends {Encoding<TIn,Uint8Array,TOut>}\n * @template TIn, TOut\n */\nclass ViewFormat extends Encoding {\n  /**\n   * @param {Omit<IEncoding<TIn, Uint8Array, TOut>, 'format'>} options\n   */\n  constructor (options) {\n    super({ ...options, format: 'view' })\n  }\n\n  /** @override */\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: (data) => {\n        const view = this.encode(data)\n        return Buffer.from(view.buffer, view.byteOffset, view.byteLength)\n      },\n      decode: this.decode, // Buffer is a view (UInt8Array)\n      name: `${this.name}+buffer`\n    })\n  }\n\n  /** @override */\n  createViewTranscoder () {\n    return this\n  }\n}\n\n/**\n * @extends {Encoding<TIn,string,TOut>}\n * @template TIn, TOut\n */\nclass UTF8Format extends Encoding {\n  /**\n   * @param {Omit<IEncoding<TIn, string, TOut>, 'format'>} options\n   */\n  constructor (options) {\n    super({ ...options, format: 'utf8' })\n  }\n\n  /** @override */\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: (data) => Buffer.from(this.encode(data), 'utf8'),\n      decode: (data) => this.decode(data.toString('utf8')),\n      name: `${this.name}+buffer`\n    })\n  }\n\n  /** @override */\n  createViewTranscoder () {\n    const { textEncoder, textDecoder } = textEndec()\n\n    return new ViewFormat({\n      encode: (data) => textEncoder.encode(this.encode(data)),\n      decode: (data) => this.decode(textDecoder.decode(data)),\n      name: `${this.name}+view`\n    })\n  }\n\n  /** @override */\n  createUTF8Transcoder () {\n    return this\n  }\n}\n\nexports.BufferFormat = BufferFormat\nexports.ViewFormat = ViewFormat\nexports.UTF8Format = UTF8Format\n\n/**\n * @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding\n * @template TIn, TFormat, TOut\n */\n", "'use strict'\n\nconst { Buffer } = require('buffer') || { Buffer: { isBuffer: () => false } }\nconst { textEncoder, textDecoder } = require('./text-endec')()\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./formats')\n\n/** @type {<T>(v: T) => v} */\nconst identity = (v) => v\n\n/**\n * @type {typeof import('./encodings').utf8}\n */\nexports.utf8 = new UTF8Format({\n  encode: function (data) {\n    // On node 16.9.1 buffer.toString() is 5x faster than TextDecoder\n    return Buffer.isBuffer(data)\n      ? data.toString('utf8')\n      : ArrayBuffer.isView(data)\n        ? textDecoder.decode(data)\n        : String(data)\n  },\n  decode: identity,\n  name: 'utf8',\n  createViewTranscoder () {\n    return new ViewFormat({\n      encode: function (data) {\n        return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n      },\n      decode: function (data) {\n        return textDecoder.decode(data)\n      },\n      name: `${this.name}+view`\n    })\n  },\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: function (data) {\n        return Buffer.isBuffer(data)\n          ? data\n          : ArrayBuffer.isView(data)\n            ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n            : Buffer.from(String(data), 'utf8')\n      },\n      decode: function (data) {\n        return data.toString('utf8')\n      },\n      name: `${this.name}+buffer`\n    })\n  }\n})\n\n/**\n * @type {typeof import('./encodings').json}\n */\nexports.json = new UTF8Format({\n  encode: JSON.stringify,\n  decode: JSON.parse,\n  name: 'json'\n})\n\n/**\n * @type {typeof import('./encodings').buffer}\n */\nexports.buffer = new BufferFormat({\n  encode: function (data) {\n    return Buffer.isBuffer(data)\n      ? data\n      : ArrayBuffer.isView(data)\n        ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n        : Buffer.from(String(data), 'utf8')\n  },\n  decode: identity,\n  name: 'buffer',\n  createViewTranscoder () {\n    return new ViewFormat({\n      encode: function (data) {\n        return ArrayBuffer.isView(data) ? data : Buffer.from(String(data), 'utf8')\n      },\n      decode: function (data) {\n        return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n      },\n      name: `${this.name}+view`\n    })\n  }\n})\n\n/**\n * @type {typeof import('./encodings').view}\n */\nexports.view = new ViewFormat({\n  encode: function (data) {\n    return ArrayBuffer.isView(data) ? data : textEncoder.encode(data)\n  },\n  decode: identity,\n  name: 'view',\n  createBufferTranscoder () {\n    return new BufferFormat({\n      encode: function (data) {\n        return Buffer.isBuffer(data)\n          ? data\n          : ArrayBuffer.isView(data)\n            ? Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n            : Buffer.from(String(data), 'utf8')\n      },\n      decode: identity,\n      name: `${this.name}+buffer`\n    })\n  }\n})\n\n/**\n * @type {typeof import('./encodings').hex}\n */\nexports.hex = new BufferFormat({\n  encode: function (data) {\n    return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'hex')\n  },\n  decode: function (buffer) {\n    return buffer.toString('hex')\n  },\n  name: 'hex'\n})\n\n/**\n * @type {typeof import('./encodings').base64}\n */\nexports.base64 = new BufferFormat({\n  encode: function (data) {\n    return Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'base64')\n  },\n  decode: function (buffer) {\n    return buffer.toString('base64')\n  },\n  name: 'base64'\n})\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst encodings = require('./lib/encodings')\nconst { Encoding } = require('./lib/encoding')\nconst { BufferFormat, ViewFormat, UTF8Format } = require('./lib/formats')\n\nconst kFormats = Symbol('formats')\nconst kEncodings = Symbol('encodings')\nconst validFormats = new Set(['buffer', 'view', 'utf8'])\n\n/** @template T */\nclass Transcoder {\n  /**\n   * @param {Array<'buffer'|'view'|'utf8'>} formats\n   */\n  constructor (formats) {\n    if (!Array.isArray(formats)) {\n      throw new TypeError(\"The first argument 'formats' must be an array\")\n    } else if (!formats.every(f => validFormats.has(f))) {\n      // Note: we only only support aliases in key- and valueEncoding options (where we already did)\n      throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n    }\n\n    /** @type {Map<string|MixedEncoding<any, any, any>, Encoding<any, any, any>>} */\n    this[kEncodings] = new Map()\n    this[kFormats] = new Set(formats)\n\n    // Register encodings (done early in order to populate encodings())\n    for (const k in encodings) {\n      try {\n        this.encoding(k)\n      } catch (err) {\n        /* istanbul ignore if: assertion */\n        if (err.code !== 'LEVEL_ENCODING_NOT_SUPPORTED') throw err\n      }\n    }\n  }\n\n  /**\n   * @returns {Array<Encoding<any,T,any>>}\n   */\n  encodings () {\n    return Array.from(new Set(this[kEncodings].values()))\n  }\n\n  /**\n   * @param {string|MixedEncoding<any, any, any>} encoding\n   * @returns {Encoding<any, T, any>}\n   */\n  encoding (encoding) {\n    let resolved = this[kEncodings].get(encoding)\n\n    if (resolved === undefined) {\n      if (typeof encoding === 'string' && encoding !== '') {\n        resolved = lookup[encoding]\n\n        if (!resolved) {\n          throw new ModuleError(`Encoding '${encoding}' is not found`, {\n            code: 'LEVEL_ENCODING_NOT_FOUND'\n          })\n        }\n      } else if (typeof encoding !== 'object' || encoding === null) {\n        throw new TypeError(\"First argument 'encoding' must be a string or object\")\n      } else {\n        resolved = from(encoding)\n      }\n\n      const { name, format } = resolved\n\n      if (!this[kFormats].has(format)) {\n        if (this[kFormats].has('view')) {\n          resolved = resolved.createViewTranscoder()\n        } else if (this[kFormats].has('buffer')) {\n          resolved = resolved.createBufferTranscoder()\n        } else if (this[kFormats].has('utf8')) {\n          resolved = resolved.createUTF8Transcoder()\n        } else {\n          throw new ModuleError(`Encoding '${name}' cannot be transcoded`, {\n            code: 'LEVEL_ENCODING_NOT_SUPPORTED'\n          })\n        }\n      }\n\n      for (const k of [encoding, name, resolved.name, resolved.commonName]) {\n        this[kEncodings].set(k, resolved)\n      }\n    }\n\n    return resolved\n  }\n}\n\nexports.Transcoder = Transcoder\n\n/**\n * @param {MixedEncoding<any, any, any>} options\n * @returns {Encoding<any, any, any>}\n */\nfunction from (options) {\n  if (options instanceof Encoding) {\n    return options\n  }\n\n  // Loosely typed for ecosystem compatibility\n  const maybeType = 'type' in options && typeof options.type === 'string' ? options.type : undefined\n  const name = options.name || maybeType || `anonymous-${anonymousCount++}`\n\n  switch (detectFormat(options)) {\n    case 'view': return new ViewFormat({ ...options, name })\n    case 'utf8': return new UTF8Format({ ...options, name })\n    case 'buffer': return new BufferFormat({ ...options, name })\n    default: {\n      throw new TypeError(\"Format must be one of 'buffer', 'view', 'utf8'\")\n    }\n  }\n}\n\n/**\n * If format is not provided, fallback to detecting `level-codec`\n * or `multiformats` encodings, else assume a format of buffer.\n * @param {MixedEncoding<any, any, any>} options\n * @returns {string}\n */\nfunction detectFormat (options) {\n  if ('format' in options && options.format !== undefined) {\n    return options.format\n  } else if ('buffer' in options && typeof options.buffer === 'boolean') {\n    return options.buffer ? 'buffer' : 'utf8' // level-codec\n  } else if ('code' in options && Number.isInteger(options.code)) {\n    return 'view' // multiformats\n  } else {\n    return 'buffer'\n  }\n}\n\n/**\n * @typedef {import('./lib/encoding').MixedEncoding<TIn,TFormat,TOut>} MixedEncoding\n * @template TIn, TFormat, TOut\n */\n\n/**\n * @type {Object.<string, Encoding<any, any, any>>}\n */\nconst aliases = {\n  binary: encodings.buffer,\n  'utf-8': encodings.utf8\n}\n\n/**\n * @type {Object.<string, Encoding<any, any, any>>}\n */\nconst lookup = {\n  ...encodings,\n  ...aliases\n}\n\nlet anonymousCount = 0\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n", "module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n", "'use strict'\n\nvar nextTick = require('./next-tick')\n\nexports.fromCallback = function (callback, symbol) {\n  if (callback === undefined) {\n    var promise = new Promise(function (resolve, reject) {\n      callback = function (err, res) {\n        if (err) reject(err)\n        else resolve(res)\n      }\n    })\n\n    callback[symbol !== undefined ? symbol : 'promise'] = promise\n  } else if (typeof callback !== 'function') {\n    throw new TypeError('Callback must be a function')\n  }\n\n  return callback\n}\n\nexports.fromPromise = function (promise, callback) {\n  if (callback === undefined) return promise\n\n  promise\n    .then(function (res) { nextTick(() => callback(null, res)) })\n    .catch(function (err) { nextTick(() => callback(err)) })\n}\n", "'use strict'\n\nexports.getCallback = function (options, callback) {\n  return typeof options === 'function' ? options : callback\n}\n\nexports.getOptions = function (options, def) {\n  if (typeof options === 'object' && options !== null) {\n    return options\n  }\n\n  if (def !== undefined) {\n    return def\n  }\n\n  return {}\n}\n", "'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getOptions, getCallback } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kCallback = Symbol('callback')\nconst kWorking = Symbol('working')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kAutoClose = Symbol('autoClose')\nconst kFinishWork = Symbol('finishWork')\nconst kReturnMany = Symbol('returnMany')\nconst kClosing = Symbol('closing')\nconst kHandleClose = Symbol('handleClose')\nconst kClosed = Symbol('closed')\nconst kCloseCallbacks = Symbol('closeCallbacks')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst kAbortOnClose = Symbol('abortOnClose')\nconst kLegacy = Symbol('legacy')\nconst kKeys = Symbol('keys')\nconst kValues = Symbol('values')\nconst kLimit = Symbol('limit')\nconst kCount = Symbol('count')\n\nconst emptyOptions = Object.freeze({})\nconst noop = () => {}\nlet warnedEnd = false\n\n// This class is an internal utility for common functionality between AbstractIterator,\n// AbstractKeyIterator and AbstractValueIterator. It's not exported.\nclass CommonIterator {\n  constructor (db, options, legacy) {\n    if (typeof db !== 'object' || db === null) {\n      const hint = db === null ? 'null' : typeof db\n      throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n    }\n\n    if (typeof options !== 'object' || options === null) {\n      throw new TypeError('The second argument must be an options object')\n    }\n\n    this[kClosed] = false\n    this[kCloseCallbacks] = []\n    this[kWorking] = false\n    this[kClosing] = false\n    this[kAutoClose] = false\n    this[kCallback] = null\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n    this[kHandleClose] = this[kHandleClose].bind(this)\n    this[kKeyEncoding] = options[kKeyEncoding]\n    this[kValueEncoding] = options[kValueEncoding]\n    this[kLegacy] = legacy\n    this[kLimit] = Number.isInteger(options.limit) && options.limit >= 0 ? options.limit : Infinity\n    this[kCount] = 0\n\n    // Undocumented option to abort pending work on close(). Used by the\n    // many-level module as a temporary solution to a blocked close().\n    // TODO (next major): consider making this the default behavior. Native\n    // implementations should have their own logic to safely close iterators.\n    this[kAbortOnClose] = !!options.abortOnClose\n\n    this.db = db\n    this.db.attachResource(this)\n    this.nextTick = db.nextTick\n  }\n\n  get count () {\n    return this[kCount]\n  }\n\n  get limit () {\n    return this[kLimit]\n  }\n\n  next (callback) {\n    let promise\n\n    if (callback === undefined) {\n      promise = new Promise((resolve, reject) => {\n        callback = (err, key, value) => {\n          if (err) reject(err)\n          else if (!this[kLegacy]) resolve(key)\n          else if (key === undefined && value === undefined) resolve()\n          else resolve([key, value])\n        }\n      })\n    } else if (typeof callback !== 'function') {\n      throw new TypeError('Callback must be a function')\n    }\n\n    if (this[kClosing]) {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    } else if (this[kWorking]) {\n      this.nextTick(callback, new ModuleError('Iterator is busy: cannot call next() until previous call has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      }))\n    } else {\n      this[kWorking] = true\n      this[kCallback] = callback\n\n      if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleOne], null)\n      else this._next(this[kHandleOne])\n    }\n\n    return promise\n  }\n\n  _next (callback) {\n    this.nextTick(callback)\n  }\n\n  nextv (size, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, emptyOptions)\n\n    if (!Number.isInteger(size)) {\n      this.nextTick(callback, new TypeError(\"The first argument 'size' must be an integer\"))\n      return callback[kPromise]\n    }\n\n    if (this[kClosing]) {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    } else if (this[kWorking]) {\n      this.nextTick(callback, new ModuleError('Iterator is busy: cannot call nextv() until previous call has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      }))\n    } else {\n      if (size < 1) size = 1\n      if (this[kLimit] < Infinity) size = Math.min(size, this[kLimit] - this[kCount])\n\n      this[kWorking] = true\n      this[kCallback] = callback\n\n      if (size <= 0) this.nextTick(this[kHandleMany], null, [])\n      else this._nextv(size, options, this[kHandleMany])\n    }\n\n    return callback[kPromise]\n  }\n\n  _nextv (size, options, callback) {\n    const acc = []\n    const onnext = (err, key, value) => {\n      if (err) {\n        return callback(err)\n      } else if (this[kLegacy] ? key === undefined && value === undefined : key === undefined) {\n        return callback(null, acc)\n      }\n\n      acc.push(this[kLegacy] ? [key, value] : key)\n\n      if (acc.length === size) {\n        callback(null, acc)\n      } else {\n        this._next(onnext)\n      }\n    }\n\n    this._next(onnext)\n  }\n\n  all (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, emptyOptions)\n\n    if (this[kClosing]) {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    } else if (this[kWorking]) {\n      this.nextTick(callback, new ModuleError('Iterator is busy: cannot call all() until previous call has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      }))\n    } else {\n      this[kWorking] = true\n      this[kCallback] = callback\n      this[kAutoClose] = true\n\n      if (this[kCount] >= this[kLimit]) this.nextTick(this[kHandleMany], null, [])\n      else this._all(options, this[kHandleMany])\n    }\n\n    return callback[kPromise]\n  }\n\n  _all (options, callback) {\n    // Must count here because we're directly calling _nextv()\n    let count = this[kCount]\n    const acc = []\n\n    const nextv = () => {\n      // Not configurable, because implementations should optimize _all().\n      const size = this[kLimit] < Infinity ? Math.min(1e3, this[kLimit] - count) : 1e3\n\n      if (size <= 0) {\n        this.nextTick(callback, null, acc)\n      } else {\n        this._nextv(size, emptyOptions, onnextv)\n      }\n    }\n\n    const onnextv = (err, items) => {\n      if (err) {\n        callback(err)\n      } else if (items.length === 0) {\n        callback(null, acc)\n      } else {\n        acc.push.apply(acc, items)\n        count += items.length\n        nextv()\n      }\n    }\n\n    nextv()\n  }\n\n  [kFinishWork] () {\n    const cb = this[kCallback]\n\n    // Callback will be null if work was aborted on close\n    if (this[kAbortOnClose] && cb === null) return noop\n\n    this[kWorking] = false\n    this[kCallback] = null\n\n    if (this[kClosing]) this._close(this[kHandleClose])\n\n    return cb\n  }\n\n  [kReturnMany] (cb, err, items) {\n    if (this[kAutoClose]) {\n      this.close(cb.bind(null, err, items))\n    } else {\n      cb(err, items)\n    }\n  }\n\n  seek (target, options) {\n    options = getOptions(options, emptyOptions)\n\n    if (this[kClosing]) {\n      // Don't throw here, to be kind to implementations that wrap\n      // another db and don't necessarily control when the db is closed\n    } else if (this[kWorking]) {\n      throw new ModuleError('Iterator is busy: cannot call seek() until next() has completed', {\n        code: 'LEVEL_ITERATOR_BUSY'\n      })\n    } else {\n      const keyEncoding = this.db.keyEncoding(options.keyEncoding || this[kKeyEncoding])\n      const keyFormat = keyEncoding.format\n\n      if (options.keyEncoding !== keyFormat) {\n        options = { ...options, keyEncoding: keyFormat }\n      }\n\n      const mapped = this.db.prefixKey(keyEncoding.encode(target), keyFormat)\n      this._seek(mapped, options)\n    }\n  }\n\n  _seek (target, options) {\n    throw new ModuleError('Iterator does not support seek()', {\n      code: 'LEVEL_NOT_SUPPORTED'\n    })\n  }\n\n  close (callback) {\n    callback = fromCallback(callback, kPromise)\n\n    if (this[kClosed]) {\n      this.nextTick(callback)\n    } else if (this[kClosing]) {\n      this[kCloseCallbacks].push(callback)\n    } else {\n      this[kClosing] = true\n      this[kCloseCallbacks].push(callback)\n\n      if (!this[kWorking]) {\n        this._close(this[kHandleClose])\n      } else if (this[kAbortOnClose]) {\n        // Don't wait for work to finish. Subsequently ignore the result.\n        const cb = this[kFinishWork]()\n\n        cb(new ModuleError('Aborted on iterator close()', {\n          code: 'LEVEL_ITERATOR_NOT_OPEN'\n        }))\n      }\n    }\n\n    return callback[kPromise]\n  }\n\n  _close (callback) {\n    this.nextTick(callback)\n  }\n\n  [kHandleClose] () {\n    this[kClosed] = true\n    this.db.detachResource(this)\n\n    const callbacks = this[kCloseCallbacks]\n    this[kCloseCallbacks] = []\n\n    for (const cb of callbacks) {\n      cb()\n    }\n  }\n\n  async * [Symbol.asyncIterator] () {\n    try {\n      let item\n\n      while ((item = (await this.next())) !== undefined) {\n        yield item\n      }\n    } finally {\n      if (!this[kClosed]) await this.close()\n    }\n  }\n}\n\n// For backwards compatibility this class is not (yet) called AbstractEntryIterator.\nclass AbstractIterator extends CommonIterator {\n  constructor (db, options) {\n    super(db, options, true)\n    this[kKeys] = options.keys !== false\n    this[kValues] = options.values !== false\n  }\n\n  [kHandleOne] (err, key, value) {\n    const cb = this[kFinishWork]()\n    if (err) return cb(err)\n\n    try {\n      key = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n      value = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n    } catch (err) {\n      return cb(new IteratorDecodeError('entry', err))\n    }\n\n    if (!(key === undefined && value === undefined)) {\n      this[kCount]++\n    }\n\n    cb(null, key, value)\n  }\n\n  [kHandleMany] (err, entries) {\n    const cb = this[kFinishWork]()\n    if (err) return this[kReturnMany](cb, err)\n\n    try {\n      for (const entry of entries) {\n        const key = entry[0]\n        const value = entry[1]\n\n        entry[0] = this[kKeys] && key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n        entry[1] = this[kValues] && value !== undefined ? this[kValueEncoding].decode(value) : undefined\n      }\n    } catch (err) {\n      return this[kReturnMany](cb, new IteratorDecodeError('entries', err))\n    }\n\n    this[kCount] += entries.length\n    this[kReturnMany](cb, null, entries)\n  }\n\n  end (callback) {\n    if (!warnedEnd && typeof console !== 'undefined') {\n      warnedEnd = true\n      console.warn(new ModuleError(\n        'The iterator.end() method was renamed to close() and end() is an alias that will be removed in a future version',\n        { code: 'LEVEL_LEGACY' }\n      ))\n    }\n\n    return this.close(callback)\n  }\n}\n\nclass AbstractKeyIterator extends CommonIterator {\n  constructor (db, options) {\n    super(db, options, false)\n  }\n\n  [kHandleOne] (err, key) {\n    const cb = this[kFinishWork]()\n    if (err) return cb(err)\n\n    try {\n      key = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n    } catch (err) {\n      return cb(new IteratorDecodeError('key', err))\n    }\n\n    if (key !== undefined) this[kCount]++\n    cb(null, key)\n  }\n\n  [kHandleMany] (err, keys) {\n    const cb = this[kFinishWork]()\n    if (err) return this[kReturnMany](cb, err)\n\n    try {\n      for (let i = 0; i < keys.length; i++) {\n        const key = keys[i]\n        keys[i] = key !== undefined ? this[kKeyEncoding].decode(key) : undefined\n      }\n    } catch (err) {\n      return this[kReturnMany](cb, new IteratorDecodeError('keys', err))\n    }\n\n    this[kCount] += keys.length\n    this[kReturnMany](cb, null, keys)\n  }\n}\n\nclass AbstractValueIterator extends CommonIterator {\n  constructor (db, options) {\n    super(db, options, false)\n  }\n\n  [kHandleOne] (err, value) {\n    const cb = this[kFinishWork]()\n    if (err) return cb(err)\n\n    try {\n      value = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n    } catch (err) {\n      return cb(new IteratorDecodeError('value', err))\n    }\n\n    if (value !== undefined) this[kCount]++\n    cb(null, value)\n  }\n\n  [kHandleMany] (err, values) {\n    const cb = this[kFinishWork]()\n    if (err) return this[kReturnMany](cb, err)\n\n    try {\n      for (let i = 0; i < values.length; i++) {\n        const value = values[i]\n        values[i] = value !== undefined ? this[kValueEncoding].decode(value) : undefined\n      }\n    } catch (err) {\n      return this[kReturnMany](cb, new IteratorDecodeError('values', err))\n    }\n\n    this[kCount] += values.length\n    this[kReturnMany](cb, null, values)\n  }\n}\n\n// Internal utility, not typed or exported\nclass IteratorDecodeError extends ModuleError {\n  constructor (subject, cause) {\n    super(`Iterator could not decode ${subject}`, {\n      code: 'LEVEL_DECODE_ERROR',\n      cause\n    })\n  }\n}\n\n// To help migrating to abstract-level\nfor (const k of ['_ended property', '_nexting property', '_end method']) {\n  Object.defineProperty(AbstractIterator.prototype, k.split(' ')[0], {\n    get () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) },\n    set () { throw new ModuleError(`The ${k} has been removed`, { code: 'LEVEL_LEGACY' }) }\n  })\n}\n\n// Exposed so that AbstractLevel can set these options\nAbstractIterator.keyEncoding = kKeyEncoding\nAbstractIterator.valueEncoding = kValueEncoding\n\nexports.AbstractIterator = AbstractIterator\nexports.AbstractKeyIterator = AbstractKeyIterator\nexports.AbstractValueIterator = AbstractValueIterator\n", "'use strict'\n\nconst { AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kIterator = Symbol('iterator')\nconst kCallback = Symbol('callback')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\n\nclass DefaultKeyIterator extends AbstractKeyIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kIterator] = db.iterator({ ...options, keys: true, values: false })\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n  }\n}\n\nclass DefaultValueIterator extends AbstractValueIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kIterator] = db.iterator({ ...options, keys: false, values: true })\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n  }\n}\n\nfor (const Iterator of [DefaultKeyIterator, DefaultValueIterator]) {\n  const keys = Iterator === DefaultKeyIterator\n  const mapEntry = keys ? (entry) => entry[0] : (entry) => entry[1]\n\n  Iterator.prototype._next = function (callback) {\n    this[kCallback] = callback\n    this[kIterator].next(this[kHandleOne])\n  }\n\n  Iterator.prototype[kHandleOne] = function (err, key, value) {\n    const callback = this[kCallback]\n    if (err) callback(err)\n    else callback(null, keys ? key : value)\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    this[kCallback] = callback\n    this[kIterator].nextv(size, options, this[kHandleMany])\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    this[kCallback] = callback\n    this[kIterator].all(options, this[kHandleMany])\n  }\n\n  Iterator.prototype[kHandleMany] = function (err, entries) {\n    const callback = this[kCallback]\n    if (err) callback(err)\n    else callback(null, entries.map(mapEntry))\n  }\n\n  Iterator.prototype._seek = function (target, options) {\n    this[kIterator].seek(target, options)\n  }\n\n  Iterator.prototype._close = function (callback) {\n    this[kIterator].close(callback)\n  }\n}\n\n// Internal utilities, should be typed as AbstractKeyIterator and AbstractValueIterator\nexports.DefaultKeyIterator = DefaultKeyIterator\nexports.DefaultValueIterator = DefaultValueIterator\n", "'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\nconst ModuleError = require('module-error')\n\nconst kNut = Symbol('nut')\nconst kUndefer = Symbol('undefer')\nconst kFactory = Symbol('factory')\n\nclass DeferredIterator extends AbstractIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kNut] = null\n    this[kFactory] = () => db.iterator(options)\n\n    this.db.defer(() => this[kUndefer]())\n  }\n}\n\nclass DeferredKeyIterator extends AbstractKeyIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kNut] = null\n    this[kFactory] = () => db.keys(options)\n\n    this.db.defer(() => this[kUndefer]())\n  }\n}\n\nclass DeferredValueIterator extends AbstractValueIterator {\n  constructor (db, options) {\n    super(db, options)\n\n    this[kNut] = null\n    this[kFactory] = () => db.values(options)\n\n    this.db.defer(() => this[kUndefer]())\n  }\n}\n\nfor (const Iterator of [DeferredIterator, DeferredKeyIterator, DeferredValueIterator]) {\n  Iterator.prototype[kUndefer] = function () {\n    if (this.db.status === 'open') {\n      this[kNut] = this[kFactory]()\n    }\n  }\n\n  Iterator.prototype._next = function (callback) {\n    if (this[kNut] !== null) {\n      this[kNut].next(callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._next(callback))\n    } else {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call next() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    }\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    if (this[kNut] !== null) {\n      this[kNut].nextv(size, options, callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._nextv(size, options, callback))\n    } else {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call nextv() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    }\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    if (this[kNut] !== null) {\n      this[kNut].all(callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._all(options, callback))\n    } else {\n      this.nextTick(callback, new ModuleError('Iterator is not open: cannot call all() after close()', {\n        code: 'LEVEL_ITERATOR_NOT_OPEN'\n      }))\n    }\n  }\n\n  Iterator.prototype._seek = function (target, options) {\n    if (this[kNut] !== null) {\n      // TODO: explain why we need _seek() rather than seek() here\n      this[kNut]._seek(target, options)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._seek(target, options))\n    }\n  }\n\n  Iterator.prototype._close = function (callback) {\n    if (this[kNut] !== null) {\n      this[kNut].close(callback)\n    } else if (this.db.status === 'opening') {\n      this.db.defer(() => this._close(callback))\n    } else {\n      this.nextTick(callback)\n    }\n  }\n}\n\nexports.DeferredIterator = DeferredIterator\nexports.DeferredKeyIterator = DeferredKeyIterator\nexports.DeferredValueIterator = DeferredValueIterator\n", "'use strict'\n\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { getCallback, getOptions } = require('./lib/common')\n\nconst kPromise = Symbol('promise')\nconst kStatus = Symbol('status')\nconst kOperations = Symbol('operations')\nconst kFinishClose = Symbol('finishClose')\nconst kCloseCallbacks = Symbol('closeCallbacks')\n\nclass AbstractChainedBatch {\n  constructor (db) {\n    if (typeof db !== 'object' || db === null) {\n      const hint = db === null ? 'null' : typeof db\n      throw new TypeError(`The first argument must be an abstract-level database, received ${hint}`)\n    }\n\n    this[kOperations] = []\n    this[kCloseCallbacks] = []\n    this[kStatus] = 'open'\n    this[kFinishClose] = this[kFinishClose].bind(this)\n\n    this.db = db\n    this.db.attachResource(this)\n    this.nextTick = db.nextTick\n  }\n\n  get length () {\n    return this[kOperations].length\n  }\n\n  put (key, value, options) {\n    if (this[kStatus] !== 'open') {\n      throw new ModuleError('Batch is not open: cannot call put() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      })\n    }\n\n    const err = this.db._checkKey(key) || this.db._checkValue(value)\n    if (err) throw err\n\n    const db = options && options.sublevel != null ? options.sublevel : this.db\n    const original = options\n    const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = db.valueEncoding(options && options.valueEncoding)\n    const keyFormat = keyEncoding.format\n\n    // Forward encoding options\n    options = { ...options, keyEncoding: keyFormat, valueEncoding: valueEncoding.format }\n\n    // Prevent double prefixing\n    if (db !== this.db) {\n      options.sublevel = null\n    }\n\n    const mappedKey = db.prefixKey(keyEncoding.encode(key), keyFormat)\n    const mappedValue = valueEncoding.encode(value)\n\n    this._put(mappedKey, mappedValue, options)\n    this[kOperations].push({ ...original, type: 'put', key, value })\n\n    return this\n  }\n\n  _put (key, value, options) {}\n\n  del (key, options) {\n    if (this[kStatus] !== 'open') {\n      throw new ModuleError('Batch is not open: cannot call del() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      })\n    }\n\n    const err = this.db._checkKey(key)\n    if (err) throw err\n\n    const db = options && options.sublevel != null ? options.sublevel : this.db\n    const original = options\n    const keyEncoding = db.keyEncoding(options && options.keyEncoding)\n    const keyFormat = keyEncoding.format\n\n    // Forward encoding options\n    options = { ...options, keyEncoding: keyFormat }\n\n    // Prevent double prefixing\n    if (db !== this.db) {\n      options.sublevel = null\n    }\n\n    this._del(db.prefixKey(keyEncoding.encode(key), keyFormat), options)\n    this[kOperations].push({ ...original, type: 'del', key })\n\n    return this\n  }\n\n  _del (key, options) {}\n\n  clear () {\n    if (this[kStatus] !== 'open') {\n      throw new ModuleError('Batch is not open: cannot call clear() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      })\n    }\n\n    this._clear()\n    this[kOperations] = []\n\n    return this\n  }\n\n  _clear () {}\n\n  write (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options)\n\n    if (this[kStatus] !== 'open') {\n      this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      }))\n    } else if (this.length === 0) {\n      this.close(callback)\n    } else {\n      this[kStatus] = 'writing'\n      this._write(options, (err) => {\n        this[kStatus] = 'closing'\n        this[kCloseCallbacks].push(() => callback(err))\n\n        // Emit after setting 'closing' status, because event may trigger a\n        // db close which in turn triggers (idempotently) closing this batch.\n        if (!err) this.db.emit('batch', this[kOperations])\n\n        this._close(this[kFinishClose])\n      })\n    }\n\n    return callback[kPromise]\n  }\n\n  _write (options, callback) {}\n\n  close (callback) {\n    callback = fromCallback(callback, kPromise)\n\n    if (this[kStatus] === 'closing') {\n      this[kCloseCallbacks].push(callback)\n    } else if (this[kStatus] === 'closed') {\n      this.nextTick(callback)\n    } else {\n      this[kCloseCallbacks].push(callback)\n\n      if (this[kStatus] !== 'writing') {\n        this[kStatus] = 'closing'\n        this._close(this[kFinishClose])\n      }\n    }\n\n    return callback[kPromise]\n  }\n\n  _close (callback) {\n    this.nextTick(callback)\n  }\n\n  [kFinishClose] () {\n    this[kStatus] = 'closed'\n    this.db.detachResource(this)\n\n    const callbacks = this[kCloseCallbacks]\n    this[kCloseCallbacks] = []\n\n    for (const cb of callbacks) {\n      cb()\n    }\n  }\n}\n\nexports.AbstractChainedBatch = AbstractChainedBatch\n", "'use strict'\n\nconst { AbstractChainedBatch } = require('../abstract-chained-batch')\nconst ModuleError = require('module-error')\nconst kEncoded = Symbol('encoded')\n\n// Functional default for chained batch, with support of deferred open\nclass DefaultChainedBatch extends AbstractChainedBatch {\n  constructor (db) {\n    super(db)\n    this[kEncoded] = []\n  }\n\n  _put (key, value, options) {\n    this[kEncoded].push({ ...options, type: 'put', key, value })\n  }\n\n  _del (key, options) {\n    this[kEncoded].push({ ...options, type: 'del', key })\n  }\n\n  _clear () {\n    this[kEncoded] = []\n  }\n\n  // Assumes this[kEncoded] cannot change after write()\n  _write (options, callback) {\n    if (this.db.status === 'opening') {\n      this.db.defer(() => this._write(options, callback))\n    } else if (this.db.status === 'open') {\n      if (this[kEncoded].length === 0) this.nextTick(callback)\n      else this.db._batch(this[kEncoded], options, callback)\n    } else {\n      this.nextTick(callback, new ModuleError('Batch is not open: cannot call write() after write() or close()', {\n        code: 'LEVEL_BATCH_NOT_OPEN'\n      }))\n    }\n  }\n}\n\nexports.DefaultChainedBatch = DefaultChainedBatch\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst rangeOptions = new Set(['lt', 'lte', 'gt', 'gte'])\n\nmodule.exports = function (options, keyEncoding) {\n  const result = {}\n\n  for (const k in options) {\n    if (!hasOwnProperty.call(options, k)) continue\n    if (k === 'keyEncoding' || k === 'valueEncoding') continue\n\n    if (k === 'start' || k === 'end') {\n      throw new ModuleError(`The legacy range option '${k}' has been removed`, {\n        code: 'LEVEL_LEGACY'\n      })\n    } else if (k === 'encoding') {\n      // To help migrating to abstract-level\n      throw new ModuleError(\"The levelup-style 'encoding' alias has been removed, use 'valueEncoding' instead\", {\n        code: 'LEVEL_LEGACY'\n      })\n    }\n\n    if (rangeOptions.has(k)) {\n      // Note that we don't reject nullish and empty options here. While\n      // those types are invalid as keys, they are valid as range options.\n      result[k] = keyEncoding.encode(options[k])\n    } else {\n      result[k] = options[k]\n    }\n  }\n\n  result.reverse = !!result.reverse\n  result.limit = Number.isInteger(result.limit) && result.limit >= 0 ? result.limit : -1\n\n  return result\n}\n", "/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n  ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n  // reuse resolved promise, and allocate it lazily\n  : cb => (promise || (promise = Promise.resolve()))\n    .then(cb)\n    .catch(err => setTimeout(() => { throw err }, 0))\n", "'use strict'\n\nconst queueMicrotask = require('queue-microtask')\n\nmodule.exports = function (fn, ...args) {\n  if (args.length === 0) {\n    queueMicrotask(fn)\n  } else {\n    queueMicrotask(() => fn(...args))\n  }\n}\n", "'use strict'\n\nconst { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../abstract-iterator')\n\nconst kUnfix = Symbol('unfix')\nconst kIterator = Symbol('iterator')\nconst kHandleOne = Symbol('handleOne')\nconst kHandleMany = Symbol('handleMany')\nconst kCallback = Symbol('callback')\n\n// TODO: unfix natively if db supports it\nclass AbstractSublevelIterator extends AbstractIterator {\n  constructor (db, options, iterator, unfix) {\n    super(db, options)\n\n    this[kIterator] = iterator\n    this[kUnfix] = unfix\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n    this[kCallback] = null\n  }\n\n  [kHandleOne] (err, key, value) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n    if (key !== undefined) key = this[kUnfix](key)\n    callback(err, key, value)\n  }\n\n  [kHandleMany] (err, entries) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n\n    for (const entry of entries) {\n      const key = entry[0]\n      if (key !== undefined) entry[0] = this[kUnfix](key)\n    }\n\n    callback(err, entries)\n  }\n}\n\nclass AbstractSublevelKeyIterator extends AbstractKeyIterator {\n  constructor (db, options, iterator, unfix) {\n    super(db, options)\n\n    this[kIterator] = iterator\n    this[kUnfix] = unfix\n    this[kHandleOne] = this[kHandleOne].bind(this)\n    this[kHandleMany] = this[kHandleMany].bind(this)\n    this[kCallback] = null\n  }\n\n  [kHandleOne] (err, key) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n    if (key !== undefined) key = this[kUnfix](key)\n    callback(err, key)\n  }\n\n  [kHandleMany] (err, keys) {\n    const callback = this[kCallback]\n    if (err) return callback(err)\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i]\n      if (key !== undefined) keys[i] = this[kUnfix](key)\n    }\n\n    callback(err, keys)\n  }\n}\n\nclass AbstractSublevelValueIterator extends AbstractValueIterator {\n  constructor (db, options, iterator) {\n    super(db, options)\n    this[kIterator] = iterator\n  }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator]) {\n  Iterator.prototype._next = function (callback) {\n    this[kCallback] = callback\n    this[kIterator].next(this[kHandleOne])\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    this[kCallback] = callback\n    this[kIterator].nextv(size, options, this[kHandleMany])\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    this[kCallback] = callback\n    this[kIterator].all(options, this[kHandleMany])\n  }\n}\n\nfor (const Iterator of [AbstractSublevelValueIterator]) {\n  Iterator.prototype._next = function (callback) {\n    this[kIterator].next(callback)\n  }\n\n  Iterator.prototype._nextv = function (size, options, callback) {\n    this[kIterator].nextv(size, options, callback)\n  }\n\n  Iterator.prototype._all = function (options, callback) {\n    this[kIterator].all(options, callback)\n  }\n}\n\nfor (const Iterator of [AbstractSublevelIterator, AbstractSublevelKeyIterator, AbstractSublevelValueIterator]) {\n  Iterator.prototype._seek = function (target, options) {\n    this[kIterator].seek(target, options)\n  }\n\n  Iterator.prototype._close = function (callback) {\n    this[kIterator].close(callback)\n  }\n}\n\nexports.AbstractSublevelIterator = AbstractSublevelIterator\nexports.AbstractSublevelKeyIterator = AbstractSublevelKeyIterator\nexports.AbstractSublevelValueIterator = AbstractSublevelValueIterator\n", "'use strict'\n\nconst ModuleError = require('module-error')\nconst { Buffer } = require('buffer') || {}\nconst {\n  AbstractSublevelIterator,\n  AbstractSublevelKeyIterator,\n  AbstractSublevelValueIterator\n} = require('./abstract-sublevel-iterator')\n\nconst kPrefix = Symbol('prefix')\nconst kUpperBound = Symbol('upperBound')\nconst kPrefixRange = Symbol('prefixRange')\nconst kParent = Symbol('parent')\nconst kUnfix = Symbol('unfix')\n\nconst textEncoder = new TextEncoder()\nconst defaults = { separator: '!' }\n\n// Wrapped to avoid circular dependency\nmodule.exports = function ({ AbstractLevel }) {\n  class AbstractSublevel extends AbstractLevel {\n    static defaults (options) {\n      // To help migrating from subleveldown to abstract-level\n      if (typeof options === 'string') {\n        throw new ModuleError('The subleveldown string shorthand for { separator } has been removed', {\n          code: 'LEVEL_LEGACY'\n        })\n      } else if (options && options.open) {\n        throw new ModuleError('The subleveldown open option has been removed', {\n          code: 'LEVEL_LEGACY'\n        })\n      }\n\n      if (options == null) {\n        return defaults\n      } else if (!options.separator) {\n        return { ...options, separator: '!' }\n      } else {\n        return options\n      }\n    }\n\n    // TODO: add autoClose option, which if true, does parent.attachResource(this)\n    constructor (db, name, options) {\n      // Don't forward AbstractSublevel options to AbstractLevel\n      const { separator, manifest, ...forward } = AbstractSublevel.defaults(options)\n      name = trim(name, separator)\n\n      // Reserve one character between separator and name to give us an upper bound\n      const reserved = separator.charCodeAt(0) + 1\n      const parent = db[kParent] || db\n\n      // Keys should sort like ['!a!', '!a!!a!', '!a\"', '!aa!', '!b!'].\n      // Use ASCII for consistent length between string, Buffer and Uint8Array\n      if (!textEncoder.encode(name).every(x => x > reserved && x < 127)) {\n        throw new ModuleError(`Prefix must use bytes > ${reserved} < ${127}`, {\n          code: 'LEVEL_INVALID_PREFIX'\n        })\n      }\n\n      super(mergeManifests(parent, manifest), forward)\n\n      const prefix = (db.prefix || '') + separator + name + separator\n      const upperBound = prefix.slice(0, -1) + String.fromCharCode(reserved)\n\n      this[kParent] = parent\n      this[kPrefix] = new MultiFormat(prefix)\n      this[kUpperBound] = new MultiFormat(upperBound)\n      this[kUnfix] = new Unfixer()\n\n      this.nextTick = parent.nextTick\n    }\n\n    prefixKey (key, keyFormat) {\n      if (keyFormat === 'utf8') {\n        return this[kPrefix].utf8 + key\n      } else if (key.byteLength === 0) {\n        // Fast path for empty key (no copy)\n        return this[kPrefix][keyFormat]\n      } else if (keyFormat === 'view') {\n        const view = this[kPrefix].view\n        const result = new Uint8Array(view.byteLength + key.byteLength)\n\n        result.set(view, 0)\n        result.set(key, view.byteLength)\n\n        return result\n      } else {\n        const buffer = this[kPrefix].buffer\n        return Buffer.concat([buffer, key], buffer.byteLength + key.byteLength)\n      }\n    }\n\n    // Not exposed for now.\n    [kPrefixRange] (range, keyFormat) {\n      if (range.gte !== undefined) {\n        range.gte = this.prefixKey(range.gte, keyFormat)\n      } else if (range.gt !== undefined) {\n        range.gt = this.prefixKey(range.gt, keyFormat)\n      } else {\n        range.gte = this[kPrefix][keyFormat]\n      }\n\n      if (range.lte !== undefined) {\n        range.lte = this.prefixKey(range.lte, keyFormat)\n      } else if (range.lt !== undefined) {\n        range.lt = this.prefixKey(range.lt, keyFormat)\n      } else {\n        range.lte = this[kUpperBound][keyFormat]\n      }\n    }\n\n    get prefix () {\n      return this[kPrefix].utf8\n    }\n\n    get db () {\n      return this[kParent]\n    }\n\n    _open (options, callback) {\n      // The parent db must open itself or be (re)opened by the user because\n      // a sublevel should not initiate state changes on the rest of the db.\n      this[kParent].open({ passive: true }, callback)\n    }\n\n    _put (key, value, options, callback) {\n      this[kParent].put(key, value, options, callback)\n    }\n\n    _get (key, options, callback) {\n      this[kParent].get(key, options, callback)\n    }\n\n    _getMany (keys, options, callback) {\n      this[kParent].getMany(keys, options, callback)\n    }\n\n    _del (key, options, callback) {\n      this[kParent].del(key, options, callback)\n    }\n\n    _batch (operations, options, callback) {\n      this[kParent].batch(operations, options, callback)\n    }\n\n    _clear (options, callback) {\n      // TODO (refactor): move to AbstractLevel\n      this[kPrefixRange](options, options.keyEncoding)\n      this[kParent].clear(options, callback)\n    }\n\n    _iterator (options) {\n      // TODO (refactor): move to AbstractLevel\n      this[kPrefixRange](options, options.keyEncoding)\n      const iterator = this[kParent].iterator(options)\n      const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n      return new AbstractSublevelIterator(this, options, iterator, unfix)\n    }\n\n    _keys (options) {\n      this[kPrefixRange](options, options.keyEncoding)\n      const iterator = this[kParent].keys(options)\n      const unfix = this[kUnfix].get(this[kPrefix].utf8.length, options.keyEncoding)\n      return new AbstractSublevelKeyIterator(this, options, iterator, unfix)\n    }\n\n    _values (options) {\n      this[kPrefixRange](options, options.keyEncoding)\n      const iterator = this[kParent].values(options)\n      return new AbstractSublevelValueIterator(this, options, iterator)\n    }\n  }\n\n  return { AbstractSublevel }\n}\n\nconst mergeManifests = function (parent, manifest) {\n  return {\n    // Inherit manifest of parent db\n    ...parent.supports,\n\n    // Disable unsupported features\n    createIfMissing: false,\n    errorIfExists: false,\n\n    // Unset additional events because we're not forwarding them\n    events: {},\n\n    // Unset additional methods (like approximateSize) which we can't support here unless\n    // the AbstractSublevel class is overridden by an implementation of `abstract-level`.\n    additionalMethods: {},\n\n    // Inherit manifest of custom AbstractSublevel subclass. Such a class is not\n    // allowed to override encodings.\n    ...manifest,\n\n    encodings: {\n      utf8: supportsEncoding(parent, 'utf8'),\n      buffer: supportsEncoding(parent, 'buffer'),\n      view: supportsEncoding(parent, 'view')\n    }\n  }\n}\n\nconst supportsEncoding = function (parent, encoding) {\n  // Prefer a non-transcoded encoding for optimal performance\n  return parent.supports.encodings[encoding]\n    ? parent.keyEncoding(encoding).name === encoding\n    : false\n}\n\nclass MultiFormat {\n  constructor (key) {\n    this.utf8 = key\n    this.view = textEncoder.encode(key)\n    this.buffer = Buffer ? Buffer.from(this.view.buffer, 0, this.view.byteLength) : {}\n  }\n}\n\nclass Unfixer {\n  constructor () {\n    this.cache = new Map()\n  }\n\n  get (prefixLength, keyFormat) {\n    let unfix = this.cache.get(keyFormat)\n\n    if (unfix === undefined) {\n      if (keyFormat === 'view') {\n        unfix = function (prefixLength, key) {\n          // Avoid Uint8Array#slice() because it copies\n          return key.subarray(prefixLength)\n        }.bind(null, prefixLength)\n      } else {\n        unfix = function (prefixLength, key) {\n          // Avoid Buffer#subarray() because it's slow\n          return key.slice(prefixLength)\n        }.bind(null, prefixLength)\n      }\n\n      this.cache.set(keyFormat, unfix)\n    }\n\n    return unfix\n  }\n}\n\nconst trim = function (str, char) {\n  let start = 0\n  let end = str.length\n\n  while (start < end && str[start] === char) start++\n  while (end > start && str[end - 1] === char) end--\n\n  return str.slice(start, end)\n}\n", "'use strict'\n\nconst { supports } = require('level-supports')\nconst { Transcoder } = require('level-transcoder')\nconst { EventEmitter } = require('events')\nconst { fromCallback } = require('catering')\nconst ModuleError = require('module-error')\nconst { AbstractIterator } = require('./abstract-iterator')\nconst { DefaultKeyIterator, DefaultValueIterator } = require('./lib/default-kv-iterator')\nconst { DeferredIterator, DeferredKeyIterator, DeferredValueIterator } = require('./lib/deferred-iterator')\nconst { DefaultChainedBatch } = require('./lib/default-chained-batch')\nconst { getCallback, getOptions } = require('./lib/common')\nconst rangeOptions = require('./lib/range-options')\n\nconst kPromise = Symbol('promise')\nconst kLanded = Symbol('landed')\nconst kResources = Symbol('resources')\nconst kCloseResources = Symbol('closeResources')\nconst kOperations = Symbol('operations')\nconst kUndefer = Symbol('undefer')\nconst kDeferOpen = Symbol('deferOpen')\nconst kOptions = Symbol('options')\nconst kStatus = Symbol('status')\nconst kDefaultOptions = Symbol('defaultOptions')\nconst kTranscoder = Symbol('transcoder')\nconst kKeyEncoding = Symbol('keyEncoding')\nconst kValueEncoding = Symbol('valueEncoding')\nconst noop = () => {}\n\nclass AbstractLevel extends EventEmitter {\n  constructor (manifest, options) {\n    super()\n\n    if (typeof manifest !== 'object' || manifest === null) {\n      throw new TypeError(\"The first argument 'manifest' must be an object\")\n    }\n\n    options = getOptions(options)\n    const { keyEncoding, valueEncoding, passive, ...forward } = options\n\n    this[kResources] = new Set()\n    this[kOperations] = []\n    this[kDeferOpen] = true\n    this[kOptions] = forward\n    this[kStatus] = 'opening'\n\n    this.supports = supports(manifest, {\n      status: true,\n      promises: true,\n      clear: true,\n      getMany: true,\n      deferredOpen: true,\n\n      // TODO (next major): add seek\n      snapshots: manifest.snapshots !== false,\n      permanence: manifest.permanence !== false,\n\n      // TODO: remove from level-supports because it's always supported\n      keyIterator: true,\n      valueIterator: true,\n      iteratorNextv: true,\n      iteratorAll: true,\n\n      encodings: manifest.encodings || {},\n      events: Object.assign({}, manifest.events, {\n        opening: true,\n        open: true,\n        closing: true,\n        closed: true,\n        put: true,\n        del: true,\n        batch: true,\n        clear: true\n      })\n    })\n\n    this[kTranscoder] = new Transcoder(formats(this))\n    this[kKeyEncoding] = this[kTranscoder].encoding(keyEncoding || 'utf8')\n    this[kValueEncoding] = this[kTranscoder].encoding(valueEncoding || 'utf8')\n\n    // Add custom and transcoder encodings to manifest\n    for (const encoding of this[kTranscoder].encodings()) {\n      if (!this.supports.encodings[encoding.commonName]) {\n        this.supports.encodings[encoding.commonName] = true\n      }\n    }\n\n    this[kDefaultOptions] = {\n      empty: Object.freeze({}),\n      entry: Object.freeze({\n        keyEncoding: this[kKeyEncoding].commonName,\n        valueEncoding: this[kValueEncoding].commonName\n      }),\n      key: Object.freeze({\n        keyEncoding: this[kKeyEncoding].commonName\n      })\n    }\n\n    // Let subclass finish its constructor\n    this.nextTick(() => {\n      if (this[kDeferOpen]) {\n        this.open({ passive: false }, noop)\n      }\n    })\n  }\n\n  get status () {\n    return this[kStatus]\n  }\n\n  keyEncoding (encoding) {\n    return this[kTranscoder].encoding(encoding != null ? encoding : this[kKeyEncoding])\n  }\n\n  valueEncoding (encoding) {\n    return this[kTranscoder].encoding(encoding != null ? encoding : this[kValueEncoding])\n  }\n\n  open (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n\n    options = { ...this[kOptions], ...getOptions(options) }\n\n    options.createIfMissing = options.createIfMissing !== false\n    options.errorIfExists = !!options.errorIfExists\n\n    const maybeOpened = (err) => {\n      if (this[kStatus] === 'closing' || this[kStatus] === 'opening') {\n        // Wait until pending state changes are done\n        this.once(kLanded, err ? () => maybeOpened(err) : maybeOpened)\n      } else if (this[kStatus] !== 'open') {\n        callback(new ModuleError('Database is not open', {\n          code: 'LEVEL_DATABASE_NOT_OPEN',\n          cause: err\n        }))\n      } else {\n        callback()\n      }\n    }\n\n    if (options.passive) {\n      if (this[kStatus] === 'opening') {\n        this.once(kLanded, maybeOpened)\n      } else {\n        this.nextTick(maybeOpened)\n      }\n    } else if (this[kStatus] === 'closed' || this[kDeferOpen]) {\n      this[kDeferOpen] = false\n      this[kStatus] = 'opening'\n      this.emit('opening')\n\n      this._open(options, (err) => {\n        if (err) {\n          this[kStatus] = 'closed'\n\n          // Resources must be safe to close in any db state\n          this[kCloseResources](() => {\n            this.emit(kLanded)\n            maybeOpened(err)\n          })\n\n          this[kUndefer]()\n          return\n        }\n\n        this[kStatus] = 'open'\n        this[kUndefer]()\n        this.emit(kLanded)\n\n        // Only emit public event if pending state changes are done\n        if (this[kStatus] === 'open') this.emit('open')\n\n        // TODO (next major): remove this alias\n        if (this[kStatus] === 'open') this.emit('ready')\n\n        maybeOpened()\n      })\n    } else if (this[kStatus] === 'open') {\n      this.nextTick(maybeOpened)\n    } else {\n      this.once(kLanded, () => this.open(options, callback))\n    }\n\n    return callback[kPromise]\n  }\n\n  _open (options, callback) {\n    this.nextTick(callback)\n  }\n\n  close (callback) {\n    callback = fromCallback(callback, kPromise)\n\n    const maybeClosed = (err) => {\n      if (this[kStatus] === 'opening' || this[kStatus] === 'closing') {\n        // Wait until pending state changes are done\n        this.once(kLanded, err ? maybeClosed(err) : maybeClosed)\n      } else if (this[kStatus] !== 'closed') {\n        callback(new ModuleError('Database is not closed', {\n          code: 'LEVEL_DATABASE_NOT_CLOSED',\n          cause: err\n        }))\n      } else {\n        callback()\n      }\n    }\n\n    if (this[kStatus] === 'open') {\n      this[kStatus] = 'closing'\n      this.emit('closing')\n\n      const cancel = (err) => {\n        this[kStatus] = 'open'\n        this[kUndefer]()\n        this.emit(kLanded)\n        maybeClosed(err)\n      }\n\n      this[kCloseResources](() => {\n        this._close((err) => {\n          if (err) return cancel(err)\n\n          this[kStatus] = 'closed'\n          this[kUndefer]()\n          this.emit(kLanded)\n\n          // Only emit public event if pending state changes are done\n          if (this[kStatus] === 'closed') this.emit('closed')\n\n          maybeClosed()\n        })\n      })\n    } else if (this[kStatus] === 'closed') {\n      this.nextTick(maybeClosed)\n    } else {\n      this.once(kLanded, () => this.close(callback))\n    }\n\n    return callback[kPromise]\n  }\n\n  [kCloseResources] (callback) {\n    if (this[kResources].size === 0) {\n      return this.nextTick(callback)\n    }\n\n    let pending = this[kResources].size\n    let sync = true\n\n    const next = () => {\n      if (--pending === 0) {\n        // We don't have tests for generic resources, so dezalgo\n        if (sync) this.nextTick(callback)\n        else callback()\n      }\n    }\n\n    // In parallel so that all resources know they are closed\n    for (const resource of this[kResources]) {\n      resource.close(next)\n    }\n\n    sync = false\n    this[kResources].clear()\n  }\n\n  _close (callback) {\n    this.nextTick(callback)\n  }\n\n  get (key, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].entry)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.get(key, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const err = this._checkKey(key)\n\n    if (err) {\n      this.nextTick(callback, err)\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options.valueEncoding)\n    const keyFormat = keyEncoding.format\n    const valueFormat = valueEncoding.format\n\n    // Forward encoding options to the underlying store\n    if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n      // Avoid spread operator because of https://bugs.chromium.org/p/chromium/issues/detail?id=1204540\n      options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n    }\n\n    this._get(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err, value) => {\n      if (err) {\n        // Normalize not found error for backwards compatibility with abstract-leveldown and level(up)\n        if (err.code === 'LEVEL_NOT_FOUND' || err.notFound || /NotFound/i.test(err)) {\n          if (!err.code) err.code = 'LEVEL_NOT_FOUND' // Preferred way going forward\n          if (!err.notFound) err.notFound = true // Same as level-errors\n          if (!err.status) err.status = 404 // Same as level-errors\n        }\n\n        return callback(err)\n      }\n\n      try {\n        value = valueEncoding.decode(value)\n      } catch (err) {\n        return callback(new ModuleError('Could not decode value', {\n          code: 'LEVEL_DECODE_ERROR',\n          cause: err\n        }))\n      }\n\n      callback(null, value)\n    })\n\n    return callback[kPromise]\n  }\n\n  _get (key, options, callback) {\n    this.nextTick(callback, new Error('NotFound'))\n  }\n\n  getMany (keys, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].entry)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.getMany(keys, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    if (!Array.isArray(keys)) {\n      this.nextTick(callback, new TypeError(\"The first argument 'keys' must be an array\"))\n      return callback[kPromise]\n    }\n\n    if (keys.length === 0) {\n      this.nextTick(callback, null, [])\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options.valueEncoding)\n    const keyFormat = keyEncoding.format\n    const valueFormat = valueEncoding.format\n\n    // Forward encoding options\n    if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n      options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n    }\n\n    const mappedKeys = new Array(keys.length)\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i]\n      const err = this._checkKey(key)\n\n      if (err) {\n        this.nextTick(callback, err)\n        return callback[kPromise]\n      }\n\n      mappedKeys[i] = this.prefixKey(keyEncoding.encode(key), keyFormat)\n    }\n\n    this._getMany(mappedKeys, options, (err, values) => {\n      if (err) return callback(err)\n\n      try {\n        for (let i = 0; i < values.length; i++) {\n          if (values[i] !== undefined) {\n            values[i] = valueEncoding.decode(values[i])\n          }\n        }\n      } catch (err) {\n        return callback(new ModuleError(`Could not decode one or more of ${values.length} value(s)`, {\n          code: 'LEVEL_DECODE_ERROR',\n          cause: err\n        }))\n      }\n\n      callback(null, values)\n    })\n\n    return callback[kPromise]\n  }\n\n  _getMany (keys, options, callback) {\n    this.nextTick(callback, null, new Array(keys.length).fill(undefined))\n  }\n\n  put (key, value, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].entry)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.put(key, value, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const err = this._checkKey(key) || this._checkValue(value)\n\n    if (err) {\n      this.nextTick(callback, err)\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options.valueEncoding)\n    const keyFormat = keyEncoding.format\n    const valueFormat = valueEncoding.format\n\n    // Forward encoding options\n    if (options.keyEncoding !== keyFormat || options.valueEncoding !== valueFormat) {\n      options = Object.assign({}, options, { keyEncoding: keyFormat, valueEncoding: valueFormat })\n    }\n\n    const mappedKey = this.prefixKey(keyEncoding.encode(key), keyFormat)\n    const mappedValue = valueEncoding.encode(value)\n\n    this._put(mappedKey, mappedValue, options, (err) => {\n      if (err) return callback(err)\n      this.emit('put', key, value)\n      callback()\n    })\n\n    return callback[kPromise]\n  }\n\n  _put (key, value, options, callback) {\n    this.nextTick(callback)\n  }\n\n  del (key, options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].key)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.del(key, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const err = this._checkKey(key)\n\n    if (err) {\n      this.nextTick(callback, err)\n      return callback[kPromise]\n    }\n\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n    const keyFormat = keyEncoding.format\n\n    // Forward encoding options\n    if (options.keyEncoding !== keyFormat) {\n      options = Object.assign({}, options, { keyEncoding: keyFormat })\n    }\n\n    this._del(this.prefixKey(keyEncoding.encode(key), keyFormat), options, (err) => {\n      if (err) return callback(err)\n      this.emit('del', key)\n      callback()\n    })\n\n    return callback[kPromise]\n  }\n\n  _del (key, options, callback) {\n    this.nextTick(callback)\n  }\n\n  batch (operations, options, callback) {\n    if (!arguments.length) {\n      if (this[kStatus] === 'opening') return new DefaultChainedBatch(this)\n      if (this[kStatus] !== 'open') {\n        throw new ModuleError('Database is not open', {\n          code: 'LEVEL_DATABASE_NOT_OPEN'\n        })\n      }\n      return this._chainedBatch()\n    }\n\n    if (typeof operations === 'function') callback = operations\n    else callback = getCallback(options, callback)\n\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].empty)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.batch(operations, options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    if (!Array.isArray(operations)) {\n      this.nextTick(callback, new TypeError(\"The first argument 'operations' must be an array\"))\n      return callback[kPromise]\n    }\n\n    if (operations.length === 0) {\n      this.nextTick(callback)\n      return callback[kPromise]\n    }\n\n    const mapped = new Array(operations.length)\n    const { keyEncoding: ke, valueEncoding: ve, ...forward } = options\n\n    for (let i = 0; i < operations.length; i++) {\n      if (typeof operations[i] !== 'object' || operations[i] === null) {\n        this.nextTick(callback, new TypeError('A batch operation must be an object'))\n        return callback[kPromise]\n      }\n\n      const op = Object.assign({}, operations[i])\n\n      if (op.type !== 'put' && op.type !== 'del') {\n        this.nextTick(callback, new TypeError(\"A batch operation must have a type property that is 'put' or 'del'\"))\n        return callback[kPromise]\n      }\n\n      const err = this._checkKey(op.key)\n\n      if (err) {\n        this.nextTick(callback, err)\n        return callback[kPromise]\n      }\n\n      const db = op.sublevel != null ? op.sublevel : this\n      const keyEncoding = db.keyEncoding(op.keyEncoding || ke)\n      const keyFormat = keyEncoding.format\n\n      op.key = db.prefixKey(keyEncoding.encode(op.key), keyFormat)\n      op.keyEncoding = keyFormat\n\n      if (op.type === 'put') {\n        const valueErr = this._checkValue(op.value)\n\n        if (valueErr) {\n          this.nextTick(callback, valueErr)\n          return callback[kPromise]\n        }\n\n        const valueEncoding = db.valueEncoding(op.valueEncoding || ve)\n\n        op.value = valueEncoding.encode(op.value)\n        op.valueEncoding = valueEncoding.format\n      }\n\n      // Prevent double prefixing\n      if (db !== this) {\n        op.sublevel = null\n      }\n\n      mapped[i] = op\n    }\n\n    this._batch(mapped, forward, (err) => {\n      if (err) return callback(err)\n      this.emit('batch', operations)\n      callback()\n    })\n\n    return callback[kPromise]\n  }\n\n  _batch (operations, options, callback) {\n    this.nextTick(callback)\n  }\n\n  sublevel (name, options) {\n    return this._sublevel(name, AbstractSublevel.defaults(options))\n  }\n\n  _sublevel (name, options) {\n    return new AbstractSublevel(this, name, options)\n  }\n\n  prefixKey (key, keyFormat) {\n    return key\n  }\n\n  clear (options, callback) {\n    callback = getCallback(options, callback)\n    callback = fromCallback(callback, kPromise)\n    options = getOptions(options, this[kDefaultOptions].empty)\n\n    if (this[kStatus] === 'opening') {\n      this.defer(() => this.clear(options, callback))\n      return callback[kPromise]\n    }\n\n    if (maybeError(this, callback)) {\n      return callback[kPromise]\n    }\n\n    const original = options\n    const keyEncoding = this.keyEncoding(options.keyEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n    options.keyEncoding = keyEncoding.format\n\n    if (options.limit === 0) {\n      this.nextTick(callback)\n    } else {\n      this._clear(options, (err) => {\n        if (err) return callback(err)\n        this.emit('clear', original)\n        callback()\n      })\n    }\n\n    return callback[kPromise]\n  }\n\n  _clear (options, callback) {\n    this.nextTick(callback)\n  }\n\n  iterator (options) {\n    const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n    options.keys = options.keys !== false\n    options.values = options.values !== false\n\n    // We need the original encoding options in AbstractIterator in order to decode data\n    options[AbstractIterator.keyEncoding] = keyEncoding\n    options[AbstractIterator.valueEncoding] = valueEncoding\n\n    // Forward encoding options to private API\n    options.keyEncoding = keyEncoding.format\n    options.valueEncoding = valueEncoding.format\n\n    if (this[kStatus] === 'opening') {\n      return new DeferredIterator(this, options)\n    } else if (this[kStatus] !== 'open') {\n      throw new ModuleError('Database is not open', {\n        code: 'LEVEL_DATABASE_NOT_OPEN'\n      })\n    }\n\n    return this._iterator(options)\n  }\n\n  _iterator (options) {\n    return new AbstractIterator(this, options)\n  }\n\n  keys (options) {\n    // Also include valueEncoding (though unused) because we may fallback to _iterator()\n    const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n\n    // We need the original encoding options in AbstractKeyIterator in order to decode data\n    options[AbstractIterator.keyEncoding] = keyEncoding\n    options[AbstractIterator.valueEncoding] = valueEncoding\n\n    // Forward encoding options to private API\n    options.keyEncoding = keyEncoding.format\n    options.valueEncoding = valueEncoding.format\n\n    if (this[kStatus] === 'opening') {\n      return new DeferredKeyIterator(this, options)\n    } else if (this[kStatus] !== 'open') {\n      throw new ModuleError('Database is not open', {\n        code: 'LEVEL_DATABASE_NOT_OPEN'\n      })\n    }\n\n    return this._keys(options)\n  }\n\n  _keys (options) {\n    return new DefaultKeyIterator(this, options)\n  }\n\n  values (options) {\n    const keyEncoding = this.keyEncoding(options && options.keyEncoding)\n    const valueEncoding = this.valueEncoding(options && options.valueEncoding)\n\n    options = rangeOptions(options, keyEncoding)\n\n    // We need the original encoding options in AbstractValueIterator in order to decode data\n    options[AbstractIterator.keyEncoding] = keyEncoding\n    options[AbstractIterator.valueEncoding] = valueEncoding\n\n    // Forward encoding options to private API\n    options.keyEncoding = keyEncoding.format\n    options.valueEncoding = valueEncoding.format\n\n    if (this[kStatus] === 'opening') {\n      return new DeferredValueIterator(this, options)\n    } else if (this[kStatus] !== 'open') {\n      throw new ModuleError('Database is not open', {\n        code: 'LEVEL_DATABASE_NOT_OPEN'\n      })\n    }\n\n    return this._values(options)\n  }\n\n  _values (options) {\n    return new DefaultValueIterator(this, options)\n  }\n\n  defer (fn) {\n    if (typeof fn !== 'function') {\n      throw new TypeError('The first argument must be a function')\n    }\n\n    this[kOperations].push(fn)\n  }\n\n  [kUndefer] () {\n    if (this[kOperations].length === 0) {\n      return\n    }\n\n    const operations = this[kOperations]\n    this[kOperations] = []\n\n    for (const op of operations) {\n      op()\n    }\n  }\n\n  // TODO: docs and types\n  attachResource (resource) {\n    if (typeof resource !== 'object' || resource === null ||\n      typeof resource.close !== 'function') {\n      throw new TypeError('The first argument must be a resource object')\n    }\n\n    this[kResources].add(resource)\n  }\n\n  // TODO: docs and types\n  detachResource (resource) {\n    this[kResources].delete(resource)\n  }\n\n  _chainedBatch () {\n    return new DefaultChainedBatch(this)\n  }\n\n  _checkKey (key) {\n    if (key === null || key === undefined) {\n      return new ModuleError('Key cannot be null or undefined', {\n        code: 'LEVEL_INVALID_KEY'\n      })\n    }\n  }\n\n  _checkValue (value) {\n    if (value === null || value === undefined) {\n      return new ModuleError('Value cannot be null or undefined', {\n        code: 'LEVEL_INVALID_VALUE'\n      })\n    }\n  }\n}\n\n// Expose browser-compatible nextTick for dependents\n// TODO: after we drop node 10, also use queueMicrotask in node\nAbstractLevel.prototype.nextTick = require('./lib/next-tick')\n\nconst { AbstractSublevel } = require('./lib/abstract-sublevel')({ AbstractLevel })\n\nexports.AbstractLevel = AbstractLevel\nexports.AbstractSublevel = AbstractSublevel\n\nconst maybeError = function (db, callback) {\n  if (db[kStatus] !== 'open') {\n    db.nextTick(callback, new ModuleError('Database is not open', {\n      code: 'LEVEL_DATABASE_NOT_OPEN'\n    }))\n    return true\n  }\n\n  return false\n}\n\nconst formats = function (db) {\n  return Object.keys(db.supports.encodings)\n    .filter(k => !!db.supports.encodings[k])\n}\n", "'use strict'\n\nexports.AbstractLevel = require('./abstract-level').AbstractLevel\nexports.AbstractSublevel = require('./abstract-level').AbstractSublevel\nexports.AbstractIterator = require('./abstract-iterator').AbstractIterator\nexports.AbstractKeyIterator = require('./abstract-iterator').AbstractKeyIterator\nexports.AbstractValueIterator = require('./abstract-iterator').AbstractValueIterator\nexports.AbstractChainedBatch = require('./abstract-chained-batch').AbstractChainedBatch\n", "/*! run-parallel-limit. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nmodule.exports = runParallelLimit\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallelLimit (tasks, limit, cb) {\n  if (typeof limit !== 'number') throw new Error('second argument must be a Number')\n  let results, len, pending, keys, isErrored\n  let isSync = true\n  let next\n\n  if (Array.isArray(tasks)) {\n    results = []\n    pending = len = tasks.length\n  } else {\n    keys = Object.keys(tasks)\n    results = {}\n    pending = len = keys.length\n  }\n\n  function done (err) {\n    function end () {\n      if (cb) cb(err, results)\n      cb = null\n    }\n    if (isSync) queueMicrotask(end)\n    else end()\n  }\n\n  function each (i, err, result) {\n    results[i] = result\n    if (err) isErrored = true\n    if (--pending === 0 || err) {\n      done(err)\n    } else if (!isErrored && next < len) {\n      let key\n      if (keys) {\n        key = keys[next]\n        next += 1\n        tasks[key](function (err, result) { each(key, err, result) })\n      } else {\n        key = next\n        next += 1\n        tasks[key](function (err, result) { each(key, err, result) })\n      }\n    }\n  }\n\n  next = limit\n  if (!pending) {\n    // empty\n    done(null)\n  } else if (keys) {\n    // object\n    keys.some(function (key, i) {\n      tasks[key](function (err, result) { each(key, err, result) })\n      if (i === limit - 1) return true // early return\n      return false\n    })\n  } else {\n    // array\n    tasks.some(function (task, i) {\n      task(function (err, result) { each(i, err, result) })\n      if (i === limit - 1) return true // early return\n      return false\n    })\n  }\n\n  isSync = false\n}\n", "/* global IDBKeyRange */\n\n'use strict'\n\nmodule.exports = function createKeyRange (options) {\n  const lower = options.gte !== undefined ? options.gte : options.gt !== undefined ? options.gt : undefined\n  const upper = options.lte !== undefined ? options.lte : options.lt !== undefined ? options.lt : undefined\n  const lowerExclusive = options.gte === undefined\n  const upperExclusive = options.lte === undefined\n\n  if (lower !== undefined && upper !== undefined) {\n    return IDBKeyRange.bound(lower, upper, lowerExclusive, upperExclusive)\n  } else if (lower !== undefined) {\n    return IDBKeyRange.lowerBound(lower, lowerExclusive)\n  } else if (upper !== undefined) {\n    return IDBKeyRange.upperBound(upper, upperExclusive)\n  } else {\n    return null\n  }\n}\n", "'use strict'\n\nconst textEncoder = new TextEncoder()\n\nmodule.exports = function (data) {\n  if (data instanceof Uint8Array) {\n    return data\n  } else if (data instanceof ArrayBuffer) {\n    return new Uint8Array(data)\n  } else {\n    // Non-binary data stored with an old version (level-js < 5.0.0)\n    return textEncoder.encode(data)\n  }\n}\n", "'use strict'\n\nconst { AbstractIterator } = require('abstract-level')\nconst createKeyRange = require('./util/key-range')\nconst deserialize = require('./util/deserialize')\n\nconst kCache = Symbol('cache')\nconst kFinished = Symbol('finished')\nconst kOptions = Symbol('options')\nconst kCurrentOptions = Symbol('currentOptions')\nconst kPosition = Symbol('position')\nconst kLocation = Symbol('location')\nconst kFirst = Symbol('first')\nconst emptyOptions = {}\n\nclass Iterator extends AbstractIterator {\n  constructor (db, location, options) {\n    super(db, options)\n\n    this[kCache] = []\n    this[kFinished] = this.limit === 0\n    this[kOptions] = options\n    this[kCurrentOptions] = { ...options }\n    this[kPosition] = undefined\n    this[kLocation] = location\n    this[kFirst] = true\n  }\n\n  // Note: if called by _all() then size can be Infinity. This is an internal\n  // detail; by design AbstractIterator.nextv() does not support Infinity.\n  _nextv (size, options, callback) {\n    this[kFirst] = false\n\n    if (this[kFinished]) {\n      return this.nextTick(callback, null, [])\n    } else if (this[kCache].length > 0) {\n      // TODO: mixing next and nextv is not covered by test suite\n      size = Math.min(size, this[kCache].length)\n      return this.nextTick(callback, null, this[kCache].splice(0, size))\n    }\n\n    // Adjust range by what we already visited\n    if (this[kPosition] !== undefined) {\n      if (this[kOptions].reverse) {\n        this[kCurrentOptions].lt = this[kPosition]\n        this[kCurrentOptions].lte = undefined\n      } else {\n        this[kCurrentOptions].gt = this[kPosition]\n        this[kCurrentOptions].gte = undefined\n      }\n    }\n\n    let keyRange\n\n    try {\n      keyRange = createKeyRange(this[kCurrentOptions])\n    } catch (_) {\n      // The lower key is greater than the upper key.\n      // IndexedDB throws an error, but we'll just return 0 results.\n      this[kFinished] = true\n      return this.nextTick(callback, null, [])\n    }\n\n    const transaction = this.db.db.transaction([this[kLocation]], 'readonly')\n    const store = transaction.objectStore(this[kLocation])\n    const entries = []\n\n    if (!this[kOptions].reverse) {\n      let keys\n      let values\n\n      const complete = () => {\n        // Wait for both requests to complete\n        if (keys === undefined || values === undefined) return\n\n        const length = Math.max(keys.length, values.length)\n\n        if (length === 0 || size === Infinity) {\n          this[kFinished] = true\n        } else {\n          this[kPosition] = keys[length - 1]\n        }\n\n        // Resize\n        entries.length = length\n\n        // Merge keys and values\n        for (let i = 0; i < length; i++) {\n          const key = keys[i]\n          const value = values[i]\n\n          entries[i] = [\n            this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n            this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n          ]\n        }\n\n        maybeCommit(transaction)\n      }\n\n      // If keys were not requested and size is Infinity, we don't have to keep\n      // track of position and can thus skip getting keys.\n      if (this[kOptions].keys || size < Infinity) {\n        store.getAllKeys(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n          keys = ev.target.result\n          complete()\n        }\n      } else {\n        keys = []\n        this.nextTick(complete)\n      }\n\n      if (this[kOptions].values) {\n        store.getAll(keyRange, size < Infinity ? size : undefined).onsuccess = (ev) => {\n          values = ev.target.result\n          complete()\n        }\n      } else {\n        values = []\n        this.nextTick(complete)\n      }\n    } else {\n      // Can't use getAll() in reverse, so use a slower cursor that yields one item at a time\n      // TODO: test if all target browsers support openKeyCursor\n      const method = !this[kOptions].values && store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n\n      store[method](keyRange, 'prev').onsuccess = (ev) => {\n        const cursor = ev.target.result\n\n        if (cursor) {\n          const { key, value } = cursor\n          this[kPosition] = key\n\n          entries.push([\n            this[kOptions].keys && key !== undefined ? deserialize(key) : undefined,\n            this[kOptions].values && value !== undefined ? deserialize(value) : undefined\n          ])\n\n          if (entries.length < size) {\n            cursor.continue()\n          } else {\n            maybeCommit(transaction)\n          }\n        } else {\n          this[kFinished] = true\n        }\n      }\n    }\n\n    // If an error occurs (on the request), the transaction will abort.\n    transaction.onabort = () => {\n      callback(transaction.error || new Error('aborted by user'))\n      callback = null\n    }\n\n    transaction.oncomplete = () => {\n      callback(null, entries)\n      callback = null\n    }\n  }\n\n  _next (callback) {\n    if (this[kCache].length > 0) {\n      const [key, value] = this[kCache].shift()\n      this.nextTick(callback, null, key, value)\n    } else if (this[kFinished]) {\n      this.nextTick(callback)\n    } else {\n      let size = Math.min(100, this.limit - this.count)\n\n      if (this[kFirst]) {\n        // It's common to only want one entry initially or after a seek()\n        this[kFirst] = false\n        size = 1\n      }\n\n      this._nextv(size, emptyOptions, (err, entries) => {\n        if (err) return callback(err)\n        this[kCache] = entries\n        this._next(callback)\n      })\n    }\n  }\n\n  _all (options, callback) {\n    this[kFirst] = false\n\n    // TODO: mixing next and all is not covered by test suite\n    const cache = this[kCache].splice(0, this[kCache].length)\n    const size = this.limit - this.count - cache.length\n\n    if (size <= 0) {\n      return this.nextTick(callback, null, cache)\n    }\n\n    this._nextv(size, emptyOptions, (err, entries) => {\n      if (err) return callback(err)\n      if (cache.length > 0) entries = cache.concat(entries)\n      callback(null, entries)\n    })\n  }\n\n  _seek (target, options) {\n    this[kFirst] = true\n    this[kCache] = []\n    this[kFinished] = false\n    this[kPosition] = undefined\n\n    // TODO: not covered by test suite\n    this[kCurrentOptions] = { ...this[kOptions] }\n\n    let keyRange\n\n    try {\n      keyRange = createKeyRange(this[kOptions])\n    } catch (_) {\n      this[kFinished] = true\n      return\n    }\n\n    if (keyRange !== null && !keyRange.includes(target)) {\n      this[kFinished] = true\n    } else if (this[kOptions].reverse) {\n      this[kCurrentOptions].lte = target\n    } else {\n      this[kCurrentOptions].gte = target\n    }\n  }\n}\n\nexports.Iterator = Iterator\n\nfunction maybeCommit (transaction) {\n  // Commit (meaning close) now instead of waiting for auto-commit\n  if (typeof transaction.commit === 'function') {\n    transaction.commit()\n  }\n}\n", "'use strict'\n\nmodule.exports = function clear (db, location, keyRange, options, callback) {\n  if (options.limit === 0) return db.nextTick(callback)\n\n  const transaction = db.db.transaction([location], 'readwrite')\n  const store = transaction.objectStore(location)\n  let count = 0\n\n  transaction.oncomplete = function () {\n    callback()\n  }\n\n  transaction.onabort = function () {\n    callback(transaction.error || new Error('aborted by user'))\n  }\n\n  // A key cursor is faster (skips reading values) but not supported by IE\n  // TODO: we no longer support IE. Test others\n  const method = store.openKeyCursor ? 'openKeyCursor' : 'openCursor'\n  const direction = options.reverse ? 'prev' : 'next'\n\n  store[method](keyRange, direction).onsuccess = function (ev) {\n    const cursor = ev.target.result\n\n    if (cursor) {\n      // Wait for a request to complete before continuing, saving CPU.\n      store.delete(cursor.key).onsuccess = function () {\n        if (options.limit <= 0 || ++count < options.limit) {\n          cursor.continue()\n        }\n      }\n    }\n  }\n}\n", "/* global indexedDB */\n\n'use strict'\n\nconst { AbstractLevel } = require('abstract-level')\nconst ModuleError = require('module-error')\nconst parallel = require('run-parallel-limit')\nconst { fromCallback } = require('catering')\nconst { Iterator } = require('./iterator')\nconst deserialize = require('./util/deserialize')\nconst clear = require('./util/clear')\nconst createKeyRange = require('./util/key-range')\n\n// Keep as-is for compatibility with existing level-js databases\nconst DEFAULT_PREFIX = 'level-js-'\n\nconst kIDB = Symbol('idb')\nconst kNamePrefix = Symbol('namePrefix')\nconst kLocation = Symbol('location')\nconst kVersion = Symbol('version')\nconst kStore = Symbol('store')\nconst kOnComplete = Symbol('onComplete')\nconst kPromise = Symbol('promise')\n\nclass BrowserLevel extends AbstractLevel {\n  constructor (location, options, _) {\n    // To help migrating to abstract-level\n    if (typeof options === 'function' || typeof _ === 'function') {\n      throw new ModuleError('The levelup-style callback argument has been removed', {\n        code: 'LEVEL_LEGACY'\n      })\n    }\n\n    const { prefix, version, ...forward } = options || {}\n\n    super({\n      encodings: { view: true },\n      snapshots: false,\n      createIfMissing: false,\n      errorIfExists: false,\n      seek: true\n    }, forward)\n\n    if (typeof location !== 'string') {\n      throw new Error('constructor requires a location string argument')\n    }\n\n    // TODO (next major): remove default prefix\n    this[kLocation] = location\n    this[kNamePrefix] = prefix == null ? DEFAULT_PREFIX : prefix\n    this[kVersion] = parseInt(version || 1, 10)\n    this[kIDB] = null\n  }\n\n  get location () {\n    return this[kLocation]\n  }\n\n  get namePrefix () {\n    return this[kNamePrefix]\n  }\n\n  get version () {\n    return this[kVersion]\n  }\n\n  // Exposed for backwards compat and unit tests\n  get db () {\n    return this[kIDB]\n  }\n\n  get type () {\n    return 'browser-level'\n  }\n\n  _open (options, callback) {\n    const req = indexedDB.open(this[kNamePrefix] + this[kLocation], this[kVersion])\n\n    req.onerror = function () {\n      callback(req.error || new Error('unknown error'))\n    }\n\n    req.onsuccess = () => {\n      this[kIDB] = req.result\n      callback()\n    }\n\n    req.onupgradeneeded = (ev) => {\n      const db = ev.target.result\n\n      if (!db.objectStoreNames.contains(this[kLocation])) {\n        db.createObjectStore(this[kLocation])\n      }\n    }\n  }\n\n  [kStore] (mode) {\n    const transaction = this[kIDB].transaction([this[kLocation]], mode)\n    return transaction.objectStore(this[kLocation])\n  }\n\n  [kOnComplete] (request, callback) {\n    const transaction = request.transaction\n\n    // Take advantage of the fact that a non-canceled request error aborts\n    // the transaction. I.e. no need to listen for \"request.onerror\".\n    transaction.onabort = function () {\n      callback(transaction.error || new Error('aborted by user'))\n    }\n\n    transaction.oncomplete = function () {\n      callback(null, request.result)\n    }\n  }\n\n  _get (key, options, callback) {\n    const store = this[kStore]('readonly')\n    let req\n\n    try {\n      req = store.get(key)\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, function (err, value) {\n      if (err) return callback(err)\n\n      if (value === undefined) {\n        return callback(new ModuleError('Entry not found', {\n          code: 'LEVEL_NOT_FOUND'\n        }))\n      }\n\n      callback(null, deserialize(value))\n    })\n  }\n\n  _getMany (keys, options, callback) {\n    const store = this[kStore]('readonly')\n    const tasks = keys.map((key) => (next) => {\n      let request\n\n      try {\n        request = store.get(key)\n      } catch (err) {\n        return next(err)\n      }\n\n      request.onsuccess = () => {\n        const value = request.result\n        next(null, value === undefined ? value : deserialize(value))\n      }\n\n      request.onerror = (ev) => {\n        ev.stopPropagation()\n        next(request.error)\n      }\n    })\n\n    parallel(tasks, 16, callback)\n  }\n\n  _del (key, options, callback) {\n    const store = this[kStore]('readwrite')\n    let req\n\n    try {\n      req = store.delete(key)\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, callback)\n  }\n\n  _put (key, value, options, callback) {\n    const store = this[kStore]('readwrite')\n    let req\n\n    try {\n      // Will throw a DataError or DataCloneError if the environment\n      // does not support serializing the key or value respectively.\n      req = store.put(value, key)\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, callback)\n  }\n\n  // TODO: implement key and value iterators\n  _iterator (options) {\n    return new Iterator(this, this[kLocation], options)\n  }\n\n  _batch (operations, options, callback) {\n    const store = this[kStore]('readwrite')\n    const transaction = store.transaction\n    let index = 0\n    let error\n\n    transaction.onabort = function () {\n      callback(error || transaction.error || new Error('aborted by user'))\n    }\n\n    transaction.oncomplete = function () {\n      callback()\n    }\n\n    // Wait for a request to complete before making the next, saving CPU.\n    function loop () {\n      const op = operations[index++]\n      const key = op.key\n\n      let req\n\n      try {\n        req = op.type === 'del' ? store.delete(key) : store.put(op.value, key)\n      } catch (err) {\n        error = err\n        transaction.abort()\n        return\n      }\n\n      if (index < operations.length) {\n        req.onsuccess = loop\n      } else if (typeof transaction.commit === 'function') {\n        // Commit now instead of waiting for auto-commit\n        transaction.commit()\n      }\n    }\n\n    loop()\n  }\n\n  _clear (options, callback) {\n    let keyRange\n    let req\n\n    try {\n      keyRange = createKeyRange(options)\n    } catch (e) {\n      // The lower key is greater than the upper key.\n      // IndexedDB throws an error, but we'll just do nothing.\n      return this.nextTick(callback)\n    }\n\n    if (options.limit >= 0) {\n      // IDBObjectStore#delete(range) doesn't have such an option.\n      // Fall back to cursor-based implementation.\n      return clear(this, this[kLocation], keyRange, options, callback)\n    }\n\n    try {\n      const store = this[kStore]('readwrite')\n      req = keyRange ? store.delete(keyRange) : store.clear()\n    } catch (err) {\n      return this.nextTick(callback, err)\n    }\n\n    this[kOnComplete](req, callback)\n  }\n\n  _close (callback) {\n    this[kIDB].close()\n    this.nextTick(callback)\n  }\n}\n\nBrowserLevel.destroy = function (location, prefix, callback) {\n  if (typeof prefix === 'function') {\n    callback = prefix\n    prefix = DEFAULT_PREFIX\n  }\n\n  callback = fromCallback(callback, kPromise)\n  const request = indexedDB.deleteDatabase(prefix + location)\n\n  request.onsuccess = function () {\n    callback()\n  }\n\n  request.onerror = function (err) {\n    callback(err)\n  }\n\n  return callback[kPromise]\n}\n\nexports.BrowserLevel = BrowserLevel\n", "exports.Level = require('browser-level').BrowserLevel\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n", "'use strict'\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n  https://github.com/nodejs/node/blob/master/lib/internal/per_context/primordials.js\n\n  Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n  ArrayIsArray(self) {\n    return Array.isArray(self)\n  },\n  ArrayPrototypeIncludes(self, el) {\n    return self.includes(el)\n  },\n  ArrayPrototypeIndexOf(self, el) {\n    return self.indexOf(el)\n  },\n  ArrayPrototypeJoin(self, sep) {\n    return self.join(sep)\n  },\n  ArrayPrototypeMap(self, fn) {\n    return self.map(fn)\n  },\n  ArrayPrototypePop(self, el) {\n    return self.pop(el)\n  },\n  ArrayPrototypePush(self, el) {\n    return self.push(el)\n  },\n  ArrayPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  Error,\n  FunctionPrototypeCall(fn, thisArgs, ...args) {\n    return fn.call(thisArgs, ...args)\n  },\n  FunctionPrototypeSymbolHasInstance(self, instance) {\n    return Function.prototype[Symbol.hasInstance].call(self, instance)\n  },\n  MathFloor: Math.floor,\n  Number,\n  NumberIsInteger: Number.isInteger,\n  NumberIsNaN: Number.isNaN,\n  NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n  NumberParseInt: Number.parseInt,\n  ObjectDefineProperties(self, props) {\n    return Object.defineProperties(self, props)\n  },\n  ObjectDefineProperty(self, name, prop) {\n    return Object.defineProperty(self, name, prop)\n  },\n  ObjectGetOwnPropertyDescriptor(self, name) {\n    return Object.getOwnPropertyDescriptor(self, name)\n  },\n  ObjectKeys(obj) {\n    return Object.keys(obj)\n  },\n  ObjectSetPrototypeOf(target, proto) {\n    return Object.setPrototypeOf(target, proto)\n  },\n  Promise,\n  PromisePrototypeCatch(self, fn) {\n    return self.catch(fn)\n  },\n  PromisePrototypeThen(self, thenFn, catchFn) {\n    return self.then(thenFn, catchFn)\n  },\n  PromiseReject(err) {\n    return Promise.reject(err)\n  },\n  ReflectApply: Reflect.apply,\n  RegExpPrototypeTest(self, value) {\n    return self.test(value)\n  },\n  SafeSet: Set,\n  String,\n  StringPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  StringPrototypeToLowerCase(self) {\n    return self.toLowerCase()\n  },\n  StringPrototypeToUpperCase(self) {\n    return self.toUpperCase()\n  },\n  StringPrototypeTrim(self) {\n    return self.trim()\n  },\n  Symbol,\n  SymbolAsyncIterator: Symbol.asyncIterator,\n  SymbolHasInstance: Symbol.hasInstance,\n  SymbolIterator: Symbol.iterator,\n  TypedArrayPrototypeSet(self, buf, len) {\n    return self.set(buf, len)\n  },\n  Uint8Array\n}\n", "'use strict'\n\nconst bufferModule = require('buffer')\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        // eslint-disable-next-line indent\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\n/* eslint-enable indent */\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n  constructor(errors) {\n    if (!Array.isArray(errors)) {\n      throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n    }\n    let message = ''\n    for (let i = 0; i < errors.length; i++) {\n      message += `    ${errors[i].stack}\\n`\n    }\n    super(message)\n    this.name = 'AggregateError'\n    this.errors = errors\n  }\n}\nmodule.exports = {\n  AggregateError,\n  kEmptyObject: Object.freeze({}),\n  once(callback) {\n    let called = false\n    return function (...args) {\n      if (called) {\n        return\n      }\n      called = true\n      callback.apply(this, args)\n    }\n  },\n  createDeferredPromise: function () {\n    let resolve\n    let reject\n\n    // eslint-disable-next-line promise/param-names\n    const promise = new Promise((res, rej) => {\n      resolve = res\n      reject = rej\n    })\n    return {\n      promise,\n      resolve,\n      reject\n    }\n  },\n  promisify(fn) {\n    return new Promise((resolve, reject) => {\n      fn((err, ...args) => {\n        if (err) {\n          return reject(err)\n        }\n        return resolve(...args)\n      })\n    })\n  },\n  debuglog() {\n    return function () {}\n  },\n  format(format, ...args) {\n    // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n    return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n      const replacement = args.shift()\n      if (type === 'f') {\n        return replacement.toFixed(6)\n      } else if (type === 'j') {\n        return JSON.stringify(replacement)\n      } else if (type === 's' && typeof replacement === 'object') {\n        const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n        return `${ctor} {}`.trim()\n      } else {\n        return replacement.toString()\n      }\n    })\n  },\n  inspect(value) {\n    // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n    switch (typeof value) {\n      case 'string':\n        if (value.includes(\"'\")) {\n          if (!value.includes('\"')) {\n            return `\"${value}\"`\n          } else if (!value.includes('`') && !value.includes('${')) {\n            return `\\`${value}\\``\n          }\n        }\n        return `'${value}'`\n      case 'number':\n        if (isNaN(value)) {\n          return 'NaN'\n        } else if (Object.is(value, -0)) {\n          return String(value)\n        }\n        return value\n      case 'bigint':\n        return `${String(value)}n`\n      case 'boolean':\n      case 'undefined':\n        return String(value)\n      case 'object':\n        return '{}'\n    }\n  },\n  types: {\n    isAsyncFunction(fn) {\n      return fn instanceof AsyncFunction\n    },\n    isArrayBufferView(arr) {\n      return ArrayBuffer.isView(arr)\n    }\n  },\n  isBlob\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n", "/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n    typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n", "'use strict'\n\nconst { format, inspect, AggregateError: CustomAggregateError } = require('./util')\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n  https://github.com/nodejs/node/blob/master/lib/internal/errors.js\n\n  Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n  with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n  'string',\n  'function',\n  'number',\n  'object',\n  // Accept 'Function' and 'Object' as alternative to the lower cased version.\n  'Function',\n  'Object',\n  'boolean',\n  'bigint',\n  'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n  if (!value) {\n    throw new codes.ERR_INTERNAL_ASSERTION(message)\n  }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n  if (typeof msg === 'function') {\n    assert(\n      msg.length <= args.length,\n      // Default options do not count.\n      `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n    )\n    return msg(...args)\n  }\n  const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n  assert(\n    expectedLength === args.length,\n    `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n  )\n  if (args.length === 0) {\n    return msg\n  }\n  return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n  class NodeError extends Base {\n    constructor(...args) {\n      super(getMessage(code, message, args))\n    }\n    toString() {\n      return `${this.name} [${code}]: ${this.message}`\n    }\n  }\n  Object.defineProperties(NodeError.prototype, {\n    name: {\n      value: Base.name,\n      writable: true,\n      enumerable: false,\n      configurable: true\n    },\n    toString: {\n      value() {\n        return `${this.name} [${code}]: ${this.message}`\n      },\n      writable: true,\n      enumerable: false,\n      configurable: true\n    }\n  })\n  NodeError.prototype.code = code\n  NodeError.prototype[kIsNodeError] = true\n  codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n  // We rename the functions that will be hidden to cut off the stacktrace\n  // at the outermost one\n  const hidden = nodeInternalPrefix + fn.name\n  Object.defineProperty(fn, 'name', {\n    value: hidden\n  })\n  return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n  if (innerError && outerError && innerError !== outerError) {\n    if (Array.isArray(outerError.errors)) {\n      // If `outerError` is already an `AggregateError`.\n      outerError.errors.push(innerError)\n      return outerError\n    }\n    const err = new AggregateError([outerError, innerError], outerError.message)\n    err.code = outerError.code\n    return err\n  }\n  return innerError || outerError\n}\nclass AbortError extends Error {\n  constructor(message = 'The operation was aborted', options = undefined) {\n    if (options !== undefined && typeof options !== 'object') {\n      throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n    }\n    super(message, options)\n    this.code = 'ABORT_ERR'\n    this.name = 'AbortError'\n  }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n  'ERR_INVALID_ARG_TYPE',\n  (name, expected, actual) => {\n    assert(typeof name === 'string', \"'name' must be a string\")\n    if (!Array.isArray(expected)) {\n      expected = [expected]\n    }\n    let msg = 'The '\n    if (name.endsWith(' argument')) {\n      // For cases like 'first argument'\n      msg += `${name} `\n    } else {\n      msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n    }\n    msg += 'must be '\n    const types = []\n    const instances = []\n    const other = []\n    for (const value of expected) {\n      assert(typeof value === 'string', 'All expected entries have to be of type string')\n      if (kTypes.includes(value)) {\n        types.push(value.toLowerCase())\n      } else if (classRegExp.test(value)) {\n        instances.push(value)\n      } else {\n        assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n        other.push(value)\n      }\n    }\n\n    // Special handle `object` in case other instances are allowed to outline\n    // the differences between each other.\n    if (instances.length > 0) {\n      const pos = types.indexOf('object')\n      if (pos !== -1) {\n        types.splice(types, pos, 1)\n        instances.push('Object')\n      }\n    }\n    if (types.length > 0) {\n      switch (types.length) {\n        case 1:\n          msg += `of type ${types[0]}`\n          break\n        case 2:\n          msg += `one of type ${types[0]} or ${types[1]}`\n          break\n        default: {\n          const last = types.pop()\n          msg += `one of type ${types.join(', ')}, or ${last}`\n        }\n      }\n      if (instances.length > 0 || other.length > 0) {\n        msg += ' or '\n      }\n    }\n    if (instances.length > 0) {\n      switch (instances.length) {\n        case 1:\n          msg += `an instance of ${instances[0]}`\n          break\n        case 2:\n          msg += `an instance of ${instances[0]} or ${instances[1]}`\n          break\n        default: {\n          const last = instances.pop()\n          msg += `an instance of ${instances.join(', ')}, or ${last}`\n        }\n      }\n      if (other.length > 0) {\n        msg += ' or '\n      }\n    }\n    switch (other.length) {\n      case 0:\n        break\n      case 1:\n        if (other[0].toLowerCase() !== other[0]) {\n          msg += 'an '\n        }\n        msg += `${other[0]}`\n        break\n      case 2:\n        msg += `one of ${other[0]} or ${other[1]}`\n        break\n      default: {\n        const last = other.pop()\n        msg += `one of ${other.join(', ')}, or ${last}`\n      }\n    }\n    if (actual == null) {\n      msg += `. Received ${actual}`\n    } else if (typeof actual === 'function' && actual.name) {\n      msg += `. Received function ${actual.name}`\n    } else if (typeof actual === 'object') {\n      var _actual$constructor\n      if (\n        (_actual$constructor = actual.constructor) !== null &&\n        _actual$constructor !== undefined &&\n        _actual$constructor.name\n      ) {\n        msg += `. Received an instance of ${actual.constructor.name}`\n      } else {\n        const inspected = inspect(actual, {\n          depth: -1\n        })\n        msg += `. Received ${inspected}`\n      }\n    } else {\n      let inspected = inspect(actual, {\n        colors: false\n      })\n      if (inspected.length > 25) {\n        inspected = `${inspected.slice(0, 25)}...`\n      }\n      msg += `. Received type ${typeof actual} (${inspected})`\n    }\n    return msg\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_ARG_VALUE',\n  (name, value, reason = 'is invalid') => {\n    let inspected = inspect(value)\n    if (inspected.length > 128) {\n      inspected = inspected.slice(0, 128) + '...'\n    }\n    const type = name.includes('.') ? 'property' : 'argument'\n    return `The ${type} '${name}' ${reason}. Received ${inspected}`\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_RETURN_VALUE',\n  (input, name, value) => {\n    var _value$constructor\n    const type =\n      value !== null &&\n      value !== undefined &&\n      (_value$constructor = value.constructor) !== null &&\n      _value$constructor !== undefined &&\n      _value$constructor.name\n        ? `instance of ${value.constructor.name}`\n        : `type ${typeof value}`\n    return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n  },\n  TypeError\n)\nE(\n  'ERR_MISSING_ARGS',\n  (...args) => {\n    assert(args.length > 0, 'At least one arg needs to be specified')\n    let msg\n    const len = args.length\n    args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n    switch (len) {\n      case 1:\n        msg += `The ${args[0]} argument`\n        break\n      case 2:\n        msg += `The ${args[0]} and ${args[1]} arguments`\n        break\n      default:\n        {\n          const last = args.pop()\n          msg += `The ${args.join(', ')}, and ${last} arguments`\n        }\n        break\n    }\n    return `${msg} must be specified`\n  },\n  TypeError\n)\nE(\n  'ERR_OUT_OF_RANGE',\n  (str, range, input) => {\n    assert(range, 'Missing \"range\" argument')\n    let received\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > 2n ** 32n || input < -(2n ** 32n)) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    } else {\n      received = inspect(input)\n    }\n    return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n  },\n  RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n  AbortError,\n  aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n  hideStackFrames,\n  codes\n}\n", "'use strict'\n\nconst {\n  ArrayIsArray,\n  ArrayPrototypeIncludes,\n  ArrayPrototypeJoin,\n  ArrayPrototypeMap,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberMAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER,\n  NumberParseInt,\n  ObjectPrototypeHasOwnProperty,\n  RegExpPrototypeExec,\n  String,\n  StringPrototypeToUpperCase,\n  StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n  hideStackFrames,\n  codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n  return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n  return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n *\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n  if (typeof value === 'undefined') {\n    value = def\n  }\n  if (typeof value === 'string') {\n    if (RegExpPrototypeExec(octalReg, value) === null) {\n      throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n    }\n    value = NumberParseInt(value, 8)\n  }\n  validateUint32(value, name)\n  return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n  // The defaults for min and max correspond to the limits of 32-bit integers.\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  const min = positive ? 1 : 0\n  // 2 ** 32 === 4294967296\n  const max = 4294967295\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n  if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (\n    (min != null && value < min) ||\n    (max != null && value > max) ||\n    ((min != null || max != null) && NumberIsNaN(value))\n  ) {\n    throw new ERR_OUT_OF_RANGE(\n      name,\n      `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n      value\n    )\n  }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n  if (!ArrayPrototypeIncludes(oneOf, value)) {\n    const allowed = ArrayPrototypeJoin(\n      ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n      ', '\n    )\n    const reason = 'must be one of: ' + allowed\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n  if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n  return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n *   allowArray?: boolean,\n *   allowFunction?: boolean,\n *   nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n  const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n  const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n  const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n  if (\n    (!nullable && value === null) ||\n    (!allowArray && ArrayIsArray(value)) ||\n    (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n  ) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n  }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n  if (!ArrayIsArray(value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n  }\n  if (value.length < minLength) {\n    const reason = `must be longer than ${minLength}`\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n  validateString(signal, name)\n  if (signals[signal] === undefined) {\n    if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n      throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n    }\n    throw new ERR_UNKNOWN_SIGNAL(signal)\n  }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n  if (!isArrayBufferView(buffer)) {\n    throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n  }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n  const normalizedEncoding = normalizeEncoding(encoding)\n  const length = data.length\n  if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n    throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n  }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n  if (\n    (typeof port !== 'number' && typeof port !== 'string') ||\n    (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n    +port !== +port >>> 0 ||\n    port > 0xffff ||\n    (port === 0 && !allowZero)\n  ) {\n    throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n  }\n  return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n  if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n  if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n  if (!ArrayPrototypeIncludes(union, value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n  }\n}\nmodule.exports = {\n  isInt32,\n  isUint32,\n  parseFileMode,\n  validateArray,\n  validateBoolean,\n  validateBuffer,\n  validateEncoding,\n  validateFunction,\n  validateInt32,\n  validateInteger,\n  validateNumber,\n  validateObject,\n  validateOneOf,\n  validatePlainFunction,\n  validatePort,\n  validateSignalName,\n  validateString,\n  validateUint32,\n  validateUndefined,\n  validateUnion,\n  validateAbortSignal\n}\n", "'use strict'\n\nconst { Symbol, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst kDestroyed = Symbol('kDestroyed')\nconst kIsErrored = Symbol('kIsErrored')\nconst kIsReadable = Symbol('kIsReadable')\nconst kIsDisturbed = Symbol('kIsDisturbed')\nfunction isReadableNodeStream(obj, strict = false) {\n  var _obj$_readableState\n  return !!(\n    (\n      obj &&\n      typeof obj.pipe === 'function' &&\n      typeof obj.on === 'function' &&\n      (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n      (!obj._writableState ||\n        ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n          ? undefined\n          : _obj$_readableState.readable) !== false) &&\n      // Duplex\n      (!obj._writableState || obj._readableState)\n    ) // Writable has .pipe.\n  )\n}\n\nfunction isWritableNodeStream(obj) {\n  var _obj$_writableState\n  return !!(\n    (\n      obj &&\n      typeof obj.write === 'function' &&\n      typeof obj.on === 'function' &&\n      (!obj._readableState ||\n        ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n          ? undefined\n          : _obj$_writableState.writable) !== false)\n    ) // Duplex\n  )\n}\n\nfunction isDuplexNodeStream(obj) {\n  return !!(\n    obj &&\n    typeof obj.pipe === 'function' &&\n    obj._readableState &&\n    typeof obj.on === 'function' &&\n    typeof obj.write === 'function'\n  )\n}\nfunction isNodeStream(obj) {\n  return (\n    obj &&\n    (obj._readableState ||\n      obj._writableState ||\n      (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n      (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n  )\n}\nfunction isIterable(obj, isAsync) {\n  if (obj == null) return false\n  if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n  if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n  return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return !!(stream.destroyed || stream[kDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableEnded === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n  return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableFinished === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n  return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n  if (!isReadableNodeStream(stream)) return null\n  if (stream.readableEnded === true) return true\n  const rState = stream._readableState\n  if (!rState || rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n  return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n  if (!isReadableNodeStream(stream)) return null\n  const rState = stream._readableState\n  if (rState !== null && rState !== undefined && rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n  return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n  if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n  if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n  if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (isDestroyed(stream)) {\n    return true\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n    return false\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n    return false\n  }\n  return true\n}\nfunction isWritableErrored(stream) {\n  var _stream$_writableStat, _stream$_writableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.writableErrored) {\n    return stream.writableErrored\n  }\n  return (_stream$_writableStat =\n    (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n      ? undefined\n      : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n    ? _stream$_writableStat\n    : null\n}\nfunction isReadableErrored(stream) {\n  var _stream$_readableStat, _stream$_readableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.readableErrored) {\n    return stream.readableErrored\n  }\n  return (_stream$_readableStat =\n    (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n      ? undefined\n      : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n    ? _stream$_readableStat\n    : null\n}\nfunction isClosed(stream) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (typeof stream.closed === 'boolean') {\n    return stream.closed\n  }\n  const wState = stream._writableState\n  const rState = stream._readableState\n  if (\n    typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n    typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n  ) {\n    return (\n      (wState === null || wState === undefined ? undefined : wState.closed) ||\n      (rState === null || rState === undefined ? undefined : rState.closed)\n    )\n  }\n  if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n    return stream._closed\n  }\n  return null\n}\nfunction isOutgoingMessage(stream) {\n  return (\n    typeof stream._closed === 'boolean' &&\n    typeof stream._defaultKeepAlive === 'boolean' &&\n    typeof stream._removedConnection === 'boolean' &&\n    typeof stream._removedContLen === 'boolean'\n  )\n}\nfunction isServerResponse(stream) {\n  return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n  var _stream$req\n  return (\n    typeof stream._consuming === 'boolean' &&\n    typeof stream._dumped === 'boolean' &&\n    ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n      undefined\n  )\n}\nfunction willEmitClose(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return (\n    (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n  )\n}\nfunction isDisturbed(stream) {\n  var _stream$kIsDisturbed\n  return !!(\n    stream &&\n    ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n      ? _stream$kIsDisturbed\n      : stream.readableDidRead || stream.readableAborted)\n  )\n}\nfunction isErrored(stream) {\n  var _ref,\n    _ref2,\n    _ref3,\n    _ref4,\n    _ref5,\n    _stream$kIsErrored,\n    _stream$_readableStat3,\n    _stream$_writableStat3,\n    _stream$_readableStat4,\n    _stream$_writableStat4\n  return !!(\n    stream &&\n    ((_ref =\n      (_ref2 =\n        (_ref3 =\n          (_ref4 =\n            (_ref5 =\n              (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n                ? _stream$kIsErrored\n                : stream.readableErrored) !== null && _ref5 !== undefined\n              ? _ref5\n              : stream.writableErrored) !== null && _ref4 !== undefined\n            ? _ref4\n            : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n            ? undefined\n            : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n          ? _ref3\n          : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n          ? undefined\n          : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n        ? _ref2\n        : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n        ? undefined\n        : _stream$_readableStat4.errored) !== null && _ref !== undefined\n      ? _ref\n      : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n      ? undefined\n      : _stream$_writableStat4.errored)\n  )\n}\nmodule.exports = {\n  kDestroyed,\n  isDisturbed,\n  kIsDisturbed,\n  isErrored,\n  kIsErrored,\n  isReadable,\n  kIsReadable,\n  isClosed,\n  isDestroyed,\n  isDuplexNodeStream,\n  isFinished,\n  isIterable,\n  isReadableNodeStream,\n  isReadableEnded,\n  isReadableFinished,\n  isReadableErrored,\n  isNodeStream,\n  isWritable,\n  isWritableNodeStream,\n  isWritableEnded,\n  isWritableFinished,\n  isWritableErrored,\n  isServerRequest,\n  isServerResponse,\n  willEmitClose\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject } = require('../validators')\nconst { Promise } = require('../../ours/primordials')\nconst {\n  isClosed,\n  isReadable,\n  isReadableNodeStream,\n  isReadableFinished,\n  isReadableErrored,\n  isWritable,\n  isWritableNodeStream,\n  isWritableFinished,\n  isWritableErrored,\n  isNodeStream,\n  willEmitClose: _willEmitClose\n} = require('./utils')\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n  var _options$readable, _options$writable\n  if (arguments.length === 2) {\n    callback = options\n    options = kEmptyObject\n  } else if (options == null) {\n    options = kEmptyObject\n  } else {\n    validateObject(options, 'options')\n  }\n  validateFunction(callback, 'callback')\n  validateAbortSignal(options.signal, 'options.signal')\n  callback = once(callback)\n  const readable =\n    (_options$readable = options.readable) !== null && _options$readable !== undefined\n      ? _options$readable\n      : isReadableNodeStream(stream)\n  const writable =\n    (_options$writable = options.writable) !== null && _options$writable !== undefined\n      ? _options$writable\n      : isWritableNodeStream(stream)\n  if (!isNodeStream(stream)) {\n    // TODO: Webstreams.\n    throw new ERR_INVALID_ARG_TYPE('stream', 'Stream', stream)\n  }\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const onlegacyfinish = () => {\n    if (!stream.writable) {\n      onfinish()\n    }\n  }\n\n  // TODO (ronag): Improve soft detection to include core modules and\n  // common ecosystem modules that do properly emit 'close' but fail\n  // this generic check.\n  let willEmitClose =\n    _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n  let writableFinished = isWritableFinished(stream, false)\n  const onfinish = () => {\n    writableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.readable || readable)) {\n      return\n    }\n    if (!readable || readableFinished) {\n      callback.call(stream)\n    }\n  }\n  let readableFinished = isReadableFinished(stream, false)\n  const onend = () => {\n    readableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.writable || writable)) {\n      return\n    }\n    if (!writable || writableFinished) {\n      callback.call(stream)\n    }\n  }\n  const onerror = (err) => {\n    callback.call(stream, err)\n  }\n  let closed = isClosed(stream)\n  const onclose = () => {\n    closed = true\n    const errored = isWritableErrored(stream) || isReadableErrored(stream)\n    if (errored && typeof errored !== 'boolean') {\n      return callback.call(stream, errored)\n    }\n    if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n      if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    if (writable && !writableFinished) {\n      if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    callback.call(stream)\n  }\n  const onrequest = () => {\n    stream.req.on('finish', onfinish)\n  }\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish)\n    if (!willEmitClose) {\n      stream.on('abort', onclose)\n    }\n    if (stream.req) {\n      onrequest()\n    } else {\n      stream.on('request', onrequest)\n    }\n  } else if (writable && !wState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish)\n    stream.on('close', onlegacyfinish)\n  }\n\n  // Not all streams will emit 'close' after 'aborted'.\n  if (!willEmitClose && typeof stream.aborted === 'boolean') {\n    stream.on('aborted', onclose)\n  }\n  stream.on('end', onend)\n  stream.on('finish', onfinish)\n  if (options.error !== false) {\n    stream.on('error', onerror)\n  }\n  stream.on('close', onclose)\n  if (closed) {\n    process.nextTick(onclose)\n  } else if (\n    (wState !== null && wState !== undefined && wState.errorEmitted) ||\n    (rState !== null && rState !== undefined && rState.errorEmitted)\n  ) {\n    if (!willEmitClose) {\n      process.nextTick(onclose)\n    }\n  } else if (\n    !readable &&\n    (!willEmitClose || isReadable(stream)) &&\n    (writableFinished || isWritable(stream) === false)\n  ) {\n    process.nextTick(onclose)\n  } else if (\n    !writable &&\n    (!willEmitClose || isWritable(stream)) &&\n    (readableFinished || isReadable(stream) === false)\n  ) {\n    process.nextTick(onclose)\n  } else if (rState && stream.req && stream.aborted) {\n    process.nextTick(onclose)\n  }\n  const cleanup = () => {\n    callback = nop\n    stream.removeListener('aborted', onclose)\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  if (options.signal && !closed) {\n    const abort = () => {\n      // Keep it because cleanup removes it.\n      const endCallback = callback\n      cleanup()\n      endCallback.call(\n        stream,\n        new AbortError(undefined, {\n          cause: options.signal.reason\n        })\n      )\n    }\n    if (options.signal.aborted) {\n      process.nextTick(abort)\n    } else {\n      const originalCallback = callback\n      callback = once((...args) => {\n        options.signal.removeEventListener('abort', abort)\n        originalCallback.apply(stream, args)\n      })\n      options.signal.addEventListener('abort', abort)\n    }\n  }\n  return cleanup\n}\nfunction finished(stream, opts) {\n  return new Promise((resolve, reject) => {\n    eos(stream, opts, (err) => {\n      if (err) {\n        reject(err)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n", "'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n  codes: { ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n  AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst { finished } = require('./end-of-stream')\nconst {\n  ArrayPrototypePush,\n  MathFloor,\n  Number,\n  NumberIsNaN,\n  Promise,\n  PromiseReject,\n  PromisePrototypeThen,\n  Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction map(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let concurrency = 1\n  if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n    concurrency = MathFloor(options.concurrency)\n  }\n  validateInteger(concurrency, 'concurrency', 1)\n  return async function* map() {\n    var _options$signal, _options$signal2\n    const ac = new AbortController()\n    const stream = this\n    const queue = []\n    const signal = ac.signal\n    const signalOpt = {\n      signal\n    }\n    const abort = () => ac.abort()\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal = options.signal) !== null &&\n      _options$signal !== undefined &&\n      _options$signal.aborted\n    ) {\n      abort()\n    }\n    options === null || options === undefined\n      ? undefined\n      : (_options$signal2 = options.signal) === null || _options$signal2 === undefined\n      ? undefined\n      : _options$signal2.addEventListener('abort', abort)\n    let next\n    let resume\n    let done = false\n    function onDone() {\n      done = true\n    }\n    async function pump() {\n      try {\n        for await (let val of stream) {\n          var _val\n          if (done) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          try {\n            val = fn(val, signalOpt)\n          } catch (err) {\n            val = PromiseReject(err)\n          }\n          if (val === kEmpty) {\n            continue\n          }\n          if (typeof ((_val = val) === null || _val === undefined ? undefined : _val.catch) === 'function') {\n            val.catch(onDone)\n          }\n          queue.push(val)\n          if (next) {\n            next()\n            next = null\n          }\n          if (!done && queue.length && queue.length >= concurrency) {\n            await new Promise((resolve) => {\n              resume = resolve\n            })\n          }\n        }\n        queue.push(kEof)\n      } catch (err) {\n        const val = PromiseReject(err)\n        PromisePrototypeThen(val, undefined, onDone)\n        queue.push(val)\n      } finally {\n        var _options$signal3\n        done = true\n        if (next) {\n          next()\n          next = null\n        }\n        options === null || options === undefined\n          ? undefined\n          : (_options$signal3 = options.signal) === null || _options$signal3 === undefined\n          ? undefined\n          : _options$signal3.removeEventListener('abort', abort)\n      }\n    }\n    pump()\n    try {\n      while (true) {\n        while (queue.length > 0) {\n          const val = await queue[0]\n          if (val === kEof) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          if (val !== kEmpty) {\n            yield val\n          }\n          queue.shift()\n          if (resume) {\n            resume()\n            resume = null\n          }\n        }\n        await new Promise((resolve) => {\n          next = resolve\n        })\n      }\n    } finally {\n      ac.abort()\n      done = true\n      if (resume) {\n        resume()\n        resume = null\n      }\n    }\n  }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  return async function* asIndexedPairs() {\n    let index = 0\n    for await (const val of this) {\n      var _options$signal4\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal4 = options.signal) !== null &&\n        _options$signal4 !== undefined &&\n        _options$signal4.aborted\n      ) {\n        throw new AbortError({\n          cause: options.signal.reason\n        })\n      }\n      yield [index++, val]\n    }\n  }.call(this)\n}\nasync function some(fn, options = undefined) {\n  for await (const unused of filter.call(this, fn, options)) {\n    return true\n  }\n  return false\n}\nasync function every(fn, options = undefined) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n  return !(await some.call(\n    this,\n    async (...args) => {\n      return !(await fn(...args))\n    },\n    options\n  ))\n}\nasync function find(fn, options) {\n  for await (const result of filter.call(this, fn, options)) {\n    return result\n  }\n  return undefined\n}\nasync function forEach(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function forEachFn(value, options) {\n    await fn(value, options)\n    return kEmpty\n  }\n  // eslint-disable-next-line no-unused-vars\n  for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function filterFn(value, options) {\n    if (await fn(value, options)) {\n      return value\n    }\n    return kEmpty\n  }\n  return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n  constructor() {\n    super('reduce')\n    this.message = 'Reduce of an empty stream requires an initial value'\n  }\n}\nasync function reduce(reducer, initialValue, options) {\n  var _options$signal5\n  if (typeof reducer !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let hasInitialValue = arguments.length > 1\n  if (\n    options !== null &&\n    options !== undefined &&\n    (_options$signal5 = options.signal) !== null &&\n    _options$signal5 !== undefined &&\n    _options$signal5.aborted\n  ) {\n    const err = new AbortError(undefined, {\n      cause: options.signal.reason\n    })\n    this.once('error', () => {}) // The error is already propagated\n    await finished(this.destroy(err))\n    throw err\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  if (options !== null && options !== undefined && options.signal) {\n    const opts = {\n      once: true,\n      [kWeakHandler]: this\n    }\n    options.signal.addEventListener('abort', () => ac.abort(), opts)\n  }\n  let gotAnyItemFromStream = false\n  try {\n    for await (const value of this) {\n      var _options$signal6\n      gotAnyItemFromStream = true\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal6 = options.signal) !== null &&\n        _options$signal6 !== undefined &&\n        _options$signal6.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (!hasInitialValue) {\n        initialValue = value\n        hasInitialValue = true\n      } else {\n        initialValue = await reducer(initialValue, value, {\n          signal\n        })\n      }\n    }\n    if (!gotAnyItemFromStream && !hasInitialValue) {\n      throw new ReduceAwareErrMissingArgs()\n    }\n  } finally {\n    ac.abort()\n  }\n  return initialValue\n}\nasync function toArray(options) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  const result = []\n  for await (const val of this) {\n    var _options$signal7\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal7 = options.signal) !== null &&\n      _options$signal7 !== undefined &&\n      _options$signal7.aborted\n    ) {\n      throw new AbortError(undefined, {\n        cause: options.signal.reason\n      })\n    }\n    ArrayPrototypePush(result, val)\n  }\n  return result\n}\nfunction flatMap(fn, options) {\n  const values = map.call(this, fn, options)\n  return async function* flatMap() {\n    for await (const val of values) {\n      yield* val\n    }\n  }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n  // We coerce here to align with the spec\n  // https://github.com/tc39/proposal-iterator-helpers/issues/169\n  number = Number(number)\n  if (NumberIsNaN(number)) {\n    return 0\n  }\n  if (number < 0) {\n    throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n  }\n  return number\n}\nfunction drop(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* drop() {\n    var _options$signal8\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal8 = options.signal) !== null &&\n      _options$signal8 !== undefined &&\n      _options$signal8.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal9\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal9 = options.signal) !== null &&\n        _options$signal9 !== undefined &&\n        _options$signal9.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- <= 0) {\n        yield val\n      }\n    }\n  }.call(this)\n}\nfunction take(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* take() {\n    var _options$signal10\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal10 = options.signal) !== null &&\n      _options$signal10 !== undefined &&\n      _options$signal10.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal11\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal11 = options.signal) !== null &&\n        _options$signal11 !== undefined &&\n        _options$signal11.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- > 0) {\n        yield val\n      } else {\n        return\n      }\n    }\n  }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n  asIndexedPairs,\n  drop,\n  filter,\n  flatMap,\n  map,\n  take\n}\nmodule.exports.promiseReturningOperators = {\n  every,\n  forEach,\n  reduce,\n  toArray,\n  some,\n  find\n}\n", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n  aggregateTwoErrors,\n  codes: { ERR_MULTIPLE_CALLBACK },\n  AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n  if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n  }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n  const r = this._readableState\n  const w = this._writableState\n  // With duplex streams we use the writable side for state.\n  const s = w || r\n  if ((w && w.destroyed) || (r && r.destroyed)) {\n    if (typeof cb === 'function') {\n      cb()\n    }\n    return this\n  }\n\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  checkError(err, w, r)\n  if (w) {\n    w.destroyed = true\n  }\n  if (r) {\n    r.destroyed = true\n  }\n\n  // If still constructing then defer calling _destroy.\n  if (!s.constructed) {\n    this.once(kDestroy, function (er) {\n      _destroy(this, aggregateTwoErrors(er, err), cb)\n    })\n  } else {\n    _destroy(this, err, cb)\n  }\n  return this\n}\nfunction _destroy(self, err, cb) {\n  let called = false\n  function onDestroy(err) {\n    if (called) {\n      return\n    }\n    called = true\n    const r = self._readableState\n    const w = self._writableState\n    checkError(err, w, r)\n    if (w) {\n      w.closed = true\n    }\n    if (r) {\n      r.closed = true\n    }\n    if (typeof cb === 'function') {\n      cb(err)\n    }\n    if (err) {\n      process.nextTick(emitErrorCloseNT, self, err)\n    } else {\n      process.nextTick(emitCloseNT, self)\n    }\n  }\n  try {\n    self._destroy(err || null, onDestroy)\n  } catch (err) {\n    onDestroy(err)\n  }\n}\nfunction emitErrorCloseNT(self, err) {\n  emitErrorNT(self, err)\n  emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n  const r = self._readableState\n  const w = self._writableState\n  if (w) {\n    w.closeEmitted = true\n  }\n  if (r) {\n    r.closeEmitted = true\n  }\n  if ((w && w.emitClose) || (r && r.emitClose)) {\n    self.emit('close')\n  }\n}\nfunction emitErrorNT(self, err) {\n  const r = self._readableState\n  const w = self._writableState\n  if ((w && w.errorEmitted) || (r && r.errorEmitted)) {\n    return\n  }\n  if (w) {\n    w.errorEmitted = true\n  }\n  if (r) {\n    r.errorEmitted = true\n  }\n  self.emit('error', err)\n}\nfunction undestroy() {\n  const r = this._readableState\n  const w = this._writableState\n  if (r) {\n    r.constructed = true\n    r.closed = false\n    r.closeEmitted = false\n    r.destroyed = false\n    r.errored = null\n    r.errorEmitted = false\n    r.reading = false\n    r.ended = r.readable === false\n    r.endEmitted = r.readable === false\n  }\n  if (w) {\n    w.constructed = true\n    w.destroyed = false\n    w.closed = false\n    w.closeEmitted = false\n    w.errored = null\n    w.errorEmitted = false\n    w.finalCalled = false\n    w.prefinished = false\n    w.ended = w.writable === false\n    w.ending = w.writable === false\n    w.finished = w.writable === false\n  }\n}\nfunction errorOrDestroy(stream, err, sync) {\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\n  const r = stream._readableState\n  const w = stream._writableState\n  if ((w && w.destroyed) || (r && r.destroyed)) {\n    return this\n  }\n  if ((r && r.autoDestroy) || (w && w.autoDestroy)) stream.destroy(err)\n  else if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n    if (sync) {\n      process.nextTick(emitErrorNT, stream, err)\n    } else {\n      emitErrorNT(stream, err)\n    }\n  }\n}\nfunction construct(stream, cb) {\n  if (typeof stream._construct !== 'function') {\n    return\n  }\n  const r = stream._readableState\n  const w = stream._writableState\n  if (r) {\n    r.constructed = false\n  }\n  if (w) {\n    w.constructed = false\n  }\n  stream.once(kConstruct, cb)\n  if (stream.listenerCount(kConstruct) > 1) {\n    // Duplex\n    return\n  }\n  process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n  let called = false\n  function onConstruct(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    const r = stream._readableState\n    const w = stream._writableState\n    const s = w || r\n    if (r) {\n      r.constructed = true\n    }\n    if (w) {\n      w.constructed = true\n    }\n    if (s.destroyed) {\n      stream.emit(kDestroy, err)\n    } else if (err) {\n      errorOrDestroy(stream, err, true)\n    } else {\n      process.nextTick(emitConstructNT, stream)\n    }\n  }\n  try {\n    stream._construct(onConstruct)\n  } catch (err) {\n    onConstruct(err)\n  }\n}\nfunction emitConstructNT(stream) {\n  stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n  return stream && stream.setHeader && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n  stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n  stream.emit('error', err)\n  process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n  if (!stream || isDestroyed(stream)) {\n    return\n  }\n  if (!err && !isFinished(stream)) {\n    err = new AbortError()\n  }\n\n  // TODO: Remove isRequest branches.\n  if (isServerRequest(stream)) {\n    stream.socket = null\n    stream.destroy(err)\n  } else if (isRequest(stream)) {\n    stream.abort()\n  } else if (isRequest(stream.req)) {\n    stream.req.abort()\n  } else if (typeof stream.destroy === 'function') {\n    stream.destroy(err)\n  } else if (typeof stream.close === 'function') {\n    // TODO: Don't lose err?\n    stream.close()\n  } else if (err) {\n    process.nextTick(emitErrorCloseLegacy, stream, err)\n  } else {\n    process.nextTick(emitCloseLegacy, stream)\n  }\n  if (!stream.destroyed) {\n    stream[kDestroyed] = true\n  }\n}\nmodule.exports = {\n  construct,\n  destroyer,\n  destroy,\n  undestroy,\n  errorOrDestroy\n}\n", "'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n  EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n  const source = this\n  function ondata(chunk) {\n    if (dest.writable && dest.write(chunk) === false && source.pause) {\n      source.pause()\n    }\n  }\n  source.on('data', ondata)\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume()\n    }\n  }\n  dest.on('drain', ondrain)\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend)\n    source.on('close', onclose)\n  }\n  let didOnEnd = false\n  function onend() {\n    if (didOnEnd) return\n    didOnEnd = true\n    dest.end()\n  }\n  function onclose() {\n    if (didOnEnd) return\n    didOnEnd = true\n    if (typeof dest.destroy === 'function') dest.destroy()\n  }\n\n  // Don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup()\n    if (EE.listenerCount(this, 'error') === 0) {\n      this.emit('error', er)\n    }\n  }\n  prependListener(source, 'error', onerror)\n  prependListener(dest, 'error', onerror)\n\n  // Remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata)\n    dest.removeListener('drain', ondrain)\n    source.removeListener('end', onend)\n    source.removeListener('close', onclose)\n    source.removeListener('error', onerror)\n    dest.removeListener('error', onerror)\n    source.removeListener('end', cleanup)\n    source.removeListener('close', cleanup)\n    dest.removeListener('close', cleanup)\n  }\n  source.on('end', cleanup)\n  source.on('close', cleanup)\n  dest.on('close', cleanup)\n  dest.emit('pipe', source)\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest\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)\n\n  // 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  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n  else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n  else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n  Stream,\n  prependListener\n}\n", "'use strict'\n\nconst { AbortError, codes } = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n}\nfunction isNodeStream(obj) {\n  return !!(obj && typeof obj.pipe === 'function')\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n  validateAbortSignal(signal, 'signal')\n  if (!isNodeStream(stream)) {\n    throw new ERR_INVALID_ARG_TYPE('stream', 'stream.Stream', stream)\n  }\n  return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    return stream\n  }\n  const onAbort = () => {\n    stream.destroy(\n      new AbortError(undefined, {\n        cause: signal.reason\n      })\n    )\n  }\n  if (signal.aborted) {\n    onAbort()\n  } else {\n    signal.addEventListener('abort', onAbort)\n    eos(stream, () => signal.removeEventListener('abort', onAbort))\n  }\n  return stream\n}\n", "'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n  constructor() {\n    this.head = null\n    this.tail = null\n    this.length = 0\n  }\n  push(v) {\n    const entry = {\n      data: v,\n      next: null\n    }\n    if (this.length > 0) this.tail.next = entry\n    else this.head = entry\n    this.tail = entry\n    ++this.length\n  }\n  unshift(v) {\n    const 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  shift() {\n    if (this.length === 0) return\n    const ret = this.head.data\n    if (this.length === 1) this.head = this.tail = null\n    else this.head = this.head.next\n    --this.length\n    return ret\n  }\n  clear() {\n    this.head = this.tail = null\n    this.length = 0\n  }\n  join(s) {\n    if (this.length === 0) return ''\n    let p = this.head\n    let ret = '' + p.data\n    while ((p = p.next) !== null) ret += s + p.data\n    return ret\n  }\n  concat(n) {\n    if (this.length === 0) return Buffer.alloc(0)\n    const ret = Buffer.allocUnsafe(n >>> 0)\n    let p = this.head\n    let i = 0\n    while (p) {\n      TypedArrayPrototypeSet(ret, p.data, i)\n      i += p.data.length\n      p = p.next\n    }\n    return ret\n  }\n\n  // Consumes a specified amount of bytes or characters from the buffered data.\n  consume(n, hasStrings) {\n    const data = this.head.data\n    if (n < data.length) {\n      // `slice` is the same for buffers and strings.\n      const slice = data.slice(0, n)\n      this.head.data = data.slice(n)\n      return slice\n    }\n    if (n === data.length) {\n      // First chunk is a perfect match.\n      return this.shift()\n    }\n    // Result spans more than one buffer.\n    return hasStrings ? this._getString(n) : this._getBuffer(n)\n  }\n  first() {\n    return this.head.data\n  }\n  *[SymbolIterator]() {\n    for (let p = this.head; p; p = p.next) {\n      yield p.data\n    }\n  }\n\n  // Consumes a specified amount of characters from the buffered data.\n  _getString(n) {\n    let ret = ''\n    let p = this.head\n    let c = 0\n    do {\n      const str = p.data\n      if (n > str.length) {\n        ret += str\n        n -= str.length\n      } else {\n        if (n === str.length) {\n          ret += str\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          ret += StringPrototypeSlice(str, 0, n)\n          this.head = p\n          p.data = StringPrototypeSlice(str, n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Consumes a specified amount of bytes from the buffered data.\n  _getBuffer(n) {\n    const ret = Buffer.allocUnsafe(n)\n    const retLen = n\n    let p = this.head\n    let c = 0\n    do {\n      const buf = p.data\n      if (n > buf.length) {\n        TypedArrayPrototypeSet(ret, buf, retLen - n)\n        n -= buf.length\n      } else {\n        if (n === buf.length) {\n          TypedArrayPrototypeSet(ret, buf, retLen - n)\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n          this.head = p\n          p.data = buf.slice(n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Make sure the linked list only shows the minimal necessary information.\n  [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n    return inspect(this, {\n      ...options,\n      // Only inspect one level.\n      depth: 0,\n      // It should not recurse.\n      customInspect: false\n    })\n  }\n}\n", "'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n  return objectMode ? 16 : 16 * 1024\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n  if (hwm != null) {\n    if (!NumberIsInteger(hwm) || hwm < 0) {\n      const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n      throw new ERR_INVALID_ARG_VALUE(name, hwm)\n    }\n    return MathFloor(hwm)\n  }\n\n  // Default value\n  return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n  getHighWaterMark,\n  getDefaultHighWaterMark\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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", "// 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/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\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}", "'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n  let iterator\n  if (typeof iterable === 'string' || iterable instanceof Buffer) {\n    return new Readable({\n      objectMode: true,\n      ...opts,\n      read() {\n        this.push(iterable)\n        this.push(null)\n      }\n    })\n  }\n  let isAsync\n  if (iterable && iterable[SymbolAsyncIterator]) {\n    isAsync = true\n    iterator = iterable[SymbolAsyncIterator]()\n  } else if (iterable && iterable[SymbolIterator]) {\n    isAsync = false\n    iterator = iterable[SymbolIterator]()\n  } else {\n    throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n  }\n  const readable = new Readable({\n    objectMode: true,\n    highWaterMark: 1,\n    // TODO(ronag): What options should be allowed?\n    ...opts\n  })\n\n  // Flag to protect against _read\n  // being called before last iteration completion.\n  let reading = false\n  readable._read = function () {\n    if (!reading) {\n      reading = true\n      next()\n    }\n  }\n  readable._destroy = function (error, cb) {\n    PromisePrototypeThen(\n      close(error),\n      () => process.nextTick(cb, error),\n      // nextTick is here in case cb throws\n      (e) => process.nextTick(cb, e || error)\n    )\n  }\n  async function close(error) {\n    const hadError = error !== undefined && error !== null\n    const hasThrow = typeof iterator.throw === 'function'\n    if (hadError && hasThrow) {\n      const { value, done } = await iterator.throw(error)\n      await value\n      if (done) {\n        return\n      }\n    }\n    if (typeof iterator.return === 'function') {\n      const { value } = await iterator.return()\n      await value\n    }\n  }\n  async function next() {\n    for (;;) {\n      try {\n        const { value, done } = isAsync ? await iterator.next() : iterator.next()\n        if (done) {\n          readable.push(null)\n        } else {\n          const res = value && typeof value.then === 'function' ? await value : value\n          if (res === null) {\n            reading = false\n            throw new ERR_STREAM_NULL_VALUES()\n          } else if (readable.push(res)) {\n            continue\n          } else {\n            reading = false\n          }\n        }\n      } catch (err) {\n        readable.destroy(err)\n      }\n      break\n    }\n  }\n  return readable\n}\nmodule.exports = from\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\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')\nconst {\n  ArrayPrototypeIndexOf,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberParseInt,\n  ObjectDefineProperties,\n  ObjectKeys,\n  ObjectSetPrototypeOf,\n  Promise,\n  SafeSet,\n  SymbolAsyncIterator,\n  Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n  debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_OUT_OF_RANGE,\n    ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n  }\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nfunction ReadableState(options, stream, isDuplex) {\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away.\n  this.objectMode = !!(options && options.objectMode)\n  if (isDuplex) this.objectMode = this.objectMode || !!(options && options.readableObjectMode)\n\n  // 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  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // 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  this.buffer = new BufferList()\n  this.length = 0\n  this.pipes = []\n  this.flowing = null\n  this.ended = false\n  this.endEmitted = false\n  this.reading = false\n\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  this.constructed = true\n\n  // 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  this.sync = true\n\n  // Whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false\n  this.emittedReadable = false\n  this.readableListening = false\n  this.resumeScheduled = false\n  this[kPaused] = null\n\n  // True if the error was already emitted and should not be thrown again.\n  this.errorEmitted = false\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = !options || options.emitClose !== false\n\n  // Should .destroy() be called after 'end' (and potentially 'finish').\n  this.autoDestroy = !options || options.autoDestroy !== false\n\n  // Has it been destroyed.\n  this.destroyed = false\n\n  // Indicates whether the stream has errored. When true no further\n  // _read calls, 'data' or 'readable' events should occur. This is needed\n  // since when autoDestroy is disabled we need a way to tell whether the\n  // stream has failed.\n  this.errored = null\n\n  // Indicates whether the stream has finished destroying.\n  this.closed = false\n\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  this.closeEmitted = false\n\n  // 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  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // Ref the piped dest which we need a drain event on it\n  // type: null | Writable | Set<Writable>.\n  this.awaitDrainWriters = null\n  this.multiAwaitDrain = false\n\n  // If true, a maybeReadMore has been scheduled.\n  this.readingMore = false\n  this.dataEmitted = false\n  this.decoder = null\n  this.encoding = null\n  if (options && options.encoding) {\n    this.decoder = new StringDecoder(options.encoding)\n    this.encoding = options.encoding\n  }\n}\nfunction Readable(options) {\n  if (!(this instanceof Readable)) return new Readable(options)\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  this._readableState = new ReadableState(options, this, isDuplex)\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read\n    if (typeof options.destroy === 'function') this._destroy = options.destroy\n    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    if (this._readableState.needReadable) {\n      maybeReadMore(this, this._readableState)\n    }\n  })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n  debug('readableAddChunk', chunk)\n  const state = stream._readableState\n  let err\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding\n      if (state.encoding !== encoding) {\n        if (addToFront && state.encoding) {\n          // When unshifting, if state.encoding is set, we have to save\n          // the string in the BufferList with the state encoding.\n          chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n        } else {\n          chunk = Buffer.from(chunk, encoding)\n          encoding = ''\n        }\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = ''\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = ''\n    } else if (chunk != null) {\n      err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  if (err) {\n    errorOrDestroy(stream, err)\n  } else if (chunk === null) {\n    state.reading = false\n    onEofChunk(stream, state)\n  } else if (state.objectMode || (chunk && chunk.length > 0)) {\n    if (addToFront) {\n      if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n      else if (state.destroyed || state.errored) return false\n      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 || state.errored) {\n      return false\n    } else {\n      state.reading = false\n      if (state.decoder && !encoding) {\n        chunk = state.decoder.write(chunk)\n        if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n        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\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n    // Use the guard to avoid creating `Set()` repeatedly\n    // when we have multiple pipes.\n    if (state.multiAwaitDrain) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\n    }\n    state.dataEmitted = true\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)\n    else state.buffer.push(chunk)\n    if (state.needReadable) emitReadable(stream)\n  }\n  maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n  const state = this._readableState\n  return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  const decoder = new StringDecoder(enc)\n  this._readableState.decoder = decoder\n  // If setEncoding(null), decoder.encoding equals utf8.\n  this._readableState.encoding = this._readableState.decoder.encoding\n  const buffer = this._readableState.buffer\n  // Iterate over current buffer to convert already stored Buffers:\n  let content = ''\n  for (const data of buffer) {\n    content += decoder.write(data)\n  }\n  buffer.clear()\n  if (content !== '') buffer.push(content)\n  this._readableState.length = content.length\n  return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n  if (n > MAX_HWM) {\n    throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\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  return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || (state.length === 0 && state.ended)) return 0\n  if (state.objectMode) return 1\n  if (NumberIsNaN(n)) {\n    // Only flow one buffer at a time.\n    if (state.flowing && state.length) return state.buffer.first().length\n    return state.length\n  }\n  if (n <= state.length) return n\n  return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n)\n  // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n  // in this scenario, so we are doing it manually.\n  if (n === undefined) {\n    n = NaN\n  } else if (!NumberIsInteger(n)) {\n    n = NumberParseInt(n, 10)\n  }\n  const state = this._readableState\n  const nOrig = n\n\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n  if (n !== 0) state.emittedReadable = false\n\n  // 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  if (\n    n === 0 &&\n    state.needReadable &&\n    ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n  ) {\n    debug('read: emitReadable', state.length, state.ended)\n    if (state.length === 0 && state.ended) endReadable(this)\n    else emitReadable(this)\n    return null\n  }\n  n = howMuchToRead(n, state)\n\n  // If we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this)\n    return null\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  let doRead = state.needReadable\n  debug('need readable', doRead)\n\n  // If we currently have less than the highWaterMark, then also read some.\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true\n    debug('length less than watermark', doRead)\n  }\n\n  // However, if we've ended, then there's no point, if we're already\n  // reading, then it's unnecessary, if we're constructing we have to wait,\n  // and if we're destroyed or errored, then it's not allowed,\n  if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n    doRead = false\n    debug('reading, ended or constructing', doRead)\n  } else if (doRead) {\n    debug('do read')\n    state.reading = true\n    state.sync = true\n    // If the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true\n\n    // Call internal read method\n    try {\n      this._read(state.highWaterMark)\n    } catch (err) {\n      errorOrDestroy(this, err)\n    }\n    state.sync = false\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state)\n  }\n  let ret\n  if (n > 0) ret = fromList(n, state)\n  else ret = null\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark\n    n = 0\n  } else {\n    state.length -= n\n    if (state.multiAwaitDrain) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\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\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this)\n  }\n  if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n    state.dataEmitted = true\n    this.emit('data', ret)\n  }\n  return ret\n}\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk')\n  if (state.ended) return\n  if (state.decoder) {\n    const chunk = state.decoder.end()\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk)\n      state.length += state.objectMode ? 1 : chunk.length\n    }\n  }\n  state.ended = true\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    state.emittedReadable = true\n    // We have to emit readable now that we are EOF. Modules\n    // in the ecosystem (e.g. dicer) rely on this event being sync.\n    emitReadable_(stream)\n  }\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.\nfunction emitReadable(stream) {\n  const state = stream._readableState\n  debug('emitReadable', state.needReadable, state.emittedReadable)\n  state.needReadable = false\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing)\n    state.emittedReadable = true\n    process.nextTick(emitReadable_, stream)\n  }\n}\nfunction emitReadable_(stream) {\n  const state = stream._readableState\n  debug('emitReadable_', state.destroyed, state.length, state.ended)\n  if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n    stream.emit('readable')\n    state.emittedReadable = false\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n  flow(stream)\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore && state.constructed) {\n    state.readingMore = true\n    process.nextTick(maybeReadMore_, stream, state)\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 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 (\n    !state.reading &&\n    !state.ended &&\n    (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n  ) {\n    const len = state.length\n    debug('maybeReadMore read 0')\n    stream.read(0)\n    if (len === state.length)\n      // Didn't get any data, stop spinning.\n      break\n  }\n  state.readingMore = false\n}\n\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.\nReadable.prototype._read = function (n) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  const src = this\n  const state = this._readableState\n  if (state.pipes.length === 1) {\n    if (!state.multiAwaitDrain) {\n      state.multiAwaitDrain = true\n      state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n    }\n  }\n  state.pipes.push(dest)\n  debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n  const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n  const endFn = doEnd ? onend : unpipe\n  if (state.endEmitted) process.nextTick(endFn)\n  else src.once('end', endFn)\n  dest.on('unpipe', onunpipe)\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe')\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true\n        cleanup()\n      }\n    }\n  }\n  function onend() {\n    debug('onend')\n    dest.end()\n  }\n  let ondrain\n  let cleanedUp = false\n  function cleanup() {\n    debug('cleanup')\n    // Cleanup event handlers once the pipe is broken.\n    dest.removeListener('close', onclose)\n    dest.removeListener('finish', onfinish)\n    if (ondrain) {\n      dest.removeListener('drain', ondrain)\n    }\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\n\n    // 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    if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n  }\n  function pause() {\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 (!cleanedUp) {\n      if (state.pipes.length === 1 && state.pipes[0] === dest) {\n        debug('false write response, pause', 0)\n        state.awaitDrainWriters = dest\n        state.multiAwaitDrain = false\n      } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n        debug('false write response, pause', state.awaitDrainWriters.size)\n        state.awaitDrainWriters.add(dest)\n      }\n      src.pause()\n    }\n    if (!ondrain) {\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      ondrain = pipeOnDrain(src, dest)\n      dest.on('drain', ondrain)\n    }\n  }\n  src.on('data', ondata)\n  function ondata(chunk) {\n    debug('ondata')\n    const ret = dest.write(chunk)\n    debug('dest.write', ret)\n    if (ret === false) {\n      pause()\n    }\n  }\n\n  // If the dest has an error, then stop piping into it.\n  // However, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er)\n    unpipe()\n    dest.removeListener('error', onerror)\n    if (dest.listenerCount('error') === 0) {\n      const s = dest._writableState || dest._readableState\n      if (s && !s.errorEmitted) {\n        // User incorrectly emitted 'error' directly on the stream.\n        errorOrDestroy(dest, er)\n      } else {\n        dest.emit('error', er)\n      }\n    }\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror)\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish)\n    unpipe()\n  }\n  dest.once('close', onclose)\n  function onfinish() {\n    debug('onfinish')\n    dest.removeListener('close', onclose)\n    unpipe()\n  }\n  dest.once('finish', onfinish)\n  function unpipe() {\n    debug('unpipe')\n    src.unpipe(dest)\n  }\n\n  // Tell the dest that it's being piped to.\n  dest.emit('pipe', src)\n\n  // Start the flow if it hasn't been started already.\n\n  if (dest.writableNeedDrain === true) {\n    if (state.flowing) {\n      pause()\n    }\n  } else if (!state.flowing) {\n    debug('pipe resume')\n    src.resume()\n  }\n  return dest\n}\nfunction pipeOnDrain(src, dest) {\n  return function pipeOnDrainFunctionResult() {\n    const state = src._readableState\n\n    // `ondrain` will call directly,\n    // `this` maybe not a reference to dest,\n    // so we use the real dest here.\n    if (state.awaitDrainWriters === dest) {\n      debug('pipeOnDrain', 1)\n      state.awaitDrainWriters = null\n    } else if (state.multiAwaitDrain) {\n      debug('pipeOnDrain', state.awaitDrainWriters.size)\n      state.awaitDrainWriters.delete(dest)\n    }\n    if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n      src.resume()\n    }\n  }\n}\nReadable.prototype.unpipe = function (dest) {\n  const state = this._readableState\n  const unpipeInfo = {\n    hasUnpiped: false\n  }\n\n  // If we're not piping anywhere, then do nothing.\n  if (state.pipes.length === 0) return this\n  if (!dest) {\n    // remove all.\n    const dests = state.pipes\n    state.pipes = []\n    this.pause()\n    for (let i = 0; i < dests.length; i++)\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      })\n    return this\n  }\n\n  // Try to find the right one.\n  const index = ArrayPrototypeIndexOf(state.pipes, dest)\n  if (index === -1) return this\n  state.pipes.splice(index, 1)\n  if (state.pipes.length === 0) this.pause()\n  dest.emit('unpipe', this, unpipeInfo)\n  return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n  const res = Stream.prototype.on.call(this, ev, fn)\n  const state = this._readableState\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\n\n    // Try start flowing on next tick if stream isn't explicitly paused.\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      if (state.length) {\n        emitReadable(this)\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this)\n      }\n    }\n  }\n  return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n  const res = Stream.prototype.removeListener.call(this, ev, fn)\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  return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n  const res = Stream.prototype.removeAllListeners.apply(this, arguments)\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  return res\n}\nfunction updateReadableListening(self) {\n  const state = self._readableState\n  state.readableListening = self.listenerCount('readable') > 0\n  if (state.resumeScheduled && state[kPaused] === false) {\n    // Flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true\n\n    // Crude way to check if we should resume.\n  } else if (self.listenerCount('data') > 0) {\n    self.resume()\n  } else if (!state.readableListening) {\n    state.flowing = null\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0')\n  self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  const state = this._readableState\n  if (!state.flowing) {\n    debug('resume')\n    // We flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume().\n    state.flowing = !state.readableListening\n    resume(this, state)\n  }\n  state[kPaused] = false\n  return this\n}\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true\n    process.nextTick(resume_, stream, state)\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading)\n  if (!state.reading) {\n    stream.read(0)\n  }\n  state.resumeScheduled = false\n  stream.emit('resume')\n  flow(stream)\n  if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing)\n  if (this._readableState.flowing !== false) {\n    debug('pause')\n    this._readableState.flowing = false\n    this.emit('pause')\n  }\n  this._readableState[kPaused] = true\n  return this\n}\nfunction flow(stream) {\n  const state = stream._readableState\n  debug('flow', state.flowing)\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.\nReadable.prototype.wrap = function (stream) {\n  let paused = false\n\n  // TODO (ronag): Should this.destroy(err) emit\n  // 'error' on the wrapped stream? Would require\n  // a static factory method, e.g. Readable.wrap(stream).\n\n  stream.on('data', (chunk) => {\n    if (!this.push(chunk) && stream.pause) {\n      paused = true\n      stream.pause()\n    }\n  })\n  stream.on('end', () => {\n    this.push(null)\n  })\n  stream.on('error', (err) => {\n    errorOrDestroy(this, err)\n  })\n  stream.on('close', () => {\n    this.destroy()\n  })\n  stream.on('destroy', () => {\n    this.destroy()\n  })\n  this._read = () => {\n    if (paused && stream.resume) {\n      paused = false\n      stream.resume()\n    }\n  }\n\n  // Proxy all the other methods. Important when wrapping filters and duplexes.\n  const streamKeys = ObjectKeys(stream)\n  for (let j = 1; j < streamKeys.length; j++) {\n    const i = streamKeys[j]\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = stream[i].bind(stream)\n    }\n  }\n  return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n  return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n  if (options !== undefined) {\n    validateObject(options, 'options')\n  }\n  return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n  if (typeof stream.read !== 'function') {\n    stream = Readable.wrap(stream, {\n      objectMode: true\n    })\n  }\n  const iter = createAsyncIterator(stream, options)\n  iter.stream = stream\n  return iter\n}\nasync function* createAsyncIterator(stream, options) {\n  let callback = nop\n  function next(resolve) {\n    if (this === stream) {\n      callback()\n      callback = nop\n    } else {\n      callback = resolve\n    }\n  }\n  stream.on('readable', next)\n  let error\n  const cleanup = eos(\n    stream,\n    {\n      writable: false\n    },\n    (err) => {\n      error = err ? aggregateTwoErrors(error, err) : null\n      callback()\n      callback = nop\n    }\n  )\n  try {\n    while (true) {\n      const chunk = stream.destroyed ? null : stream.read()\n      if (chunk !== null) {\n        yield chunk\n      } else if (error) {\n        throw error\n      } else if (error === null) {\n        return\n      } else {\n        await new Promise(next)\n      }\n    }\n  } catch (err) {\n    error = aggregateTwoErrors(error, err)\n    throw error\n  } finally {\n    if (\n      (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n      (error === undefined || stream._readableState.autoDestroy)\n    ) {\n      destroyImpl.destroyer(stream, null)\n    } else {\n      stream.off('readable', next)\n      cleanup()\n    }\n  }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n  readable: {\n    __proto__: null,\n    get() {\n      const r = this._readableState\n      // r.readable === false means that this is part of a Duplex stream\n      // where the readable side was disabled upon construction.\n      // Compat. The user might manually disable readable side through\n      // deprecated setter.\n      return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n    },\n    set(val) {\n      // Backwards compat.\n      if (this._readableState) {\n        this._readableState.readable = !!val\n      }\n    }\n  },\n  readableDidRead: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.dataEmitted\n    }\n  },\n  readableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._readableState.readable !== false &&\n        (this._readableState.destroyed || this._readableState.errored) &&\n        !this._readableState.endEmitted\n      )\n    }\n  },\n  readableHighWaterMark: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.highWaterMark\n    }\n  },\n  readableBuffer: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState && this._readableState.buffer\n    }\n  },\n  readableFlowing: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.flowing\n    },\n    set: function (state) {\n      if (this._readableState) {\n        this._readableState.flowing = state\n      }\n    }\n  },\n  readableLength: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState.length\n    }\n  },\n  readableObjectMode: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.objectMode : false\n    }\n  },\n  readableEncoding: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.encoding : null\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.errored : null\n    }\n  },\n  closed: {\n    __proto__: null,\n    get() {\n      return this._readableState ? this._readableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.destroyed : false\n    },\n    set(value) {\n      // We ignore the value if the stream\n      // has not been initialized yet.\n      if (!this._readableState) {\n        return\n      }\n\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      this._readableState.destroyed = value\n    }\n  },\n  readableEnded: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.endEmitted : false\n    }\n  }\n})\nObjectDefineProperties(ReadableState.prototype, {\n  // Legacy getter for `pipesCount`.\n  pipesCount: {\n    __proto__: null,\n    get() {\n      return this.pipes.length\n    }\n  },\n  // Legacy property for `paused`.\n  paused: {\n    __proto__: null,\n    get() {\n      return this[kPaused] !== false\n    },\n    set(value) {\n      this[kPaused] = !!value\n    }\n  }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\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.\nfunction fromList(n, state) {\n  // nothing buffered.\n  if (state.length === 0) return null\n  let ret\n  if (state.objectMode) ret = state.buffer.shift()\n  else if (!n || n >= state.length) {\n    // Read it all, truncate the list.\n    if (state.decoder) ret = state.buffer.join('')\n    else if (state.buffer.length === 1) ret = state.buffer.first()\n    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}\nfunction endReadable(stream) {\n  const state = stream._readableState\n  debug('endReadable', state.endEmitted)\n  if (!state.endEmitted) {\n    state.ended = true\n    process.nextTick(endReadableNT, state, stream)\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length)\n\n  // Check that we didn't get one last unshift.\n  if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n    state.endEmitted = true\n    stream.emit('end')\n    if (stream.writable && stream.allowHalfOpen === false) {\n      process.nextTick(endWritableNT, stream)\n    } else 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      const wState = stream._writableState\n      const autoDestroy =\n        !wState ||\n        (wState.autoDestroy &&\n          // We don't expect the writable to ever 'finish'\n          // if writable is explicitly set to false.\n          (wState.finished || wState.writable === false))\n      if (autoDestroy) {\n        stream.destroy()\n      }\n    }\n  }\n}\nfunction endWritableNT(stream) {\n  const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n  if (writable) {\n    stream.end()\n  }\n}\nReadable.from = function (iterable, opts) {\n  return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n  return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n  return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n  var _ref, _src$readableObjectMo\n  return new Readable({\n    objectMode:\n      (_ref =\n        (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n          ? _src$readableObjectMo\n          : src.objectMode) !== null && _ref !== undefined\n        ? _ref\n        : true,\n    ...options,\n    destroy(err, callback) {\n      destroyImpl.destroyer(src, err)\n      callback(err)\n    }\n  }).wrap(src)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\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// 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\n;('use strict')\nconst {\n  ArrayPrototypeSlice,\n  Error,\n  FunctionPrototypeSymbolHasInstance,\n  ObjectDefineProperty,\n  ObjectDefineProperties,\n  ObjectSetPrototypeOf,\n  StringPrototypeToLowerCase,\n  Symbol,\n  SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED,\n  ERR_STREAM_ALREADY_FINISHED,\n  ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!(options && options.objectMode)\n  if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n  // 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  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // if _final has been called.\n  this.finalCalled = false\n\n  // drain event flag.\n  this.needDrain = false\n  // At the start of calling end()\n  this.ending = false\n  // When end() has been called, and returned.\n  this.ended = false\n  // When 'finish' is emitted.\n  this.finished = false\n\n  // Has it been destroyed\n  this.destroyed = false\n\n  // 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  const noDecode = !!(options && options.decodeStrings === false)\n  this.decodeStrings = !noDecode\n\n  // 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  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // 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  this.length = 0\n\n  // A flag to see when we're in the middle of a write.\n  this.writing = false\n\n  // When true all writes will be buffered until .uncork() call.\n  this.corked = 0\n\n  // 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  this.sync = true\n\n  // 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  this.bufferProcessing = false\n\n  // The callback that's passed to _write(chunk, cb).\n  this.onwrite = onwrite.bind(undefined, stream)\n\n  // The callback that the user supplies to write(chunk, encoding, cb).\n  this.writecb = null\n\n  // The amount that is being written when _write is called.\n  this.writelen = 0\n\n  // Storage for data passed to the afterWrite() callback in case of\n  // synchronous _write() completion.\n  this.afterWriteTickInfo = null\n  resetBuffer(this)\n\n  // Number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted.\n  this.pendingcb = 0\n\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  this.constructed = true\n\n  // Emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams.\n  this.prefinished = false\n\n  // True if the error was already emitted and should not be thrown again.\n  this.errorEmitted = false\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = !options || options.emitClose !== false\n\n  // Should .destroy() be called after 'finish' (and potentially 'end').\n  this.autoDestroy = !options || options.autoDestroy !== false\n\n  // Indicates whether the stream has errored. When true all write() calls\n  // should return false. This is needed since when autoDestroy\n  // is disabled we need a way to tell whether the stream has failed.\n  this.errored = null\n\n  // Indicates whether the stream has finished destroying.\n  this.closed = false\n\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  this.closeEmitted = false\n  this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n  state.buffered = []\n  state.bufferedIndex = 0\n  state.allBuffers = true\n  state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n  __proto__: null,\n  get() {\n    return this.buffered.length - this.bufferedIndex\n  }\n})\nfunction Writable(options) {\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n  this._writableState = new WritableState(options, this, isDuplex)\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    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    const state = this._writableState\n    if (!state.writing) {\n      clearBuffer(this, state)\n    }\n    finishMaybe(this, state)\n  })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n  __proto__: null,\n  value: function (object) {\n    if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n    if (this !== Writable) return false\n    return object && object._writableState instanceof WritableState\n  }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n  const state = stream._writableState\n  if (typeof encoding === 'function') {\n    cb = encoding\n    encoding = state.defaultEncoding\n  } else {\n    if (!encoding) encoding = state.defaultEncoding\n    else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n    if (typeof cb !== 'function') cb = nop\n  }\n  if (chunk === null) {\n    throw new ERR_STREAM_NULL_VALUES()\n  } else if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      if (state.decodeStrings !== false) {\n        chunk = Buffer.from(chunk, encoding)\n        encoding = 'buffer'\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = 'buffer'\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = 'buffer'\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  let err\n  if (state.ending) {\n    err = new ERR_STREAM_WRITE_AFTER_END()\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('write')\n  }\n  if (err) {\n    process.nextTick(cb, err)\n    errorOrDestroy(stream, err, true)\n    return err\n  }\n  state.pendingcb++\n  return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n  this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n  const state = this._writableState\n  if (state.corked) {\n    state.corked--\n    if (!state.writing) clearBuffer(this, state)\n  }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n  if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n  this._writableState.defaultEncoding = encoding\n  return this\n}\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.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n  const len = state.objectMode ? 1 : chunk.length\n  state.length += len\n\n  // stream._write resets state.length\n  const ret = state.length < state.highWaterMark\n  // We must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true\n  if (state.writing || state.corked || state.errored || !state.constructed) {\n    state.buffered.push({\n      chunk,\n      encoding,\n      callback\n    })\n    if (state.allBuffers && encoding !== 'buffer') {\n      state.allBuffers = false\n    }\n    if (state.allNoop && callback !== nop) {\n      state.allNoop = false\n    }\n  } else {\n    state.writelen = len\n    state.writecb = callback\n    state.writing = true\n    state.sync = true\n    stream._write(chunk, encoding, state.onwrite)\n    state.sync = false\n  }\n\n  // Return false if errored or destroyed in order to break\n  // any synchronous while(stream.write(data)) loops.\n  return ret && !state.errored && !state.destroyed\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'))\n  else if (writev) stream._writev(chunk, state.onwrite)\n  else stream._write(chunk, encoding, state.onwrite)\n  state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n  --state.pendingcb\n  cb(er)\n  // Ensure callbacks are invoked even when autoDestroy is\n  // not enabled. Passing `er` here doesn't make sense since\n  // it's related to one specific write, not to the buffered\n  // writes.\n  errorBuffer(state)\n  // This can emit error, but error must always follow cb.\n  errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n  const state = stream._writableState\n  const sync = state.sync\n  const cb = state.writecb\n  if (typeof cb !== 'function') {\n    errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n    return\n  }\n  state.writing = false\n  state.writecb = null\n  state.length -= state.writelen\n  state.writelen = 0\n  if (er) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    er.stack // eslint-disable-line no-unused-expressions\n\n    if (!state.errored) {\n      state.errored = er\n    }\n\n    // In case of duplex streams we need to notify the readable side of the\n    // error.\n    if (stream._readableState && !stream._readableState.errored) {\n      stream._readableState.errored = er\n    }\n    if (sync) {\n      process.nextTick(onwriteError, stream, state, er, cb)\n    } else {\n      onwriteError(stream, state, er, cb)\n    }\n  } else {\n    if (state.buffered.length > state.bufferedIndex) {\n      clearBuffer(stream, state)\n    }\n    if (sync) {\n      // It is a common case that the callback passed to .write() is always\n      // the same. In that case, we do not schedule a new nextTick(), but\n      // rather just increase a counter, to improve performance and avoid\n      // memory allocations.\n      if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n        state.afterWriteTickInfo.count++\n      } else {\n        state.afterWriteTickInfo = {\n          count: 1,\n          cb,\n          stream,\n          state\n        }\n        process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n      }\n    } else {\n      afterWrite(stream, state, 1, cb)\n    }\n  }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n  state.afterWriteTickInfo = null\n  return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n  const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n  if (needDrain) {\n    state.needDrain = false\n    stream.emit('drain')\n  }\n  while (count-- > 0) {\n    state.pendingcb--\n    cb()\n  }\n  if (state.destroyed) {\n    errorBuffer(state)\n  }\n  finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n  if (state.writing) {\n    return\n  }\n  for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n    var _state$errored\n    const { chunk, callback } = state.buffered[n]\n    const len = state.objectMode ? 1 : chunk.length\n    state.length -= len\n    callback(\n      (_state$errored = state.errored) !== null && _state$errored !== undefined\n        ? _state$errored\n        : new ERR_STREAM_DESTROYED('write')\n    )\n  }\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    var _state$errored2\n    onfinishCallbacks[i](\n      (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n        ? _state$errored2\n        : new ERR_STREAM_DESTROYED('end')\n    )\n  }\n  resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n  if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n    return\n  }\n  const { buffered, bufferedIndex, objectMode } = state\n  const bufferedLength = buffered.length - bufferedIndex\n  if (!bufferedLength) {\n    return\n  }\n  let i = bufferedIndex\n  state.bufferProcessing = true\n  if (bufferedLength > 1 && stream._writev) {\n    state.pendingcb -= bufferedLength - 1\n    const callback = state.allNoop\n      ? nop\n      : (err) => {\n          for (let n = i; n < buffered.length; ++n) {\n            buffered[n].callback(err)\n          }\n        }\n    // Make a copy of `buffered` if it's going to be used by `callback` above,\n    // since `doWrite` will mutate the array.\n    const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n    chunks.allBuffers = state.allBuffers\n    doWrite(stream, state, true, state.length, chunks, '', callback)\n    resetBuffer(state)\n  } else {\n    do {\n      const { chunk, encoding, callback } = buffered[i]\n      buffered[i++] = null\n      const len = objectMode ? 1 : chunk.length\n      doWrite(stream, state, false, len, chunk, encoding, callback)\n    } while (i < buffered.length && !state.writing)\n    if (i === buffered.length) {\n      resetBuffer(state)\n    } else if (i > 256) {\n      buffered.splice(0, i)\n      state.bufferedIndex = 0\n    } else {\n      state.bufferedIndex = i\n    }\n  }\n  state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  if (this._writev) {\n    this._writev(\n      [\n        {\n          chunk,\n          encoding\n        }\n      ],\n      cb\n    )\n  } else {\n    throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n  }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n  const state = this._writableState\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  let err\n  if (chunk !== null && chunk !== undefined) {\n    const ret = _write(this, chunk, encoding)\n    if (ret instanceof Error) {\n      err = ret\n    }\n  }\n\n  // .end() fully uncorks.\n  if (state.corked) {\n    state.corked = 1\n    this.uncork()\n  }\n  if (err) {\n    // Do nothing...\n  } else if (!state.errored && !state.ending) {\n    // This is forgiving in terms of unnecessary calls to end() and can hide\n    // logic errors. However, usually such errors are harmless and causing a\n    // hard error can be disproportionately destructive. It is not always\n    // trivial for the user to determine whether end() needs to be called\n    // or not.\n\n    state.ending = true\n    finishMaybe(this, state, true)\n    state.ended = true\n  } else if (state.finished) {\n    err = new ERR_STREAM_ALREADY_FINISHED('end')\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('end')\n  }\n  if (typeof cb === 'function') {\n    if (err || state.finished) {\n      process.nextTick(cb, err)\n    } else {\n      state[kOnFinished].push(cb)\n    }\n  }\n  return this\n}\nfunction needFinish(state) {\n  return (\n    state.ending &&\n    !state.destroyed &&\n    state.constructed &&\n    state.length === 0 &&\n    !state.errored &&\n    state.buffered.length === 0 &&\n    !state.finished &&\n    !state.writing &&\n    !state.errorEmitted &&\n    !state.closeEmitted\n  )\n}\nfunction callFinal(stream, state) {\n  let called = false\n  function onFinish(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    state.pendingcb--\n    if (err) {\n      const onfinishCallbacks = state[kOnFinished].splice(0)\n      for (let i = 0; i < onfinishCallbacks.length; i++) {\n        onfinishCallbacks[i](err)\n      }\n      errorOrDestroy(stream, err, state.sync)\n    } else if (needFinish(state)) {\n      state.prefinished = true\n      stream.emit('prefinish')\n      // Backwards compat. Don't check state.sync here.\n      // Some streams assume 'finish' will be emitted\n      // asynchronously relative to _final callback.\n      state.pendingcb++\n      process.nextTick(finish, stream, state)\n    }\n  }\n  state.sync = true\n  state.pendingcb++\n  try {\n    stream._final(onFinish)\n  } catch (err) {\n    onFinish(err)\n  }\n  state.sync = false\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.finalCalled = true\n      callFinal(stream, state)\n    } else {\n      state.prefinished = true\n      stream.emit('prefinish')\n    }\n  }\n}\nfunction finishMaybe(stream, state, sync) {\n  if (needFinish(state)) {\n    prefinish(stream, state)\n    if (state.pendingcb === 0) {\n      if (sync) {\n        state.pendingcb++\n        process.nextTick(\n          (stream, state) => {\n            if (needFinish(state)) {\n              finish(stream, state)\n            } else {\n              state.pendingcb--\n            }\n          },\n          stream,\n          state\n        )\n      } else if (needFinish(state)) {\n        state.pendingcb++\n        finish(stream, state)\n      }\n    }\n  }\n}\nfunction finish(stream, state) {\n  state.pendingcb--\n  state.finished = true\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    onfinishCallbacks[i]()\n  }\n  stream.emit('finish')\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    const rState = stream._readableState\n    const autoDestroy =\n      !rState ||\n      (rState.autoDestroy &&\n        // We don't expect the readable to ever 'end'\n        // if readable is explicitly set to false.\n        (rState.endEmitted || rState.readable === false))\n    if (autoDestroy) {\n      stream.destroy()\n    }\n  }\n}\nObjectDefineProperties(Writable.prototype, {\n  closed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.destroyed : false\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly managing destroyed.\n      if (this._writableState) {\n        this._writableState.destroyed = value\n      }\n    }\n  },\n  writable: {\n    __proto__: null,\n    get() {\n      const w = this._writableState\n      // w.writable === false means that this is part of a Duplex stream\n      // where the writable side was disabled upon construction.\n      // Compat. The user might manually disable writable side through\n      // deprecated setter.\n      return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n    },\n    set(val) {\n      // Backwards compatible.\n      if (this._writableState) {\n        this._writableState.writable = !!val\n      }\n    }\n  },\n  writableFinished: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.finished : false\n    }\n  },\n  writableObjectMode: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.objectMode : false\n    }\n  },\n  writableBuffer: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.getBuffer()\n    }\n  },\n  writableEnded: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.ending : false\n    }\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    get() {\n      const wState = this._writableState\n      if (!wState) return false\n      return !wState.destroyed && !wState.ending && wState.needDrain\n    }\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.highWaterMark\n    }\n  },\n  writableCorked: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.corked : 0\n    }\n  },\n  writableLength: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.length\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._writableState ? this._writableState.errored : null\n    }\n  },\n  writableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._writableState.writable !== false &&\n        (this._writableState.destroyed || this._writableState.errored) &&\n        !this._writableState.finished\n      )\n    }\n  }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n  const state = this._writableState\n\n  // Invoke pending callbacks.\n  if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n    process.nextTick(errorBuffer, state)\n  }\n  destroy.call(this, err, cb)\n  return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n  return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n  return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n  isReadable,\n  isWritable,\n  isIterable,\n  isNodeStream,\n  isReadableNodeStream,\n  isWritableNodeStream,\n  isDuplexNodeStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n  constructor(options) {\n    super(options)\n\n    // https://github.com/nodejs/node/pull/34385\n\n    if ((options === null || options === undefined ? undefined : options.readable) === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if ((options === null || options === undefined ? undefined : options.writable) === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  }\n}\nmodule.exports = function duplexify(body, name) {\n  if (isDuplexNodeStream(body)) {\n    return body\n  }\n  if (isReadableNodeStream(body)) {\n    return _duplexify({\n      readable: body\n    })\n  }\n  if (isWritableNodeStream(body)) {\n    return _duplexify({\n      writable: body\n    })\n  }\n  if (isNodeStream(body)) {\n    return _duplexify({\n      writable: false,\n      readable: false\n    })\n  }\n\n  // TODO: Webstreams\n  // if (isReadableStream(body)) {\n  //   return _duplexify({ readable: Readable.fromWeb(body) });\n  // }\n\n  // TODO: Webstreams\n  // if (isWritableStream(body)) {\n  //   return _duplexify({ writable: Writable.fromWeb(body) });\n  // }\n\n  if (typeof body === 'function') {\n    const { value, write, final, destroy } = fromAsyncGen(body)\n    if (isIterable(value)) {\n      return from(Duplexify, value, {\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        write,\n        final,\n        destroy\n      })\n    }\n    const then = value === null || value === undefined ? undefined : value.then\n    if (typeof then === 'function') {\n      let d\n      const promise = FunctionPrototypeCall(\n        then,\n        value,\n        (val) => {\n          if (val != null) {\n            throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n          }\n        },\n        (err) => {\n          destroyer(d, err)\n        }\n      )\n      return (d = new Duplexify({\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        readable: false,\n        write,\n        final(cb) {\n          final(async () => {\n            try {\n              await promise\n              process.nextTick(cb, null)\n            } catch (err) {\n              process.nextTick(cb, err)\n            }\n          })\n        },\n        destroy\n      }))\n    }\n    throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n  }\n  if (isBlob(body)) {\n    return duplexify(body.arrayBuffer())\n  }\n  if (isIterable(body)) {\n    return from(Duplexify, body, {\n      // TODO (ronag): highWaterMark?\n      objectMode: true,\n      writable: false\n    })\n  }\n\n  // TODO: Webstreams.\n  // if (\n  //   isReadableStream(body?.readable) &&\n  //   isWritableStream(body?.writable)\n  // ) {\n  //   return Duplexify.fromWeb(body);\n  // }\n\n  if (\n    typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n    typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n  ) {\n    const readable =\n      body !== null && body !== undefined && body.readable\n        ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.readable\n          : duplexify(body.readable)\n        : undefined\n    const writable =\n      body !== null && body !== undefined && body.writable\n        ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.writable\n          : duplexify(body.writable)\n        : undefined\n    return _duplexify({\n      readable,\n      writable\n    })\n  }\n  const then = body === null || body === undefined ? undefined : body.then\n  if (typeof then === 'function') {\n    let d\n    FunctionPrototypeCall(\n      then,\n      body,\n      (val) => {\n        if (val != null) {\n          d.push(val)\n        }\n        d.push(null)\n      },\n      (err) => {\n        destroyer(d, err)\n      }\n    )\n    return (d = new Duplexify({\n      objectMode: true,\n      writable: false,\n      read() {}\n    }))\n  }\n  throw new ERR_INVALID_ARG_TYPE(\n    name,\n    [\n      'Blob',\n      'ReadableStream',\n      'WritableStream',\n      'Stream',\n      'Iterable',\n      'AsyncIterable',\n      'Function',\n      '{ readable, writable } pair',\n      'Promise'\n    ],\n    body\n  )\n}\nfunction fromAsyncGen(fn) {\n  let { promise, resolve } = createDeferredPromise()\n  const ac = new AbortController()\n  const signal = ac.signal\n  const value = fn(\n    (async function* () {\n      while (true) {\n        const _promise = promise\n        promise = null\n        const { chunk, done, cb } = await _promise\n        process.nextTick(cb)\n        if (done) return\n        if (signal.aborted)\n          throw new AbortError(undefined, {\n            cause: signal.reason\n          })\n        ;({ promise, resolve } = createDeferredPromise())\n        yield chunk\n      }\n    })(),\n    {\n      signal\n    }\n  )\n  return {\n    value,\n    write(chunk, encoding, cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        chunk,\n        done: false,\n        cb\n      })\n    },\n    final(cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        done: true,\n        cb\n      })\n    },\n    destroy(err, cb) {\n      ac.abort()\n      cb(err)\n    }\n  }\n}\nfunction _duplexify(pair) {\n  const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n  const w = pair.writable\n  let readable = !!isReadable(r)\n  let writable = !!isWritable(w)\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    } else if (!readable && !writable) {\n      d.destroy()\n    }\n  }\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplexify({\n    // TODO (ronag): highWaterMark?\n    readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n    writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n    readable,\n    writable\n  })\n  if (writable) {\n    eos(w, (err) => {\n      writable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    d._write = function (chunk, encoding, callback) {\n      if (w.write(chunk, encoding)) {\n        callback()\n      } else {\n        ondrain = callback\n      }\n    }\n    d._final = function (callback) {\n      w.end()\n      onfinish = callback\n    }\n    w.on('drain', function () {\n      if (ondrain) {\n        const cb = ondrain\n        ondrain = null\n        cb()\n      }\n    })\n    w.on('finish', function () {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    eos(r, (err) => {\n      readable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    r.on('readable', function () {\n      if (onreadable) {\n        const cb = onreadable\n        onreadable = null\n        cb()\n      }\n    })\n    r.on('end', function () {\n      d.push(null)\n    })\n    d._read = function () {\n      while (true) {\n        const buf = r.read()\n        if (buf === null) {\n          onreadable = d._read\n          return\n        }\n        if (!d.push(buf)) {\n          return\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      destroyer(w, err)\n      destroyer(r, err)\n    }\n  }\n  return d\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n  ObjectDefineProperties,\n  ObjectGetOwnPropertyDescriptor,\n  ObjectKeys,\n  ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n  const keys = ObjectKeys(Writable.prototype)\n  // Allow the keys array to be GC'ed.\n  for (let i = 0; i < keys.length; i++) {\n    const method = keys[i]\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\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  if (options) {\n    this.allowHalfOpen = options.allowHalfOpen !== false\n    if (options.readable === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if (options.writable === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  } else {\n    this.allowHalfOpen = true\n  }\n}\nObjectDefineProperties(Duplex.prototype, {\n  writable: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n  },\n  writableObjectMode: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n  },\n  writableBuffer: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n  },\n  writableLength: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n  },\n  writableFinished: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n  },\n  writableCorked: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n  },\n  writableEnded: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      if (this._readableState === undefined || this._writableState === undefined) {\n        return false\n      }\n      return this._readableState.destroyed && this._writableState.destroyed\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      if (this._readableState && this._writableState) {\n        this._readableState.destroyed = value\n        this._writableState.destroyed = value\n      }\n    }\n  }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n  return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n  return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n  if (!duplexify) {\n    duplexify = require('./duplexify')\n  }\n  return duplexify(body, 'body')\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// 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\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options)\n\n  // TODO (ronag): This should preferably always be\n  // applied but would be semver-major. Or even better;\n  // make Transform a Readable with the Writable interface.\n  const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n  if (readableHighWaterMark === 0) {\n    // A Duplex will buffer both on the writable and readable side while\n    // a Transform just wants to buffer hwm number of elements. To avoid\n    // buffering twice we disable buffering on the writable side.\n    options = {\n      ...options,\n      highWaterMark: null,\n      readableHighWaterMark,\n      // TODO (ronag): 0 is not optimal since we have\n      // a \"bug\" where we check needDrain before calling _write and not after.\n      // Refs: https://github.com/nodejs/node/pull/32887\n      // Refs: https://github.com/nodejs/node/pull/35941\n      writableHighWaterMark: options.writableHighWaterMark || 0\n    }\n  }\n  Duplex.call(this, options)\n\n  // 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  this._readableState.sync = false\n  this[kCallback] = null\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform\n    if (typeof options.flush === 'function') this._flush = options.flush\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  // Backwards compat. Some Transform streams incorrectly implement _final\n  // instead of or in addition to _flush. By using 'prefinish' instead of\n  // implementing _final we continue supporting this unfortunate use case.\n  this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n  if (typeof this._flush === 'function' && !this.destroyed) {\n    this._flush((er, data) => {\n      if (er) {\n        if (cb) {\n          cb(er)\n        } else {\n          this.destroy(er)\n        }\n        return\n      }\n      if (data != null) {\n        this.push(data)\n      }\n      this.push(null)\n      if (cb) {\n        cb()\n      }\n    })\n  } else {\n    this.push(null)\n    if (cb) {\n      cb()\n    }\n  }\n}\nfunction prefinish() {\n  if (this._final !== final) {\n    final.call(this)\n  }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n  const rState = this._readableState\n  const wState = this._writableState\n  const length = rState.length\n  this._transform(chunk, encoding, (err, val) => {\n    if (err) {\n      callback(err)\n      return\n    }\n    if (val != null) {\n      this.push(val)\n    }\n    if (\n      wState.ended ||\n      // Backwards compat.\n      length === rState.length ||\n      // Backwards compat.\n      rState.length < rState.highWaterMark\n    ) {\n      callback()\n    } else {\n      this[kCallback] = callback\n    }\n  })\n}\nTransform.prototype._read = function () {\n  if (this[kCallback]) {\n    const callback = this[kCallback]\n    this[kCallback] = null\n    callback()\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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options)\n  Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk)\n}\n", "/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_INVALID_RETURN_VALUE,\n    ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED,\n    ERR_STREAM_PREMATURE_CLOSE\n  },\n  AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst { isIterable, isReadable, isReadableNodeStream, isNodeStream } = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nfunction destroyer(stream, reading, writing) {\n  let finished = false\n  stream.on('close', () => {\n    finished = true\n  })\n  const cleanup = eos(\n    stream,\n    {\n      readable: reading,\n      writable: writing\n    },\n    (err) => {\n      finished = !err\n    }\n  )\n  return {\n    destroy: (err) => {\n      if (finished) return\n      finished = true\n      destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n    },\n    cleanup\n  }\n}\nfunction popCallback(streams) {\n  // Streams should never be an empty array. It should always contain at least\n  // a single stream. Therefore optimize for the average case instead of\n  // checking for length === 0 as well.\n  validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n  return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n  if (isIterable(val)) {\n    return val\n  } else if (isReadableNodeStream(val)) {\n    // Legacy streams are not Iterable.\n    return fromReadable(val)\n  }\n  throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n  if (!Readable) {\n    Readable = require('./readable')\n  }\n  yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pump(iterable, writable, finish, { end }) {\n  let error\n  let onresolve = null\n  const resume = (err) => {\n    if (err) {\n      error = err\n    }\n    if (onresolve) {\n      const callback = onresolve\n      onresolve = null\n      callback()\n    }\n  }\n  const wait = () =>\n    new Promise((resolve, reject) => {\n      if (error) {\n        reject(error)\n      } else {\n        onresolve = () => {\n          if (error) {\n            reject(error)\n          } else {\n            resolve()\n          }\n        }\n      }\n    })\n  writable.on('drain', resume)\n  const cleanup = eos(\n    writable,\n    {\n      readable: false\n    },\n    resume\n  )\n  try {\n    if (writable.writableNeedDrain) {\n      await wait()\n    }\n    for await (const chunk of iterable) {\n      if (!writable.write(chunk)) {\n        await wait()\n      }\n    }\n    if (end) {\n      writable.end()\n    }\n    await wait()\n    finish()\n  } catch (err) {\n    finish(error !== err ? aggregateTwoErrors(error, err) : err)\n  } finally {\n    cleanup()\n    writable.off('drain', resume)\n  }\n}\nfunction pipeline(...streams) {\n  return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n  if (streams.length === 1 && ArrayIsArray(streams[0])) {\n    streams = streams[0]\n  }\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n  // Need to cleanup event listeners if last stream is readable\n  // https://github.com/nodejs/node/issues/35452\n  const lastStreamCleanup = []\n  validateAbortSignal(outerSignal, 'options.signal')\n  function abort() {\n    finishImpl(new AbortError())\n  }\n  outerSignal === null || outerSignal === undefined ? undefined : outerSignal.addEventListener('abort', abort)\n  let error\n  let value\n  const destroys = []\n  let finishCount = 0\n  function finish(err) {\n    finishImpl(err, --finishCount === 0)\n  }\n  function finishImpl(err, final) {\n    if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n      error = err\n    }\n    if (!error && !final) {\n      return\n    }\n    while (destroys.length) {\n      destroys.shift()(error)\n    }\n    outerSignal === null || outerSignal === undefined ? undefined : outerSignal.removeEventListener('abort', abort)\n    ac.abort()\n    if (final) {\n      if (!error) {\n        lastStreamCleanup.forEach((fn) => fn())\n      }\n      process.nextTick(callback, error, value)\n    }\n  }\n  let ret\n  for (let i = 0; i < streams.length; i++) {\n    const stream = streams[i]\n    const reading = i < streams.length - 1\n    const writing = i > 0\n    const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n    const isLastStream = i === streams.length - 1\n    if (isNodeStream(stream)) {\n      if (end) {\n        const { destroy, cleanup } = destroyer(stream, reading, writing)\n        destroys.push(destroy)\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n\n      // Catch stream errors that occur after pipe/pump has completed.\n      function onError(err) {\n        if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n          finish(err)\n        }\n      }\n      stream.on('error', onError)\n      if (isReadable(stream) && isLastStream) {\n        lastStreamCleanup.push(() => {\n          stream.removeListener('error', onError)\n        })\n      }\n    }\n    if (i === 0) {\n      if (typeof stream === 'function') {\n        ret = stream({\n          signal\n        })\n        if (!isIterable(ret)) {\n          throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n        }\n      } else if (isIterable(stream) || isReadableNodeStream(stream)) {\n        ret = stream\n      } else {\n        ret = Duplex.from(stream)\n      }\n    } else if (typeof stream === 'function') {\n      ret = makeAsyncIterable(ret)\n      ret = stream(ret, {\n        signal\n      })\n      if (reading) {\n        if (!isIterable(ret, true)) {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n        }\n      } else {\n        var _ret\n        if (!PassThrough) {\n          PassThrough = require('./passthrough')\n        }\n\n        // If the last argument to pipeline is not a stream\n        // we must create a proxy stream so that pipeline(...)\n        // always returns a stream which can be further\n        // composed through `.pipe(stream)`.\n\n        const pt = new PassThrough({\n          objectMode: true\n        })\n\n        // Handle Promises/A+ spec, `then` could be a getter that throws on\n        // second use.\n        const then = (_ret = ret) === null || _ret === undefined ? undefined : _ret.then\n        if (typeof then === 'function') {\n          finishCount++\n          then.call(\n            ret,\n            (val) => {\n              value = val\n              if (val != null) {\n                pt.write(val)\n              }\n              if (end) {\n                pt.end()\n              }\n              process.nextTick(finish)\n            },\n            (err) => {\n              pt.destroy(err)\n              process.nextTick(finish, err)\n            }\n          )\n        } else if (isIterable(ret, true)) {\n          finishCount++\n          pump(ret, pt, finish, {\n            end\n          })\n        } else {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n        }\n        ret = pt\n        const { destroy, cleanup } = destroyer(ret, false, true)\n        destroys.push(destroy)\n        if (isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n    } else if (isNodeStream(stream)) {\n      if (isReadableNodeStream(ret)) {\n        finishCount += 2\n        const cleanup = pipe(ret, stream, finish, {\n          end\n        })\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      } else if (isIterable(ret)) {\n        finishCount++\n        pump(ret, stream, finish, {\n          end\n        })\n      } else {\n        throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], ret)\n      }\n      ret = stream\n    } else {\n      ret = Duplex.from(stream)\n    }\n  }\n  if (\n    (signal !== null && signal !== undefined && signal.aborted) ||\n    (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n  ) {\n    process.nextTick(abort)\n  }\n  return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n  let ended = false\n  dst.on('close', () => {\n    if (!ended) {\n      // Finish if the destination closes before the source has completed.\n      finish(new ERR_STREAM_PREMATURE_CLOSE())\n    }\n  })\n  src.pipe(dst, {\n    end\n  })\n  if (end) {\n    // Compat. Before node v10.12.0 stdio used to throw an error so\n    // pipe() did/does not end() stdio destinations.\n    // Now they allow it but \"secretly\" don't close the underlying fd.\n    src.once('end', () => {\n      ended = true\n      dst.end()\n    })\n  } else {\n    finish()\n  }\n  eos(\n    src,\n    {\n      readable: true,\n      writable: false\n    },\n    (err) => {\n      const rState = src._readableState\n      if (\n        err &&\n        err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n        rState &&\n        rState.ended &&\n        !rState.errored &&\n        !rState.errorEmitted\n      ) {\n        // Some readable streams will emit 'close' before 'end'. However, since\n        // this is on the readable side 'end' should still be emitted if the\n        // stream has been ended and no error emitted. This should be allowed in\n        // favor of backwards compatibility. Since the stream is piped to a\n        // destination this should not result in any observable difference.\n        // We don't need to check if this is a writable premature close since\n        // eos will only fail with premature close on the reading side for\n        // duplex streams.\n        src.once('end', finish).once('error', finish)\n      } else {\n        finish(err)\n      }\n    }\n  )\n  return eos(\n    dst,\n    {\n      readable: false,\n      writable: true\n    },\n    finish\n  )\n}\nmodule.exports = {\n  pipelineImpl,\n  pipeline\n}\n", "'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst { isNodeStream, isReadable, isWritable } = require('./utils')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nmodule.exports = function compose(...streams) {\n  if (streams.length === 0) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  if (streams.length === 1) {\n    return Duplex.from(streams[0])\n  }\n  const orgStreams = [...streams]\n  if (typeof streams[0] === 'function') {\n    streams[0] = Duplex.from(streams[0])\n  }\n  if (typeof streams[streams.length - 1] === 'function') {\n    const idx = streams.length - 1\n    streams[idx] = Duplex.from(streams[idx])\n  }\n  for (let n = 0; n < streams.length; ++n) {\n    if (!isNodeStream(streams[n])) {\n      // TODO(ronag): Add checks for non streams.\n      continue\n    }\n    if (n < streams.length - 1 && !isReadable(streams[n])) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n    }\n    if (n > 0 && !isWritable(streams[n])) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n    }\n  }\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    } else if (!readable && !writable) {\n      d.destroy()\n    }\n  }\n  const head = streams[0]\n  const tail = pipeline(streams, onfinished)\n  const writable = !!isWritable(head)\n  const readable = !!isReadable(tail)\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplex({\n    // TODO (ronag): highWaterMark?\n    writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n    readableObjectMode: !!(tail !== null && tail !== undefined && tail.writableObjectMode),\n    writable,\n    readable\n  })\n  if (writable) {\n    d._write = function (chunk, encoding, callback) {\n      if (head.write(chunk, encoding)) {\n        callback()\n      } else {\n        ondrain = callback\n      }\n    }\n    d._final = function (callback) {\n      head.end()\n      onfinish = callback\n    }\n    head.on('drain', function () {\n      if (ondrain) {\n        const cb = ondrain\n        ondrain = null\n        cb()\n      }\n    })\n    tail.on('finish', function () {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    tail.on('readable', function () {\n      if (onreadable) {\n        const cb = onreadable\n        onreadable = null\n        cb()\n      }\n    })\n    tail.on('end', function () {\n      d.push(null)\n    })\n    d._read = function () {\n      while (true) {\n        const buf = tail.read()\n        if (buf === null) {\n          onreadable = d._read\n          return\n        }\n        if (!d.push(buf)) {\n          return\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      destroyer(tail, err)\n    }\n  }\n  return d\n}\n", "'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nfunction pipeline(...streams) {\n  return new Promise((resolve, reject) => {\n    let signal\n    let end\n    const lastArg = streams[streams.length - 1]\n    if (lastArg && typeof lastArg === 'object' && !isNodeStream(lastArg) && !isIterable(lastArg)) {\n      const options = ArrayPrototypePop(streams)\n      signal = options.signal\n      end = options.end\n    }\n    pl(\n      streams,\n      (err, value) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(value)\n        }\n      },\n      {\n        signal,\n        end\n      }\n    )\n  })\n}\nmodule.exports = {\n  finished,\n  pipeline\n}\n", "/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\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')\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n  promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n  codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n  const op = streamReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return Stream.Readable.from(ReflectApply(op, this, args))\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n  const op = promiseReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return ReflectApply(op, this, args)\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nObjectDefineProperty(Stream, 'promises', {\n  __proto__: null,\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.pipeline\n  }\n})\nObjectDefineProperty(eos, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.finished\n  }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n  return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n", "'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\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\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", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n  var bytes = Buffer.allocUnsafe(size)\n\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (var generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n      }\n    } else {\n      crypto.getRandomValues(bytes)\n    }\n  }\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\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", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (toStr.call(list) === '[object Array]') {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n\nmodule.exports = forEach;\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", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar gOPD = require('gopd');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\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\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\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", "// 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", "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}", "// 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').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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", "// 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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "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", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n  var M = ARRAY16\n  for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n  var a = this._a\n  var b = this._b\n  var c = this._c\n  var d = this._d\n\n  a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n  d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n  c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n  b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n  a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n  d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n  c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n  b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n  a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n  d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n  c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n  b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n  a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n  d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n  c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n  b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n  a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n  d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n  c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n  b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n  a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n  d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n  c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n  b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n  a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n  d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n  c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n  b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n  a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n  d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n  c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n  b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n  a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n  d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n  c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n  b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n  a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n  d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n  c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n  b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n  a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n  d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n  c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n  b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n  a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n  d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n  c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n  b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n  a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n  d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n  c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n  b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n  a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n  d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n  c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n  b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n  a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n  d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n  c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n  b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n  a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n  d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n  c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n  b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n  this._a = (this._a + a) | 0\n  this._b = (this._b + b) | 0\n  this._c = (this._c + c) | 0\n  this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.allocUnsafe(16)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n  return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n  var words = ARRAY16\n  for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n  var al = this._a | 0\n  var bl = this._b | 0\n  var cl = this._c | 0\n  var dl = this._d | 0\n  var el = this._e | 0\n\n  var ar = this._a | 0\n  var br = this._b | 0\n  var cr = this._c | 0\n  var dr = this._d | 0\n  var er = this._e | 0\n\n  // computation\n  for (var i = 0; i < 80; i += 1) {\n    var tl\n    var tr\n    if (i < 16) {\n      tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n      tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n    } else if (i < 32) {\n      tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n      tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n    } else if (i < 48) {\n      tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n      tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n    } else if (i < 64) {\n      tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n      tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n    } else { // if (i<80) {\n      tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n      tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n    }\n\n    al = el\n    el = dl\n    dl = rotl(cl, 10)\n    cl = bl\n    bl = tl\n\n    ar = er\n    er = dr\n    dr = rotl(cr, 10)\n    cr = br\n    br = tr\n  }\n\n  // update state\n  var t = (this._b + cl + dr) | 0\n  this._b = (this._c + dl + er) | 0\n  this._c = (this._d + el + ar) | 0\n  this._d = (this._e + al + br) | 0\n  this._e = (this._a + bl + cr) | 0\n  this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  buffer.writeInt32LE(this._e, 16)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\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", "/*\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 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", "/**\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", "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", "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 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", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "// 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\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n  Transform.call(this)\n  this.hashMode = typeof hashMode === 'string'\n  if (this.hashMode) {\n    this[hashMode] = this._finalOrDigest\n  } else {\n    this.final = this._finalOrDigest\n  }\n  if (this._final) {\n    this.__final = this._final\n    this._final = null\n  }\n  this._decoder = null\n  this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n  if (typeof data === 'string') {\n    data = Buffer.from(data, inputEnc)\n  }\n\n  var outData = this._update(data)\n  if (this.hashMode) return this\n\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc)\n  }\n\n  return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n  throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n  throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n  throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n  var err\n  try {\n    if (this.hashMode) {\n      this._update(data)\n    } else {\n      this.push(this._update(data))\n    }\n  } catch (e) {\n    err = e\n  } finally {\n    next(err)\n  }\n}\nCipherBase.prototype._flush = function (done) {\n  var err\n  try {\n    this.push(this.__final())\n  } catch (e) {\n    err = e\n  }\n\n  done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n  var outData = this.__final() || Buffer.alloc(0)\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc, true)\n  }\n  return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n  if (!this._decoder) {\n    this._decoder = new StringDecoder(enc)\n    this._encoding = enc\n  }\n\n  if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n  var out = this._decoder.write(value)\n  if (fin) {\n    out += this._decoder.end()\n  }\n\n  return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n  Base.call(this, 'digest')\n\n  this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n  return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n  alg = alg.toLowerCase()\n  if (alg === 'md5') return new MD5()\n  if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n  return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  this._alg = alg\n  this._key = key\n\n  if (key.length > blocksize) {\n    key = alg(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._alg(Buffer.concat(this._hash))\n  return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n  return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  this._alg = alg\n  this._key = key\n  if (key.length > blocksize) {\n    var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n    key = hash.update(key).digest()\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n  this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n  this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._hash.digest()\n  var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n  return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n  alg = alg.toLowerCase()\n  if (alg === 'rmd160' || alg === 'ripemd160') {\n    return new Hmac('rmd160', key)\n  }\n  if (alg === 'md5') {\n    return new Legacy(md5, key)\n  }\n  return new Hmac(alg, key)\n}\n", "{\n  \"sha224WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"RSA-SHA224\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"sha256WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"RSA-SHA256\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"sha384WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"RSA-SHA384\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"sha512WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA512\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA1\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"3021300906052b0e03021a05000414\"\n  },\n  \"ecdsa-with-SHA1\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"sha256\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"sha224\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"sha384\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"sha512\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA1\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-RIPEMD160\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"\"\n  },\n  \"ripemd160WithRSA\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"RSA-RIPEMD160\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"md5WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  },\n  \"RSA-MD5\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  }\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n  if (typeof iterations !== 'number') {\n    throw new TypeError('Iterations not a number')\n  }\n\n  if (iterations < 0) {\n    throw new TypeError('Bad iterations')\n  }\n\n  if (typeof keylen !== 'number') {\n    throw new TypeError('Key length not a number')\n  }\n\n  if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n    throw new TypeError('Bad key length')\n  }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n  defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n  var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n  defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n  defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n  if (Buffer.isBuffer(thing)) {\n    return thing\n  } else if (typeof thing === 'string') {\n    return Buffer.from(thing, encoding)\n  } else if (ArrayBuffer.isView(thing)) {\n    return Buffer.from(thing.buffer)\n  } else {\n    throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n  }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n  md5: 16,\n  sha1: 20,\n  sha224: 28,\n  sha256: 32,\n  sha384: 48,\n  sha512: 64,\n  rmd160: 20,\n  ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n  var hash = getDigest(alg)\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  if (key.length > blocksize) {\n    key = hash(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n  ipad.copy(ipad1, 0, 0, blocksize)\n  this.ipad1 = ipad1\n  this.ipad2 = ipad\n  this.opad = opad\n  this.alg = alg\n  this.blocksize = blocksize\n  this.hash = hash\n  this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n  data.copy(ipad, this.blocksize)\n  var h = this.hash(ipad)\n  h.copy(this.opad, this.blocksize)\n  return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n  function shaFunc (data) {\n    return sha(alg).update(data).digest()\n  }\n  function rmd160Func (data) {\n    return new RIPEMD160().update(data).digest()\n  }\n\n  if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n  if (alg === 'md5') return md5\n  return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n  checkParameters(iterations, keylen)\n  password = toBuffer(password, defaultEncoding, 'Password')\n  salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n  digest = digest || 'sha1'\n\n  var hmac = new Hmac(digest, password, salt.length)\n\n  var DK = Buffer.allocUnsafe(keylen)\n  var block1 = Buffer.allocUnsafe(salt.length + 4)\n  salt.copy(block1, 0, 0, salt.length)\n\n  var destPos = 0\n  var hLen = sizes[digest]\n  var l = Math.ceil(keylen / hLen)\n\n  for (var i = 1; i <= l; i++) {\n    block1.writeUInt32BE(i, salt.length)\n\n    var T = hmac.run(block1, hmac.ipad1)\n    var U = T\n\n    for (var j = 1; j < iterations; j++) {\n      U = hmac.run(U, hmac.ipad2)\n      for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n    }\n\n    T.copy(DK, destPos)\n    destPos += hLen\n  }\n\n  return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n  sha: 'SHA-1',\n  'sha-1': 'SHA-1',\n  sha1: 'SHA-1',\n  sha256: 'SHA-256',\n  'sha-256': 'SHA-256',\n  sha384: 'SHA-384',\n  'sha-384': 'SHA-384',\n  'sha-512': 'SHA-512',\n  sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n  if (global.process && !global.process.browser) {\n    return Promise.resolve(false)\n  }\n  if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n    return Promise.resolve(false)\n  }\n  if (checks[algo] !== undefined) {\n    return checks[algo]\n  }\n  ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n  var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n    .then(function () {\n      return true\n    }).catch(function () {\n      return false\n    })\n  checks[algo] = prom\n  return prom\n}\nvar nextTick\nfunction getNextTick () {\n  if (nextTick) {\n    return nextTick\n  }\n  if (global.process && global.process.nextTick) {\n    nextTick = global.process.nextTick\n  } else if (global.queueMicrotask) {\n    nextTick = global.queueMicrotask\n  } else if (global.setImmediate) {\n    nextTick = global.setImmediate\n  } else {\n    nextTick = global.setTimeout\n  }\n  return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n  return subtle.importKey(\n    'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n  ).then(function (key) {\n    return subtle.deriveBits({\n      name: 'PBKDF2',\n      salt: salt,\n      iterations: iterations,\n      hash: {\n        name: algo\n      }\n    }, key, length << 3)\n  }).then(function (res) {\n    return Buffer.from(res)\n  })\n}\n\nfunction resolvePromise (promise, callback) {\n  promise.then(function (out) {\n    getNextTick()(function () {\n      callback(null, out)\n    })\n  }, function (e) {\n    getNextTick()(function () {\n      callback(e)\n    })\n  })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n  if (typeof digest === 'function') {\n    callback = digest\n    digest = undefined\n  }\n\n  digest = digest || 'sha1'\n  var algo = toBrowser[digest.toLowerCase()]\n\n  if (!algo || typeof global.Promise !== 'function') {\n    getNextTick()(function () {\n      var out\n      try {\n        out = sync(password, salt, iterations, keylen, digest)\n      } catch (e) {\n        return callback(e)\n      }\n      callback(null, out)\n    })\n    return\n  }\n\n  checkParameters(iterations, keylen)\n  password = toBuffer(password, defaultEncoding, 'Password')\n  salt = toBuffer(salt, defaultEncoding, 'Salt')\n  if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n  resolvePromise(checkNative(algo).then(function (resp) {\n    if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n    return sync(password, salt, iterations, keylen, digest)\n  }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n  var res =  (bytes[0 + off] << 24) |\n             (bytes[1 + off] << 16) |\n             (bytes[2 + off] << 8) |\n             bytes[3 + off];\n  return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n  bytes[0 + off] = value >>> 24;\n  bytes[1 + off] = (value >>> 16) & 0xff;\n  bytes[2 + off] = (value >>> 8) & 0xff;\n  bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 0; i < 4; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n  for (var i = 4; i < 8; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  // 7, 15, 23, 31, 39, 47, 55, 63\n  // 6, 14, 22, 30, 39, 47, 55, 63\n  // 5, 13, 21, 29, 39, 47, 55, 63\n  // 4, 12, 20, 28\n  for (var i = 7; i >= 5; i--) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outL <<= 1;\n    outL |= (inR >> (j + i)) & 1;\n  }\n\n  // 1, 9, 17, 25, 33, 41, 49, 57\n  // 2, 10, 18, 26, 34, 42, 50, 58\n  // 3, 11, 19, 27, 35, 43, 51, 59\n  // 36, 44, 52, 60\n  for (var i = 1; i <= 3; i++) {\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outR <<= 1;\n    outR |= (inL >> (j + i)) & 1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n  return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n  // inL => outL\n  14, 11, 17, 4, 27, 23, 25, 0,\n  13, 22, 7, 18, 5, 9, 16, 24,\n  2, 20, 12, 21, 1, 8, 15, 26,\n\n  // inR => outR\n  15, 4, 25, 19, 9, 1, 26, 16,\n  5, 11, 23, 8, 12, 7, 17, 0,\n  22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  var len = pc2table.length >>> 1;\n  for (var i = 0; i < len; i++) {\n    outL <<= 1;\n    outL |= (inL >>> pc2table[i]) & 0x1;\n  }\n  for (var i = len; i < pc2table.length; i++) {\n    outR <<= 1;\n    outR |= (inR >>> pc2table[i]) & 0x1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  outL = ((r & 1) << 5) | (r >>> 27);\n  for (var i = 23; i >= 15; i -= 4) {\n    outL <<= 6;\n    outL |= (r >>> i) & 0x3f;\n  }\n  for (var i = 11; i >= 3; i -= 4) {\n    outR |= (r >>> i) & 0x3f;\n    outR <<= 6;\n  }\n  outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n  var out = 0;\n  for (var i = 0; i < 4; i++) {\n    var b = (inL >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  for (var i = 0; i < 4; i++) {\n    var b = (inR >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  return out >>> 0;\n};\n\nvar permuteTable = [\n  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n  var out = 0;\n  for (var i = 0; i < permuteTable.length; i++) {\n    out <<= 1;\n    out |= (num >>> permuteTable[i]) & 0x1;\n  }\n  return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n  var str = num.toString(2);\n  while (str.length < size)\n    str = '0' + str;\n\n  var out = [];\n  for (var i = 0; i < size; i += group)\n    out.push(str.slice(i, i + group));\n  return out.join(' ');\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 assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n  this.tmp = new Array(2);\n  this.keys = null;\n}\n\nfunction DES(options) {\n  Cipher.call(this, options);\n\n  var state = new DESState();\n  this._desState = state;\n\n  this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n  return new DES(options);\n};\n\nvar shiftTable = [\n  1, 1, 2, 2, 2, 2, 2, 2,\n  1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n  state.keys = new Array(16 * 2);\n\n  assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n  var kL = utils.readUInt32BE(key, 0);\n  var kR = utils.readUInt32BE(key, 4);\n\n  utils.pc1(kL, kR, state.tmp, 0);\n  kL = state.tmp[0];\n  kR = state.tmp[1];\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var shift = shiftTable[i >>> 1];\n    kL = utils.r28shl(kL, shift);\n    kR = utils.r28shl(kR, shift);\n    utils.pc2(kL, kR, state.keys, i);\n  }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._desState;\n\n  var l = utils.readUInt32BE(inp, inOff);\n  var r = utils.readUInt32BE(inp, inOff + 4);\n\n  // Initial Permutation\n  utils.ip(l, r, state.tmp, 0);\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  if (this.type === 'encrypt')\n    this._encrypt(state, l, r, state.tmp, 0);\n  else\n    this._decrypt(state, l, r, state.tmp, 0);\n\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  utils.writeUInt32BE(out, l, outOff);\n  utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n  var value = buffer.length - off;\n  for (var i = off; i < buffer.length; i++)\n    buffer[i] = value;\n\n  return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n  var pad = buffer[buffer.length - 1];\n  for (var i = buffer.length - pad; i < buffer.length; i++)\n    assert.equal(buffer[i], pad);\n\n  return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n  var l = lStart;\n  var r = rStart;\n\n  // Apply f() x16 times\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(r, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = r;\n    r = (l ^ f) >>> 0;\n    l = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n  var l = rStart;\n  var r = lStart;\n\n  // Apply f() x16 times\n  for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(l, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = l;\n    l = (r ^ f) >>> 0;\n    r = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n  assert.equal(iv.length, 8, 'Invalid IV length');\n\n  this.iv = new Array(8);\n  for (var i = 0; i < this.iv.length; i++)\n    this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n  function CBC(options) {\n    Base.call(this, options);\n    this._cbcInit();\n  }\n  inherits(CBC, Base);\n\n  var keys = Object.keys(proto);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    CBC.prototype[key] = proto[key];\n  }\n\n  CBC.create = function create(options) {\n    return new CBC(options);\n  };\n\n  return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n  var state = new CBCState(this.options.iv);\n  this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n  var state = this._cbcState;\n  var superProto = this.constructor.super_.prototype;\n\n  var iv = state.iv;\n  if (this.type === 'encrypt') {\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] ^= inp[inOff + i];\n\n    superProto._update.call(this, iv, 0, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = out[outOff + i];\n  } else {\n    superProto._update.call(this, inp, inOff, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      out[outOff + i] ^= iv[i];\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = inp[inOff + i];\n  }\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n  assert.equal(key.length, 24, 'Invalid key length');\n\n  var k1 = key.slice(0, 8);\n  var k2 = key.slice(8, 16);\n  var k3 = key.slice(16, 24);\n\n  if (type === 'encrypt') {\n    this.ciphers = [\n      DES.create({ type: 'encrypt', key: k1 }),\n      DES.create({ type: 'decrypt', key: k2 }),\n      DES.create({ type: 'encrypt', key: k3 })\n    ];\n  } else {\n    this.ciphers = [\n      DES.create({ type: 'decrypt', key: k3 }),\n      DES.create({ type: 'encrypt', key: k2 }),\n      DES.create({ type: 'decrypt', key: k1 })\n    ];\n  }\n}\n\nfunction EDE(options) {\n  Cipher.call(this, options);\n\n  var state = new EDEState(this.type, this.options.key);\n  this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n  return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._edeState;\n\n  state.ciphers[0]._update(inp, inOff, out, outOff);\n  state.ciphers[1]._update(out, outOff, out, outOff);\n  state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n", "'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n  'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede3': des.EDE,\n  'des-ede-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede': des.EDE,\n  'des-cbc': des.CBC.instantiate(des.DES),\n  'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n  CipherBase.call(this)\n  var modeName = opts.mode.toLowerCase()\n  var mode = modes[modeName]\n  var type\n  if (opts.decrypt) {\n    type = 'decrypt'\n  } else {\n    type = 'encrypt'\n  }\n  var key = opts.key\n  if (!Buffer.isBuffer(key)) {\n    key = Buffer.from(key)\n  }\n  if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n    key = Buffer.concat([key, key.slice(0, 8)])\n  }\n  var iv = opts.iv\n  if (!Buffer.isBuffer(iv)) {\n    iv = Buffer.from(iv)\n  }\n  this._des = mode.create({\n    key: key,\n    iv: iv,\n    type: type\n  })\n}\nDES.prototype._update = function (data) {\n  return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n  return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n  return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n  return self._cipher.decryptBlock(block)\n}\n", "module.exports = function xor (a, b) {\n  var length = Math.min(a.length, b.length)\n  var buffer = new Buffer(length)\n\n  for (var i = 0; i < length; ++i) {\n    buffer[i] = a[i] ^ b[i]\n  }\n\n  return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n  var data = xor(block, self._prev)\n\n  self._prev = self._cipher.encryptBlock(data)\n  return self._prev\n}\n\nexports.decrypt = function (self, block) {\n  var pad = self._prev\n\n  self._prev = block\n  var out = self._cipher.decryptBlock(block)\n\n  return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n  var len = data.length\n  var out = xor(data, self._cache)\n  self._cache = self._cache.slice(len)\n  self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n  return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n  var out = Buffer.allocUnsafe(0)\n  var len\n\n  while (data.length) {\n    if (self._cache.length === 0) {\n      self._cache = self._cipher.encryptBlock(self._prev)\n      self._prev = Buffer.allocUnsafe(0)\n    }\n\n    if (self._cache.length <= data.length) {\n      len = self._cache.length\n      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n      data = data.slice(len)\n    } else {\n      out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n      break\n    }\n  }\n\n  return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad = self._cipher.encryptBlock(self._prev)\n  var out = pad[0] ^ byteParam\n\n  self._prev = Buffer.concat([\n    self._prev.slice(1),\n    Buffer.from([decrypt ? byteParam : out])\n  ])\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad\n  var i = -1\n  var len = 8\n  var out = 0\n  var bit, value\n  while (++i < len) {\n    pad = self._cipher.encryptBlock(self._prev)\n    bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n    value = pad[0] ^ bit\n    out += ((value & 0x80) >> (i % 8))\n    self._prev = shiftIn(self._prev, decrypt ? bit : value)\n  }\n  return out\n}\n\nfunction shiftIn (buffer, value) {\n  var len = buffer.length\n  var i = -1\n  var out = Buffer.allocUnsafe(buffer.length)\n  buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n  while (++i < len) {\n    out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n  }\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n  self._prev = self._cipher.encryptBlock(self._prev)\n  return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n  while (self._cache.length < chunk.length) {\n    self._cache = Buffer.concat([self._cache, getBlock(self)])\n  }\n\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n  var len = iv.length\n  var item\n  while (len--) {\n    item = iv.readUInt8(len)\n    if (item === 255) {\n      iv.writeUInt8(0, len)\n    } else {\n      item++\n      iv.writeUInt8(item, len)\n      break\n    }\n  }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n  var out = self._cipher.encryptBlockRaw(self._prev)\n  incr32(self._prev)\n  return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n  var chunkNum = Math.ceil(chunk.length / blockSize)\n  var start = self._cache.length\n  self._cache = Buffer.concat([\n    self._cache,\n    Buffer.allocUnsafe(chunkNum * blockSize)\n  ])\n  for (var i = 0; i < chunkNum; i++) {\n    var out = getBlock(self)\n    var offset = start + i * blockSize\n    self._cache.writeUInt32BE(out[0], offset + 0)\n    self._cache.writeUInt32BE(out[1], offset + 4)\n    self._cache.writeUInt32BE(out[2], offset + 8)\n    self._cache.writeUInt32BE(out[3], offset + 12)\n  }\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n", "{\n  \"aes-128-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-192-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-256-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-192-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-256-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes128\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes192\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes256\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-192-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-256-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  }\n}\n", "var modeModules = {\n  ECB: require('./ecb'),\n  CBC: require('./cbc'),\n  CFB: require('./cfb'),\n  CFB8: require('./cfb8'),\n  CFB1: require('./cfb1'),\n  OFB: require('./ofb'),\n  CTR: require('./ctr'),\n  GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n  modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n  if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n  var len = (buf.length / 4) | 0\n  var out = new Array(len)\n\n  for (var i = 0; i < len; i++) {\n    out[i] = buf.readUInt32BE(i * 4)\n  }\n\n  return out\n}\n\nfunction scrubVec (v) {\n  for (var i = 0; i < v.length; v++) {\n    v[i] = 0\n  }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n  var SUB_MIX0 = SUB_MIX[0]\n  var SUB_MIX1 = SUB_MIX[1]\n  var SUB_MIX2 = SUB_MIX[2]\n  var SUB_MIX3 = SUB_MIX[3]\n\n  var s0 = M[0] ^ keySchedule[0]\n  var s1 = M[1] ^ keySchedule[1]\n  var s2 = M[2] ^ keySchedule[2]\n  var s3 = M[3] ^ keySchedule[3]\n  var t0, t1, t2, t3\n  var ksRow = 4\n\n  for (var round = 1; round < nRounds; round++) {\n    t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n    t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n    t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n    t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n    s0 = t0\n    s1 = t1\n    s2 = t2\n    s3 = t3\n  }\n\n  t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n  t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n  t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n  t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n  t0 = t0 >>> 0\n  t1 = t1 >>> 0\n  t2 = t2 >>> 0\n  t3 = t3 >>> 0\n\n  return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n  // Compute double table\n  var d = new Array(256)\n  for (var j = 0; j < 256; j++) {\n    if (j < 128) {\n      d[j] = j << 1\n    } else {\n      d[j] = (j << 1) ^ 0x11b\n    }\n  }\n\n  var SBOX = []\n  var INV_SBOX = []\n  var SUB_MIX = [[], [], [], []]\n  var INV_SUB_MIX = [[], [], [], []]\n\n  // Walk GF(2^8)\n  var x = 0\n  var xi = 0\n  for (var i = 0; i < 256; ++i) {\n    // Compute sbox\n    var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n    sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n    SBOX[x] = sx\n    INV_SBOX[sx] = x\n\n    // Compute multiplication\n    var x2 = d[x]\n    var x4 = d[x2]\n    var x8 = d[x4]\n\n    // Compute sub bytes, mix columns tables\n    var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n    SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n    SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n    SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n    SUB_MIX[3][x] = t\n\n    // Compute inv sub bytes, inv mix columns tables\n    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n    INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n    INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n    INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n    INV_SUB_MIX[3][sx] = t\n\n    if (x === 0) {\n      x = xi = 1\n    } else {\n      x = x2 ^ d[d[d[x8 ^ x2]]]\n      xi ^= d[d[xi]]\n    }\n  }\n\n  return {\n    SBOX: SBOX,\n    INV_SBOX: INV_SBOX,\n    SUB_MIX: SUB_MIX,\n    INV_SUB_MIX: INV_SUB_MIX\n  }\n})()\n\nfunction AES (key) {\n  this._key = asUInt32Array(key)\n  this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n  var keyWords = this._key\n  var keySize = keyWords.length\n  var nRounds = keySize + 6\n  var ksRows = (nRounds + 1) * 4\n\n  var keySchedule = []\n  for (var k = 0; k < keySize; k++) {\n    keySchedule[k] = keyWords[k]\n  }\n\n  for (k = keySize; k < ksRows; k++) {\n    var t = keySchedule[k - 1]\n\n    if (k % keySize === 0) {\n      t = (t << 8) | (t >>> 24)\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n\n      t ^= RCON[(k / keySize) | 0] << 24\n    } else if (keySize > 6 && k % keySize === 4) {\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n    }\n\n    keySchedule[k] = keySchedule[k - keySize] ^ t\n  }\n\n  var invKeySchedule = []\n  for (var ik = 0; ik < ksRows; ik++) {\n    var ksR = ksRows - ik\n    var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n    if (ik < 4 || ksR <= 4) {\n      invKeySchedule[ik] = tt\n    } else {\n      invKeySchedule[ik] =\n        G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n        G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n        G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n        G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n    }\n  }\n\n  this._nRounds = nRounds\n  this._keySchedule = keySchedule\n  this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n  M = asUInt32Array(M)\n  return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n  var out = this.encryptBlockRaw(M)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[1], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[3], 12)\n  return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n  M = asUInt32Array(M)\n\n  // swap\n  var m1 = M[1]\n  M[1] = M[3]\n  M[3] = m1\n\n  var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[3], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[1], 12)\n  return buf\n}\n\nAES.prototype.scrub = function () {\n  scrubVec(this._keySchedule)\n  scrubVec(this._invKeySchedule)\n  scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n  return [\n    buf.readUInt32BE(0),\n    buf.readUInt32BE(4),\n    buf.readUInt32BE(8),\n    buf.readUInt32BE(12)\n  ]\n}\n\nfunction fromArray (out) {\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0] >>> 0, 0)\n  buf.writeUInt32BE(out[1] >>> 0, 4)\n  buf.writeUInt32BE(out[2] >>> 0, 8)\n  buf.writeUInt32BE(out[3] >>> 0, 12)\n  return buf\n}\n\nfunction GHASH (key) {\n  this.h = key\n  this.state = Buffer.alloc(16, 0)\n  this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n  var i = -1\n  while (++i < block.length) {\n    this.state[i] ^= block[i]\n  }\n  this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n  var Vi = toArray(this.h)\n  var Zi = [0, 0, 0, 0]\n  var j, xi, lsbVi\n  var i = -1\n  while (++i < 128) {\n    xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n    if (xi) {\n      // Z_i+1 = Z_i ^ V_i\n      Zi[0] ^= Vi[0]\n      Zi[1] ^= Vi[1]\n      Zi[2] ^= Vi[2]\n      Zi[3] ^= Vi[3]\n    }\n\n    // Store the value of LSB(V_i)\n    lsbVi = (Vi[3] & 1) !== 0\n\n    // V_i+1 = V_i >> 1\n    for (j = 3; j > 0; j--) {\n      Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n    }\n    Vi[0] = Vi[0] >>> 1\n\n    // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n    if (lsbVi) {\n      Vi[0] = Vi[0] ^ (0xe1 << 24)\n    }\n  }\n  this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n  this.cache = Buffer.concat([this.cache, buf])\n  var chunk\n  while (this.cache.length >= 16) {\n    chunk = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    this.ghash(chunk)\n  }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n  if (this.cache.length) {\n    this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n  }\n\n  this.ghash(fromArray([0, abl, 0, bl]))\n  return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n  var out = 0\n  if (a.length !== b.length) out++\n\n  var len = Math.min(a.length, b.length)\n  for (var i = 0; i < len; ++i) {\n    out += (a[i] ^ b[i])\n  }\n\n  return out\n}\n\nfunction calcIv (self, iv, ck) {\n  if (iv.length === 12) {\n    self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n    return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n  }\n  var ghash = new GHASH(ck)\n  var len = iv.length\n  var toPad = len % 16\n  ghash.update(iv)\n  if (toPad) {\n    toPad = 16 - toPad\n    ghash.update(Buffer.alloc(toPad, 0))\n  }\n  ghash.update(Buffer.alloc(8, 0))\n  var ivBits = len * 8\n  var tail = Buffer.alloc(8)\n  tail.writeUIntBE(ivBits, 0, 8)\n  ghash.update(tail)\n  self._finID = ghash.state\n  var out = Buffer.from(self._finID)\n  incr32(out)\n  return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  var h = Buffer.alloc(4, 0)\n\n  this._cipher = new aes.AES(key)\n  var ck = this._cipher.encryptBlock(h)\n  this._ghash = new GHASH(ck)\n  iv = calcIv(this, iv, ck)\n\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._alen = 0\n  this._len = 0\n  this._mode = mode\n\n  this._authTag = null\n  this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  if (!this._called && this._alen) {\n    var rump = 16 - (this._alen % 16)\n    if (rump < 16) {\n      rump = Buffer.alloc(rump, 0)\n      this._ghash.update(rump)\n    }\n  }\n\n  this._called = true\n  var out = this._mode.encrypt(this, chunk)\n  if (this._decrypt) {\n    this._ghash.update(chunk)\n  } else {\n    this._ghash.update(out)\n  }\n  this._len += chunk.length\n  return out\n}\n\nStreamCipher.prototype._final = function () {\n  if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n  if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n  this._authTag = tag\n  this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n  if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n  return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n  if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n  this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n  if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n  this._ghash.update(buf)\n  this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n  this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n", "var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n  if (salt) {\n    if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n    if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n  }\n\n  var keyLen = keyBits / 8\n  var key = Buffer.alloc(keyLen)\n  var iv = Buffer.alloc(ivLen || 0)\n  var tmp = Buffer.alloc(0)\n\n  while (keyLen > 0 || ivLen > 0) {\n    var hash = new MD5()\n    hash.update(tmp)\n    hash.update(password)\n    if (salt) hash.update(salt)\n    tmp = hash.digest()\n\n    var used = 0\n\n    if (keyLen > 0) {\n      var keyStart = key.length - keyLen\n      used = Math.min(keyLen, tmp.length)\n      tmp.copy(key, keyStart, 0, used)\n      keyLen -= used\n    }\n\n    if (used < tmp.length && ivLen > 0) {\n      var ivStart = iv.length - ivLen\n      var length = Math.min(ivLen, tmp.length - used)\n      tmp.copy(iv, ivStart, used, used + length)\n      ivLen -= length\n    }\n  }\n\n  tmp.fill(0)\n  return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n\n  while ((chunk = this._cache.get())) {\n    thing = this._mode.encrypt(this, chunk)\n    out.push(thing)\n  }\n\n  return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    chunk = this._mode.encrypt(this, chunk)\n    this._cipher.scrub()\n    return chunk\n  }\n\n  if (!chunk.equals(PADDING)) {\n    this._cipher.scrub()\n    throw new Error('data not multiple of block length')\n  }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n  if (this.cache.length > 15) {\n    var out = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    return out\n  }\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  var len = 16 - this.cache.length\n  var padBuff = Buffer.allocUnsafe(len)\n\n  var i = -1\n  while (++i < len) {\n    padBuff.writeUInt8(len, i)\n  }\n\n  return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv)\n  }\n\n  return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._last = void 0\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n  while ((chunk = this._cache.get(this._autopadding))) {\n    thing = this._mode.decrypt(this, chunk)\n    out.push(thing)\n  }\n  return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    return unpad(this._mode.decrypt(this, chunk))\n  } else if (chunk) {\n    throw new Error('data not multiple of block length')\n  }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n  var out\n  if (autoPadding) {\n    if (this.cache.length > 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  } else {\n    if (this.cache.length >= 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  }\n\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n  var padded = last[15]\n  if (padded < 1 || padded > 16) {\n    throw new Error('unable to decrypt data')\n  }\n  var i = -1\n  while (++i < padded) {\n    if (last[(i + (16 - padded))] !== padded) {\n      throw new Error('unable to decrypt data')\n    }\n  }\n  if (padded === 16) return\n\n  return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv, true)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv, true)\n  }\n\n  return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n  return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n  key: 8,\n  iv: 0\n}\nexports['des-cbc'] = exports.des = {\n  key: 8,\n  iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n  key: 24,\n  iv: 8\n}\nexports['des-ede3'] = {\n  key: 24,\n  iv: 0\n}\nexports['des-ede-cbc'] = {\n  key: 16,\n  iv: 8\n}\nexports['des-ede'] = {\n  key: 16,\n  iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n  return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n", "var r;\n\nmodule.exports = function rand(len) {\n  if (!r)\n    r = new Rand(null);\n\n  return r.generate(len);\n};\n\nfunction Rand(rand) {\n  this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n  return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n  if (this.rand.getBytes)\n    return this.rand.getBytes(n);\n\n  var res = new Uint8Array(n);\n  for (var i = 0; i < res.length; i++)\n    res[i] = this.rand.getByte();\n  return res;\n};\n\nif (typeof self === 'object') {\n  if (self.crypto && self.crypto.getRandomValues) {\n    // Modern browsers\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.crypto.getRandomValues(arr);\n      return arr;\n    };\n  } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n    // IE\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.msCrypto.getRandomValues(arr);\n      return arr;\n    };\n\n  // Safari's WebWorkers do not have `crypto`\n  } else if (typeof window === 'object') {\n    // Old junk\n    Rand.prototype._rand = function() {\n      throw new Error('Not implemented yet');\n    };\n  }\n} else {\n  // Node.js or Web worker with no crypto support\n  try {\n    var crypto = require('crypto');\n    if (typeof crypto.randomBytes !== 'function')\n      throw new Error('Not supported');\n\n    Rand.prototype._rand = function _rand(n) {\n      return crypto.randomBytes(n);\n    };\n  } catch (e) {\n  }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n  this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n  return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n  var len = n.bitLength();\n  var min_bytes = Math.ceil(len / 8);\n\n  // Generage random bytes until a number less than n is found.\n  // This ensures that 0..n-1 have an equal probability of being selected.\n  do\n    var a = new bn(this.rand.generate(min_bytes));\n  while (a.cmp(n) >= 0);\n\n  return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n  // Generate a random number greater than or equal to start and less than stop.\n  var size = stop.sub(start);\n  return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  var prime = true;\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n    if (cb)\n      cb(a);\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return false;\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s)\n      return false;\n  }\n\n  return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n\n    var g = n.gcd(a);\n    if (g.cmpn(1) !== 0)\n      return g;\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return x.fromRed().subn(1).gcd(n);\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s) {\n      x = x.redSqr();\n      return x.fromRed().subn(1).gcd(n);\n    }\n  }\n\n  return false;\n};\n", "var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n  if (primes !== null)\n    return primes;\n\n  var limit = 0x100000;\n  var res = [];\n  res[0] = 2;\n  for (var i = 1, k = 3; k < limit; k += 2) {\n    var sqrt = Math.ceil(Math.sqrt(k));\n    for (var j = 0; j < i && res[j] <= sqrt; j++)\n      if (k % res[j] === 0)\n        break;\n\n    if (i !== j && res[j] <= sqrt)\n      continue;\n\n    res[i++] = k;\n  }\n  primes = res;\n  return res;\n}\n\nfunction simpleSieve(p) {\n  var primes = _getPrimes();\n\n  for (var i = 0; i < primes.length; i++)\n    if (p.modn(primes[i]) === 0) {\n      if (p.cmpn(primes[i]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n\n  return true;\n}\n\nfunction fermatTest(p) {\n  var red = BN.mont(p);\n  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n  if (bits < 16) {\n    // this is what openssl does\n    if (gen === 2 || gen === 5) {\n      return new BN([0x8c, 0x7b]);\n    } else {\n      return new BN([0x8c, 0x27]);\n    }\n  }\n  gen = new BN(gen);\n\n  var num, n2;\n\n  while (true) {\n    num = new BN(randomBytes(Math.ceil(bits / 8)));\n    while (num.bitLength() > bits) {\n      num.ishrn(1);\n    }\n    if (num.isEven()) {\n      num.iadd(ONE);\n    }\n    if (!num.testn(1)) {\n      num.iadd(TWO);\n    }\n    if (!gen.cmp(TWO)) {\n      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        num.iadd(FOUR);\n      }\n    } else if (!gen.cmp(FIVE)) {\n      while (num.mod(TEN).cmp(THREE)) {\n        num.iadd(FOUR);\n      }\n    }\n    n2 = num.shrn(1);\n    if (simpleSieve(n2) && simpleSieve(num) &&\n      fermatTest(n2) && fermatTest(num) &&\n      millerRabin.test(n2) && millerRabin.test(num)) {\n      return num;\n    }\n  }\n\n}\n", "{\n    \"modp1\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n    },\n    \"modp2\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n    },\n    \"modp5\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n    },\n    \"modp14\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n    },\n    \"modp15\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n    },\n    \"modp16\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n    },\n    \"modp17\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n    },\n    \"modp18\": {\n        \"gen\": \"02\",\n        \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n    }\n}", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc);\n  }\n  this._pub = new BN(pub);\n  return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc);\n  }\n  this._priv = new BN(priv);\n  return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n  var gen = generator.toString('hex');\n  var hex = [gen, prime.toString(16)].join('_');\n  if (hex in primeCache) {\n    return primeCache[hex];\n  }\n  var error = 0;\n\n  if (prime.isEven() ||\n    !primes.simpleSieve ||\n    !primes.fermatTest(prime) ||\n    !millerRabin.test(prime)) {\n    //not a prime so +1\n    error += 1;\n\n    if (gen === '02' || gen === '05') {\n      // we'd be able to check the generator\n      // it would fail so +8\n      error += 8;\n    } else {\n      //we wouldn't be able to test the generator\n      // so +4\n      error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  if (!millerRabin.test(prime.shrn(1))) {\n    //not a safe prime\n    error += 2;\n  }\n  var rem;\n  switch (gen) {\n    case '02':\n      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        // unsuidable generator\n        error += 8;\n      }\n      break;\n    case '05':\n      rem = prime.mod(TEN);\n      if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n        // prime mod 10 needs to equal 3 or 7\n        error += 8;\n      }\n      break;\n    default:\n      error += 4;\n  }\n  primeCache[hex] = error;\n  return error;\n}\n\nfunction DH(prime, generator, malleable) {\n  this.setGenerator(generator);\n  this.__prime = new BN(prime);\n  this._prime = BN.mont(this.__prime);\n  this._primeLen = prime.length;\n  this._pub = undefined;\n  this._priv = undefined;\n  this._primeCode = undefined;\n  if (malleable) {\n    this.setPublicKey = setPublicKey;\n    this.setPrivateKey = setPrivateKey;\n  } else {\n    this._primeCode = 8;\n  }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n  enumerable: true,\n  get: function () {\n    if (typeof this._primeCode !== 'number') {\n      this._primeCode = checkPrime(this.__prime, this.__gen);\n    }\n    return this._primeCode;\n  }\n});\nDH.prototype.generateKeys = function () {\n  if (!this._priv) {\n    this._priv = new BN(randomBytes(this._primeLen));\n  }\n  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n  return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n  other = new BN(other);\n  other = other.toRed(this._prime);\n  var secret = other.redPow(this._priv).fromRed();\n  var out = new Buffer(secret.toArray());\n  var prime = this.getPrime();\n  if (out.length < prime.length) {\n    var front = new Buffer(prime.length - out.length);\n    front.fill(0);\n    out = Buffer.concat([front, out]);\n  }\n  return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n  return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n  return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n  return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n  return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(gen)) {\n    gen = new Buffer(gen, enc);\n  }\n  this.__gen = gen;\n  this._gen = new BN(gen);\n  return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n  var buf = new Buffer(bn.toArray());\n  if (!enc) {\n    return buf;\n  } else {\n    return buf.toString(enc);\n  }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n  var prime = new Buffer(primes[mod].prime, 'hex')\n  var gen = new Buffer(primes[mod].gen, 'hex')\n\n  return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n  'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n    return createDiffieHellman(prime, 'binary', enc, generator)\n  }\n\n  enc = enc || 'binary'\n  genc = genc || 'binary'\n  generator = generator || new Buffer([2])\n\n  if (!Buffer.isBuffer(generator)) {\n    generator = new Buffer(generator, genc)\n  }\n\n  if (typeof prime === 'number') {\n    return new DH(generatePrime(prime, generator), generator, true)\n  }\n\n  if (!Buffer.isBuffer(prime)) {\n    prime = new Buffer(prime, enc)\n  }\n\n  return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\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      while (p = p.next) ret += s + p.data;\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      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\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      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\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      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        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          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\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    return this;\n  }\n\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  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\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  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\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}\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  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}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\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\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}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 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", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\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    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\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// 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\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // 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  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // 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  this.sync = true;\n\n  // 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  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\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})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\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}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // 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\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\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\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);\n\n  // legacy.\n  this.writable = true;\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  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\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.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\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  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\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};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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};\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});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\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});\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.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\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    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\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}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\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);\n    // this can emit finish, and it will always happen\n    // after error\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);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\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    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\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}\n\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.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\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    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\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--;\n      // 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      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\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  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\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});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\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}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\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        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\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// 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\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\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}\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  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\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});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\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    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  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\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  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}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\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');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\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}\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      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\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    }\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    var lastPromise = this[kLastPromise];\n    var promise;\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      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\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  // 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      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\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      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];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\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;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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);\n\n  // 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  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}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // 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  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // 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  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // 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  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;\n\n  // 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  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // 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  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\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}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\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  Stream.call(this);\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    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    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\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.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\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    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      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        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  }\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  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\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  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\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  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\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  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\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  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\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;\n\n  // 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  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 = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\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\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\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;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // 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    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\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  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;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\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    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\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.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\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  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\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.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\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)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\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.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\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  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\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  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\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;\n\n    // 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    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\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      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\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  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\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    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\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;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\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    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\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};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\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;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\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      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\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  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\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  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\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;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\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.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\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);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\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  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\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});\n\n// exposed for testing purposes only.\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});\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.\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}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\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      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\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    return from(Readable, iterable, opts);\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  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\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\n'use strict';\n\nmodule.exports = Transform;\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;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // 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  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\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  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // 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  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\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}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\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.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\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.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\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};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // 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  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\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\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}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\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;\n\n    // request.destroy just do .end - .abort is what we want\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}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\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}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\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}\nmodule.exports = pipeline;", "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", "(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n  var r = getr(priv)\n  var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n  return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n  var len = priv.modulus.byteLength()\n  var r\n  do {\n    r = new BN(randomBytes(len))\n  } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n  return r\n}\n\nfunction crt (msg, priv) {\n  var blinds = blind(priv)\n  var len = priv.modulus.byteLength()\n  var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n  var c1 = blinded.toRed(BN.mont(priv.prime1))\n  var c2 = blinded.toRed(BN.mont(priv.prime2))\n  var qinv = priv.coefficient\n  var p = priv.prime1\n  var q = priv.prime2\n  var m1 = c1.redPow(priv.exponent1).fromRed()\n  var m2 = c2.redPow(priv.exponent2).fromRed()\n  var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n  return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "{\n  \"name\": \"elliptic\",\n  \"version\": \"6.5.4\",\n  \"description\": \"EC cryptography\",\n  \"main\": \"lib/elliptic.js\",\n  \"files\": [\n    \"lib\"\n  ],\n  \"scripts\": {\n    \"lint\": \"eslint lib test\",\n    \"lint:fix\": \"npm run lint -- --fix\",\n    \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n    \"test\": \"npm run lint && npm run unit\",\n    \"version\": \"grunt dist && git add dist/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git@github.com:indutny/elliptic\"\n  },\n  \"keywords\": [\n    \"EC\",\n    \"Elliptic\",\n    \"curve\",\n    \"Cryptography\"\n  ],\n  \"author\": \"Fedor Indutny <fedor@indutny.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/indutny/elliptic/issues\"\n  },\n  \"homepage\": \"https://github.com/indutny/elliptic\",\n  \"devDependencies\": {\n    \"brfs\": \"^2.0.2\",\n    \"coveralls\": \"^3.1.0\",\n    \"eslint\": \"^7.6.0\",\n    \"grunt\": \"^1.2.1\",\n    \"grunt-browserify\": \"^5.3.0\",\n    \"grunt-cli\": \"^1.3.2\",\n    \"grunt-contrib-connect\": \"^3.0.0\",\n    \"grunt-contrib-copy\": \"^1.0.0\",\n    \"grunt-contrib-uglify\": \"^5.0.0\",\n    \"grunt-mocha-istanbul\": \"^5.0.2\",\n    \"grunt-saucelabs\": \"^9.0.1\",\n    \"istanbul\": \"^0.4.5\",\n    \"mocha\": \"^8.0.1\"\n  },\n  \"dependencies\": {\n    \"bn.js\": \"^4.11.9\",\n    \"brorand\": \"^1.1.0\",\n    \"hash.js\": \"^1.0.0\",\n    \"hmac-drbg\": \"^1.0.1\",\n    \"inherits\": \"^2.0.4\",\n    \"minimalistic-assert\": \"^1.0.1\",\n    \"minimalistic-crypto-utils\": \"^1.0.1\"\n  }\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", "'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 '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\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 '<EC JPoint Infinity>';\n  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n      ' y: ' + this.y.toString(16, 2) +\n      ' z: ' + this.z.toString(16, 2) + '>';\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 BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n  Base.call(this, 'mont', 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.i4 = new BN(4).toRed(this.red).redInvm();\n  this.two = new BN(2).toRed(this.red);\n  this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n  var x = point.normalize().x;\n  var x2 = x.redSqr();\n  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n  var y = rhs.redSqrt();\n\n  return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && z === null) {\n    this.x = this.curve.one;\n    this.z = this.curve.zero;\n  } else {\n    this.x = new BN(x, 16);\n    this.z = new BN(z, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n  }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n  return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n  // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n  return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.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\nPoint.prototype.dbl = function dbl() {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n  // 2M + 2S + 4A\n\n  // A = X1 + Z1\n  var a = this.x.redAdd(this.z);\n  // AA = A^2\n  var aa = a.redSqr();\n  // B = X1 - Z1\n  var b = this.x.redSub(this.z);\n  // BB = B^2\n  var bb = b.redSqr();\n  // C = AA - BB\n  var c = aa.redSub(bb);\n  // X3 = AA * BB\n  var nx = aa.redMul(bb);\n  // Z3 = C * (BB + A24 * C)\n  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n  // 4M + 2S + 6A\n\n  // A = X2 + Z2\n  var a = this.x.redAdd(this.z);\n  // B = X2 - Z2\n  var b = this.x.redSub(this.z);\n  // C = X3 + Z3\n  var c = p.x.redAdd(p.z);\n  // D = X3 - Z3\n  var d = p.x.redSub(p.z);\n  // DA = D * A\n  var da = d.redMul(a);\n  // CB = C * B\n  var cb = c.redMul(b);\n  // X5 = Z1 * (DA + CB)^2\n  var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n  // Z5 = X1 * (DA - CB)^2\n  var nz = diff.x.redMul(da.redISub(cb).redSqr());\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n  var t = k.clone();\n  var a = this; // (N / 2) * Q + Q\n  var b = this.curve.point(null, null); // (N / 2) * Q\n  var c = this; // Q\n\n  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n    bits.push(t.andln(1));\n\n  for (var i = bits.length - 1; i >= 0; i--) {\n    if (bits[i] === 0) {\n      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n      a = a.diffAdd(b, c);\n      // N * Q = 2 * ((N / 2) * Q + Q))\n      b = b.dbl();\n    } else {\n      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n      b = a.diffAdd(b, c);\n      // N * Q + Q = 2 * ((N / 2) * Q + Q)\n      a = a.dbl();\n    }\n  }\n  return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n  this.x = this.x.redMul(this.z.redInvm());\n  this.z = this.curve.one;\n  return this;\n};\n\nPoint.prototype.getX = function getX() {\n  // Normalize coordinates\n  this.normalize();\n\n  return this.x.fromRed();\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 EdwardsCurve(conf) {\n  // NOTE: Important as we are creating point in Base.call()\n  this.twisted = (conf.a | 0) !== 1;\n  this.mOneA = this.twisted && (conf.a | 0) === -1;\n  this.extended = this.mOneA;\n\n  Base.call(this, 'edwards', conf);\n\n  this.a = new BN(conf.a, 16).umod(this.red.m);\n  this.a = this.a.toRed(this.red);\n  this.c = new BN(conf.c, 16).toRed(this.red);\n  this.c2 = this.c.redSqr();\n  this.d = new BN(conf.d, 16).toRed(this.red);\n  this.dd = this.d.redAdd(this.d);\n\n  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n  this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n  if (this.mOneA)\n    return num.redNeg();\n  else\n    return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n  if (this.oneC)\n    return num;\n  else\n    return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n  return this.point(x, y, z, t);\n};\n\nEdwardsCurve.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 x2 = x.redSqr();\n  var rhs = this.c2.redSub(this.a.redMul(x2));\n  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n  var y2 = rhs.redMul(lhs.redInvm());\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\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\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n  y = new BN(y, 16);\n  if (!y.red)\n    y = y.toRed(this.red);\n\n  // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n  var y2 = y.redSqr();\n  var lhs = y2.redSub(this.c2);\n  var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n  var x2 = lhs.redMul(rhs.redInvm());\n\n  if (x2.cmp(this.zero) === 0) {\n    if (odd)\n      throw new Error('invalid point');\n    else\n      return this.point(this.zero, y);\n  }\n\n  var x = x2.redSqrt();\n  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  if (x.fromRed().isOdd() !== odd)\n    x = x.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n  if (point.isInfinity())\n    return true;\n\n  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n  point.normalize();\n\n  var x2 = point.x.redSqr();\n  var y2 = point.y.redSqr();\n  var lhs = x2.redMul(this.a).redAdd(y2);\n  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n  return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.zero;\n    this.y = this.curve.one;\n    this.z = this.curve.one;\n    this.t = this.curve.zero;\n    this.zOne = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = z ? new BN(z, 16) : this.curve.one;\n    this.t = t && new BN(t, 16);\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    if (this.t && !this.t.red)\n      this.t = this.t.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n\n    // Use extended coordinates\n    if (this.curve.extended && !this.t) {\n      this.t = this.x.redMul(this.y);\n      if (!this.zOne)\n        this.t = this.t.redMul(this.z.redInvm());\n    }\n  }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n  return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.x.cmpn(0) === 0 &&\n    (this.y.cmp(this.z) === 0 ||\n    (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #doubling-dbl-2008-hwcd\n  // 4M + 4S\n\n  // A = X1^2\n  var a = this.x.redSqr();\n  // B = Y1^2\n  var b = this.y.redSqr();\n  // C = 2 * Z1^2\n  var c = this.z.redSqr();\n  c = c.redIAdd(c);\n  // D = a * A\n  var d = this.curve._mulA(a);\n  // E = (X1 + Y1)^2 - A - B\n  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n  // G = D + B\n  var g = d.redAdd(b);\n  // F = G - C\n  var f = g.redSub(c);\n  // H = D - B\n  var h = d.redSub(b);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #doubling-dbl-2008-bbjlp\n  //     #doubling-dbl-2007-bl\n  // and others\n  // Generally 3M + 4S or 2M + 4S\n\n  // B = (X1 + Y1)^2\n  var b = this.x.redAdd(this.y).redSqr();\n  // C = X1^2\n  var c = this.x.redSqr();\n  // D = Y1^2\n  var d = this.y.redSqr();\n\n  var nx;\n  var ny;\n  var nz;\n  var e;\n  var h;\n  var j;\n  if (this.curve.twisted) {\n    // E = a * C\n    e = this.curve._mulA(c);\n    // F = E + D\n    var f = e.redAdd(d);\n    if (this.zOne) {\n      // X3 = (B - C - D) * (F - 2)\n      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F^2 - 2 * F\n      nz = f.redSqr().redSub(f).redSub(f);\n    } else {\n      // H = Z1^2\n      h = this.z.redSqr();\n      // J = F - 2 * H\n      j = f.redSub(h).redISub(h);\n      // X3 = (B-C-D)*J\n      nx = b.redSub(c).redISub(d).redMul(j);\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F * J\n      nz = f.redMul(j);\n    }\n  } else {\n    // E = C + D\n    e = c.redAdd(d);\n    // H = (c * Z1)^2\n    h = this.curve._mulC(this.z).redSqr();\n    // J = E - 2 * H\n    j = e.redSub(h).redSub(h);\n    // X3 = c * (B - E) * J\n    nx = this.curve._mulC(b.redISub(e)).redMul(j);\n    // Y3 = c * E * (C - D)\n    ny = this.curve._mulC(e).redMul(c.redISub(d));\n    // Z3 = E * J\n    nz = e.redMul(j);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  // Double in extended coordinates\n  if (this.curve.extended)\n    return this._extDbl();\n  else\n    return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #addition-add-2008-hwcd-3\n  // 8M\n\n  // A = (Y1 - X1) * (Y2 - X2)\n  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n  // B = (Y1 + X1) * (Y2 + X2)\n  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n  // C = T1 * k * T2\n  var c = this.t.redMul(this.curve.dd).redMul(p.t);\n  // D = Z1 * 2 * Z2\n  var d = this.z.redMul(p.z.redAdd(p.z));\n  // E = B - A\n  var e = b.redSub(a);\n  // F = D - C\n  var f = d.redSub(c);\n  // G = D + C\n  var g = d.redAdd(c);\n  // H = B + A\n  var h = b.redAdd(a);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #addition-add-2008-bbjlp\n  //     #addition-add-2007-bl\n  // 10M + 1S\n\n  // A = Z1 * Z2\n  var a = this.z.redMul(p.z);\n  // B = A^2\n  var b = a.redSqr();\n  // C = X1 * X2\n  var c = this.x.redMul(p.x);\n  // D = Y1 * Y2\n  var d = this.y.redMul(p.y);\n  // E = d * C * D\n  var e = this.curve.d.redMul(c).redMul(d);\n  // F = B - E\n  var f = b.redSub(e);\n  // G = B + E\n  var g = b.redAdd(e);\n  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n  var nx = a.redMul(f).redMul(tmp);\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // Y3 = A * G * (D - a * C)\n    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n    // Z3 = F * G\n    nz = f.redMul(g);\n  } else {\n    // Y3 = A * G * (D - C)\n    ny = a.redMul(g).redMul(d.redSub(c));\n    // Z3 = c * F * G\n    nz = this.curve._mulC(f).redMul(g);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n  if (this.isInfinity())\n    return p;\n  if (p.isInfinity())\n    return this;\n\n  if (this.curve.extended)\n    return this._extAdd(p);\n  else\n    return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n  if (this.zOne)\n    return this;\n\n  // Normalize coordinates\n  var zi = this.z.redInvm();\n  this.x = this.x.redMul(zi);\n  this.y = this.y.redMul(zi);\n  if (this.t)\n    this.t = this.t.redMul(zi);\n  this.z = this.curve.one;\n  this.zOne = true;\n  return this;\n};\n\nPoint.prototype.neg = function neg() {\n  return this.curve.point(this.x.redNeg(),\n    this.y,\n    this.z,\n    this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n  this.normalize();\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  this.normalize();\n  return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this === other ||\n         this.getX().cmp(other.getX()) === 0 &&\n         this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n  var rx = x.toRed(this.curve.red).redMul(this.z);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(this.z);\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\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\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 assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n  if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n    return false;\n  }\n  if (i < 0 || i + 1 >= msg.length) {\n    return false;\n  }\n  return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\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    if (!enc) {\n      // Inspired by stringToUtf8ByteArray() in closure-library by Google\n      // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n      // Apache License 2.0\n      // https://github.com/google/closure-library/blob/master/LICENSE\n      var p = 0;\n      for (var i = 0; i < msg.length; i++) {\n        var c = msg.charCodeAt(i);\n        if (c < 128) {\n          res[p++] = c;\n        } else if (c < 2048) {\n          res[p++] = (c >> 6) | 192;\n          res[p++] = (c & 63) | 128;\n        } else if (isSurrogatePair(msg, i)) {\n          c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n          res[p++] = (c >> 18) | 240;\n          res[p++] = ((c >> 12) & 63) | 128;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        } else {\n          res[p++] = (c >> 12) | 224;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        }\n      }\n    } else if (enc === 'hex') {\n      msg = msg.replace(/[^a-z0-9]+/ig, '');\n      if (msg.length % 2 !== 0)\n        msg = '0' + msg;\n      for (i = 0; i < msg.length; i += 2)\n        res.push(parseInt(msg[i] + msg[i + 1], 16));\n    }\n  } else {\n    for (i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n  }\n  return res;\n}\nexports.toArray = toArray;\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}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n  var res = (w >>> 24) |\n            ((w >>> 8) & 0xff00) |\n            ((w << 8) & 0xff0000) |\n            ((w & 0xff) << 24);\n  return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++) {\n    var w = msg[i];\n    if (endian === 'little')\n      w = htonl(w);\n    res += zero8(w.toString(16));\n  }\n  return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n  if (word.length === 7)\n    return '0' + word;\n  else if (word.length === 6)\n    return '00' + word;\n  else if (word.length === 5)\n    return '000' + word;\n  else if (word.length === 4)\n    return '0000' + word;\n  else if (word.length === 3)\n    return '00000' + word;\n  else if (word.length === 2)\n    return '000000' + word;\n  else if (word.length === 1)\n    return '0000000' + word;\n  else\n    return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n  var len = end - start;\n  assert(len % 4 === 0);\n  var res = new Array(len / 4);\n  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n    var w;\n    if (endian === 'big')\n      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n    else\n      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n    res[i] = w >>> 0;\n  }\n  return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n  var res = new Array(msg.length * 4);\n  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n    var m = msg[i];\n    if (endian === 'big') {\n      res[k] = m >>> 24;\n      res[k + 1] = (m >>> 16) & 0xff;\n      res[k + 2] = (m >>> 8) & 0xff;\n      res[k + 3] = m & 0xff;\n    } else {\n      res[k + 3] = m >>> 24;\n      res[k + 2] = (m >>> 16) & 0xff;\n      res[k + 1] = (m >>> 8) & 0xff;\n      res[k] = m & 0xff;\n    }\n  }\n  return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n  return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n  return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n  return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n  return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n  return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n  return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n  var bh = buf[pos];\n  var bl = buf[pos + 1];\n\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  buf[pos] = hi >>> 0;\n  buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n  var lo = al + bl;\n  return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + carry;\n  return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n  var lo = al + bl + cl + dl;\n  return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n  lo = (lo + el) >>> 0;\n  carry += lo < el ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + eh + carry;\n  return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var lo = al + bl + cl + dl + el;\n\n  return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n  var r = (al << (32 - num)) | (ah >>> num);\n  return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n  return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n  this.pending = null;\n  this.pendingTotal = 0;\n  this.blockSize = this.constructor.blockSize;\n  this.outSize = this.constructor.outSize;\n  this.hmacStrength = this.constructor.hmacStrength;\n  this.padLength = this.constructor.padLength / 8;\n  this.endian = 'big';\n\n  this._delta8 = this.blockSize / 8;\n  this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n  // Convert message to array, pad it, and join into 32bit blocks\n  msg = utils.toArray(msg, enc);\n  if (!this.pending)\n    this.pending = msg;\n  else\n    this.pending = this.pending.concat(msg);\n  this.pendingTotal += msg.length;\n\n  // Enough data, try updating\n  if (this.pending.length >= this._delta8) {\n    msg = this.pending;\n\n    // Process pending data in blocks\n    var r = msg.length % this._delta8;\n    this.pending = msg.slice(msg.length - r, msg.length);\n    if (this.pending.length === 0)\n      this.pending = null;\n\n    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n    for (var i = 0; i < msg.length; i += this._delta32)\n      this._update(msg, i, i + this._delta32);\n  }\n\n  return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n  this.update(this._pad());\n  assert(this.pending === null);\n\n  return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n  var len = this.pendingTotal;\n  var bytes = this._delta8;\n  var k = bytes - ((len + this.padLength) % bytes);\n  var res = new Array(k + this.padLength);\n  res[0] = 0x80;\n  for (var i = 1; i < k; i++)\n    res[i] = 0;\n\n  // Append length\n  len <<= 3;\n  if (this.endian === 'big') {\n    for (var t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = len & 0xff;\n  } else {\n    res[i++] = len & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n\n    for (t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n  }\n\n  return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n  if (s === 0)\n    return ch32(x, y, z);\n  if (s === 1 || s === 3)\n    return p32(x, y, z);\n  if (s === 2)\n    return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n  return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n  return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n  return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n  0x5A827999, 0x6ED9EBA1,\n  0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n  if (!(this instanceof SHA1))\n    return new SHA1();\n\n  BlockHash.call(this);\n  this.h = [\n    0x67452301, 0xefcdab89, 0x98badcfe,\n    0x10325476, 0xc3d2e1f0 ];\n  this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n\n  for(; i < W.length; i++)\n    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n\n  for (i = 0; i < W.length; i++) {\n    var s = ~~(i / 20);\n    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n    e = d;\n    d = c;\n    c = rotl32(b, 30);\n    b = a;\n    a = t;\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_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\nfunction SHA256() {\n  if (!(this instanceof SHA256))\n    return new SHA256();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n    0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n  ];\n  this.k = sha256_K;\n  this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i++)\n    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n  var f = this.h[5];\n  var g = this.h[6];\n  var h = this.h[7];\n\n  assert(this.k.length === W.length);\n  for (i = 0; i < W.length; i++) {\n    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n    var T2 = sum32(s0_256(a), maj32(a, b, c));\n    h = g;\n    g = f;\n    f = e;\n    e = sum32(d, T1);\n    d = c;\n    c = b;\n    b = a;\n    a = sum32(T1, T2);\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n  this.h[5] = sum32(this.h[5], f);\n  this.h[6] = sum32(this.h[6], g);\n  this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n  if (!(this instanceof SHA224))\n    return new SHA224();\n\n  SHA256.call(this);\n  this.h = [\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n    0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n  // Just truncate output\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 7), 'big');\n  else\n    return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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\nfunction SHA512() {\n  if (!(this instanceof SHA512))\n    return new SHA512();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xf3bcc908,\n    0xbb67ae85, 0x84caa73b,\n    0x3c6ef372, 0xfe94f82b,\n    0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1,\n    0x9b05688c, 0x2b3e6c1f,\n    0x1f83d9ab, 0xfb41bd6b,\n    0x5be0cd19, 0x137e2179 ];\n  this.k = sha512_K;\n  this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n  var W = this.W;\n\n  // 32 x 32bit words\n  for (var i = 0; i < 32; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i += 2) {\n    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n    var c1_hi = W[i - 14];  // i - 7\n    var c1_lo = W[i - 13];\n    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n    var c3_hi = W[i - 32];  // i - 16\n    var c3_lo = W[i - 31];\n\n    W[i] = sum64_4_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n    W[i + 1] = sum64_4_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n  }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n  this._prepareBlock(msg, start);\n\n  var W = this.W;\n\n  var ah = this.h[0];\n  var al = this.h[1];\n  var bh = this.h[2];\n  var bl = this.h[3];\n  var ch = this.h[4];\n  var cl = this.h[5];\n  var dh = this.h[6];\n  var dl = this.h[7];\n  var eh = this.h[8];\n  var el = this.h[9];\n  var fh = this.h[10];\n  var fl = this.h[11];\n  var gh = this.h[12];\n  var gl = this.h[13];\n  var hh = this.h[14];\n  var hl = this.h[15];\n\n  assert(this.k.length === W.length);\n  for (var i = 0; i < W.length; i += 2) {\n    var c0_hi = hh;\n    var c0_lo = hl;\n    var c1_hi = s1_512_hi(eh, el);\n    var c1_lo = s1_512_lo(eh, el);\n    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n    var c3_hi = this.k[i];\n    var c3_lo = this.k[i + 1];\n    var c4_hi = W[i];\n    var c4_lo = W[i + 1];\n\n    var T1_hi = sum64_5_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n    var T1_lo = sum64_5_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n\n    c0_hi = s0_512_hi(ah, al);\n    c0_lo = s0_512_lo(ah, al);\n    c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n    c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n    hh = gh;\n    hl = gl;\n\n    gh = fh;\n    gl = fl;\n\n    fh = eh;\n    fl = el;\n\n    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n    dh = ch;\n    dl = cl;\n\n    ch = bh;\n    cl = bl;\n\n    bh = ah;\n    bl = al;\n\n    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n  }\n\n  sum64(this.h, 0, ah, al);\n  sum64(this.h, 2, bh, bl);\n  sum64(this.h, 4, ch, cl);\n  sum64(this.h, 6, dh, dl);\n  sum64(this.h, 8, eh, el);\n  sum64(this.h, 10, fh, fl);\n  sum64(this.h, 12, gh, gl);\n  sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ ((~xh) & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ ((~xl) & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 28);\n  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 28);\n  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 14);\n  var c1_hi = rotr64_hi(xh, xl, 18);\n  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 14);\n  var c1_lo = rotr64_lo(xh, xl, 18);\n  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 1);\n  var c1_hi = rotr64_hi(xh, xl, 8);\n  var c2_hi = shr64_hi(xh, xl, 7);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 1);\n  var c1_lo = rotr64_lo(xh, xl, 8);\n  var c2_lo = shr64_lo(xh, xl, 7);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 19);\n  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n  var c2_hi = shr64_hi(xh, xl, 6);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 19);\n  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n  var c2_lo = shr64_lo(xh, xl, 6);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n  if (!(this instanceof SHA384))\n    return new SHA384();\n\n  SHA512.call(this);\n  this.h = [\n    0xcbbb9d5d, 0xc1059ed8,\n    0x629a292a, 0x367cd507,\n    0x9159015a, 0x3070dd17,\n    0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31,\n    0x8eb44a87, 0x68581511,\n    0xdb0c2e0d, 0x64f98fa7,\n    0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 12), 'big');\n  else\n    return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n  if (!(this instanceof RIPEMD160))\n    return new RIPEMD160();\n\n  BlockHash.call(this);\n\n  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n  this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n  var A = this.h[0];\n  var B = this.h[1];\n  var C = this.h[2];\n  var D = this.h[3];\n  var E = this.h[4];\n  var Ah = A;\n  var Bh = B;\n  var Ch = C;\n  var Dh = D;\n  var Eh = E;\n  for (var j = 0; j < 80; j++) {\n    var T = sum32(\n      rotl32(\n        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n        s[j]),\n      E);\n    A = E;\n    E = D;\n    D = rotl32(C, 10);\n    C = B;\n    B = T;\n    T = sum32(\n      rotl32(\n        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n        sh[j]),\n      Eh);\n    Ah = Eh;\n    Eh = Dh;\n    Dh = rotl32(Ch, 10);\n    Ch = Bh;\n    Bh = T;\n  }\n  T = sum32_3(this.h[1], C, Dh);\n  this.h[1] = sum32_3(this.h[2], D, Eh);\n  this.h[2] = sum32_3(this.h[3], E, Ah);\n  this.h[3] = sum32_3(this.h[4], A, Bh);\n  this.h[4] = sum32_3(this.h[0], B, Ch);\n  this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'little');\n  else\n    return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n  if (j <= 15)\n    return x ^ y ^ z;\n  else if (j <= 31)\n    return (x & y) | ((~x) & z);\n  else if (j <= 47)\n    return (x | (~y)) ^ z;\n  else if (j <= 63)\n    return (x & z) | (y & (~z));\n  else\n    return x ^ (y | (~z));\n}\n\nfunction K(j) {\n  if (j <= 15)\n    return 0x00000000;\n  else if (j <= 31)\n    return 0x5a827999;\n  else if (j <= 47)\n    return 0x6ed9eba1;\n  else if (j <= 63)\n    return 0x8f1bbcdc;\n  else\n    return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n  if (j <= 15)\n    return 0x50a28be6;\n  else if (j <= 31)\n    return 0x5c4dd124;\n  else if (j <= 47)\n    return 0x6d703ef3;\n  else if (j <= 63)\n    return 0x7a6d76e9;\n  else\n    return 0x00000000;\n}\n\nvar r = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n  if (!(this instanceof Hmac))\n    return new Hmac(hash, key, enc);\n  this.Hash = hash;\n  this.blockSize = hash.blockSize / 8;\n  this.outSize = hash.outSize / 8;\n  this.inner = null;\n  this.outer = null;\n\n  this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n  // Shorten key, if needed\n  if (key.length > this.blockSize)\n    key = new this.Hash().update(key).digest();\n  assert(key.length <= this.blockSize);\n\n  // Add padding to key\n  for (var i = key.length; i < this.blockSize; i++)\n    key.push(0);\n\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x36;\n  this.inner = new this.Hash().update(key);\n\n  // 0x36 ^ 0x5c = 0x6a\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x6a;\n  this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n  this.inner.update(msg, enc);\n  return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n  this.outer.update(this.inner.digest());\n  return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n  doubles: {\n    step: 4,\n    points: [\n      [\n        'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n        'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n      ],\n      [\n        '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n        '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n      ],\n      [\n        '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n        'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n      ],\n      [\n        '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n        '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n      ],\n      [\n        '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n        '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n      ],\n      [\n        '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n        '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n      ],\n      [\n        'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n        '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n      ],\n      [\n        '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n        'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n      ],\n      [\n        'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n        '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n      ],\n      [\n        'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n        'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n      ],\n      [\n        'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n        '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n      ],\n      [\n        '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n        '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n      ],\n      [\n        '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n        '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n      ],\n      [\n        '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n        '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n      ],\n      [\n        '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n        '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n      ],\n      [\n        '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n        '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n      ],\n      [\n        '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n        '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n      ],\n      [\n        '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n        '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n      ],\n      [\n        '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n        'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n      ],\n      [\n        'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n        '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n      ],\n      [\n        'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n        '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n      ],\n      [\n        '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n        '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n      ],\n      [\n        '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n        '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n      ],\n      [\n        'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n        '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n      ],\n      [\n        '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n        'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n      ],\n      [\n        'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n        '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n      ],\n      [\n        'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n        'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n      ],\n      [\n        'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n        '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n      ],\n      [\n        'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n        'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n      ],\n      [\n        'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n        '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n      ],\n      [\n        '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n        'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n      ],\n      [\n        '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n        '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n      ],\n      [\n        'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n        '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n      ],\n      [\n        '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n        'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n      ],\n      [\n        'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n        '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n      ],\n      [\n        'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n        '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n      ],\n      [\n        'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n        'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n      ],\n      [\n        '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n        '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n      ],\n      [\n        '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n        '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n      ],\n      [\n        '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n        'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n      ],\n      [\n        '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n        '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n      ],\n      [\n        'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n        '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n      ],\n      [\n        '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n        '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n      ],\n      [\n        '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n        'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n      ],\n      [\n        '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n        '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n      ],\n      [\n        'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n        '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n      ],\n      [\n        '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n        'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n      ],\n      [\n        'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n        'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n      ],\n      [\n        'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n        '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n      ],\n      [\n        '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n        'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n      ],\n      [\n        '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n        'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n      ],\n      [\n        'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n        '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n      ],\n      [\n        'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n        '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n      ],\n      [\n        'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n        '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n      ],\n      [\n        '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n        'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n      ],\n      [\n        '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n        '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n      ],\n      [\n        'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n        'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n      ],\n      [\n        '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n        'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n      ],\n      [\n        '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n        '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n      ],\n      [\n        '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n        '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n      ],\n      [\n        'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n        'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n      ],\n      [\n        '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n        '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n      ],\n      [\n        '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n        '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n      ],\n      [\n        'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n        '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n      ],\n      [\n        'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n        'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n      ],\n    ],\n  },\n  naf: {\n    wnd: 7,\n    points: [\n      [\n        'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n        '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n      ],\n      [\n        '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n        'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n      ],\n      [\n        '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n        '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n      ],\n      [\n        'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n        'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n      ],\n      [\n        '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n        'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n      ],\n      [\n        'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n        'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n      ],\n      [\n        'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n        '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n      ],\n      [\n        'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n        '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n      ],\n      [\n        '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n        '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n      ],\n      [\n        '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n        '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n      ],\n      [\n        '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n        '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n      ],\n      [\n        '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n        '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n      ],\n      [\n        'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n        'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n      ],\n      [\n        'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n        '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n      ],\n      [\n        '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n        'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n      ],\n      [\n        '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n        'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n      ],\n      [\n        '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n        '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n      ],\n      [\n        '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n        '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n      ],\n      [\n        '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n        '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n      ],\n      [\n        '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n        'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n      ],\n      [\n        'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n        'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n      ],\n      [\n        '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n        '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n      ],\n      [\n        '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n        '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n      ],\n      [\n        'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n        'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n      ],\n      [\n        '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n        '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n      ],\n      [\n        'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n        'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n      ],\n      [\n        'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n        'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n      ],\n      [\n        '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n        '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n      ],\n      [\n        '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n        '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n      ],\n      [\n        '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n        '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n      ],\n      [\n        'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n        '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n      ],\n      [\n        '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n        '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n      ],\n      [\n        'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n        '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n      ],\n      [\n        '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n        'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n      ],\n      [\n        '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n        'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n      ],\n      [\n        'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n        'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n      ],\n      [\n        '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n        '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n      ],\n      [\n        '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n        'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n      ],\n      [\n        'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n        'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n      ],\n      [\n        '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n        '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n      ],\n      [\n        '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n        'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n      ],\n      [\n        '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n        '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n      ],\n      [\n        '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n        'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n      ],\n      [\n        'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n        '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n      ],\n      [\n        '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n        '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n      ],\n      [\n        '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n        'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n      ],\n      [\n        '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n        'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n      ],\n      [\n        'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n        'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n      ],\n      [\n        'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n        'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n      ],\n      [\n        '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n        '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n      ],\n      [\n        '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n        '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n      ],\n      [\n        'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n        '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n      ],\n      [\n        'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n        'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n      ],\n      [\n        '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n        '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n      ],\n      [\n        '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n        '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n      ],\n      [\n        'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n        '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n      ],\n      [\n        '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n        '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n      ],\n      [\n        'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n        'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n      ],\n      [\n        '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n        'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n      ],\n      [\n        '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n        '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n      ],\n      [\n        'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n        '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n      ],\n      [\n        'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n        '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n      ],\n      [\n        '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n        '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n      ],\n      [\n        '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n        '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n      ],\n      [\n        '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n        'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n      ],\n      [\n        '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n        'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n      ],\n      [\n        '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n        '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n      ],\n      [\n        '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n        '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n      ],\n      [\n        '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n        '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n      ],\n      [\n        '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n        'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n      ],\n      [\n        'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n        'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n      ],\n      [\n        '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n        'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n      ],\n      [\n        'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n        '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n      ],\n      [\n        'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n        '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n      ],\n      [\n        'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n        '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n      ],\n      [\n        'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n        '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n      ],\n      [\n        '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n        'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n      ],\n      [\n        '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n        '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n      ],\n      [\n        '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n        'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n      ],\n      [\n        'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n        'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n      ],\n      [\n        'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n        '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n      ],\n      [\n        'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n        'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n      ],\n      [\n        'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n        '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n      ],\n      [\n        '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n        '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n      ],\n      [\n        'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n        '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n      ],\n      [\n        'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n        '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n      ],\n      [\n        '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n        '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n      ],\n      [\n        '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n        'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n      ],\n      [\n        'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n        '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n      ],\n      [\n        'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n        '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n      ],\n      [\n        'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n        '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n      ],\n      [\n        '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n        '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n      ],\n      [\n        'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n        'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n      ],\n      [\n        '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n        'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n      ],\n      [\n        'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n        'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n      ],\n      [\n        'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n        '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n      ],\n      [\n        '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n        'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n      ],\n      [\n        'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n        '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n      ],\n      [\n        'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n        '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n      ],\n      [\n        'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n        '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n      ],\n      [\n        '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n        'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n      ],\n      [\n        '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n        'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n      ],\n      [\n        'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n        '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n      ],\n      [\n        '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n        'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n      ],\n      [\n        '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n        '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n      ],\n      [\n        '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n        'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n      ],\n      [\n        'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n        'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n      ],\n      [\n        '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n        'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n      ],\n      [\n        '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n        '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n      ],\n      [\n        '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n        'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n      ],\n      [\n        '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n        '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n      ],\n      [\n        'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n        'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n      ],\n      [\n        '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n        '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n      ],\n      [\n        'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n        '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n      ],\n      [\n        '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n        '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n      ],\n      [\n        'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n        'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n      ],\n      [\n        'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n        '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n      ],\n      [\n        'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n        'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n      ],\n      [\n        '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n        'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n      ],\n      [\n        '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n        '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n      ],\n      [\n        '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n        'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n      ],\n      [\n        '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n        '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n      ],\n      [\n        '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n        '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n      ],\n      [\n        '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n        'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n      ],\n      [\n        '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n        '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n      ],\n      [\n        '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n        '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n      ],\n      [\n        '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n        '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n      ],\n    ],\n  },\n};\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 '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n  this.eddsa = eddsa;\n  this._secret = parseBytes(params.secret);\n  if (eddsa.isPoint(params.pub))\n    this._pub = params.pub;\n  else\n    this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n  if (pub instanceof KeyPair)\n    return pub;\n  return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n  if (secret instanceof KeyPair)\n    return secret;\n  return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n  return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n  return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n  if (this._pubBytes)\n    return this.eddsa.decodePoint(this._pubBytes);\n  return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n  var eddsa = this.eddsa;\n  var hash = this.hash();\n  var lastIx = eddsa.encodingLength - 1;\n\n  var a = hash.slice(0, eddsa.encodingLength);\n  a[0] &= 248;\n  a[lastIx] &= 127;\n  a[lastIx] |= 64;\n\n  return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n  return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n  return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n  return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n  assert(this._secret, 'KeyPair can only verify');\n  return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n  return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n  assert(this._secret, 'KeyPair is public only');\n  return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n  return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n  this.eddsa = eddsa;\n\n  if (typeof sig !== 'object')\n    sig = parseBytes(sig);\n\n  if (Array.isArray(sig)) {\n    sig = {\n      R: sig.slice(0, eddsa.encodingLength),\n      S: sig.slice(eddsa.encodingLength),\n    };\n  }\n\n  assert(sig.R && sig.S, 'Signature without R or S');\n\n  if (eddsa.isPoint(sig.R))\n    this._R = sig.R;\n  if (sig.S instanceof BN)\n    this._S = sig.S;\n\n  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n  return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n  return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n  return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n  return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n  return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n  return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n  assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n  if (!(this instanceof EDDSA))\n    return new EDDSA(curve);\n\n  curve = curves[curve].curve;\n  this.curve = curve;\n  this.g = curve.g;\n  this.g.precompute(curve.n.bitLength() + 1);\n\n  this.pointClass = curve.point().constructor;\n  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n  this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n  message = parseBytes(message);\n  var key = this.keyFromSecret(secret);\n  var r = this.hashInt(key.messagePrefix(), message);\n  var R = this.g.mul(r);\n  var Rencoded = this.encodePoint(R);\n  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n    .mul(key.priv());\n  var S = r.add(s_).umod(this.curve.n);\n  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n  message = parseBytes(message);\n  sig = this.makeSignature(sig);\n  var key = this.keyFromPublic(pub);\n  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n  var SG = this.g.mul(sig.S());\n  var RplusAh = sig.R().add(key.pub().mul(h));\n  return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n  var hash = this.hash();\n  for (var i = 0; i < arguments.length; i++)\n    hash.update(arguments[i]);\n  return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n  return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n  return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n  if (sig instanceof Signature)\n    return sig;\n  return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n  var enc = point.getY().toArray('le', this.encodingLength);\n  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n  return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n  bytes = utils.parseBytes(bytes);\n\n  var lastIx = bytes.length - 1;\n  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n  var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n  var y = utils.intFromLE(normed);\n  return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n  return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n  return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n  return val instanceof this.pointClass;\n};\n", "'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", "(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n  this._reporterState = {\n    obj: null,\n    path: [],\n    options: options || {},\n    errors: []\n  };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n  return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n  const state = this._reporterState;\n\n  return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n  const state = this._reporterState;\n\n  state.obj = data.obj;\n  state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n  return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n  const state = this._reporterState;\n\n  state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n  const state = this._reporterState;\n\n  this.exitKey(index);\n  if (state.obj !== null)\n    state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n  return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n  const state = this._reporterState;\n\n  const prev = state.obj;\n  state.obj = {};\n  return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n  const state = this._reporterState;\n\n  const now = state.obj;\n  state.obj = prev;\n  return now;\n};\n\nReporter.prototype.error = function error(msg) {\n  let err;\n  const state = this._reporterState;\n\n  const inherited = msg instanceof ReporterError;\n  if (inherited) {\n    err = msg;\n  } else {\n    err = new ReporterError(state.path.map(function(elem) {\n      return '[' + JSON.stringify(elem) + ']';\n    }).join(''), msg.message || msg, msg.stack);\n  }\n\n  if (!state.options.partial)\n    throw err;\n\n  if (!inherited)\n    state.errors.push(err);\n\n  return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n  const state = this._reporterState;\n  if (!state.options.partial)\n    return result;\n\n  return {\n    result: this.isError(result) ? null : result,\n    errors: state.errors\n  };\n};\n\nfunction ReporterError(path, msg) {\n  this.path = path;\n  this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n  this.message = msg + ' at: ' + (this.path || '(shallow)');\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(this, ReporterError);\n\n  if (!this.stack) {\n    try {\n      // IE only adds stack when thrown\n      throw new Error(this.message);\n    } catch (e) {\n      this.stack = e.stack;\n    }\n  }\n  return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n  Reporter.call(this, options);\n  if (!Buffer.isBuffer(base)) {\n    this.error('Input not Buffer');\n    return;\n  }\n\n  this.base = base;\n  this.offset = 0;\n  this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n  if (data instanceof DecoderBuffer) {\n    return true;\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    Buffer.isBuffer(data.base) &&\n    data.constructor.name === 'DecoderBuffer' &&\n    typeof data.offset === 'number' &&\n    typeof data.length === 'number' &&\n    typeof data.save === 'function' &&\n    typeof data.restore === 'function' &&\n    typeof data.isEmpty === 'function' &&\n    typeof data.readUInt8 === 'function' &&\n    typeof data.skip === 'function' &&\n    typeof data.raw === 'function';\n\n  return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n  // Return skipped data\n  const res = new DecoderBuffer(this.base);\n  res.offset = save.offset;\n  res.length = this.offset;\n\n  this.offset = save.offset;\n  Reporter.prototype.restore.call(this, save.reporter);\n\n  return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n  return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n  if (this.offset + 1 <= this.length)\n    return this.base.readUInt8(this.offset++, true);\n  else\n    return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n  if (!(this.offset + bytes <= this.length))\n    return this.error(fail || 'DecoderBuffer overrun');\n\n  const res = new DecoderBuffer(this.base);\n\n  // Share reporter state\n  res._reporterState = this._reporterState;\n\n  res.offset = this.offset;\n  res.length = this.offset + bytes;\n  this.offset += bytes;\n  return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n  return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n  if (Array.isArray(value)) {\n    this.length = 0;\n    this.value = value.map(function(item) {\n      if (!EncoderBuffer.isEncoderBuffer(item))\n        item = new EncoderBuffer(item, reporter);\n      this.length += item.length;\n      return item;\n    }, this);\n  } else if (typeof value === 'number') {\n    if (!(0 <= value && value <= 0xff))\n      return reporter.error('non-byte EncoderBuffer value');\n    this.value = value;\n    this.length = 1;\n  } else if (typeof value === 'string') {\n    this.value = value;\n    this.length = Buffer.byteLength(value);\n  } else if (Buffer.isBuffer(value)) {\n    this.value = value;\n    this.length = value.length;\n  } else {\n    return reporter.error('Unsupported type: ' + typeof value);\n  }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n  if (data instanceof EncoderBuffer) {\n    return true;\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    data.constructor.name === 'EncoderBuffer' &&\n    typeof data.length === 'number' &&\n    typeof data.join === 'function';\n\n  return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n  if (!out)\n    out = Buffer.alloc(this.length);\n  if (!offset)\n    offset = 0;\n\n  if (this.length === 0)\n    return out;\n\n  if (Array.isArray(this.value)) {\n    this.value.forEach(function(item) {\n      item.join(out, offset);\n      offset += item.length;\n    });\n  } else {\n    if (typeof this.value === 'number')\n      out[offset] = this.value;\n    else if (typeof this.value === 'string')\n      out.write(this.value, offset);\n    else if (Buffer.isBuffer(this.value))\n      this.value.copy(out, offset);\n    offset += this.length;\n  }\n\n  return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n  'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n  'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n  '_peekTag', '_decodeTag', '_use',\n  '_decodeStr', '_decodeObjid', '_decodeTime',\n  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n  '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n  const state = {};\n  this._baseState = state;\n\n  state.name = name;\n  state.enc = enc;\n\n  state.parent = parent || null;\n  state.children = null;\n\n  // State\n  state.tag = null;\n  state.args = null;\n  state.reverseArgs = null;\n  state.choice = null;\n  state.optional = false;\n  state.any = false;\n  state.obj = false;\n  state.use = null;\n  state.useDecoder = null;\n  state.key = null;\n  state['default'] = null;\n  state.explicit = null;\n  state.implicit = null;\n  state.contains = null;\n\n  // Should create new instance on each method\n  if (!state.parent) {\n    state.children = [];\n    this._wrap();\n  }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n  'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n  const state = this._baseState;\n  const cstate = {};\n  stateProps.forEach(function(prop) {\n    cstate[prop] = state[prop];\n  });\n  const res = new this.constructor(cstate.parent);\n  res._baseState = cstate;\n  return res;\n};\n\nNode.prototype._wrap = function wrap() {\n  const state = this._baseState;\n  methods.forEach(function(method) {\n    this[method] = function _wrappedMethod() {\n      const clone = new this.constructor(this);\n      state.children.push(clone);\n      return clone[method].apply(clone, arguments);\n    };\n  }, this);\n};\n\nNode.prototype._init = function init(body) {\n  const state = this._baseState;\n\n  assert(state.parent === null);\n  body.call(this);\n\n  // Filter children\n  state.children = state.children.filter(function(child) {\n    return child._baseState.parent === this;\n  }, this);\n  assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n  const state = this._baseState;\n\n  // Filter children and args\n  const children = args.filter(function(arg) {\n    return arg instanceof this.constructor;\n  }, this);\n  args = args.filter(function(arg) {\n    return !(arg instanceof this.constructor);\n  }, this);\n\n  if (children.length !== 0) {\n    assert(state.children === null);\n    state.children = children;\n\n    // Replace parent to maintain backward link\n    children.forEach(function(child) {\n      child._baseState.parent = this;\n    }, this);\n  }\n  if (args.length !== 0) {\n    assert(state.args === null);\n    state.args = args;\n    state.reverseArgs = args.map(function(arg) {\n      if (typeof arg !== 'object' || arg.constructor !== Object)\n        return arg;\n\n      const res = {};\n      Object.keys(arg).forEach(function(key) {\n        if (key == (key | 0))\n          key |= 0;\n        const value = arg[key];\n        res[value] = key;\n      });\n      return res;\n    });\n  }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n  Node.prototype[method] = function _overrided() {\n    const state = this._baseState;\n    throw new Error(method + ' not implemented for encoding: ' + state.enc);\n  };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n  Node.prototype[tag] = function _tagMethod() {\n    const state = this._baseState;\n    const args = Array.prototype.slice.call(arguments);\n\n    assert(state.tag === null);\n    state.tag = tag;\n\n    this._useArgs(args);\n\n    return this;\n  };\n});\n\nNode.prototype.use = function use(item) {\n  assert(item);\n  const state = this._baseState;\n\n  assert(state.use === null);\n  state.use = item;\n\n  return this;\n};\n\nNode.prototype.optional = function optional() {\n  const state = this._baseState;\n\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.def = function def(val) {\n  const state = this._baseState;\n\n  assert(state['default'] === null);\n  state['default'] = val;\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n  const state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.explicit = num;\n\n  return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n  const state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.implicit = num;\n\n  return this;\n};\n\nNode.prototype.obj = function obj() {\n  const state = this._baseState;\n  const args = Array.prototype.slice.call(arguments);\n\n  state.obj = true;\n\n  if (args.length !== 0)\n    this._useArgs(args);\n\n  return this;\n};\n\nNode.prototype.key = function key(newKey) {\n  const state = this._baseState;\n\n  assert(state.key === null);\n  state.key = newKey;\n\n  return this;\n};\n\nNode.prototype.any = function any() {\n  const state = this._baseState;\n\n  state.any = true;\n\n  return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n  const state = this._baseState;\n\n  assert(state.choice === null);\n  state.choice = obj;\n  this._useArgs(Object.keys(obj).map(function(key) {\n    return obj[key];\n  }));\n\n  return this;\n};\n\nNode.prototype.contains = function contains(item) {\n  const state = this._baseState;\n\n  assert(state.use === null);\n  state.contains = item;\n\n  return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n  const state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return input.wrapResult(state.children[0]._decode(input, options));\n\n  let result = state['default'];\n  let present = true;\n\n  let prevKey = null;\n  if (state.key !== null)\n    prevKey = input.enterKey(state.key);\n\n  // Check if tag is there\n  if (state.optional) {\n    let tag = null;\n    if (state.explicit !== null)\n      tag = state.explicit;\n    else if (state.implicit !== null)\n      tag = state.implicit;\n    else if (state.tag !== null)\n      tag = state.tag;\n\n    if (tag === null && !state.any) {\n      // Trial and Error\n      const save = input.save();\n      try {\n        if (state.choice === null)\n          this._decodeGeneric(state.tag, input, options);\n        else\n          this._decodeChoice(input, options);\n        present = true;\n      } catch (e) {\n        present = false;\n      }\n      input.restore(save);\n    } else {\n      present = this._peekTag(input, tag, state.any);\n\n      if (input.isError(present))\n        return present;\n    }\n  }\n\n  // Push object on stack\n  let prevObj;\n  if (state.obj && present)\n    prevObj = input.enterObject();\n\n  if (present) {\n    // Unwrap explicit values\n    if (state.explicit !== null) {\n      const explicit = this._decodeTag(input, state.explicit);\n      if (input.isError(explicit))\n        return explicit;\n      input = explicit;\n    }\n\n    const start = input.offset;\n\n    // Unwrap implicit and normal values\n    if (state.use === null && state.choice === null) {\n      let save;\n      if (state.any)\n        save = input.save();\n      const body = this._decodeTag(\n        input,\n        state.implicit !== null ? state.implicit : state.tag,\n        state.any\n      );\n      if (input.isError(body))\n        return body;\n\n      if (state.any)\n        result = input.raw(save);\n      else\n        input = body;\n    }\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), start, input.length, 'tagged');\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), input.offset, input.length, 'content');\n\n    // Select proper method for tag\n    if (state.any) {\n      // no-op\n    } else if (state.choice === null) {\n      result = this._decodeGeneric(state.tag, input, options);\n    } else {\n      result = this._decodeChoice(input, options);\n    }\n\n    if (input.isError(result))\n      return result;\n\n    // Decode children\n    if (!state.any && state.choice === null && state.children !== null) {\n      state.children.forEach(function decodeChildren(child) {\n        // NOTE: We are ignoring errors here, to let parser continue with other\n        // parts of encoded data\n        child._decode(input, options);\n      });\n    }\n\n    // Decode contained/encoded by schema, only in bit or octet strings\n    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n      const data = new DecoderBuffer(result);\n      result = this._getUse(state.contains, input._reporterState.obj)\n        ._decode(data, options);\n    }\n  }\n\n  // Pop object\n  if (state.obj && present)\n    result = input.leaveObject(prevObj);\n\n  // Set key\n  if (state.key !== null && (result !== null || present === true))\n    input.leaveKey(prevKey, state.key, result);\n  else if (prevKey !== null)\n    input.exitKey(prevKey);\n\n  return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n  const state = this._baseState;\n\n  if (tag === 'seq' || tag === 'set')\n    return null;\n  if (tag === 'seqof' || tag === 'setof')\n    return this._decodeList(input, tag, state.args[0], options);\n  else if (/str$/.test(tag))\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'objid' && state.args)\n    return this._decodeObjid(input, state.args[0], state.args[1], options);\n  else if (tag === 'objid')\n    return this._decodeObjid(input, null, null, options);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._decodeTime(input, tag, options);\n  else if (tag === 'null_')\n    return this._decodeNull(input, options);\n  else if (tag === 'bool')\n    return this._decodeBool(input, options);\n  else if (tag === 'objDesc')\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'int' || tag === 'enum')\n    return this._decodeInt(input, state.args && state.args[0], options);\n\n  if (state.use !== null) {\n    return this._getUse(state.use, input._reporterState.obj)\n      ._decode(input, options);\n  } else {\n    return input.error('unknown tag: ' + tag);\n  }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n  const state = this._baseState;\n  // Create altered use decoder if implicit is set\n  state.useDecoder = this._use(entity, obj);\n  assert(state.useDecoder._baseState.parent === null);\n  state.useDecoder = state.useDecoder._baseState.children[0];\n  if (state.implicit !== state.useDecoder._baseState.implicit) {\n    state.useDecoder = state.useDecoder.clone();\n    state.useDecoder._baseState.implicit = state.implicit;\n  }\n  return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n  const state = this._baseState;\n  let result = null;\n  let match = false;\n\n  Object.keys(state.choice).some(function(key) {\n    const save = input.save();\n    const node = state.choice[key];\n    try {\n      const value = node._decode(input, options);\n      if (input.isError(value))\n        return false;\n\n      result = { type: key, value: value };\n      match = true;\n    } catch (e) {\n      input.restore(save);\n      return false;\n    }\n    return true;\n  }, this);\n\n  if (!match)\n    return input.error('Choice not matched');\n\n  return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n  return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n  const state = this._baseState;\n  if (state['default'] !== null && state['default'] === data)\n    return;\n\n  const result = this._encodeValue(data, reporter, parent);\n  if (result === undefined)\n    return;\n\n  if (this._skipDefault(result, reporter, parent))\n    return;\n\n  return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n  const state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return state.children[0]._encode(data, reporter || new Reporter());\n\n  let result = null;\n\n  // Set reporter to share it with a child class\n  this.reporter = reporter;\n\n  // Check if data is there\n  if (state.optional && data === undefined) {\n    if (state['default'] !== null)\n      data = state['default'];\n    else\n      return;\n  }\n\n  // Encode children first\n  let content = null;\n  let primitive = false;\n  if (state.any) {\n    // Anything that was given is translated to buffer\n    result = this._createEncoderBuffer(data);\n  } else if (state.choice) {\n    result = this._encodeChoice(data, reporter);\n  } else if (state.contains) {\n    content = this._getUse(state.contains, parent)._encode(data, reporter);\n    primitive = true;\n  } else if (state.children) {\n    content = state.children.map(function(child) {\n      if (child._baseState.tag === 'null_')\n        return child._encode(null, reporter, data);\n\n      if (child._baseState.key === null)\n        return reporter.error('Child should have a key');\n      const prevKey = reporter.enterKey(child._baseState.key);\n\n      if (typeof data !== 'object')\n        return reporter.error('Child expected, but input is not object');\n\n      const res = child._encode(data[child._baseState.key], reporter, data);\n      reporter.leaveKey(prevKey);\n\n      return res;\n    }, this).filter(function(child) {\n      return child;\n    });\n    content = this._createEncoderBuffer(content);\n  } else {\n    if (state.tag === 'seqof' || state.tag === 'setof') {\n      // TODO(indutny): this should be thrown on DSL level\n      if (!(state.args && state.args.length === 1))\n        return reporter.error('Too many args for : ' + state.tag);\n\n      if (!Array.isArray(data))\n        return reporter.error('seqof/setof, but data is not Array');\n\n      const child = this.clone();\n      child._baseState.implicit = null;\n      content = this._createEncoderBuffer(data.map(function(item) {\n        const state = this._baseState;\n\n        return this._getUse(state.args[0], data)._encode(item, reporter);\n      }, child));\n    } else if (state.use !== null) {\n      result = this._getUse(state.use, parent)._encode(data, reporter);\n    } else {\n      content = this._encodePrimitive(state.tag, data);\n      primitive = true;\n    }\n  }\n\n  // Encode data itself\n  if (!state.any && state.choice === null) {\n    const tag = state.implicit !== null ? state.implicit : state.tag;\n    const cls = state.implicit === null ? 'universal' : 'context';\n\n    if (tag === null) {\n      if (state.use === null)\n        reporter.error('Tag could be omitted only for .use()');\n    } else {\n      if (state.use === null)\n        result = this._encodeComposite(tag, primitive, cls, content);\n    }\n  }\n\n  // Wrap in explicit\n  if (state.explicit !== null)\n    result = this._encodeComposite(state.explicit, false, 'context', result);\n\n  return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n  const state = this._baseState;\n\n  const node = state.choice[data.type];\n  if (!node) {\n    assert(\n      false,\n      data.type + ' not found in ' +\n            JSON.stringify(Object.keys(state.choice)));\n  }\n  return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n  const state = this._baseState;\n\n  if (/str$/.test(tag))\n    return this._encodeStr(data, tag);\n  else if (tag === 'objid' && state.args)\n    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n  else if (tag === 'objid')\n    return this._encodeObjid(data, null, null);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._encodeTime(data, tag);\n  else if (tag === 'null_')\n    return this._encodeNull();\n  else if (tag === 'int' || tag === 'enum')\n    return this._encodeInt(data, state.args && state.reverseArgs[0]);\n  else if (tag === 'bool')\n    return this._encodeBool(data);\n  else if (tag === 'objDesc')\n    return this._encodeStr(data, tag);\n  else\n    throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n  return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n  return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n  const res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    const value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n}\n\nexports.tagClass = {\n  0: 'universal',\n  1: 'application',\n  2: 'context',\n  3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n  0x00: 'end',\n  0x01: 'bool',\n  0x02: 'int',\n  0x03: 'bitstr',\n  0x04: 'octstr',\n  0x05: 'null_',\n  0x06: 'objid',\n  0x07: 'objDesc',\n  0x08: 'external',\n  0x09: 'real',\n  0x0a: 'enum',\n  0x0b: 'embed',\n  0x0c: 'utf8str',\n  0x0d: 'relativeOid',\n  0x10: 'seq',\n  0x11: 'set',\n  0x12: 'numstr',\n  0x13: 'printstr',\n  0x14: 't61str',\n  0x15: 'videostr',\n  0x16: 'ia5str',\n  0x17: 'utctime',\n  0x18: 'gentime',\n  0x19: 'graphstr',\n  0x1a: 'iso646str',\n  0x1b: 'genstr',\n  0x1c: 'unistr',\n  0x1d: 'charstr',\n  0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n  return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n  primitive,\n  cls,\n  content) {\n  const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n  // Short form\n  if (content.length < 0x80) {\n    const header = Buffer.alloc(2);\n    header[0] = encodedTag;\n    header[1] = content.length;\n    return this._createEncoderBuffer([ header, content ]);\n  }\n\n  // Long form\n  // Count octets required to store length\n  let lenOctets = 1;\n  for (let i = content.length; i >= 0x100; i >>= 8)\n    lenOctets++;\n\n  const header = Buffer.alloc(1 + 1 + lenOctets);\n  header[0] = encodedTag;\n  header[1] = 0x80 | lenOctets;\n\n  for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n    header[i] = j & 0xff;\n\n  return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n  if (tag === 'bitstr') {\n    return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n  } else if (tag === 'bmpstr') {\n    const buf = Buffer.alloc(str.length * 2);\n    for (let i = 0; i < str.length; i++) {\n      buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n    }\n    return this._createEncoderBuffer(buf);\n  } else if (tag === 'numstr') {\n    if (!this._isNumstr(str)) {\n      return this.reporter.error('Encoding of string type: numstr supports ' +\n                                 'only digits and space');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'printstr') {\n    if (!this._isPrintstr(str)) {\n      return this.reporter.error('Encoding of string type: printstr supports ' +\n                                 'only latin upper and lower case letters, ' +\n                                 'digits, space, apostrophe, left and rigth ' +\n                                 'parenthesis, plus sign, comma, hyphen, ' +\n                                 'dot, slash, colon, equal sign, ' +\n                                 'question mark');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (/str$/.test(tag)) {\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'objDesc') {\n    return this._createEncoderBuffer(str);\n  } else {\n    return this.reporter.error('Encoding of string type: ' + tag +\n                               ' unsupported');\n  }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n  if (typeof id === 'string') {\n    if (!values)\n      return this.reporter.error('string objid given, but no values map found');\n    if (!values.hasOwnProperty(id))\n      return this.reporter.error('objid not found in values map');\n    id = values[id].split(/[\\s.]+/g);\n    for (let i = 0; i < id.length; i++)\n      id[i] |= 0;\n  } else if (Array.isArray(id)) {\n    id = id.slice();\n    for (let i = 0; i < id.length; i++)\n      id[i] |= 0;\n  }\n\n  if (!Array.isArray(id)) {\n    return this.reporter.error('objid() should be either array or string, ' +\n                               'got: ' + JSON.stringify(id));\n  }\n\n  if (!relative) {\n    if (id[1] >= 40)\n      return this.reporter.error('Second objid identifier OOB');\n    id.splice(0, 2, id[0] * 40 + id[1]);\n  }\n\n  // Count number of octets\n  let size = 0;\n  for (let i = 0; i < id.length; i++) {\n    let ident = id[i];\n    for (size++; ident >= 0x80; ident >>= 7)\n      size++;\n  }\n\n  const objid = Buffer.alloc(size);\n  let offset = objid.length - 1;\n  for (let i = id.length - 1; i >= 0; i--) {\n    let ident = id[i];\n    objid[offset--] = ident & 0x7f;\n    while ((ident >>= 7) > 0)\n      objid[offset--] = 0x80 | (ident & 0x7f);\n  }\n\n  return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n  if (num < 10)\n    return '0' + num;\n  else\n    return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n  let str;\n  const date = new Date(time);\n\n  if (tag === 'gentime') {\n    str = [\n      two(date.getUTCFullYear()),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else if (tag === 'utctime') {\n    str = [\n      two(date.getUTCFullYear() % 100),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else {\n    this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n  }\n\n  return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n  return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n  if (typeof num === 'string') {\n    if (!values)\n      return this.reporter.error('String int or enum given, but no values map');\n    if (!values.hasOwnProperty(num)) {\n      return this.reporter.error('Values map doesn\\'t contain: ' +\n                                 JSON.stringify(num));\n    }\n    num = values[num];\n  }\n\n  // Bignum, assume big endian\n  if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n    const numArray = num.toArray();\n    if (!num.sign && numArray[0] & 0x80) {\n      numArray.unshift(0);\n    }\n    num = Buffer.from(numArray);\n  }\n\n  if (Buffer.isBuffer(num)) {\n    let size = num.length;\n    if (num.length === 0)\n      size++;\n\n    const out = Buffer.alloc(size);\n    num.copy(out);\n    if (num.length === 0)\n      out[0] = 0;\n    return this._createEncoderBuffer(out);\n  }\n\n  if (num < 0x80)\n    return this._createEncoderBuffer(num);\n\n  if (num < 0x100)\n    return this._createEncoderBuffer([0, num]);\n\n  let size = 1;\n  for (let i = num; i >= 0x100; i >>= 8)\n    size++;\n\n  const out = new Array(size);\n  for (let i = out.length - 1; i >= 0; i--) {\n    out[i] = num & 0xff;\n    num >>= 8;\n  }\n  if(out[0] & 0x80) {\n    out.unshift(0);\n  }\n\n  return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n  return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n  const state = this._baseState;\n  let i;\n  if (state['default'] === null)\n    return false;\n\n  const data = dataBuffer.join();\n  if (state.defaultBuffer === undefined)\n    state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n  if (data.length !== state.defaultBuffer.length)\n    return false;\n\n  for (i=0; i < data.length; i++)\n    if (data[i] !== state.defaultBuffer[i])\n      return false;\n\n  return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n  let res;\n\n  if (tag === 'seqof')\n    tag = 'seq';\n  else if (tag === 'setof')\n    tag = 'set';\n\n  if (der.tagByName.hasOwnProperty(tag))\n    res = der.tagByName[tag];\n  else if (typeof tag === 'number' && (tag | 0) === tag)\n    res = tag;\n  else\n    return reporter.error('Unknown tag: ' + tag);\n\n  if (res >= 0x1f)\n    return reporter.error('Multi-octet tag encoding unsupported');\n\n  if (!primitive)\n    res |= 0x20;\n\n  res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n  return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n  DEREncoder.call(this, entity);\n  this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n  const buf = DEREncoder.prototype.encode.call(this, data);\n\n  const p = buf.toString('base64');\n  const out = [ '-----BEGIN ' + options.label + '-----' ];\n  for (let i = 0; i < p.length; i += 64)\n    out.push(p.slice(i, i + 64));\n  out.push('-----END ' + options.label + '-----');\n  return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n  if (!DecoderBuffer.isDecoderBuffer(data)) {\n    data = new DecoderBuffer(data, options);\n  }\n\n  return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n  if (buffer.isEmpty())\n    return false;\n\n  const state = buffer.save();\n  const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  buffer.restore(state);\n\n  return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n    (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n  const decodedTag = derDecodeTag(buffer,\n    'Failed to decode tag of \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  let len = derDecodeLen(buffer,\n    decodedTag.primitive,\n    'Failed to get length of \"' + tag + '\"');\n\n  // Failure\n  if (buffer.isError(len))\n    return len;\n\n  if (!any &&\n      decodedTag.tag !== tag &&\n      decodedTag.tagStr !== tag &&\n      decodedTag.tagStr + 'of' !== tag) {\n    return buffer.error('Failed to match tag: \"' + tag + '\"');\n  }\n\n  if (decodedTag.primitive || len !== null)\n    return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n  // Indefinite length... find END tag\n  const state = buffer.save();\n  const res = this._skipUntilEnd(\n    buffer,\n    'Failed to skip indefinite length body: \"' + this.tag + '\"');\n  if (buffer.isError(res))\n    return res;\n\n  len = buffer.offset - state.offset;\n  buffer.restore(state);\n  return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n  for (;;) {\n    const tag = derDecodeTag(buffer, fail);\n    if (buffer.isError(tag))\n      return tag;\n    const len = derDecodeLen(buffer, tag.primitive, fail);\n    if (buffer.isError(len))\n      return len;\n\n    let res;\n    if (tag.primitive || len !== null)\n      res = buffer.skip(len);\n    else\n      res = this._skipUntilEnd(buffer, fail);\n\n    // Failure\n    if (buffer.isError(res))\n      return res;\n\n    if (tag.tagStr === 'end')\n      break;\n  }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n  options) {\n  const result = [];\n  while (!buffer.isEmpty()) {\n    const possibleEnd = this._peekTag(buffer, 'end');\n    if (buffer.isError(possibleEnd))\n      return possibleEnd;\n\n    const res = decoder.decode(buffer, 'der', options);\n    if (buffer.isError(res) && possibleEnd)\n      break;\n    result.push(res);\n  }\n  return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n  if (tag === 'bitstr') {\n    const unused = buffer.readUInt8();\n    if (buffer.isError(unused))\n      return unused;\n    return { unused: unused, data: buffer.raw() };\n  } else if (tag === 'bmpstr') {\n    const raw = buffer.raw();\n    if (raw.length % 2 === 1)\n      return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n    let str = '';\n    for (let i = 0; i < raw.length / 2; i++) {\n      str += String.fromCharCode(raw.readUInt16BE(i * 2));\n    }\n    return str;\n  } else if (tag === 'numstr') {\n    const numstr = buffer.raw().toString('ascii');\n    if (!this._isNumstr(numstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'numstr unsupported characters');\n    }\n    return numstr;\n  } else if (tag === 'octstr') {\n    return buffer.raw();\n  } else if (tag === 'objDesc') {\n    return buffer.raw();\n  } else if (tag === 'printstr') {\n    const printstr = buffer.raw().toString('ascii');\n    if (!this._isPrintstr(printstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'printstr unsupported characters');\n    }\n    return printstr;\n  } else if (/str$/.test(tag)) {\n    return buffer.raw().toString();\n  } else {\n    return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n  }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n  let result;\n  const identifiers = [];\n  let ident = 0;\n  let subident = 0;\n  while (!buffer.isEmpty()) {\n    subident = buffer.readUInt8();\n    ident <<= 7;\n    ident |= subident & 0x7f;\n    if ((subident & 0x80) === 0) {\n      identifiers.push(ident);\n      ident = 0;\n    }\n  }\n  if (subident & 0x80)\n    identifiers.push(ident);\n\n  const first = (identifiers[0] / 40) | 0;\n  const second = identifiers[0] % 40;\n\n  if (relative)\n    result = identifiers;\n  else\n    result = [first, second].concat(identifiers.slice(1));\n\n  if (values) {\n    let tmp = values[result.join(' ')];\n    if (tmp === undefined)\n      tmp = values[result.join('.')];\n    if (tmp !== undefined)\n      result = tmp;\n  }\n\n  return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n  const str = buffer.raw().toString();\n\n  let year;\n  let mon;\n  let day;\n  let hour;\n  let min;\n  let sec;\n  if (tag === 'gentime') {\n    year = str.slice(0, 4) | 0;\n    mon = str.slice(4, 6) | 0;\n    day = str.slice(6, 8) | 0;\n    hour = str.slice(8, 10) | 0;\n    min = str.slice(10, 12) | 0;\n    sec = str.slice(12, 14) | 0;\n  } else if (tag === 'utctime') {\n    year = str.slice(0, 2) | 0;\n    mon = str.slice(2, 4) | 0;\n    day = str.slice(4, 6) | 0;\n    hour = str.slice(6, 8) | 0;\n    min = str.slice(8, 10) | 0;\n    sec = str.slice(10, 12) | 0;\n    if (year < 70)\n      year = 2000 + year;\n    else\n      year = 1900 + year;\n  } else {\n    return buffer.error('Decoding ' + tag + ' time is not supported yet');\n  }\n\n  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n  return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n  const res = buffer.readUInt8();\n  if (buffer.isError(res))\n    return res;\n  else\n    return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n  // Bigint, return as it is (assume big endian)\n  const raw = buffer.raw();\n  let res = new bignum(raw);\n\n  if (values)\n    res = values[res.toString(10)] || res;\n\n  return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n  let tag = buf.readUInt8(fail);\n  if (buf.isError(tag))\n    return tag;\n\n  const cls = der.tagClass[tag >> 6];\n  const primitive = (tag & 0x20) === 0;\n\n  // Multi-octet tag - load\n  if ((tag & 0x1f) === 0x1f) {\n    let oct = tag;\n    tag = 0;\n    while ((oct & 0x80) === 0x80) {\n      oct = buf.readUInt8(fail);\n      if (buf.isError(oct))\n        return oct;\n\n      tag <<= 7;\n      tag |= oct & 0x7f;\n    }\n  } else {\n    tag &= 0x1f;\n  }\n  const tagStr = der.tag[tag];\n\n  return {\n    cls: cls,\n    primitive: primitive,\n    tag: tag,\n    tagStr: tagStr\n  };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n  let len = buf.readUInt8(fail);\n  if (buf.isError(len))\n    return len;\n\n  // Indefinite form\n  if (!primitive && len === 0x80)\n    return null;\n\n  // Definite form\n  if ((len & 0x80) === 0) {\n    // Short form\n    return len;\n  }\n\n  // Long form\n  const num = len & 0x7f;\n  if (num > 4)\n    return buf.error('length octect is too long');\n\n  len = 0;\n  for (let i = 0; i < num; i++) {\n    len <<= 8;\n    const j = buf.readUInt8(fail);\n    if (buf.isError(j))\n      return j;\n    len |= j;\n  }\n\n  return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n  DERDecoder.call(this, entity);\n  this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n  const lines = data.toString().split(/[\\r\\n]+/g);\n\n  const label = options.label.toUpperCase();\n\n  const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n  let start = -1;\n  let end = -1;\n  for (let i = 0; i < lines.length; i++) {\n    const match = lines[i].match(re);\n    if (match === null)\n      continue;\n\n    if (match[2] !== label)\n      continue;\n\n    if (start === -1) {\n      if (match[1] !== 'BEGIN')\n        break;\n      start = i;\n    } else {\n      if (match[1] !== 'END')\n        break;\n      end = i;\n      break;\n    }\n  }\n  if (start === -1 || end === -1)\n    throw new Error('PEM section not found for: ' + label);\n\n  const base64 = lines.slice(start + 1, end).join('');\n  // Remove excessive symbols\n  base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n  const input = Buffer.from(base64, 'base64');\n  return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n  return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n  this.name = name;\n  this.body = body;\n\n  this.decoders = {};\n  this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n  const name = this.name;\n\n  function Generated(entity) {\n    this._initNamed(entity, name);\n  }\n  inherits(Generated, Base);\n  Generated.prototype._initNamed = function _initNamed(entity, name) {\n    Base.call(this, entity, name);\n  };\n\n  return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n  enc = enc || 'der';\n  // Lazily create decoder\n  if (!this.decoders.hasOwnProperty(enc))\n    this.decoders[enc] = this._createNamed(decoders[enc]);\n  return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n  return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n  enc = enc || 'der';\n  // Lazily create encoder\n  if (!this.encoders.hasOwnProperty(enc))\n    this.encoders[enc] = this._createNamed(encoders[enc]);\n  return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n  return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n  const res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    const value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n  this.choice({\n    utcTime: this.utctime(),\n    generalTime: this.gentime()\n  })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n  this.seq().obj(\n    this.key('type').objid(),\n    this.key('value').any()\n  )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('parameters').optional(),\n    this.key('curve').objid().optional()\n  )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n  this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n  this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n  this.choice({\n    rdnSequence: this.use(RDNSequence)\n  })\n})\n\nvar Validity = asn.define('Validity', function () {\n  this.seq().obj(\n    this.key('notBefore').use(Time),\n    this.key('notAfter').use(Time)\n  )\n})\n\nvar Extension = asn.define('Extension', function () {\n  this.seq().obj(\n    this.key('extnID').objid(),\n    this.key('critical').bool().def(false),\n    this.key('extnValue').octstr()\n  )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n  this.seq().obj(\n    this.key('version').explicit(0).int().optional(),\n    this.key('serialNumber').int(),\n    this.key('signature').use(AlgorithmIdentifier),\n    this.key('issuer').use(Name),\n    this.key('validity').use(Validity),\n    this.key('subject').use(Name),\n    this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n    this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n    this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n    this.key('extensions').explicit(3).seqof(Extension).optional()\n  )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n  this.seq().obj(\n    this.key('tbsCertificate').use(TBSCertificate),\n    this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n    this.key('signatureValue').bitstr()\n  )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('modulus').int(),\n    this.key('publicExponent').int(),\n    this.key('privateExponent').int(),\n    this.key('prime1').int(),\n    this.key('prime2').int(),\n    this.key('exponent1').int(),\n    this.key('exponent2').int(),\n    this.key('coefficient').int()\n  )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n  this.seq().obj(\n    this.key('modulus').int(),\n    this.key('publicExponent').int()\n  )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('none').null_().optional(),\n    this.key('curve').objid().optional(),\n    this.key('params').seq().obj(\n      this.key('p').int(),\n      this.key('q').int(),\n      this.key('g').int()\n    ).optional()\n  )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').seq().obj(\n      this.key('id').objid(),\n      this.key('decrypt').seq().obj(\n        this.key('kde').seq().obj(\n          this.key('id').objid(),\n          this.key('kdeparams').seq().obj(\n            this.key('salt').octstr(),\n            this.key('iters').int()\n          )\n        ),\n        this.key('cipher').seq().obj(\n          this.key('algo').objid(),\n          this.key('iv').octstr()\n        )\n      )\n    ),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('p').int(),\n    this.key('q').int(),\n    this.key('g').int(),\n    this.key('pub_key').int(),\n    this.key('priv_key').int()\n  )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n  this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('privateKey').octstr(),\n    this.key('parameters').optional().explicit(0).use(ECParameters),\n    this.key('publicKey').optional().explicit(1).bitstr()\n  )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n  this.choice({\n    namedCurve: this.objid()\n  })\n})\n\nexports.signature = asn1.define('signature', function () {\n  this.seq().obj(\n    this.key('r').int(),\n    this.key('s').int()\n  )\n})\n", "{\"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n\"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n\"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n\"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n\"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n\"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n\"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n\"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n\"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n\"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n\"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n\"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n}", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n  var key = okey.toString()\n  var match = key.match(findProc)\n  var decrypted\n  if (!match) {\n    var match2 = key.match(fullRegex)\n    decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n  } else {\n    var suite = 'aes' + match[1]\n    var iv = Buffer.from(match[2], 'hex')\n    var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n    var out = []\n    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n    out.push(cipher.update(cipherText))\n    out.push(cipher.final())\n    decrypted = Buffer.concat(out)\n  }\n  var tag = key.match(startRegex)[1]\n  return {\n    tag: tag,\n    data: decrypted\n  }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = Buffer.from(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      // throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      // throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n", "{\n  \"1.3.132.0.10\": \"secp256k1\",\n  \"1.3.132.0.33\": \"p224\",\n  \"1.2.840.10045.3.1.1\": \"p192\",\n  \"1.2.840.10045.3.1.7\": \"p256\",\n  \"1.3.132.0.34\": \"p384\",\n  \"1.3.132.0.35\": \"p521\"\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n  var priv = parseKeys(key)\n  if (priv.curve) {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n    return ecSign(hash, priv)\n  } else if (priv.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong private key type')\n    return dsaSign(hash, priv, hashType)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = priv.modulus.byteLength()\n  var pad = [0, 1]\n  while (hash.length + pad.length + 1 < len) pad.push(0xff)\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) pad.push(hash[i])\n\n  var out = crt(pad, priv)\n  return out\n}\n\nfunction ecSign (hash, priv) {\n  var curveId = curves[priv.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var key = curve.keyFromPrivate(priv.privateKey)\n  var out = key.sign(hash)\n\n  return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n  var x = priv.params.priv_key\n  var p = priv.params.p\n  var q = priv.params.q\n  var g = priv.params.g\n  var r = new BN(0)\n  var k\n  var H = bits2int(hash, q).mod(q)\n  var s = false\n  var kv = getKey(x, q, hash, algo)\n  while (s === false) {\n    k = makeKey(q, kv, algo)\n    r = makeR(g, k, p, q)\n    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n    if (s.cmpn(0) === 0) {\n      s = false\n      r = new BN(0)\n    }\n  }\n  return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n  r = r.toArray()\n  s = s.toArray()\n\n  // Pad values\n  if (r[0] & 0x80) r = [0].concat(r)\n  if (s[0] & 0x80) s = [0].concat(s)\n\n  var total = r.length + s.length + 4\n  var res = [0x30, total, 0x02, r.length]\n  res = res.concat(r, [0x02, s.length], s)\n  return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n  x = Buffer.from(x.toArray())\n  if (x.length < q.byteLength()) {\n    var zeros = Buffer.alloc(q.byteLength() - x.length)\n    x = Buffer.concat([zeros, x])\n  }\n  var hlen = hash.length\n  var hbits = bits2octets(hash, q)\n  var v = Buffer.alloc(hlen)\n  v.fill(1)\n  var k = Buffer.alloc(hlen)\n  k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n  var bits = new BN(obits)\n  var shift = (obits.length << 3) - q.bitLength()\n  if (shift > 0) bits.ishrn(shift)\n  return bits\n}\n\nfunction bits2octets (bits, q) {\n  bits = bits2int(bits, q)\n  bits = bits.mod(q)\n  var out = Buffer.from(bits.toArray())\n  if (out.length < q.byteLength()) {\n    var zeros = Buffer.alloc(q.byteLength() - out.length)\n    out = Buffer.concat([zeros, out])\n  }\n  return out\n}\n\nfunction makeKey (q, kv, algo) {\n  var t\n  var k\n\n  do {\n    t = Buffer.alloc(0)\n\n    while (t.length * 8 < q.bitLength()) {\n      kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n      t = Buffer.concat([t, kv.v])\n    }\n\n    k = bits2int(t, q)\n    kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n    kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n  } while (k.cmp(q) !== -1)\n\n  return k\n}\n\nfunction makeR (g, k, p, q) {\n  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n  var pub = parseKeys(key)\n  if (pub.type === 'ec') {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n    return ecVerify(sig, hash, pub)\n  } else if (pub.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong public key type')\n    return dsaVerify(sig, hash, pub)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = pub.modulus.byteLength()\n  var pad = [1]\n  var padNum = 0\n  while (hash.length + pad.length + 2 < len) {\n    pad.push(0xff)\n    padNum++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = Buffer.from(pad)\n  var red = BN.mont(pub.modulus)\n  sig = new BN(sig).toRed(red)\n\n  sig = sig.redPow(new BN(pub.publicExponent))\n  sig = Buffer.from(sig.fromRed().toArray())\n  var out = padNum < 8 ? 1 : 0\n  len = Math.min(sig.length, pad.length)\n  if (sig.length !== pad.length) out = 1\n\n  i = -1\n  while (++i < len) out |= sig[i] ^ pad[i]\n  return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n  var curveId = curves[pub.data.algorithm.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var pubkey = pub.data.subjectPrivateKey.data\n\n  return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n  var p = pub.data.p\n  var q = pub.data.q\n  var g = pub.data.g\n  var y = pub.data.pub_key\n  var unpacked = parseKeys.signature.decode(sig, 'der')\n  var s = unpacked.s\n  var r = unpacked.r\n  checkValue(s, q)\n  checkValue(r, q)\n  var montp = BN.mont(p)\n  var w = s.invm(q)\n  var v = g.toRed(montp)\n    .redPow(new BN(hash).mul(w).mod(q))\n    .fromRed()\n    .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n    .mod(p)\n    .mod(q)\n  return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n  if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n  if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n  algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n  algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hashType = data.hash\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nSign.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = Buffer.from(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n  this.end()\n  var hash = this._hash.digest()\n  var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n  return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = Buffer.from(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n  if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n  this.end()\n  var hash = this._hash.digest()\n  return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n  return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n  return new Verify(algorithm)\n}\n\nmodule.exports = {\n  Sign: createSign,\n  Verify: createVerify,\n  createSign: createSign,\n  createVerify: createVerify\n}\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n  return new ECDH(curve)\n}\n\nvar aliases = {\n  secp256k1: {\n    name: 'secp256k1',\n    byteLength: 32\n  },\n  secp224r1: {\n    name: 'p224',\n    byteLength: 28\n  },\n  prime256v1: {\n    name: 'p256',\n    byteLength: 32\n  },\n  prime192v1: {\n    name: 'p192',\n    byteLength: 24\n  },\n  ed25519: {\n    name: 'ed25519',\n    byteLength: 32\n  },\n  secp384r1: {\n    name: 'p384',\n    byteLength: 48\n  },\n  secp521r1: {\n    name: 'p521',\n    byteLength: 66\n  }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n  this.curveType = aliases[curve]\n  if (!this.curveType) {\n    this.curveType = {\n      name: curve\n    }\n  }\n  this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n  this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n  this.keys = this.curve.genKeyPair()\n  return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n  inenc = inenc || 'utf8'\n  if (!Buffer.isBuffer(other)) {\n    other = new Buffer(other, inenc)\n  }\n  var otherPub = this.curve.keyFromPublic(other).getPublic()\n  var out = otherPub.mul(this.keys.getPrivate()).getX()\n  return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n  var key = this.keys.getPublic(format === 'compressed', true)\n  if (format === 'hybrid') {\n    if (key[key.length - 1] % 2) {\n      key[0] = 7\n    } else {\n      key[0] = 6\n    }\n  }\n  return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n  return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc)\n  }\n  this.keys._importPublic(pub)\n  return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc)\n  }\n\n  var _priv = new BN(priv)\n  _priv = _priv.toString(16)\n  this.keys = this.curve.genKeyPair()\n  this.keys._importPrivate(_priv)\n  return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n  if (!Array.isArray(bn)) {\n    bn = bn.toArray()\n  }\n  var buf = new Buffer(bn)\n  if (len && buf.length < len) {\n    var zeros = new Buffer(len - buf.length)\n    zeros.fill(0)\n    buf = Buffer.concat([zeros, buf])\n  }\n  if (!enc) {\n    return buf\n  } else {\n    return buf.toString(enc)\n  }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n  var t = Buffer.alloc(0)\n  var i = 0\n  var c\n  while (t.length < len) {\n    c = i2ops(i++)\n    t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n  }\n  return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n  var out = Buffer.allocUnsafe(4)\n  out.writeUInt32BE(c, 0)\n  return out\n}\n", "module.exports = function xor (a, b) {\n  var len = a.length\n  var i = -1\n  while (++i < len) {\n    a[i] ^= b[i]\n  }\n  return a\n}\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n  return Buffer.from(paddedMsg\n    .toRed(BN.mont(key.modulus))\n    .redPow(new BN(key.publicExponent))\n    .fromRed()\n    .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n  var padding\n  if (publicKey.padding) {\n    padding = publicKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n  var key = parseKeys(publicKey)\n  var paddedMsg\n  if (padding === 4) {\n    paddedMsg = oaep(key, msg)\n  } else if (padding === 1) {\n    paddedMsg = pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    paddedMsg = new BN(msg)\n    if (paddedMsg.cmp(key.modulus) >= 0) {\n      throw new Error('data too long for modulus')\n    }\n  } else {\n    throw new Error('unknown padding')\n  }\n  if (reverse) {\n    return crt(paddedMsg, key)\n  } else {\n    return withPublic(paddedMsg, key)\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var mLen = msg.length\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  var hLen2 = 2 * hLen\n  if (mLen > k - hLen2 - 2) {\n    throw new Error('message too long')\n  }\n  var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n  var dblen = k - hLen - 1\n  var seed = randomBytes(hLen)\n  var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n  var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n  return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n  var mLen = msg.length\n  var k = key.modulus.byteLength()\n  if (mLen > k - 11) {\n    throw new Error('message too long')\n  }\n  var ps\n  if (reverse) {\n    ps = Buffer.alloc(k - mLen - 3, 0xff)\n  } else {\n    ps = nonZero(k - mLen - 3)\n  }\n  return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n  var out = Buffer.allocUnsafe(len)\n  var i = 0\n  var cache = randomBytes(len * 2)\n  var cur = 0\n  var num\n  while (i < len) {\n    if (cur === cache.length) {\n      cache = randomBytes(len * 2)\n      cur = 0\n    }\n    num = cache[cur++]\n    if (num) {\n      out[i++] = num\n    }\n  }\n  return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n  var padding\n  if (privateKey.padding) {\n    padding = privateKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n\n  var key = parseKeys(privateKey)\n  var k = key.modulus.byteLength()\n  if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n    throw new Error('decryption error')\n  }\n  var msg\n  if (reverse) {\n    msg = withPublic(new BN(enc), key)\n  } else {\n    msg = crt(enc, key)\n  }\n  var zBuffer = Buffer.alloc(k - msg.length)\n  msg = Buffer.concat([zBuffer, msg], k)\n  if (padding === 4) {\n    return oaep(key, msg)\n  } else if (padding === 1) {\n    return pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    return msg\n  } else {\n    throw new Error('unknown padding')\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  if (msg[0] !== 0) {\n    throw new Error('decryption error')\n  }\n  var maskedSeed = msg.slice(1, hLen + 1)\n  var maskedDb = msg.slice(hLen + 1)\n  var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n  var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n  if (compare(iHash, db.slice(0, hLen))) {\n    throw new Error('decryption error')\n  }\n  var i = hLen\n  while (db[i] === 0) {\n    i++\n  }\n  if (db[i++] !== 1) {\n    throw new Error('decryption error')\n  }\n  return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n  var p1 = msg.slice(0, 2)\n  var i = 2\n  var status = 0\n  while (msg[i++] !== 0) {\n    if (i >= msg.length) {\n      status++\n      break\n    }\n  }\n  var ps = msg.slice(2, i - 1)\n\n  if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n    status++\n  }\n  if (ps.length < 8) {\n    status++\n  }\n  if (status) {\n    throw new Error('decryption error')\n  }\n  return msg.slice(i)\n}\nfunction compare (a, b) {\n  a = Buffer.from(a)\n  b = Buffer.from(b)\n  var dif = 0\n  var len = a.length\n  if (a.length !== b.length) {\n    dif++\n    len = Math.min(a.length, b.length)\n  }\n  var i = -1\n  while (++i < len) {\n    dif += (a[i] ^ b[i])\n  }\n  return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n  return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n  return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n  throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n  if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n    throw new TypeError('offset must be a number')\n  }\n\n  if (offset > kMaxUint32 || offset < 0) {\n    throw new TypeError('offset must be a uint32')\n  }\n\n  if (offset > kBufferMaxLength || offset > length) {\n    throw new RangeError('offset out of range')\n  }\n}\n\nfunction assertSize (size, offset, length) {\n  if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n    throw new TypeError('size must be a number')\n  }\n\n  if (size > kMaxUint32 || size < 0) {\n    throw new TypeError('size must be a uint32')\n  }\n\n  if (size + offset > length || size > kBufferMaxLength) {\n    throw new RangeError('buffer too small')\n  }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n  exports.randomFill = randomFill\n  exports.randomFillSync = randomFillSync\n} else {\n  exports.randomFill = oldBrowser\n  exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  if (typeof offset === 'function') {\n    cb = offset\n    offset = 0\n    size = buf.length\n  } else if (typeof size === 'function') {\n    cb = size\n    size = buf.length - offset\n  } else if (typeof cb !== 'function') {\n    throw new TypeError('\"cb\" argument must be a function')\n  }\n  assertOffset(offset, buf.length)\n  assertSize(size, offset, buf.length)\n  return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n  if (process.browser) {\n    var ourBuf = buf.buffer\n    var uint = new Uint8Array(ourBuf, offset, size)\n    crypto.getRandomValues(uint)\n    if (cb) {\n      process.nextTick(function () {\n        cb(null, buf)\n      })\n      return\n    }\n    return buf\n  }\n  if (cb) {\n    randombytes(size, function (err, bytes) {\n      if (err) {\n        return cb(err)\n      }\n      bytes.copy(buf, offset)\n      cb(null, buf)\n    })\n    return\n  }\n  var bytes = randombytes(size)\n  bytes.copy(buf, offset)\n  return buf\n}\nfunction randomFillSync (buf, offset, size) {\n  if (typeof offset === 'undefined') {\n    offset = 0\n  }\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  assertOffset(offset, buf.length)\n\n  if (size === undefined) size = buf.length - offset\n\n  assertSize(size, offset, buf.length)\n\n  return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n  return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n//   'createCredentials'\n// ].forEach(function (name) {\n//   exports[name] = function () {\n//     throw new Error([\n//       'sorry, ' + name + ' is not implemented yet',\n//       'we accept pull requests',\n//       'https://github.com/crypto-browserify/crypto-browserify'\n//     ].join('\\n'))\n//   }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n  throw new Error([\n    'sorry, createCredentials is not implemented yet',\n    'we accept pull requests',\n    'https://github.com/crypto-browserify/crypto-browserify'\n  ].join('\\n'))\n}\n\nexports.constants = {\n  'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n  'DH_CHECK_P_NOT_PRIME': 1,\n  'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n  'DH_NOT_SUITABLE_GENERATOR': 8,\n  'NPN_ENABLED': 1,\n  'ALPN_ENABLED': 1,\n  'RSA_PKCS1_PADDING': 1,\n  'RSA_SSLV23_PADDING': 2,\n  'RSA_NO_PADDING': 3,\n  'RSA_PKCS1_OAEP_PADDING': 4,\n  'RSA_X931_PADDING': 5,\n  'RSA_PKCS1_PSS_PADDING': 6,\n  'POINT_CONVERSION_COMPRESSED': 2,\n  'POINT_CONVERSION_UNCOMPRESSED': 4,\n  'POINT_CONVERSION_HYBRID': 6\n}\n", "const errors = {\n  IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n  TWEAK_ADD:\n    'The tweak was out of range or the resulted private key is invalid',\n  TWEAK_MUL: 'The tweak was out of range or equal to zero',\n  CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n  SECKEY_INVALID: 'Private Key is invalid',\n  PUBKEY_PARSE: 'Public Key could not be parsed',\n  PUBKEY_SERIALIZE: 'Public Key serialization error',\n  PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n  SIG_PARSE: 'Signature could not be parsed',\n  SIGN: 'The nonce generation function failed, or the private key was invalid',\n  RECOVER: 'Public key could not be recover',\n  ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n  if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n  assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n  if (length !== undefined) {\n    if (Array.isArray(length)) {\n      const numbers = length.join(', ')\n      const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n      assert(length.includes(value.length), msg)\n    } else {\n      const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n      assert(value.length === length, msg)\n    }\n  }\n}\n\nfunction isCompressed (value) {\n  assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n  if (typeof output === 'function') output = output(length)\n  isUint8Array('output', output, length)\n  return output\n}\n\nfunction toTypeString (value) {\n  return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n  return {\n    contextRandomize (seed) {\n      assert(\n        seed === null || seed instanceof Uint8Array,\n        'Expected seed to be an Uint8Array or null'\n      )\n      if (seed !== null) isUint8Array('seed', seed, 32)\n\n      switch (secp256k1.contextRandomize(seed)) {\n        case 1:\n          throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n      }\n    },\n\n    privateKeyVerify (seckey) {\n      isUint8Array('private key', seckey, 32)\n\n      return secp256k1.privateKeyVerify(seckey) === 0\n    },\n\n    privateKeyNegate (seckey) {\n      isUint8Array('private key', seckey, 32)\n\n      switch (secp256k1.privateKeyNegate(seckey)) {\n        case 0:\n          return seckey\n        case 1:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    privateKeyTweakAdd (seckey, tweak) {\n      isUint8Array('private key', seckey, 32)\n      isUint8Array('tweak', tweak, 32)\n\n      switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n        case 0:\n          return seckey\n        case 1:\n          throw new Error(errors.TWEAK_ADD)\n      }\n    },\n\n    privateKeyTweakMul (seckey, tweak) {\n      isUint8Array('private key', seckey, 32)\n      isUint8Array('tweak', tweak, 32)\n\n      switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n        case 0:\n          return seckey\n        case 1:\n          throw new Error(errors.TWEAK_MUL)\n      }\n    },\n\n    publicKeyVerify (pubkey) {\n      isUint8Array('public key', pubkey, [33, 65])\n\n      return secp256k1.publicKeyVerify(pubkey) === 0\n    },\n\n    publicKeyCreate (seckey, compressed = true, output) {\n      isUint8Array('private key', seckey, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyCreate(output, seckey)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.SECKEY_INVALID)\n        case 2:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyConvert (pubkey, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyConvert(output, pubkey)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyNegate (pubkey, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyNegate(output, pubkey)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n        case 3:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyCombine (pubkeys, compressed = true, output) {\n      assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n      assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n      for (const pubkey of pubkeys) {\n        isUint8Array('public key', pubkey, [33, 65])\n      }\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.PUBKEY_COMBINE)\n        case 3:\n          throw new Error(errors.PUBKEY_SERIALIZE)\n      }\n    },\n\n    publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isUint8Array('tweak', tweak, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.TWEAK_ADD)\n      }\n    },\n\n    publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isUint8Array('tweak', tweak, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.TWEAK_MUL)\n      }\n    },\n\n    signatureNormalize (sig) {\n      isUint8Array('signature', sig, 64)\n\n      switch (secp256k1.signatureNormalize(sig)) {\n        case 0:\n          return sig\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n      }\n    },\n\n    signatureExport (sig, output) {\n      isUint8Array('signature', sig, 64)\n      output = getAssertedOutput(output, 72)\n\n      const obj = { output, outputlen: 72 }\n      switch (secp256k1.signatureExport(obj, sig)) {\n        case 0:\n          return output.slice(0, obj.outputlen)\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    signatureImport (sig, output) {\n      isUint8Array('signature', sig)\n      output = getAssertedOutput(output, 64)\n\n      switch (secp256k1.signatureImport(output, sig)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    ecdsaSign (msg32, seckey, options = {}, output) {\n      isUint8Array('message', msg32, 32)\n      isUint8Array('private key', seckey, 32)\n      assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n      if (options.data !== undefined) isUint8Array('options.data', options.data)\n      if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n      output = getAssertedOutput(output, 64)\n\n      const obj = { signature: output, recid: null }\n      switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n        case 0:\n          return obj\n        case 1:\n          throw new Error(errors.SIGN)\n        case 2:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    ecdsaVerify (sig, msg32, pubkey) {\n      isUint8Array('signature', sig, 64)\n      isUint8Array('message', msg32, 32)\n      isUint8Array('public key', pubkey, [33, 65])\n\n      switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n        case 0:\n          return true\n        case 3:\n          return false\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.PUBKEY_PARSE)\n      }\n    },\n\n    ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n      isUint8Array('signature', sig, 64)\n      assert(\n        toTypeString(recid) === 'Number' &&\n          recid >= 0 &&\n          recid <= 3,\n        'Expected recovery id to be a Number within interval [0, 3]'\n      )\n      isUint8Array('message', msg32, 32)\n      isCompressed(compressed)\n      output = getAssertedOutput(output, compressed ? 33 : 65)\n\n      switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.SIG_PARSE)\n        case 2:\n          throw new Error(errors.RECOVER)\n        case 3:\n          throw new Error(errors.IMPOSSIBLE_CASE)\n      }\n    },\n\n    ecdh (pubkey, seckey, options = {}, output) {\n      isUint8Array('public key', pubkey, [33, 65])\n      isUint8Array('private key', seckey, 32)\n      assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n      if (options.data !== undefined) isUint8Array('options.data', options.data)\n      if (options.hashfn !== undefined) {\n        assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n        if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n        if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n        isUint8Array('output', output)\n      } else {\n        output = getAssertedOutput(output, 32)\n      }\n\n      switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n        case 0:\n          return output\n        case 1:\n          throw new Error(errors.PUBKEY_PARSE)\n        case 2:\n          throw new Error(errors.ECDH)\n      }\n    }\n  }\n}\n", "const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n  let x = new BN(xbuf)\n\n  // overflow\n  if (x.cmp(ecparams.p) >= 0) return null\n  x = x.toRed(ecparams.red)\n\n  // compute corresponding Y\n  let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n  if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n  return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n  let x = new BN(xbuf)\n  let y = new BN(ybuf)\n\n  // overflow\n  if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n  x = x.toRed(ecparams.red)\n  y = y.toRed(ecparams.red)\n\n  // is odd flag\n  if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n  // x*x*x + b = y*y\n  const x3 = x.redSqr().redIMul(x)\n  if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n  return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n  // length should be validated in interface\n  const first = pubkey[0]\n  switch (first) {\n    case 0x02:\n    case 0x03:\n      if (pubkey.length !== 33) return null\n      return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n    case 0x04:\n    case 0x06:\n    case 0x07:\n      if (pubkey.length !== 65) return null\n      return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n    default:\n      return null\n  }\n}\n\nfunction savePublicKey (output, point) {\n  const pubkey = point.encode(null, output.length === 33)\n  // Loop should be faster because we do not need create extra Uint8Array\n  // output.set(new Uint8Array(pubkey))\n  for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n  contextRandomize () {\n    return 0\n  },\n\n  privateKeyVerify (seckey) {\n    const bn = new BN(seckey)\n    return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n  },\n\n  privateKeyNegate (seckey) {\n    const bn = new BN(seckey)\n    const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n    seckey.set(negate)\n    return 0\n  },\n\n  privateKeyTweakAdd (seckey, tweak) {\n    const bn = new BN(tweak)\n    if (bn.cmp(ecparams.n) >= 0) return 1\n\n    bn.iadd(new BN(seckey))\n    if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n    if (bn.isZero()) return 1\n\n    const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n    seckey.set(tweaked)\n\n    return 0\n  },\n\n  privateKeyTweakMul (seckey, tweak) {\n    let bn = new BN(tweak)\n    if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n    bn.imul(new BN(seckey))\n    if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n    const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n    seckey.set(tweaked)\n\n    return 0\n  },\n\n  publicKeyVerify (pubkey) {\n    const pair = loadPublicKey(pubkey)\n    return pair === null ? 1 : 0\n  },\n\n  publicKeyCreate (output, seckey) {\n    const bn = new BN(seckey)\n    if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n    const point = ec.keyFromPrivate(seckey).getPublic()\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyConvert (output, pubkey) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    const point = pair.getPublic()\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyNegate (output, pubkey) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    const point = pair.getPublic()\n    point.y = point.y.redNeg()\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyCombine (output, pubkeys) {\n    const pairs = new Array(pubkeys.length)\n    for (let i = 0; i < pubkeys.length; ++i) {\n      pairs[i] = loadPublicKey(pubkeys[i])\n      if (pairs[i] === null) return 1\n    }\n\n    let point = pairs[0].getPublic()\n    for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n    if (point.isInfinity()) return 2\n\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyTweakAdd (output, pubkey, tweak) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    tweak = new BN(tweak)\n    if (tweak.cmp(ecparams.n) >= 0) return 2\n\n    const point = pair.getPublic().add(ecparams.g.mul(tweak))\n    if (point.isInfinity()) return 2\n\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  publicKeyTweakMul (output, pubkey, tweak) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    tweak = new BN(tweak)\n    if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n    const point = pair.getPublic().mul(tweak)\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  signatureNormalize (sig) {\n    const r = new BN(sig.subarray(0, 32))\n    const s = new BN(sig.subarray(32, 64))\n    if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n    if (s.cmp(ec.nh) === 1) {\n      sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n    }\n\n    return 0\n  },\n\n  // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n  // Adapted for Uint8Array instead Buffer\n  signatureExport (obj, sig) {\n    const sigR = sig.subarray(0, 32)\n    const sigS = sig.subarray(32, 64)\n    if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n    if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n    const { output } = obj\n\n    // Prepare R\n    let r = output.subarray(4, 4 + 33)\n    r[0] = 0x00\n    r.set(sigR, 1)\n\n    let lenR = 33\n    let posR = 0\n    for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n    r = r.subarray(posR)\n    if (r[0] & 0x80) return 1\n    if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n    // Prepare S\n    let s = output.subarray(6 + 33, 6 + 33 + 33)\n    s[0] = 0x00\n    s.set(sigS, 1)\n\n    let lenS = 33\n    let posS = 0\n    for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n    s = s.subarray(posS)\n    if (s[0] & 0x80) return 1\n    if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n    // Set output length for return\n    obj.outputlen = 6 + lenR + lenS\n\n    // Output in specified format\n    // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n    output[0] = 0x30\n    output[1] = obj.outputlen - 2\n    output[2] = 0x02\n    output[3] = r.length\n    output.set(r, 4)\n    output[4 + lenR] = 0x02\n    output[5 + lenR] = s.length\n    output.set(s, 6 + lenR)\n\n    return 0\n  },\n\n  // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n  // Adapted for Uint8Array instead Buffer\n  signatureImport (output, sig) {\n    if (sig.length < 8) return 1\n    if (sig.length > 72) return 1\n    if (sig[0] !== 0x30) return 1\n    if (sig[1] !== sig.length - 2) return 1\n    if (sig[2] !== 0x02) return 1\n\n    const lenR = sig[3]\n    if (lenR === 0) return 1\n    if (5 + lenR >= sig.length) return 1\n    if (sig[4 + lenR] !== 0x02) return 1\n\n    const lenS = sig[5 + lenR]\n    if (lenS === 0) return 1\n    if ((6 + lenR + lenS) !== sig.length) return 1\n\n    if (sig[4] & 0x80) return 1\n    if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n    if (sig[lenR + 6] & 0x80) return 1\n    if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n    let sigR = sig.subarray(4, 4 + lenR)\n    if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n    if (sigR.length > 32) return 1\n\n    let sigS = sig.subarray(6 + lenR)\n    if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n    if (sigS.length > 32) throw new Error('S length is too long')\n\n    let r = new BN(sigR)\n    if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n    let s = new BN(sig.subarray(6 + lenR))\n    if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n    output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n    output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n    return 0\n  },\n\n  ecdsaSign (obj, message, seckey, data, noncefn) {\n    if (noncefn) {\n      const _noncefn = noncefn\n      noncefn = (counter) => {\n        const nonce = _noncefn(message, seckey, null, data, counter)\n\n        const isValid = nonce instanceof Uint8Array && nonce.length === 32\n        if (!isValid) throw new Error('This is the way')\n\n        return new BN(nonce)\n      }\n    }\n\n    const d = new BN(seckey)\n    if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n    let sig\n    try {\n      sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n    } catch (err) {\n      return 1\n    }\n\n    obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n    obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n    obj.recid = sig.recoveryParam\n\n    return 0\n  },\n\n  ecdsaVerify (sig, msg32, pubkey) {\n    const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n    const sigr = new BN(sigObj.r)\n    const sigs = new BN(sigObj.s)\n    if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n    if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 2\n\n    const point = pair.getPublic()\n    const isValid = ec.verify(msg32, sigObj, point)\n    return isValid ? 0 : 3\n  },\n\n  ecdsaRecover (output, sig, recid, msg32) {\n    const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n    const sigr = new BN(sigObj.r)\n    const sigs = new BN(sigObj.s)\n    if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n    if (sigr.isZero() || sigs.isZero()) return 2\n\n    // Can throw `throw new Error('Unable to find sencond key candinate');`\n    let point\n    try {\n      point = ec.recoverPubKey(msg32, sigObj, recid)\n    } catch (err) {\n      return 2\n    }\n\n    savePublicKey(output, point)\n\n    return 0\n  },\n\n  ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n    const pair = loadPublicKey(pubkey)\n    if (pair === null) return 1\n\n    const scalar = new BN(seckey)\n    if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n    const point = pair.getPublic().mul(scalar)\n\n    if (hashfn === undefined) {\n      const data = point.encode(null, true)\n      const sha256 = ec.hash().update(data).digest()\n      for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n    } else {\n      if (!xbuf) xbuf = new Uint8Array(32)\n      const x = point.getX().toArray('be', 32)\n      for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n      if (!ybuf) ybuf = new Uint8Array(32)\n      const y = point.getY().toArray('be', 32)\n      for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n      const hash = hashfn(xbuf, ybuf, data)\n\n      const isValid = hash instanceof Uint8Array && hash.length === output.length\n      if (!isValid) return 2\n\n      output.set(hash)\n    }\n\n    return 0\n  }\n}\n", "module.exports = require('./lib')(require('./lib/elliptic'))\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n", "module.exports = flatten\nflatten.flatten = flatten\nflatten.unflatten = unflatten\n\nfunction isBuffer (obj) {\n  return obj &&\n    obj.constructor &&\n    (typeof obj.constructor.isBuffer === 'function') &&\n    obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n  return key\n}\n\nfunction flatten (target, opts) {\n  opts = opts || {}\n\n  const delimiter = opts.delimiter || '.'\n  const maxDepth = opts.maxDepth\n  const transformKey = opts.transformKey || keyIdentity\n  const output = {}\n\n  function step (object, prev, currentDepth) {\n    currentDepth = currentDepth || 1\n    Object.keys(object).forEach(function (key) {\n      const value = object[key]\n      const isarray = opts.safe && Array.isArray(value)\n      const type = Object.prototype.toString.call(value)\n      const isbuffer = isBuffer(value)\n      const isobject = (\n        type === '[object Object]' ||\n        type === '[object Array]'\n      )\n\n      const newKey = prev\n        ? prev + delimiter + transformKey(key)\n        : transformKey(key)\n\n      if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n        (!opts.maxDepth || currentDepth < maxDepth)) {\n        return step(value, newKey, currentDepth + 1)\n      }\n\n      output[newKey] = value\n    })\n  }\n\n  step(target)\n\n  return output\n}\n\nfunction unflatten (target, opts) {\n  opts = opts || {}\n\n  const delimiter = opts.delimiter || '.'\n  const overwrite = opts.overwrite || false\n  const transformKey = opts.transformKey || keyIdentity\n  const result = {}\n\n  const isbuffer = isBuffer(target)\n  if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n    return target\n  }\n\n  // safely ensure that the key is\n  // an integer.\n  function getkey (key) {\n    const parsedKey = Number(key)\n\n    return (\n      isNaN(parsedKey) ||\n      key.indexOf('.') !== -1 ||\n      opts.object\n    ) ? key\n      : parsedKey\n  }\n\n  function addKeys (keyPrefix, recipient, target) {\n    return Object.keys(target).reduce(function (result, key) {\n      result[keyPrefix + delimiter + key] = target[key]\n\n      return result\n    }, recipient)\n  }\n\n  function isEmpty (val) {\n    const type = Object.prototype.toString.call(val)\n    const isArray = type === '[object Array]'\n    const isObject = type === '[object Object]'\n\n    if (!val) {\n      return true\n    } else if (isArray) {\n      return !val.length\n    } else if (isObject) {\n      return !Object.keys(val).length\n    }\n  }\n\n  target = Object.keys(target).reduce(function (result, key) {\n    const type = Object.prototype.toString.call(target[key])\n    const isObject = (type === '[object Object]' || type === '[object Array]')\n    if (!isObject || isEmpty(target[key])) {\n      result[key] = target[key]\n      return result\n    } else {\n      return addKeys(\n        key,\n        result,\n        flatten(target[key], opts)\n      )\n    }\n  }, {})\n\n  Object.keys(target).forEach(function (key) {\n    const split = key.split(delimiter).map(transformKey)\n    let key1 = getkey(split.shift())\n    let key2 = getkey(split[0])\n    let recipient = result\n\n    while (key2 !== undefined) {\n      if (key1 === '__proto__') {\n        return\n      }\n\n      const type = Object.prototype.toString.call(recipient[key1])\n      const isobject = (\n        type === '[object Object]' ||\n        type === '[object Array]'\n      )\n\n      // do not write over falsey, non-undefined values if overwrite is false\n      if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n        return\n      }\n\n      if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n        recipient[key1] = (\n          typeof key2 === 'number' &&\n          !opts.object ? [] : {}\n        )\n      }\n\n      recipient = recipient[key1]\n      if (split.length > 0) {\n        key1 = getkey(split.shift())\n        key2 = getkey(split[0])\n      }\n    }\n\n    // unflatten again for 'messy objects'\n    recipient[key1] = unflatten(target[key], opts)\n  })\n\n  return result\n}\n", "const perf =\n  typeof performance === 'object' &&\n  performance &&\n  typeof performance.now === 'function'\n    ? performance\n    : Date\n\nconst hasAbortController = typeof AbortController === 'function'\n\n// minimal backwards-compatibility polyfill\n// this doesn't have nearly all the checks and whatnot that\n// actual AbortController/Signal has, but it's enough for\n// our purposes, and if used properly, behaves the same.\nconst AC = hasAbortController\n  ? AbortController\n  : class AbortController {\n      constructor() {\n        this.signal = new AS()\n      }\n      abort() {\n        this.signal.dispatchEvent('abort')\n      }\n    }\n\nconst hasAbortSignal = typeof AbortSignal === 'function'\n// Some polyfills put this on the AC class, not global\nconst hasACAbortSignal = typeof AC.AbortSignal === 'function'\nconst AS = hasAbortSignal\n  ? AbortSignal\n  : hasACAbortSignal\n  ? AC.AbortController\n  : class AbortSignal {\n      constructor() {\n        this.aborted = false\n        this._listeners = []\n      }\n      dispatchEvent(type) {\n        if (type === 'abort') {\n          this.aborted = true\n          const e = { type, target: this }\n          this.onabort(e)\n          this._listeners.forEach(f => f(e), this)\n        }\n      }\n      onabort() {}\n      addEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners.push(fn)\n        }\n      }\n      removeEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners = this._listeners.filter(f => f !== fn)\n        }\n      }\n    }\n\nconst warned = new Set()\nconst deprecatedOption = (opt, instead) => {\n  const code = `LRU_CACHE_OPTION_${opt}`\n  if (shouldWarn(code)) {\n    warn(code, `${opt} option`, `options.${instead}`, LRUCache)\n  }\n}\nconst deprecatedMethod = (method, instead) => {\n  const code = `LRU_CACHE_METHOD_${method}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, method)\n    warn(code, `${method} method`, `cache.${instead}()`, get)\n  }\n}\nconst deprecatedProperty = (field, instead) => {\n  const code = `LRU_CACHE_PROPERTY_${field}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, field)\n    warn(code, `${field} property`, `cache.${instead}`, get)\n  }\n}\n\nconst emitWarning = (...a) => {\n  typeof process === 'object' &&\n  process &&\n  typeof process.emitWarning === 'function'\n    ? process.emitWarning(...a)\n    : console.error(...a)\n}\n\nconst shouldWarn = code => !warned.has(code)\n\nconst warn = (code, what, instead, fn) => {\n  warned.add(code)\n  const msg = `The ${what} is deprecated. Please use ${instead} instead.`\n  emitWarning(msg, 'DeprecationWarning', code, fn)\n}\n\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\n\n/* istanbul ignore next - This is a little bit ridiculous, tbh.\n * The maximum array length is 2^32-1 or thereabouts on most JS impls.\n * And well before that point, you're caching the entire world, I mean,\n * that's ~32GB of just integers for the next/prev links, plus whatever\n * else to hold that many keys and values.  Just filling the memory with\n * zeroes at init time is brutal when you get that big.\n * But why not be complete?\n * Maybe in the future, these limits will have expanded. */\nconst getUintArray = max =>\n  !isPosInt(max)\n    ? null\n    : max <= Math.pow(2, 8)\n    ? Uint8Array\n    : max <= Math.pow(2, 16)\n    ? Uint16Array\n    : max <= Math.pow(2, 32)\n    ? Uint32Array\n    : max <= Number.MAX_SAFE_INTEGER\n    ? ZeroArray\n    : null\n\nclass ZeroArray extends Array {\n  constructor(size) {\n    super(size)\n    this.fill(0)\n  }\n}\n\nclass Stack {\n  constructor(max) {\n    if (max === 0) {\n      return []\n    }\n    const UintArray = getUintArray(max)\n    this.heap = new UintArray(max)\n    this.length = 0\n  }\n  push(n) {\n    this.heap[this.length++] = n\n  }\n  pop() {\n    return this.heap[--this.length]\n  }\n}\n\nclass LRUCache {\n  constructor(options = {}) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      sizeCalculation,\n      fetchMethod,\n      fetchContext,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n    } = options\n\n    // deprecated options, don't trigger a warning for getting them if\n    // the thing being passed in is another LRUCache we're copying.\n    const { length, maxAge, stale } =\n      options instanceof LRUCache ? {} : options\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.max = max\n    this.maxSize = maxSize\n    this.sizeCalculation = sizeCalculation || length\n    if (this.sizeCalculation) {\n      if (!this.maxSize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize'\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    this.fetchMethod = fetchMethod || null\n    if (this.fetchMethod && typeof this.fetchMethod !== 'function') {\n      throw new TypeError(\n        'fetchMethod must be a function if specified'\n      )\n    }\n\n    this.fetchContext = fetchContext\n    if (!this.fetchMethod && fetchContext !== undefined) {\n      throw new TypeError(\n        'cannot set fetchContext without fetchMethod'\n      )\n    }\n\n    this.keyMap = new Map()\n    this.keyList = new Array(max).fill(null)\n    this.valList = new Array(max).fill(null)\n    this.next = new UintArray(max)\n    this.prev = new UintArray(max)\n    this.head = 0\n    this.tail = 0\n    this.free = new Stack(max)\n    this.initialFill = 1\n    this.size = 0\n\n    if (typeof dispose === 'function') {\n      this.dispose = dispose\n    }\n    if (typeof disposeAfter === 'function') {\n      this.disposeAfter = disposeAfter\n      this.disposed = []\n    } else {\n      this.disposeAfter = null\n      this.disposed = null\n    }\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n\n    if (this.maxSize !== 0) {\n      if (!isPosInt(this.maxSize)) {\n        throw new TypeError(\n          'maxSize must be a positive integer if specified'\n        )\n      }\n      this.initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale || !!stale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0\n        ? ttlResolution\n        : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || maxAge || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError(\n          'ttl must be a positive integer if specified'\n        )\n      }\n      this.initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required'\n      )\n    }\n    if (!this.ttlAutopurge && !this.max && !this.maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n\n    if (stale) {\n      deprecatedOption('stale', 'allowStale')\n    }\n    if (maxAge) {\n      deprecatedOption('maxAge', 'ttl')\n    }\n    if (length) {\n      deprecatedOption('length', 'sizeCalculation')\n    }\n  }\n\n  getRemainingTTL(key) {\n    return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0\n  }\n\n  initializeTTLTracking() {\n    this.ttls = new ZeroArray(this.max)\n    this.starts = new ZeroArray(this.max)\n\n    this.setItemTTL = (index, ttl, start = perf.now()) => {\n      this.starts[index] = ttl !== 0 ? start : 0\n      this.ttls[index] = ttl\n      if (ttl !== 0 && this.ttlAutopurge) {\n        const t = setTimeout(() => {\n          if (this.isStale(index)) {\n            this.delete(this.keyList[index])\n          }\n        }, ttl + 1)\n        /* istanbul ignore else - unref() not supported on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n    }\n\n    this.updateItemAge = index => {\n      this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(\n          () => (cachedNow = 0),\n          this.ttlResolution\n        )\n        /* istanbul ignore else - not available on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      return this.ttls[index] === 0 || this.starts[index] === 0\n        ? Infinity\n        : this.starts[index] +\n            this.ttls[index] -\n            (cachedNow || getNow())\n    }\n\n    this.isStale = index => {\n      return (\n        this.ttls[index] !== 0 &&\n        this.starts[index] !== 0 &&\n        (cachedNow || getNow()) - this.starts[index] >\n          this.ttls[index]\n      )\n    }\n  }\n  updateItemAge(index) {}\n  setItemTTL(index, ttl, start) {}\n  isStale(index) {\n    return false\n  }\n\n  initializeSizeTracking() {\n    this.calculatedSize = 0\n    this.sizes = new ZeroArray(this.max)\n    this.removeItemSize = index =>\n      (this.calculatedSize -= this.sizes[index])\n    this.requireSize = (k, v, size, sizeCalculation) => {\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)'\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer)'\n          )\n        }\n      }\n      return size\n    }\n    this.addItemSize = (index, v, k, size) => {\n      this.sizes[index] = size\n      const maxSize = this.maxSize - this.sizes[index]\n      while (this.calculatedSize > maxSize) {\n        this.evict(true)\n      }\n      this.calculatedSize += this.sizes[index]\n    }\n  }\n  removeItemSize(index) {}\n  addItemSize(index, v, k, size) {}\n  requireSize(k, v, size, sizeCalculation) {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize on cache'\n      )\n    }\n  }\n\n  *indexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.tail; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.head) {\n          break\n        } else {\n          i = this.prev[i]\n        }\n      }\n    }\n  }\n\n  *rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.head; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.tail) {\n          break\n        } else {\n          i = this.next[i]\n        }\n      }\n    }\n  }\n\n  isValidIndex(index) {\n    return this.keyMap.get(this.keyList[index]) === index\n  }\n\n  *entries() {\n    for (const i of this.indexes()) {\n      yield [this.keyList[i], this.valList[i]]\n    }\n  }\n  *rentries() {\n    for (const i of this.rindexes()) {\n      yield [this.keyList[i], this.valList[i]]\n    }\n  }\n\n  *keys() {\n    for (const i of this.indexes()) {\n      yield this.keyList[i]\n    }\n  }\n  *rkeys() {\n    for (const i of this.rindexes()) {\n      yield this.keyList[i]\n    }\n  }\n\n  *values() {\n    for (const i of this.indexes()) {\n      yield this.valList[i]\n    }\n  }\n  *rvalues() {\n    for (const i of this.rindexes()) {\n      yield this.valList[i]\n    }\n  }\n\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  find(fn, getOptions = {}) {\n    for (const i of this.indexes()) {\n      if (fn(this.valList[i], this.keyList[i], this)) {\n        return this.get(this.keyList[i], getOptions)\n      }\n    }\n  }\n\n  forEach(fn, thisp = this) {\n    for (const i of this.indexes()) {\n      fn.call(thisp, this.valList[i], this.keyList[i], this)\n    }\n  }\n\n  rforEach(fn, thisp = this) {\n    for (const i of this.rindexes()) {\n      fn.call(thisp, this.valList[i], this.keyList[i], this)\n    }\n  }\n\n  get prune() {\n    deprecatedMethod('prune', 'purgeStale')\n    return this.purgeStale\n  }\n\n  purgeStale() {\n    let deleted = false\n    for (const i of this.rindexes({ allowStale: true })) {\n      if (this.isStale(i)) {\n        this.delete(this.keyList[i])\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  dump() {\n    const arr = []\n    for (const i of this.indexes({ allowStale: true })) {\n      const key = this.keyList[i]\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      const entry = { value }\n      if (this.ttls) {\n        entry.ttl = this.ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = perf.now() - this.starts[i]\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.sizes) {\n        entry.size = this.sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  load(arr) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset.\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  dispose(v, k, reason) {}\n\n  set(\n    k,\n    v,\n    {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n    } = {}\n  ) {\n    size = this.requireSize(k, v, size, sizeCalculation)\n    let index = this.size === 0 ? undefined : this.keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = this.newIndex()\n      this.keyList[index] = k\n      this.valList[index] = v\n      this.keyMap.set(k, index)\n      this.next[this.tail] = index\n      this.prev[index] = this.tail\n      this.tail = index\n      this.size++\n      this.addItemSize(index, v, k, size)\n      noUpdateTTL = false\n    } else {\n      // update\n      const oldVal = this.valList[index]\n      if (v !== oldVal) {\n        if (this.isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort()\n        } else {\n          if (!noDisposeOnSet) {\n            this.dispose(oldVal, k, 'set')\n            if (this.disposeAfter) {\n              this.disposed.push([oldVal, k, 'set'])\n            }\n          }\n        }\n        this.removeItemSize(index)\n        this.valList[index] = v\n        this.addItemSize(index, v, k, size)\n      }\n      this.moveToTail(index)\n    }\n    if (ttl !== 0 && this.ttl === 0 && !this.ttls) {\n      this.initializeTTLTracking()\n    }\n    if (!noUpdateTTL) {\n      this.setItemTTL(index, ttl, start)\n    }\n    if (this.disposeAfter) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return this\n  }\n\n  newIndex() {\n    if (this.size === 0) {\n      return this.tail\n    }\n    if (this.size === this.max && this.max !== 0) {\n      return this.evict(false)\n    }\n    if (this.free.length !== 0) {\n      return this.free.pop()\n    }\n    // initial fill, just keep writing down the list\n    return this.initialFill++\n  }\n\n  pop() {\n    if (this.size) {\n      const val = this.valList[this.head]\n      this.evict(true)\n      return val\n    }\n  }\n\n  evict(free) {\n    const head = this.head\n    const k = this.keyList[head]\n    const v = this.valList[head]\n    if (this.isBackgroundFetch(v)) {\n      v.__abortController.abort()\n    } else {\n      this.dispose(v, k, 'evict')\n      if (this.disposeAfter) {\n        this.disposed.push([v, k, 'evict'])\n      }\n    }\n    this.removeItemSize(head)\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.keyList[head] = null\n      this.valList[head] = null\n      this.free.push(head)\n    }\n    this.head = this.next[head]\n    this.keyMap.delete(k)\n    this.size--\n    return head\n  }\n\n  has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      if (!this.isStale(index)) {\n        if (updateAgeOnHas) {\n          this.updateItemAge(index)\n        }\n        return true\n      }\n    }\n    return false\n  }\n\n  // like get(), but without any LRU updating or TTL expiration\n  peek(k, { allowStale = this.allowStale } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined && (allowStale || !this.isStale(index))) {\n      return this.valList[index]\n    }\n  }\n\n  backgroundFetch(k, index, options, context) {\n    const v = index === undefined ? undefined : this.valList[index]\n    if (this.isBackgroundFetch(v)) {\n      return v\n    }\n    const ac = new AC()\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n    const cb = v => {\n      if (!ac.signal.aborted) {\n        this.set(k, v, fetchOpts.options)\n      }\n      return v\n    }\n    const eb = er => {\n      if (this.valList[index] === p) {\n        const del =\n          !options.noDeleteOnFetchRejection ||\n          p.__staleWhileFetching === undefined\n        if (del) {\n          this.delete(k)\n        } else {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          this.valList[index] = p.__staleWhileFetching\n        }\n      }\n      if (p.__returned === p) {\n        throw er\n      }\n    }\n    const pcall = res => res(this.fetchMethod(k, v, fetchOpts))\n    const p = new Promise(pcall).then(cb, eb)\n    p.__abortController = ac\n    p.__staleWhileFetching = v\n    p.__returned = null\n    if (index === undefined) {\n      this.set(k, p, fetchOpts.options)\n      index = this.keyMap.get(k)\n    } else {\n      this.valList[index] = p\n    }\n    return p\n  }\n\n  isBackgroundFetch(p) {\n    return (\n      p &&\n      typeof p === 'object' &&\n      typeof p.then === 'function' &&\n      Object.prototype.hasOwnProperty.call(\n        p,\n        '__staleWhileFetching'\n      ) &&\n      Object.prototype.hasOwnProperty.call(p, '__returned') &&\n      (p.__returned === p || p.__returned === null)\n    )\n  }\n\n  // this takes the union of get() and set() opts, because it does both\n  async fetch(\n    k,\n    {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      fetchContext = this.fetchContext,\n    } = {}\n  ) {\n    if (!this.fetchMethod) {\n      return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n    }\n\n    let index = this.keyMap.get(k)\n    if (index === undefined) {\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        return allowStale && v.__staleWhileFetching !== undefined\n          ? v.__staleWhileFetching\n          : (v.__returned = v)\n      }\n\n      if (!this.isStale(index)) {\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return v\n      }\n\n      // ok, it is stale, and not already fetching\n      // refresh the cache.\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return allowStale && p.__staleWhileFetching !== undefined\n        ? p.__staleWhileFetching\n        : (p.__returned = p)\n    }\n  }\n\n  get(\n    k,\n    {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n    } = {}\n  ) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.valList[index]\n      const fetching = this.isBackgroundFetch(value)\n      if (this.isStale(index)) {\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.delete(k)\n          }\n          return allowStale ? value : undefined\n        } else {\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching,\n        // so we just return undefined\n        if (fetching) {\n          return undefined\n        }\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return value\n      }\n    }\n  }\n\n  connect(p, n) {\n    this.prev[n] = p\n    this.next[p] = n\n  }\n\n  moveToTail(index) {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.tail) {\n      if (index === this.head) {\n        this.head = this.next[index]\n      } else {\n        this.connect(this.prev[index], this.next[index])\n      }\n      this.connect(this.tail, index)\n      this.tail = index\n    }\n  }\n\n  get del() {\n    deprecatedMethod('del', 'delete')\n    return this.delete\n  }\n\n  delete(k) {\n    let deleted = false\n    if (this.size !== 0) {\n      const index = this.keyMap.get(k)\n      if (index !== undefined) {\n        deleted = true\n        if (this.size === 1) {\n          this.clear()\n        } else {\n          this.removeItemSize(index)\n          const v = this.valList[index]\n          if (this.isBackgroundFetch(v)) {\n            v.__abortController.abort()\n          } else {\n            this.dispose(v, k, 'delete')\n            if (this.disposeAfter) {\n              this.disposed.push([v, k, 'delete'])\n            }\n          }\n          this.keyMap.delete(k)\n          this.keyList[index] = null\n          this.valList[index] = null\n          if (index === this.tail) {\n            this.tail = this.prev[index]\n          } else if (index === this.head) {\n            this.head = this.next[index]\n          } else {\n            this.next[this.prev[index]] = this.next[index]\n            this.prev[this.next[index]] = this.prev[index]\n          }\n          this.size--\n          this.free.push(index)\n        }\n      }\n    }\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return deleted\n  }\n\n  clear() {\n    for (const index of this.rindexes({ allowStale: true })) {\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        v.__abortController.abort()\n      } else {\n        const k = this.keyList[index]\n        this.dispose(v, k, 'delete')\n        if (this.disposeAfter) {\n          this.disposed.push([v, k, 'delete'])\n        }\n      }\n    }\n\n    this.keyMap.clear()\n    this.valList.fill(null)\n    this.keyList.fill(null)\n    if (this.ttls) {\n      this.ttls.fill(0)\n      this.starts.fill(0)\n    }\n    if (this.sizes) {\n      this.sizes.fill(0)\n    }\n    this.head = 0\n    this.tail = 0\n    this.initialFill = 1\n    this.free.length = 0\n    this.calculatedSize = 0\n    this.size = 0\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n  }\n\n  get reset() {\n    deprecatedMethod('reset', 'clear')\n    return this.clear\n  }\n\n  get length() {\n    deprecatedProperty('length', 'size')\n    return this.size\n  }\n\n  static get AbortController() {\n    return AC\n  }\n  static get AbortSignal() {\n    return AS\n  }\n}\n\nmodule.exports = LRUCache\n", "module.exports = encode\n\nvar MSB = 0x80\n  , REST = 0x7F\n  , MSBALL = ~REST\n  , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n  if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n    encode.bytes = 0\n    throw new RangeError('Could not encode varint')\n  }\n  out = out || []\n  offset = offset || 0\n  var oldOffset = offset\n\n  while(num >= INT) {\n    out[offset++] = (num & 0xFF) | MSB\n    num /= 128\n  }\n  while(num & MSBALL) {\n    out[offset++] = (num & 0xFF) | MSB\n    num >>>= 7\n  }\n  out[offset] = num | 0\n  \n  encode.bytes = offset - oldOffset + 1\n  \n  return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n  , REST = 0x7F\n\nfunction read(buf, offset) {\n  var res    = 0\n    , offset = offset || 0\n    , shift  = 0\n    , counter = offset\n    , b\n    , l = buf.length\n\n  do {\n    if (counter >= l || shift > 49) {\n      read.bytes = 0\n      throw new RangeError('Could not decode varint')\n    }\n    b = buf[counter++]\n    res += shift < 28\n      ? (b & REST) << shift\n      : (b & REST) * Math.pow(2, shift)\n    shift += 7\n  } while (b >= MSB)\n\n  read.bytes = counter - offset\n\n  return res\n}\n", "\nvar N1 = Math.pow(2,  7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n  return (\n    value < N1 ? 1\n  : value < N2 ? 2\n  : value < N3 ? 3\n  : value < N4 ? 4\n  : value < N5 ? 5\n  : value < N6 ? 6\n  : value < N7 ? 7\n  : value < N8 ? 8\n  : value < N9 ? 9\n  :              10\n  )\n}\n", "module.exports = {\n    encode: require('./encode.js')\n  , decode: require('./decode.js')\n  , encodingLength: require('./length.js')\n}\n", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "\"use strict\";\n\nvar EC = require(\"elliptic\").ec;\n\nvar ec = new EC(\"secp256k1\");\nvar browserCrypto = global.crypto || global.msCrypto || {};\nvar subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n\nvar nodeCrypto = require('crypto');\n\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex');\nconst ZERO32 = Buffer.alloc(32, 0);\n\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || \"Assertion failed\");\n  }\n}\n\nfunction isScalar (x) {\n  return Buffer.isBuffer(x) && x.length === 32;\n}\n\nfunction isValidPrivateKey(privateKey) {\n  if (!isScalar(privateKey))\n  {\n    return false;\n  }\n  return privateKey.compare(ZERO32) > 0 && // > 0\n  privateKey.compare(EC_GROUP_ORDER) < 0; // < G\n}\n\n// Compare two buffers in constant time to prevent timing attacks.\nfunction equalConstTime(b1, b2) {\n  if (b1.length !== b2.length) {\n    return false;\n  }\n  var res = 0;\n  for (var i = 0; i < b1.length; i++) {\n    res |= b1[i] ^ b2[i];  // jshint ignore:line\n  }\n  return res === 0;\n}\n\n/* This must check if we're in the browser or\nnot, since the functions are different and does\nnot convert using browserify */\nfunction randomBytes(size) {\n  var arr = new Uint8Array(size);\n  if (typeof browserCrypto.getRandomValues === 'undefined') {\n    return Buffer.from(nodeCrypto.randomBytes(size));\n  } else {\n    browserCrypto.getRandomValues(arr);\n  }\n  return Buffer.from(arr);\n}\n\nfunction sha512(msg) {\n  return new Promise(function(resolve) {\n    var hash = nodeCrypto.createHash('sha512');\n    var result = hash.update(msg).digest();\n    resolve(new Uint8Array(result));\n  });\n}\n\nfunction getAes(op) {\n  return function(iv, key, data) {\n    return new Promise(function(resolve) {\n      if (subtle) {\n        var importAlgorithm = {name: \"AES-CBC\"};\n        var keyp = subtle.importKey(\"raw\", key, importAlgorithm, false, [op]);\n        return keyp.then(function(cryptoKey) {\n          var encAlgorithm = {name: \"AES-CBC\", iv: iv};\n          return subtle[op](encAlgorithm, cryptoKey, data);\n        }).then(function(result) {\n          resolve(Buffer.from(new Uint8Array(result)));\n        });\n      } else {\n        if (op === 'encrypt') {\n          var cipher = nodeCrypto.createCipheriv('aes-256-cbc', key, iv);\n          let firstChunk = cipher.update(data);\n          let secondChunk = cipher.final();\n          resolve(Buffer.concat([firstChunk, secondChunk]));\n        }\n        else if (op === 'decrypt') {\n          var decipher = nodeCrypto.createDecipheriv('aes-256-cbc', key, iv);\n          let firstChunk = decipher.update(data);\n          let secondChunk = decipher.final();\n          resolve(Buffer.concat([firstChunk, secondChunk]));\n        }\n      }\n    });\n  };\n}\n\nvar aesCbcEncrypt = getAes(\"encrypt\");\nvar aesCbcDecrypt = getAes(\"decrypt\");\n\nfunction hmacSha256Sign(key, msg) {\n  return new Promise(function(resolve) {\n    var hmac = nodeCrypto.createHmac('sha256', Buffer.from(key));\n    hmac.update(msg);\n    var result = hmac.digest();\n    resolve(result);\n  });\n}\n\nfunction hmacSha256Verify(key, msg, sig) {\n  return new Promise(function(resolve) {\n    var hmac = nodeCrypto.createHmac('sha256', Buffer.from(key));\n    hmac.update(msg);\n    var expectedSig = hmac.digest();\n    resolve(equalConstTime(expectedSig, sig));\n  });\n}\n\n/**\n  * Generate a new valid private key. Will use the window.crypto or window.msCrypto as source\n  * depending on your browser.\n  * @return {Buffer} A 32-byte private key.\n  * @function\n  */\nexports.generatePrivate = function () {\n  var privateKey = randomBytes(32);\n  while (!isValidPrivateKey(privateKey)) {\n    privateKey = randomBytes(32);\n  }\n  return privateKey;\n};\n\nvar getPublic = exports.getPublic = function(privateKey) {\n  // This function has sync API so we throw an error immediately.\n  assert(privateKey.length === 32, \"Bad private key\");\n  assert(isValidPrivateKey(privateKey), \"Bad private key\");\n  // XXX(Kagami): `elliptic.utils.encode` returns array for every\n  // encoding except `hex`.\n  return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(\"arr\"));\n};\n\n/**\n * Get compressed version of public key.\n */\nvar getPublicCompressed = exports.getPublicCompressed = function(privateKey) { // jshint ignore:line\n  assert(privateKey.length === 32, \"Bad private key\");\n  assert(isValidPrivateKey(privateKey), \"Bad private key\");\n  // See https://github.com/wanderer/secp256k1-node/issues/46\n  let compressed = true;\n  return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, \"arr\"));\n};\n\n// NOTE(Kagami): We don't use promise shim in Browser implementation\n// because it's supported natively in new browsers (see\n// <http://caniuse.com/#feat=promises>) and we can use only new browsers\n// because of the WebCryptoAPI (see\n// <http://caniuse.com/#feat=cryptography>).\nexports.sign = function(privateKey, msg) {\n  return new Promise(function(resolve) {\n    assert(privateKey.length === 32, \"Bad private key\");\n    assert(isValidPrivateKey(privateKey), \"Bad private key\");\n    assert(msg.length > 0, \"Message should not be empty\");\n    assert(msg.length <= 32, \"Message is too long\");\n    resolve(Buffer.from(ec.sign(msg, privateKey, {canonical: true}).toDER()));\n  });\n};\n\nexports.verify = function(publicKey, msg, sig) {\n  return new Promise(function(resolve, reject) {\n    assert(publicKey.length === 65 || publicKey.length === 33, \"Bad public key\");\n    if (publicKey.length === 65)\n    {\n      assert(publicKey[0] === 4, \"Bad public key\");\n    }\n    if (publicKey.length === 33)\n    {\n      assert(publicKey[0] === 2 || publicKey[0] === 3, \"Bad public key\");\n    }\n    assert(msg.length > 0, \"Message should not be empty\");\n    assert(msg.length <= 32, \"Message is too long\");\n    if (ec.verify(msg, sig, publicKey)) {\n      resolve(null);\n    } else {\n      reject(new Error(\"Bad signature\"));\n    }\n  });\n};\n\nvar derive = exports.derive = function(privateKeyA, publicKeyB) {\n  return new Promise(function(resolve) {\n    assert(Buffer.isBuffer(privateKeyA), \"Bad private key\");\n    assert(Buffer.isBuffer(publicKeyB), \"Bad public key\");\n    assert(privateKeyA.length === 32, \"Bad private key\");\n    assert(isValidPrivateKey(privateKeyA), \"Bad private key\");\n    assert(publicKeyB.length === 65 || publicKeyB.length === 33, \"Bad public key\");\n    if (publicKeyB.length === 65)\n    {\n      assert(publicKeyB[0] === 4, \"Bad public key\");\n    }\n    if (publicKeyB.length === 33)\n    {\n      assert(publicKeyB[0] === 2 || publicKeyB[0] === 3, \"Bad public key\");\n    }\n    var keyA = ec.keyFromPrivate(privateKeyA);\n    var keyB = ec.keyFromPublic(publicKeyB);\n    var Px = keyA.derive(keyB.getPublic());  // BN instance\n    resolve(Buffer.from(Px.toArray()));\n  });\n};\n\nexports.encrypt = function(publicKeyTo, msg, opts) {\n  opts = opts || {};\n  // Tmp variables to save context from flat promises;\n  var iv, ephemPublicKey, ciphertext, macKey;\n  return new Promise(function(resolve) {\n    var ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n    // There is a very unlikely possibility that it is not a valid key\n    while(!isValidPrivateKey(ephemPrivateKey))\n    {\n      ephemPrivateKey = opts.ephemPrivateKey || randomBytes(32);\n    }\n    ephemPublicKey = getPublic(ephemPrivateKey);\n    resolve(derive(ephemPrivateKey, publicKeyTo));\n  }).then(function(Px) {\n    return sha512(Px);\n  }).then(function(hash) {\n    iv = opts.iv || randomBytes(16);\n    var encryptionKey = hash.slice(0, 32);\n    macKey = hash.slice(32);\n    return aesCbcEncrypt(iv, encryptionKey, msg);\n  }).then(function(data) {\n    ciphertext = data;\n    var dataToMac = Buffer.concat([iv, ephemPublicKey, ciphertext]);\n    return hmacSha256Sign(macKey, dataToMac);\n  }).then(function(mac) {\n    return {\n      iv: iv,\n      ephemPublicKey: ephemPublicKey,\n      ciphertext: ciphertext,\n      mac: mac,\n    };\n  });\n};\n\nexports.decrypt = function(privateKey, opts) {\n  // Tmp variable to save context from flat promises;\n  var encryptionKey;\n  return derive(privateKey, opts.ephemPublicKey).then(function(Px) {\n    return sha512(Px);\n  }).then(function(hash) {\n    encryptionKey = hash.slice(0, 32);\n    var macKey = hash.slice(32);\n    var dataToMac = Buffer.concat([\n      opts.iv,\n      opts.ephemPublicKey,\n      opts.ciphertext\n    ]);\n    return hmacSha256Verify(macKey, dataToMac, opts.mac);\n  }).then(function(macGood) {\n    assert(macGood, \"Bad MAC\");\n    return aesCbcDecrypt(opts.iv, encryptionKey, opts.ciphertext);\n  }).then(function(msg) {\n    return Buffer.from(new Uint8Array(msg));\n  });\n};\n\n", "/* eslint-disable max-len */\n\n\n// export everything that we want to be consumable\nexport type { DwnConfig } from './dwn.js';\nexport type { DwnServiceEndpoint, ServiceEndpoint, DidDocument, DidResolutionResult, DidResolutionMetadata, DidDocumentMetadata, VerificationMethod } from './did/did-resolver.js';\nexport type { EventLog, Event } from './event-log/event-log.js';\nexport type { EventsGetMessage, EventsGetReply } from './interfaces/events/types.js';\nexport type { HooksWriteMessage } from './interfaces/hooks/types.js';\nexport type { MessagesGetMessage, MessagesGetReply } from './interfaces/messages/types.js';\nexport type { ProtocolsConfigureDescriptor, ProtocolDefinition, ProtocolRuleSet, ProtocolsQueryFilter, ProtocolsConfigureMessage, ProtocolsQueryMessage } from './interfaces/protocols/types.js';\nexport type { EncryptionProperty, RecordsDeleteMessage, RecordsQueryMessage, RecordsQueryReplyEntry, RecordsReadReply, RecordsWriteDescriptor, RecordsWriteMessage } from './interfaces/records/types.js';\nexport { AllowAllTenantGate, TenantGate } from './core/tenant-gate.js';\nexport { Cid } from './utils/cid.js';\nexport { DataStore } from './store/data-store.js';\nexport { DataStoreLevel } from './store/data-store-level.js';\nexport { DateSort } from './interfaces/records/messages/records-query.js';\nexport { DataStream } from './utils/data-stream.js';\nexport { DerivedPrivateJwk, HdKey, KeyDerivationScheme } from './utils/hd-key.js';\nexport { DidKeyResolver } from './did/did-key-resolver.js';\nexport { DidIonResolver } from './did/did-ion-resolver.js';\nexport { DidResolver, DidMethodResolver } from './did/did-resolver.js';\nexport { Dwn } from './dwn.js';\nexport { DwnConstant } from './core/dwn-constant.js';\nexport { DwnError, DwnErrorCode } from './core/dwn-error.js';\nexport { DwnInterfaceName, DwnMethodName } from './core/message.js';\nexport { Encoder } from './utils/encoder.js';\nexport { EventLogLevel } from './event-log/event-log-level.js';\nexport { EventsGet, EventsGetOptions } from './interfaces/events/messages/events-get.js';\nexport { Encryption, EncryptionAlgorithm } from './utils/encryption.js';\nexport { EncryptionInput, KeyEncryptionInput, RecordsWrite, RecordsWriteOptions, CreateFromOptions } from './interfaces/records/messages/records-write.js';\nexport { HooksWrite, HooksWriteOptions } from './interfaces/hooks/messages/hooks-write.js';\nexport { Jws } from './utils/jws.js';\nexport { KeyMaterial, PrivateJwk, PublicJwk } from './jose/types.js';\nexport { Message } from './core/message.js';\nexport { MessagesGet, MessagesGetOptions } from './interfaces/messages/messages/messages-get.js';\nexport { MessageReply } from './core/message-reply.js';\nexport { MessageStore } from './store/message-store.js';\nexport { MessageStoreLevel } from './store/message-store-level.js';\nexport { ProtocolsConfigure, ProtocolsConfigureOptions } from './interfaces/protocols/messages/protocols-configure.js';\nexport { ProtocolsQuery, ProtocolsQueryOptions } from './interfaces/protocols/messages/protocols-query.js';\nexport { Records } from './utils/records.js';\nexport { RecordsDelete, RecordsDeleteOptions } from './interfaces/records/messages/records-delete.js';\nexport { RecordsQuery, RecordsQueryOptions } from './interfaces/records/messages/records-query.js';\nexport { RecordsRead, RecordsReadOptions } from './interfaces/records/messages/records-read.js';\nexport { Secp256k1 } from './utils/secp256k1.js';\nexport { SignatureInput } from './jose/jws/general/types.js';", "/**\n * An interface that determines if a DID is a tenant of the DWN.\n */\nexport interface TenantGate {\n  /**\n   * @returns `true` if the given DID is a tenant of the DWN; `false` otherwise\n   */\n  isTenant(did: string): Promise<boolean>;\n}\n\n/**\n * A tenant gate that treats every DID as a tenant.\n */\nexport class AllowAllTenantGate implements TenantGate {\n  public async isTenant(_did: string): Promise<boolean> {\n    return true;\n  }\n}", "import * as cbor from '@ipld/dag-cbor';\n\nimport type { Readable } from 'readable-stream';\n\nimport { CID } from 'multiformats/cid';\nimport { importer } from 'ipfs-unixfs-importer';\nimport { MemoryBlockstore } from 'blockstore-core';\nimport { sha256 } from 'multiformats/hashes/sha2';\n\n// a map of all supported CID hashing algorithms. This map is used to select the appropriate hasher\n// when generating a CID to compare against a provided CID\nconst hashers = {\n  [sha256.code as number]: sha256,\n};\n\n// a map of all support codecs.This map is used to select the appropriate codec\n// when generating a CID to compare against a provided CID\nconst codecs = {\n  [cbor.code as number]: cbor\n};\n\n/**\n * Computes a V1 CID for the provided payload\n * @param payload\n * @param codecCode - the codec to use. Defaults to cbor\n * @param multihashCode - the multihasher to use. Defaults to sha256\n * @returns payload CID\n * @throws {Error} codec is not supported\n * @throws {Error} encoding fails\n * @throws {Error} if hasher is not supported\n */\nexport async function computeCid(\n  payload: any,\n  codecCode: number = cbor.code,\n  multihashCode: number = sha256.code\n): Promise<string> {\n  const codec = codecs[codecCode];\n  if (!codec) {\n    throw new Error(`codec [${codecCode}] not supported`);\n  }\n\n  const hasher = hashers[multihashCode];\n  if (!hasher) {\n    throw new Error(`multihash code [${multihashCode}] not supported`);\n  }\n\n  const payloadBytes = codec.encode(payload);\n  const payloadHash = await hasher.digest(payloadBytes);\n\n  const cid = await CID.createV1(codec.code, payloadHash);\n  return cid.toString();\n}\n\nexport function parseCid(str: string): CID {\n  const cid: CID = CID.parse(str).toV1();\n\n  if (!codecs[cid.code]) {\n    throw new Error(`codec [${cid.code}] not supported`);\n  }\n\n  if (!hashers[cid.multihash.code]) {\n    throw new Error(`multihash code [${cid.multihash.code}] not supported`);\n  }\n\n  return cid;\n}\n\n\n/**\n * Utility class for creating CIDs. Exported for the convenience of developers.\n */\nexport class Cid {\n  /**\n   * @returns V1 CID of the DAG comprised by chunking data into unixfs DAG-PB encoded blocks\n   */\n  public static async computeDagPbCidFromBytes(content: Uint8Array): Promise<string> {\n    const asyncDataBlocks = importer([{ content }], new MemoryBlockstore(), { cidVersion: 1 });\n\n    // NOTE: the last block contains the root CID\n    let block;\n    for await (block of asyncDataBlocks) { ; }\n\n    return block ? block.cid.toString() : '';\n  }\n\n  /**\n   * @returns V1 CID of the DAG comprised by chunking data into unixfs DAG-PB encoded blocks\n   */\n  public static async computeDagPbCidFromStream(dataStream: Readable): Promise<string> {\n    const asyncDataBlocks = importer([{ content: dataStream }], new MemoryBlockstore(), { cidVersion: 1 });\n\n    // NOTE: the last block contains the root CID\n    let block;\n    for await (block of asyncDataBlocks) { ; }\n\n    return block ? block.cid.toString() : '';\n  }\n}\n", "import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n  if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n    return null // any other kind of object\n  }\n  const cid = CID.asCID(obj)\n  /* c8 ignore next 4 */\n  // very unlikely case, and it'll probably throw a recursion error in cborg\n  if (!cid) {\n    return null\n  }\n  const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n  bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n  return [\n    new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n    new cborg.Token(cborg.Type.bytes, bytes)\n  ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n  throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n  if (Number.isNaN(num)) {\n    throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n  }\n  if (num === Infinity || num === -Infinity) {\n    throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n  }\n  return null\n}\n\nconst encodeOptions = {\n  float64: true,\n  typeEncoders: {\n    Object: cidEncoder,\n    undefined: undefinedEncoder,\n    number: numberEncoder\n  }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\n */\nfunction cidDecoder (bytes) {\n  if (bytes[0] !== 0) {\n    throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n  }\n  return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n}\n\nconst decodeOptions = {\n  allowIndefinite: false,\n  coerceUndefinedToNull: true,\n  allowNaN: false,\n  allowInfinity: false,\n  allowBigInt: true, // this will lead to BigInt for ints outside of\n  // safe-integer range, which may surprise users\n  strict: true,\n  useMaps: false,\n  rejectDuplicateMapKeys: true,\n  /** @type {import('cborg').TagDecoder[]} */\n  tags: []\n}\ndecodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => cborg.encode(node, encodeOptions)\n\n/**\n * @template T\n * @param {ByteView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(data, decodeOptions)\n", "import { encode } from './lib/encode.js';\nimport { decode } from './lib/decode.js';\nimport {\n  Token,\n  Type\n} from './lib/token.js';\nexport {\n  decode,\n  encode,\n  Token,\n  Type\n};", "import { is } from './is.js';\nimport {\n  Token,\n  Type\n} from './token.js';\nimport { Bl } from './bl.js';\nimport { encodeErrPrefix } from './common.js';\nimport { quickEncodeToken } from './jump.js';\nimport { asU8A } from './byte-utils.js';\nimport { encodeUint } from './0uint.js';\nimport { encodeNegint } from './1negint.js';\nimport { encodeBytes } from './2bytes.js';\nimport { encodeString } from './3string.js';\nimport { encodeArray } from './4array.js';\nimport { encodeMap } from './5map.js';\nimport { encodeTag } from './6tag.js';\nimport { encodeFloat } from './7float.js';\nconst defaultEncodeOptions = {\n  float64: false,\n  mapSorter,\n  quickEncodeToken\n};\nexport function makeCborEncoders() {\n  const encoders = [];\n  encoders[Type.uint.major] = encodeUint;\n  encoders[Type.negint.major] = encodeNegint;\n  encoders[Type.bytes.major] = encodeBytes;\n  encoders[Type.string.major] = encodeString;\n  encoders[Type.array.major] = encodeArray;\n  encoders[Type.map.major] = encodeMap;\n  encoders[Type.tag.major] = encodeTag;\n  encoders[Type.float.major] = encodeFloat;\n  return encoders;\n}\nconst cborEncoders = makeCborEncoders();\nconst buf = new Bl();\nclass Ref {\n  constructor(obj, parent) {\n    this.obj = obj;\n    this.parent = parent;\n  }\n  includes(obj) {\n    let p = this;\n    do {\n      if (p.obj === obj) {\n        return true;\n      }\n    } while (p = p.parent);\n    return false;\n  }\n  static createCheck(stack, obj) {\n    if (stack && stack.includes(obj)) {\n      throw new Error(`${ encodeErrPrefix } object contains circular references`);\n    }\n    return new Ref(obj, stack);\n  }\n}\nconst simpleTokens = {\n  null: new Token(Type.null, null),\n  undefined: new Token(Type.undefined, undefined),\n  true: new Token(Type.true, true),\n  false: new Token(Type.false, false),\n  emptyArray: new Token(Type.array, 0),\n  emptyMap: new Token(Type.map, 0)\n};\nconst typeEncoders = {\n  number(obj, _typ, _options, _refStack) {\n    if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n      return new Token(Type.float, obj);\n    } else if (obj >= 0) {\n      return new Token(Type.uint, obj);\n    } else {\n      return new Token(Type.negint, obj);\n    }\n  },\n  bigint(obj, _typ, _options, _refStack) {\n    if (obj >= BigInt(0)) {\n      return new Token(Type.uint, obj);\n    } else {\n      return new Token(Type.negint, obj);\n    }\n  },\n  Uint8Array(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, obj);\n  },\n  string(obj, _typ, _options, _refStack) {\n    return new Token(Type.string, obj);\n  },\n  boolean(obj, _typ, _options, _refStack) {\n    return obj ? simpleTokens.true : simpleTokens.false;\n  },\n  null(_obj, _typ, _options, _refStack) {\n    return simpleTokens.null;\n  },\n  undefined(_obj, _typ, _options, _refStack) {\n    return simpleTokens.undefined;\n  },\n  ArrayBuffer(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, new Uint8Array(obj));\n  },\n  DataView(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength));\n  },\n  Array(obj, _typ, options, refStack) {\n    if (!obj.length) {\n      if (options.addBreakTokens === true) {\n        return [\n          simpleTokens.emptyArray,\n          new Token(Type.break)\n        ];\n      }\n      return simpleTokens.emptyArray;\n    }\n    refStack = Ref.createCheck(refStack, obj);\n    const entries = [];\n    let i = 0;\n    for (const e of obj) {\n      entries[i++] = objectToTokens(e, options, refStack);\n    }\n    if (options.addBreakTokens) {\n      return [\n        new Token(Type.array, obj.length),\n        entries,\n        new Token(Type.break)\n      ];\n    }\n    return [\n      new Token(Type.array, obj.length),\n      entries\n    ];\n  },\n  Object(obj, typ, options, refStack) {\n    const isMap = typ !== 'Object';\n    const keys = isMap ? obj.keys() : Object.keys(obj);\n    const length = isMap ? obj.size : keys.length;\n    if (!length) {\n      if (options.addBreakTokens === true) {\n        return [\n          simpleTokens.emptyMap,\n          new Token(Type.break)\n        ];\n      }\n      return simpleTokens.emptyMap;\n    }\n    refStack = Ref.createCheck(refStack, obj);\n    const entries = [];\n    let i = 0;\n    for (const key of keys) {\n      entries[i++] = [\n        objectToTokens(key, options, refStack),\n        objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n      ];\n    }\n    sortMapEntries(entries, options);\n    if (options.addBreakTokens) {\n      return [\n        new Token(Type.map, length),\n        entries,\n        new Token(Type.break)\n      ];\n    }\n    return [\n      new Token(Type.map, length),\n      entries\n    ];\n  }\n};\ntypeEncoders.Map = typeEncoders.Object;\ntypeEncoders.Buffer = typeEncoders.Uint8Array;\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n  typeEncoders[`${ typ }Array`] = typeEncoders.DataView;\n}\nfunction objectToTokens(obj, options = {}, refStack) {\n  const typ = is(obj);\n  const customTypeEncoder = options && options.typeEncoders && options.typeEncoders[typ] || typeEncoders[typ];\n  if (typeof customTypeEncoder === 'function') {\n    const tokens = customTypeEncoder(obj, typ, options, refStack);\n    if (tokens != null) {\n      return tokens;\n    }\n  }\n  const typeEncoder = typeEncoders[typ];\n  if (!typeEncoder) {\n    throw new Error(`${ encodeErrPrefix } unsupported type: ${ typ }`);\n  }\n  return typeEncoder(obj, typ, options, refStack);\n}\nfunction sortMapEntries(entries, options) {\n  if (options.mapSorter) {\n    entries.sort(options.mapSorter);\n  }\n}\nfunction mapSorter(e1, e2) {\n  const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];\n  const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];\n  if (keyToken1.type !== keyToken2.type) {\n    return keyToken1.type.compare(keyToken2.type);\n  }\n  const major = keyToken1.type.major;\n  const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);\n  if (tcmp === 0) {\n    console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone');\n  }\n  return tcmp;\n}\nfunction tokensToEncoded(buf, tokens, encoders, options) {\n  if (Array.isArray(tokens)) {\n    for (const token of tokens) {\n      tokensToEncoded(buf, token, encoders, options);\n    }\n  } else {\n    encoders[tokens.type.major](buf, tokens, options);\n  }\n}\nfunction encodeCustom(data, encoders, options) {\n  const tokens = objectToTokens(data, options);\n  if (!Array.isArray(tokens) && options.quickEncodeToken) {\n    const quickBytes = options.quickEncodeToken(tokens);\n    if (quickBytes) {\n      return quickBytes;\n    }\n    const encoder = encoders[tokens.type.major];\n    if (encoder.encodedSize) {\n      const size = encoder.encodedSize(tokens, options);\n      const buf = new Bl(size);\n      encoder(buf, tokens, options);\n      if (buf.chunks.length !== 1) {\n        throw new Error(`Unexpected error: pre-calculated length for ${ tokens } was wrong`);\n      }\n      return asU8A(buf.chunks[0]);\n    }\n  }\n  buf.reset();\n  tokensToEncoded(buf, tokens, encoders, options);\n  return buf.toBytes(true);\n}\nfunction encode(data, options) {\n  options = Object.assign({}, defaultEncodeOptions, options);\n  return encodeCustom(data, cborEncoders, options);\n}\nexport {\n  objectToTokens,\n  encode,\n  encodeCustom,\n  Ref\n};", "const typeofs = [\n  'string',\n  'number',\n  'bigint',\n  'symbol'\n];\nconst objectTypeNames = [\n  'Function',\n  'Generator',\n  'AsyncGenerator',\n  'GeneratorFunction',\n  'AsyncGeneratorFunction',\n  'AsyncFunction',\n  'Observable',\n  'Array',\n  'Buffer',\n  'Object',\n  'RegExp',\n  'Date',\n  'Error',\n  'Map',\n  'Set',\n  'WeakMap',\n  'WeakSet',\n  'ArrayBuffer',\n  'SharedArrayBuffer',\n  'DataView',\n  'Promise',\n  'URL',\n  'HTMLElement',\n  'Int8Array',\n  'Uint8Array',\n  'Uint8ClampedArray',\n  'Int16Array',\n  'Uint16Array',\n  'Int32Array',\n  'Uint32Array',\n  'Float32Array',\n  'Float64Array',\n  'BigInt64Array',\n  'BigUint64Array'\n];\nexport function is(value) {\n  if (value === null) {\n    return 'null';\n  }\n  if (value === undefined) {\n    return 'undefined';\n  }\n  if (value === true || value === false) {\n    return 'boolean';\n  }\n  const typeOf = typeof value;\n  if (typeofs.includes(typeOf)) {\n    return typeOf;\n  }\n  if (typeOf === 'function') {\n    return 'Function';\n  }\n  if (Array.isArray(value)) {\n    return 'Array';\n  }\n  if (isBuffer(value)) {\n    return 'Buffer';\n  }\n  const objectType = getObjectType(value);\n  if (objectType) {\n    return objectType;\n  }\n  return 'Object';\n}\nfunction isBuffer(value) {\n  return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value);\n}\nfunction getObjectType(value) {\n  const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n  if (objectTypeNames.includes(objectTypeName)) {\n    return objectTypeName;\n  }\n  return undefined;\n}", "class Type {\n  constructor(major, name, terminal) {\n    this.major = major;\n    this.majorEncoded = major << 5;\n    this.name = name;\n    this.terminal = terminal;\n  }\n  toString() {\n    return `Type[${ this.major }].${ this.name }`;\n  }\n  compare(typ) {\n    return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0;\n  }\n}\nType.uint = new Type(0, 'uint', true);\nType.negint = new Type(1, 'negint', true);\nType.bytes = new Type(2, 'bytes', true);\nType.string = new Type(3, 'string', true);\nType.array = new Type(4, 'array', false);\nType.map = new Type(5, 'map', false);\nType.tag = new Type(6, 'tag', false);\nType.float = new Type(7, 'float', true);\nType.false = new Type(7, 'false', true);\nType.true = new Type(7, 'true', true);\nType.null = new Type(7, 'null', true);\nType.undefined = new Type(7, 'undefined', true);\nType.break = new Type(7, 'break', true);\nclass Token {\n  constructor(type, value, encodedLength) {\n    this.type = type;\n    this.value = value;\n    this.encodedLength = encodedLength;\n    this.encodedBytes = undefined;\n    this.byteValue = undefined;\n  }\n  toString() {\n    return `Token[${ this.type }].${ this.value }`;\n  }\n}\nexport {\n  Type,\n  Token\n};", "import {\n  alloc,\n  concat,\n  slice\n} from './byte-utils.js';\nconst defaultChunkSize = 256;\nexport class Bl {\n  constructor(chunkSize = defaultChunkSize) {\n    this.chunkSize = chunkSize;\n    this.cursor = 0;\n    this.maxCursor = -1;\n    this.chunks = [];\n    this._initReuseChunk = null;\n  }\n  reset() {\n    this.cursor = 0;\n    this.maxCursor = -1;\n    if (this.chunks.length) {\n      this.chunks = [];\n    }\n    if (this._initReuseChunk !== null) {\n      this.chunks.push(this._initReuseChunk);\n      this.maxCursor = this._initReuseChunk.length - 1;\n    }\n  }\n  push(bytes) {\n    let topChunk = this.chunks[this.chunks.length - 1];\n    const newMax = this.cursor + bytes.length;\n    if (newMax <= this.maxCursor + 1) {\n      const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n      topChunk.set(bytes, chunkPos);\n    } else {\n      if (topChunk) {\n        const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n        if (chunkPos < topChunk.length) {\n          this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos);\n          this.maxCursor = this.cursor - 1;\n        }\n      }\n      if (bytes.length < 64 && bytes.length < this.chunkSize) {\n        topChunk = alloc(this.chunkSize);\n        this.chunks.push(topChunk);\n        this.maxCursor += topChunk.length;\n        if (this._initReuseChunk === null) {\n          this._initReuseChunk = topChunk;\n        }\n        topChunk.set(bytes, 0);\n      } else {\n        this.chunks.push(bytes);\n        this.maxCursor += bytes.length;\n      }\n    }\n    this.cursor += bytes.length;\n  }\n  toBytes(reset = false) {\n    let byts;\n    if (this.chunks.length === 1) {\n      const chunk = this.chunks[0];\n      if (reset && this.cursor > chunk.length / 2) {\n        byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor);\n        this._initReuseChunk = null;\n        this.chunks = [];\n      } else {\n        byts = slice(chunk, 0, this.cursor);\n      }\n    } else {\n      byts = concat(this.chunks, this.cursor);\n    }\n    if (reset) {\n      this.reset();\n    }\n    return byts;\n  }\n}", "export const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === 'function';\nconst textDecoder = new TextDecoder();\nconst textEncoder = new TextEncoder();\nfunction isBuffer(buf) {\n  return useBuffer && globalThis.Buffer.isBuffer(buf);\n}\nexport function asU8A(buf) {\n  if (!(buf instanceof Uint8Array)) {\n    return Uint8Array.from(buf);\n  }\n  return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf;\n}\nexport const toString = useBuffer ? (bytes, start, end) => {\n  return end - start > 64 ? globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8') : utf8Slice(bytes, start, end);\n} : (bytes, start, end) => {\n  return end - start > 64 ? textDecoder.decode(bytes.subarray(start, end)) : utf8Slice(bytes, start, end);\n};\nexport const fromString = useBuffer ? string => {\n  return string.length > 64 ? globalThis.Buffer.from(string) : utf8ToBytes(string);\n} : string => {\n  return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string);\n};\nexport const fromArray = arr => {\n  return Uint8Array.from(arr);\n};\nexport const slice = useBuffer ? (bytes, start, end) => {\n  if (isBuffer(bytes)) {\n    return new Uint8Array(bytes.subarray(start, end));\n  }\n  return bytes.slice(start, end);\n} : (bytes, start, end) => {\n  return bytes.slice(start, end);\n};\nexport const concat = useBuffer ? (chunks, length) => {\n  chunks = chunks.map(c => c instanceof Uint8Array ? c : globalThis.Buffer.from(c));\n  return asU8A(globalThis.Buffer.concat(chunks, length));\n} : (chunks, length) => {\n  const out = new Uint8Array(length);\n  let off = 0;\n  for (let b of chunks) {\n    if (off + b.length > out.length) {\n      b = b.subarray(0, out.length - off);\n    }\n    out.set(b, off);\n    off += b.length;\n  }\n  return out;\n};\nexport const alloc = useBuffer ? size => {\n  return globalThis.Buffer.allocUnsafe(size);\n} : size => {\n  return new Uint8Array(size);\n};\nexport const toHex = useBuffer ? d => {\n  if (typeof d === 'string') {\n    return d;\n  }\n  return globalThis.Buffer.from(toBytes(d)).toString('hex');\n} : d => {\n  if (typeof d === 'string') {\n    return d;\n  }\n  return Array.prototype.reduce.call(toBytes(d), (p, c) => `${ p }${ c.toString(16).padStart(2, '0') }`, '');\n};\nexport const fromHex = useBuffer ? hex => {\n  if (hex instanceof Uint8Array) {\n    return hex;\n  }\n  return globalThis.Buffer.from(hex, 'hex');\n} : hex => {\n  if (hex instanceof Uint8Array) {\n    return hex;\n  }\n  if (!hex.length) {\n    return new Uint8Array(0);\n  }\n  return new Uint8Array(hex.split('').map((c, i, d) => i % 2 === 0 ? `0x${ c }${ d[i + 1] }` : '').filter(Boolean).map(e => parseInt(e, 16)));\n};\nfunction toBytes(obj) {\n  if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n    return obj;\n  }\n  if (obj instanceof ArrayBuffer) {\n    return new Uint8Array(obj);\n  }\n  if (ArrayBuffer.isView(obj)) {\n    return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n}\nexport function compare(b1, b2) {\n  if (isBuffer(b1) && isBuffer(b2)) {\n    return b1.compare(b2);\n  }\n  for (let i = 0; i < b1.length; i++) {\n    if (b1[i] === b2[i]) {\n      continue;\n    }\n    return b1[i] < b2[i] ? -1 : 1;\n  }\n  return 0;\n}\nfunction utf8ToBytes(string, units = Infinity) {\n  let codePoint;\n  const length = string.length;\n  let leadSurrogate = null;\n  const bytes = [];\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i);\n    if (codePoint > 55295 && codePoint < 57344) {\n      if (!leadSurrogate) {\n        if (codePoint > 56319) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        } else if (i + 1 === length) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        }\n        leadSurrogate = codePoint;\n        continue;\n      }\n      if (codePoint < 56320) {\n        if ((units -= 3) > -1)\n          bytes.push(239, 191, 189);\n        leadSurrogate = codePoint;\n        continue;\n      }\n      codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n    } else if (leadSurrogate) {\n      if ((units -= 3) > -1)\n        bytes.push(239, 191, 189);\n    }\n    leadSurrogate = null;\n    if (codePoint < 128) {\n      if ((units -= 1) < 0)\n        break;\n      bytes.push(codePoint);\n    } else if (codePoint < 2048) {\n      if ((units -= 2) < 0)\n        break;\n      bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n    } else if (codePoint < 65536) {\n      if ((units -= 3) < 0)\n        break;\n      bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else if (codePoint < 1114112) {\n      if ((units -= 4) < 0)\n        break;\n      bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else {\n      throw new Error('Invalid code point');\n    }\n  }\n  return bytes;\n}\nfunction utf8Slice(buf, offset, end) {\n  const res = [];\n  while (offset < end) {\n    const firstByte = buf[offset];\n    let codePoint = null;\n    let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n    if (offset + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint;\n      switch (bytesPerSequence) {\n      case 1:\n        if (firstByte < 128) {\n          codePoint = firstByte;\n        }\n        break;\n      case 2:\n        secondByte = buf[offset + 1];\n        if ((secondByte & 192) === 128) {\n          tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n          if (tempCodePoint > 127) {\n            codePoint = tempCodePoint;\n          }\n        }\n        break;\n      case 3:\n        secondByte = buf[offset + 1];\n        thirdByte = buf[offset + 2];\n        if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n          tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n          if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n            codePoint = tempCodePoint;\n          }\n        }\n        break;\n      case 4:\n        secondByte = buf[offset + 1];\n        thirdByte = buf[offset + 2];\n        fourthByte = buf[offset + 3];\n        if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n          tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n          if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n            codePoint = tempCodePoint;\n          }\n        }\n      }\n    }\n    if (codePoint === null) {\n      codePoint = 65533;\n      bytesPerSequence = 1;\n    } else if (codePoint > 65535) {\n      codePoint -= 65536;\n      res.push(codePoint >>> 10 & 1023 | 55296);\n      codePoint = 56320 | codePoint & 1023;\n    }\n    res.push(codePoint);\n    offset += bytesPerSequence;\n  }\n  return decodeCodePointsArray(res);\n}\nconst MAX_ARGUMENTS_LENGTH = 4096;\nexport function decodeCodePointsArray(codePoints) {\n  const len = codePoints.length;\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints);\n  }\n  let res = '';\n  let i = 0;\n  while (i < len) {\n    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n  }\n  return res;\n}", "const decodeErrPrefix = 'CBOR decode error:';\nconst encodeErrPrefix = 'CBOR encode error:';\nconst uintMinorPrefixBytes = [];\nuintMinorPrefixBytes[23] = 1;\nuintMinorPrefixBytes[24] = 2;\nuintMinorPrefixBytes[25] = 3;\nuintMinorPrefixBytes[26] = 5;\nuintMinorPrefixBytes[27] = 9;\nfunction assertEnoughData(data, pos, need) {\n  if (data.length - pos < need) {\n    throw new Error(`${ decodeErrPrefix } not enough data for type`);\n  }\n}\nexport {\n  decodeErrPrefix,\n  encodeErrPrefix,\n  uintMinorPrefixBytes,\n  assertEnoughData\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport * as negint from './1negint.js';\nimport * as bytes from './2bytes.js';\nimport * as string from './3string.js';\nimport * as array from './4array.js';\nimport * as map from './5map.js';\nimport * as tag from './6tag.js';\nimport * as float from './7float.js';\nimport { decodeErrPrefix } from './common.js';\nimport { fromArray } from './byte-utils.js';\nfunction invalidMinor(data, pos, minor) {\n  throw new Error(`${ decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`);\n}\nfunction errorer(msg) {\n  return () => {\n    throw new Error(`${ decodeErrPrefix } ${ msg }`);\n  };\n}\nexport const jump = [];\nfor (let i = 0; i <= 23; i++) {\n  jump[i] = invalidMinor;\n}\njump[24] = uint.decodeUint8;\njump[25] = uint.decodeUint16;\njump[26] = uint.decodeUint32;\njump[27] = uint.decodeUint64;\njump[28] = invalidMinor;\njump[29] = invalidMinor;\njump[30] = invalidMinor;\njump[31] = invalidMinor;\nfor (let i = 32; i <= 55; i++) {\n  jump[i] = invalidMinor;\n}\njump[56] = negint.decodeNegint8;\njump[57] = negint.decodeNegint16;\njump[58] = negint.decodeNegint32;\njump[59] = negint.decodeNegint64;\njump[60] = invalidMinor;\njump[61] = invalidMinor;\njump[62] = invalidMinor;\njump[63] = invalidMinor;\nfor (let i = 64; i <= 87; i++) {\n  jump[i] = bytes.decodeBytesCompact;\n}\njump[88] = bytes.decodeBytes8;\njump[89] = bytes.decodeBytes16;\njump[90] = bytes.decodeBytes32;\njump[91] = bytes.decodeBytes64;\njump[92] = invalidMinor;\njump[93] = invalidMinor;\njump[94] = invalidMinor;\njump[95] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 96; i <= 119; i++) {\n  jump[i] = string.decodeStringCompact;\n}\njump[120] = string.decodeString8;\njump[121] = string.decodeString16;\njump[122] = string.decodeString32;\njump[123] = string.decodeString64;\njump[124] = invalidMinor;\njump[125] = invalidMinor;\njump[126] = invalidMinor;\njump[127] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 128; i <= 151; i++) {\n  jump[i] = array.decodeArrayCompact;\n}\njump[152] = array.decodeArray8;\njump[153] = array.decodeArray16;\njump[154] = array.decodeArray32;\njump[155] = array.decodeArray64;\njump[156] = invalidMinor;\njump[157] = invalidMinor;\njump[158] = invalidMinor;\njump[159] = array.decodeArrayIndefinite;\nfor (let i = 160; i <= 183; i++) {\n  jump[i] = map.decodeMapCompact;\n}\njump[184] = map.decodeMap8;\njump[185] = map.decodeMap16;\njump[186] = map.decodeMap32;\njump[187] = map.decodeMap64;\njump[188] = invalidMinor;\njump[189] = invalidMinor;\njump[190] = invalidMinor;\njump[191] = map.decodeMapIndefinite;\nfor (let i = 192; i <= 215; i++) {\n  jump[i] = tag.decodeTagCompact;\n}\njump[216] = tag.decodeTag8;\njump[217] = tag.decodeTag16;\njump[218] = tag.decodeTag32;\njump[219] = tag.decodeTag64;\njump[220] = invalidMinor;\njump[221] = invalidMinor;\njump[222] = invalidMinor;\njump[223] = invalidMinor;\nfor (let i = 224; i <= 243; i++) {\n  jump[i] = errorer('simple values are not supported');\n}\njump[244] = invalidMinor;\njump[245] = invalidMinor;\njump[246] = invalidMinor;\njump[247] = float.decodeUndefined;\njump[248] = errorer('simple values are not supported');\njump[249] = float.decodeFloat16;\njump[250] = float.decodeFloat32;\njump[251] = float.decodeFloat64;\njump[252] = invalidMinor;\njump[253] = invalidMinor;\njump[254] = invalidMinor;\njump[255] = float.decodeBreak;\nexport const quick = [];\nfor (let i = 0; i < 24; i++) {\n  quick[i] = new Token(Type.uint, i, 1);\n}\nfor (let i = -1; i >= -24; i--) {\n  quick[31 - i] = new Token(Type.negint, i, 1);\n}\nquick[64] = new Token(Type.bytes, new Uint8Array(0), 1);\nquick[96] = new Token(Type.string, '', 1);\nquick[128] = new Token(Type.array, 0, 1);\nquick[160] = new Token(Type.map, 0, 1);\nquick[244] = new Token(Type.false, false, 1);\nquick[245] = new Token(Type.true, true, 1);\nquick[246] = new Token(Type.null, null, 1);\nexport function quickEncodeToken(token) {\n  switch (token.type) {\n  case Type.false:\n    return fromArray([244]);\n  case Type.true:\n    return fromArray([245]);\n  case Type.null:\n    return fromArray([246]);\n  case Type.bytes:\n    if (!token.value.length) {\n      return fromArray([64]);\n    }\n    return;\n  case Type.string:\n    if (token.value === '') {\n      return fromArray([96]);\n    }\n    return;\n  case Type.array:\n    if (token.value === 0) {\n      return fromArray([128]);\n    }\n    return;\n  case Type.map:\n    if (token.value === 0) {\n      return fromArray([160]);\n    }\n    return;\n  case Type.uint:\n    if (token.value < 24) {\n      return fromArray([Number(token.value)]);\n    }\n    return;\n  case Type.negint:\n    if (token.value >= -24) {\n      return fromArray([31 - Number(token.value)]);\n    }\n  }\n}", "import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  decodeErrPrefix,\n  assertEnoughData\n} from './common.js';\nexport const uintBoundaries = [\n  24,\n  256,\n  65536,\n  4294967296,\n  BigInt('18446744073709551616')\n];\nexport function readUint8(data, offset, options) {\n  assertEnoughData(data, offset, 1);\n  const value = data[offset];\n  if (options.strict === true && value < uintBoundaries[0]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint16(data, offset, options) {\n  assertEnoughData(data, offset, 2);\n  const value = data[offset] << 8 | data[offset + 1];\n  if (options.strict === true && value < uintBoundaries[1]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint32(data, offset, options) {\n  assertEnoughData(data, offset, 4);\n  const value = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n  if (options.strict === true && value < uintBoundaries[2]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint64(data, offset, options) {\n  assertEnoughData(data, offset, 8);\n  const hi = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n  const lo = data[offset + 4] * 16777216 + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7];\n  const value = (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  if (options.strict === true && value < uintBoundaries[3]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  if (value <= Number.MAX_SAFE_INTEGER) {\n    return Number(value);\n  }\n  if (options.allowBigInt === true) {\n    return value;\n  }\n  throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n}\nexport function decodeUint8(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint8(data, pos + 1, options), 2);\n}\nexport function decodeUint16(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint16(data, pos + 1, options), 3);\n}\nexport function decodeUint32(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint32(data, pos + 1, options), 5);\n}\nexport function decodeUint64(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint64(data, pos + 1, options), 9);\n}\nexport function encodeUint(buf, token) {\n  return encodeUintValue(buf, 0, token.value);\n}\nexport function encodeUintValue(buf, major, uint) {\n  if (uint < uintBoundaries[0]) {\n    const nuint = Number(uint);\n    buf.push([major | nuint]);\n  } else if (uint < uintBoundaries[1]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 24,\n      nuint\n    ]);\n  } else if (uint < uintBoundaries[2]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 25,\n      nuint >>> 8,\n      nuint & 255\n    ]);\n  } else if (uint < uintBoundaries[3]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 26,\n      nuint >>> 24 & 255,\n      nuint >>> 16 & 255,\n      nuint >>> 8 & 255,\n      nuint & 255\n    ]);\n  } else {\n    const buint = BigInt(uint);\n    if (buint < uintBoundaries[4]) {\n      const set = [\n        major | 27,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0\n      ];\n      let lo = Number(buint & BigInt(4294967295));\n      let hi = Number(buint >> BigInt(32) & BigInt(4294967295));\n      set[8] = lo & 255;\n      lo = lo >> 8;\n      set[7] = lo & 255;\n      lo = lo >> 8;\n      set[6] = lo & 255;\n      lo = lo >> 8;\n      set[5] = lo & 255;\n      set[4] = hi & 255;\n      hi = hi >> 8;\n      set[3] = hi & 255;\n      hi = hi >> 8;\n      set[2] = hi & 255;\n      hi = hi >> 8;\n      set[1] = hi & 255;\n      buf.push(set);\n    } else {\n      throw new Error(`${ decodeErrPrefix } encountered BigInt larger than allowable range`);\n    }\n  }\n}\nencodeUint.encodedSize = function encodedSize(token) {\n  return encodeUintValue.encodedSize(token.value);\n};\nencodeUintValue.encodedSize = function encodedSize(uint) {\n  if (uint < uintBoundaries[0]) {\n    return 1;\n  }\n  if (uint < uintBoundaries[1]) {\n    return 2;\n  }\n  if (uint < uintBoundaries[2]) {\n    return 3;\n  }\n  if (uint < uintBoundaries[3]) {\n    return 5;\n  }\n  return 9;\n};\nencodeUint.compareTokens = function compareTokens(tok1, tok2) {\n  return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : 0;\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nexport function decodeNegint8(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeNegint16(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeNegint32(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5);\n}\nconst neg1b = BigInt(-1);\nconst pos1b = BigInt(1);\nexport function decodeNegint64(data, pos, _minor, options) {\n  const int = uint.readUint64(data, pos + 1, options);\n  if (typeof int !== 'bigint') {\n    const value = -1 - int;\n    if (value >= Number.MIN_SAFE_INTEGER) {\n      return new Token(Type.negint, value, 9);\n    }\n  }\n  if (options.allowBigInt !== true) {\n    throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n  }\n  return new Token(Type.negint, neg1b - BigInt(int), 9);\n}\nexport function encodeNegint(buf, token) {\n  const negint = token.value;\n  const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n  uint.encodeUintValue(buf, token.type.majorEncoded, unsigned);\n}\nencodeNegint.encodedSize = function encodedSize(token) {\n  const negint = token.value;\n  const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n  if (unsigned < uint.uintBoundaries[0]) {\n    return 1;\n  }\n  if (unsigned < uint.uintBoundaries[1]) {\n    return 2;\n  }\n  if (unsigned < uint.uintBoundaries[2]) {\n    return 3;\n  }\n  if (unsigned < uint.uintBoundaries[3]) {\n    return 5;\n  }\n  return 9;\n};\nencodeNegint.compareTokens = function compareTokens(tok1, tok2) {\n  return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : 0;\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  assertEnoughData,\n  decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport {\n  compare,\n  fromString,\n  slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length) {\n  assertEnoughData(data, pos, prefix + length);\n  const buf = slice(data, pos + prefix, pos + prefix + length);\n  return new Token(Type.bytes, buf, prefix + length);\n}\nexport function decodeBytesCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeBytes8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeBytes16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeBytes32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeBytes64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer bytes lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nfunction tokenBytes(token) {\n  if (token.encodedBytes === undefined) {\n    token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value;\n  }\n  return token.encodedBytes;\n}\nexport function encodeBytes(buf, token) {\n  const bytes = tokenBytes(token);\n  uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length);\n  buf.push(bytes);\n}\nencodeBytes.encodedSize = function encodedSize(token) {\n  const bytes = tokenBytes(token);\n  return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length;\n};\nencodeBytes.compareTokens = function compareTokens(tok1, tok2) {\n  return compareBytes(tokenBytes(tok1), tokenBytes(tok2));\n};\nexport function compareBytes(b1, b2) {\n  return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2);\n}", "import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  assertEnoughData,\n  decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport { encodeBytes } from './2bytes.js';\nimport {\n  toString,\n  slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length, options) {\n  const totLength = prefix + length;\n  assertEnoughData(data, pos, totLength);\n  const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength);\n  if (options.retainStringBytes === true) {\n    tok.byteValue = slice(data, pos + prefix, pos + totLength);\n  }\n  return tok;\n}\nexport function decodeStringCompact(data, pos, minor, options) {\n  return toToken(data, pos, 1, minor, options);\n}\nexport function decodeString8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options);\n}\nexport function decodeString16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options);\n}\nexport function decodeString32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options);\n}\nexport function decodeString64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer string lengths not supported`);\n  }\n  return toToken(data, pos, 9, l, options);\n}\nexport const encodeString = encodeBytes;", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n  return new Token(Type.array, length, prefix);\n}\nexport function decodeArrayCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeArray8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeArray16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeArray32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeArray64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer array lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nexport function decodeArrayIndefinite(data, pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return toToken(data, pos, 1, Infinity);\n}\nexport function encodeArray(buf, token) {\n  uint.encodeUintValue(buf, Type.array.majorEncoded, token.value);\n}\nencodeArray.compareTokens = uint.encodeUint.compareTokens;\nencodeArray.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n  return new Token(Type.map, length, prefix);\n}\nexport function decodeMapCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeMap8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeMap16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeMap32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeMap64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer map lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nexport function decodeMapIndefinite(data, pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return toToken(data, pos, 1, Infinity);\n}\nexport function encodeMap(buf, token) {\n  uint.encodeUintValue(buf, Type.map.majorEncoded, token.value);\n}\nencodeMap.compareTokens = uint.encodeUint.compareTokens;\nencodeMap.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nexport function decodeTagCompact(_data, _pos, minor, _options) {\n  return new Token(Type.tag, minor, 1);\n}\nexport function decodeTag8(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeTag16(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeTag32(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5);\n}\nexport function decodeTag64(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9);\n}\nexport function encodeTag(buf, token) {\n  uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value);\n}\nencodeTag.compareTokens = uint.encodeUint.compareTokens;\nencodeTag.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n  Token,\n  Type\n} from './token.js';\nimport { decodeErrPrefix } from './common.js';\nimport { encodeUint } from './0uint.js';\nconst MINOR_FALSE = 20;\nconst MINOR_TRUE = 21;\nconst MINOR_NULL = 22;\nconst MINOR_UNDEFINED = 23;\nexport function decodeUndefined(_data, _pos, _minor, options) {\n  if (options.allowUndefined === false) {\n    throw new Error(`${ decodeErrPrefix } undefined values are not supported`);\n  } else if (options.coerceUndefinedToNull === true) {\n    return new Token(Type.null, null, 1);\n  }\n  return new Token(Type.undefined, undefined, 1);\n}\nexport function decodeBreak(_data, _pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return new Token(Type.break, undefined, 1);\n}\nfunction createToken(value, bytes, options) {\n  if (options) {\n    if (options.allowNaN === false && Number.isNaN(value)) {\n      throw new Error(`${ decodeErrPrefix } NaN values are not supported`);\n    }\n    if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n      throw new Error(`${ decodeErrPrefix } Infinity values are not supported`);\n    }\n  }\n  return new Token(Type.float, value, bytes);\n}\nexport function decodeFloat16(data, pos, _minor, options) {\n  return createToken(readFloat16(data, pos + 1), 3, options);\n}\nexport function decodeFloat32(data, pos, _minor, options) {\n  return createToken(readFloat32(data, pos + 1), 5, options);\n}\nexport function decodeFloat64(data, pos, _minor, options) {\n  return createToken(readFloat64(data, pos + 1), 9, options);\n}\nexport function encodeFloat(buf, token, options) {\n  const float = token.value;\n  if (float === false) {\n    buf.push([Type.float.majorEncoded | MINOR_FALSE]);\n  } else if (float === true) {\n    buf.push([Type.float.majorEncoded | MINOR_TRUE]);\n  } else if (float === null) {\n    buf.push([Type.float.majorEncoded | MINOR_NULL]);\n  } else if (float === undefined) {\n    buf.push([Type.float.majorEncoded | MINOR_UNDEFINED]);\n  } else {\n    let decoded;\n    let success = false;\n    if (!options || options.float64 !== true) {\n      encodeFloat16(float);\n      decoded = readFloat16(ui8a, 1);\n      if (float === decoded || Number.isNaN(float)) {\n        ui8a[0] = 249;\n        buf.push(ui8a.slice(0, 3));\n        success = true;\n      } else {\n        encodeFloat32(float);\n        decoded = readFloat32(ui8a, 1);\n        if (float === decoded) {\n          ui8a[0] = 250;\n          buf.push(ui8a.slice(0, 5));\n          success = true;\n        }\n      }\n    }\n    if (!success) {\n      encodeFloat64(float);\n      decoded = readFloat64(ui8a, 1);\n      ui8a[0] = 251;\n      buf.push(ui8a.slice(0, 9));\n    }\n  }\n}\nencodeFloat.encodedSize = function encodedSize(token, options) {\n  const float = token.value;\n  if (float === false || float === true || float === null || float === undefined) {\n    return 1;\n  }\n  if (!options || options.float64 !== true) {\n    encodeFloat16(float);\n    let decoded = readFloat16(ui8a, 1);\n    if (float === decoded || Number.isNaN(float)) {\n      return 3;\n    }\n    encodeFloat32(float);\n    decoded = readFloat32(ui8a, 1);\n    if (float === decoded) {\n      return 5;\n    }\n  }\n  return 9;\n};\nconst buffer = new ArrayBuffer(9);\nconst dataView = new DataView(buffer, 1);\nconst ui8a = new Uint8Array(buffer, 0);\nfunction encodeFloat16(inp) {\n  if (inp === Infinity) {\n    dataView.setUint16(0, 31744, false);\n  } else if (inp === -Infinity) {\n    dataView.setUint16(0, 64512, false);\n  } else if (Number.isNaN(inp)) {\n    dataView.setUint16(0, 32256, false);\n  } else {\n    dataView.setFloat32(0, inp);\n    const valu32 = dataView.getUint32(0);\n    const exponent = (valu32 & 2139095040) >> 23;\n    const mantissa = valu32 & 8388607;\n    if (exponent === 255) {\n      dataView.setUint16(0, 31744, false);\n    } else if (exponent === 0) {\n      dataView.setUint16(0, (inp & 2147483648) >> 16 | mantissa >> 13, false);\n    } else {\n      const logicalExponent = exponent - 127;\n      if (logicalExponent < -24) {\n        dataView.setUint16(0, 0);\n      } else if (logicalExponent < -14) {\n        dataView.setUint16(0, (valu32 & 2147483648) >> 16 | 1 << 24 + logicalExponent, false);\n      } else {\n        dataView.setUint16(0, (valu32 & 2147483648) >> 16 | logicalExponent + 15 << 10 | mantissa >> 13, false);\n      }\n    }\n  }\n}\nfunction readFloat16(ui8a, pos) {\n  if (ui8a.length - pos < 2) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float16`);\n  }\n  const half = (ui8a[pos] << 8) + ui8a[pos + 1];\n  if (half === 31744) {\n    return Infinity;\n  }\n  if (half === 64512) {\n    return -Infinity;\n  }\n  if (half === 32256) {\n    return NaN;\n  }\n  const exp = half >> 10 & 31;\n  const mant = half & 1023;\n  let val;\n  if (exp === 0) {\n    val = mant * 2 ** -24;\n  } else if (exp !== 31) {\n    val = (mant + 1024) * 2 ** (exp - 25);\n  } else {\n    val = mant === 0 ? Infinity : NaN;\n  }\n  return half & 32768 ? -val : val;\n}\nfunction encodeFloat32(inp) {\n  dataView.setFloat32(0, inp, false);\n}\nfunction readFloat32(ui8a, pos) {\n  if (ui8a.length - pos < 4) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float32`);\n  }\n  const offset = (ui8a.byteOffset || 0) + pos;\n  return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false);\n}\nfunction encodeFloat64(inp) {\n  dataView.setFloat64(0, inp, false);\n}\nfunction readFloat64(ui8a, pos) {\n  if (ui8a.length - pos < 8) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float64`);\n  }\n  const offset = (ui8a.byteOffset || 0) + pos;\n  return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false);\n}\nencodeFloat.compareTokens = encodeUint.compareTokens;", "import { decodeErrPrefix } from './common.js';\nimport { Type } from './token.js';\nimport {\n  jump,\n  quick\n} from './jump.js';\nconst defaultDecodeOptions = {\n  strict: false,\n  allowIndefinite: true,\n  allowUndefined: true,\n  allowBigInt: true\n};\nclass Tokeniser {\n  constructor(data, options = {}) {\n    this.pos = 0;\n    this.data = data;\n    this.options = options;\n  }\n  done() {\n    return this.pos >= this.data.length;\n  }\n  next() {\n    const byt = this.data[this.pos];\n    let token = quick[byt];\n    if (token === undefined) {\n      const decoder = jump[byt];\n      if (!decoder) {\n        throw new Error(`${ decodeErrPrefix } no decoder for major type ${ byt >>> 5 } (byte 0x${ byt.toString(16).padStart(2, '0') })`);\n      }\n      const minor = byt & 31;\n      token = decoder(this.data, this.pos, minor, this.options);\n    }\n    this.pos += token.encodedLength;\n    return token;\n  }\n}\nconst DONE = Symbol.for('DONE');\nconst BREAK = Symbol.for('BREAK');\nfunction tokenToArray(token, tokeniser, options) {\n  const arr = [];\n  for (let i = 0; i < token.value; i++) {\n    const value = tokensToObject(tokeniser, options);\n    if (value === BREAK) {\n      if (token.value === Infinity) {\n        break;\n      }\n      throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed array`);\n    }\n    if (value === DONE) {\n      throw new Error(`${ decodeErrPrefix } found array but not enough entries (got ${ i }, expected ${ token.value })`);\n    }\n    arr[i] = value;\n  }\n  return arr;\n}\nfunction tokenToMap(token, tokeniser, options) {\n  const useMaps = options.useMaps === true;\n  const obj = useMaps ? undefined : {};\n  const m = useMaps ? new Map() : undefined;\n  for (let i = 0; i < token.value; i++) {\n    const key = tokensToObject(tokeniser, options);\n    if (key === BREAK) {\n      if (token.value === Infinity) {\n        break;\n      }\n      throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed map`);\n    }\n    if (key === DONE) {\n      throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no key], expected ${ token.value })`);\n    }\n    if (useMaps !== true && typeof key !== 'string') {\n      throw new Error(`${ decodeErrPrefix } non-string keys not supported (got ${ typeof key })`);\n    }\n    if (options.rejectDuplicateMapKeys === true) {\n      if (useMaps && m.has(key) || !useMaps && key in obj) {\n        throw new Error(`${ decodeErrPrefix } found repeat map key \"${ key }\"`);\n      }\n    }\n    const value = tokensToObject(tokeniser, options);\n    if (value === DONE) {\n      throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no value], expected ${ token.value })`);\n    }\n    if (useMaps) {\n      m.set(key, value);\n    } else {\n      obj[key] = value;\n    }\n  }\n  return useMaps ? m : obj;\n}\nfunction tokensToObject(tokeniser, options) {\n  if (tokeniser.done()) {\n    return DONE;\n  }\n  const token = tokeniser.next();\n  if (token.type === Type.break) {\n    return BREAK;\n  }\n  if (token.type.terminal) {\n    return token.value;\n  }\n  if (token.type === Type.array) {\n    return tokenToArray(token, tokeniser, options);\n  }\n  if (token.type === Type.map) {\n    return tokenToMap(token, tokeniser, options);\n  }\n  if (token.type === Type.tag) {\n    if (options.tags && typeof options.tags[token.value] === 'function') {\n      const tagged = tokensToObject(tokeniser, options);\n      return options.tags[token.value](tagged);\n    }\n    throw new Error(`${ decodeErrPrefix } tag not supported (${ token.value })`);\n  }\n  throw new Error('unsupported');\n}\nfunction decode(data, options) {\n  if (!(data instanceof Uint8Array)) {\n    throw new Error(`${ decodeErrPrefix } data to decode must be a Uint8Array`);\n  }\n  options = Object.assign({}, defaultDecodeOptions, options);\n  const tokeniser = options.tokenizer || new Tokeniser(data, options);\n  const decoded = tokensToObject(tokeniser, options);\n  if (decoded === DONE) {\n    throw new Error(`${ decodeErrPrefix } did not find any content to decode`);\n  }\n  if (decoded === BREAK) {\n    throw new Error(`${ decodeErrPrefix } got unexpected break`);\n  }\n  if (!tokeniser.done()) {\n    throw new Error(`${ decodeErrPrefix } too many terminals, data makes no sense`);\n  }\n  return decoded;\n}\nexport {\n  Tokeniser,\n  tokensToObject,\n  decode\n};", "import * as varint from './varint.js'\nimport * as Digest from './hashes/digest.js'\nimport { base58btc } from './bases/base58.js'\nimport { base32 } from './bases/base32.js'\nimport { coerce } from './bytes.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n  const { bytes, version } = link\n  switch (version) {\n    case 0:\n      return toStringV0(\n        bytes,\n        baseCache(link),\n        /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n      )\n    default:\n      return toStringV1(\n        bytes,\n        baseCache(link),\n        /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n      )\n  }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n  '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n  CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n  const baseCache = cache.get(cid)\n  if (baseCache == null) {\n    const baseCache = new Map()\n    cache.set(cid, baseCache)\n    return baseCache\n  }\n  return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n  /**\n   * @param {Version} version - Version of the CID\n   * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n   * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n   * @param {Uint8Array} bytes\n   *\n   */\n  constructor (version, code, multihash, bytes) {\n    /** @readonly */\n    this.code = code\n    /** @readonly */\n    this.version = version\n    /** @readonly */\n    this.multihash = multihash\n    /** @readonly */\n    this.bytes = bytes\n\n    // flag to serializers that this is a CID and\n    // should be treated specially\n    /** @readonly */\n    this['/'] = bytes\n  }\n\n  /**\n   * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n   * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n   *\n   * @deprecated\n   */\n  get asCID () {\n    return this\n  }\n\n  // ArrayBufferView\n  get byteOffset () {\n    return this.bytes.byteOffset\n  }\n\n  // ArrayBufferView\n  get byteLength () {\n    return this.bytes.byteLength\n  }\n\n  /**\n   * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n   */\n  toV0 () {\n    switch (this.version) {\n      case 0: {\n        return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n      }\n      case 1: {\n        const { code, multihash } = this\n\n        if (code !== DAG_PB_CODE) {\n          throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n        }\n\n        // sha2-256\n        if (multihash.code !== SHA_256_CODE) {\n          throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n        }\n\n        return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n          CID.createV0(\n            /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n          )\n        )\n      }\n      default: {\n        throw Error(\n          `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n        )\n      }\n    }\n  }\n\n  /**\n   * @returns {CID<Data, Format, Alg, 1>}\n   */\n  toV1 () {\n    switch (this.version) {\n      case 0: {\n        const { code, digest } = this.multihash\n        const multihash = Digest.create(code, digest)\n        return /** @type {CID<Data, Format, Alg, 1>} */ (\n          CID.createV1(this.code, multihash)\n        )\n      }\n      case 1: {\n        return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n      }\n      default: {\n        throw Error(\n          `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n        )\n      }\n    }\n  }\n\n  /**\n   * @param {unknown} other\n   * @returns {other is CID<Data, Format, Alg, Version>}\n   */\n  equals (other) {\n    return CID.equals(this, other)\n  }\n\n  /**\n   * @template {unknown} Data\n   * @template {number} Format\n   * @template {number} Alg\n   * @template {API.Version} Version\n   * @param {API.Link<Data, Format, Alg, Version>} self\n   * @param {unknown} other\n   * @returns {other is CID}\n   */\n  static equals (self, other) {\n    const unknown =\n      /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n        other\n      )\n    return (\n      unknown &&\n      self.code === unknown.code &&\n      self.version === unknown.version &&\n      Digest.equals(self.multihash, unknown.multihash)\n    )\n  }\n\n  /**\n   * @param {API.MultibaseEncoder<string>} [base]\n   * @returns {string}\n   */\n  toString (base) {\n    return format(this, base)\n  }\n\n  toJSON () {\n    return { '/': format(this) }\n  }\n\n  link () {\n    return this\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'CID'\n  }\n\n  // Legacy\n\n  [Symbol.for('nodejs.util.inspect.custom')] () {\n    return `CID(${this.toString()})`\n  }\n\n  /**\n   * Takes any input `value` and returns a `CID` instance if it was\n   * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n   * it will return value back. If `value` is not instance of this CID\n   * class, but is compatible CID it will return new instance of this\n   * `CID` class. Otherwise returns null.\n   *\n   * This allows two different incompatible versions of CID library to\n   * co-exist and interop as long as binary interface is compatible.\n   *\n   * @template {unknown} Data\n   * @template {number} Format\n   * @template {number} Alg\n   * @template {API.Version} Version\n   * @template {unknown} U\n   * @param {API.Link<Data, Format, Alg, Version>|U} input\n   * @returns {CID<Data, Format, Alg, Version>|null}\n   */\n  static asCID (input) {\n    if (input == null) {\n      return null\n    }\n\n    const value = /** @type {any} */ (input)\n    if (value instanceof CID) {\n      // If value is instance of CID then we're all set.\n      return value\n    } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n      // If value isn't instance of this CID class but `this.asCID === this` or\n      // `value['/'] === value.bytes` is true it is CID instance coming from a\n      // different implementation (diff version or duplicate). In that case we\n      // rebase it to this `CID` implementation so caller is guaranteed to get\n      // instance with expected API.\n      const { version, code, multihash, bytes } = value\n      return new CID(\n        version,\n        code,\n        /** @type {API.MultihashDigest<Alg>} */ (multihash),\n        bytes || encodeCID(version, code, multihash.bytes)\n      )\n    } else if (value[cidSymbol] === true) {\n      // If value is a CID from older implementation that used to be tagged via\n      // symbol we still rebase it to the this `CID` implementation by\n      // delegating that to a constructor.\n      const { version, multihash, code } = value\n      const digest =\n        /** @type {API.MultihashDigest<Alg>} */\n        (Digest.decode(multihash))\n      return CID.create(version, code, digest)\n    } else {\n      // Otherwise value is not a CID (or an incompatible version of it) in\n      // which case we return `null`.\n      return null\n    }\n  }\n\n  /**\n   *\n   * @template {unknown} Data\n   * @template {number} Format\n   * @template {number} Alg\n   * @template {API.Version} Version\n   * @param {Version} version - Version of the CID\n   * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n   * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n   * @returns {CID<Data, Format, Alg, Version>}\n   */\n  static create (version, code, digest) {\n    if (typeof code !== 'number') {\n      throw new Error('String codecs are no longer supported')\n    }\n\n    if (!(digest.bytes instanceof Uint8Array)) {\n      throw new Error('Invalid digest')\n    }\n\n    switch (version) {\n      case 0: {\n        if (code !== DAG_PB_CODE) {\n          throw new Error(\n            `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n          )\n        } else {\n          return new CID(version, code, digest, digest.bytes)\n        }\n      }\n      case 1: {\n        const bytes = encodeCID(version, code, digest.bytes)\n        return new CID(version, code, digest, bytes)\n      }\n      default: {\n        throw new Error('Invalid version')\n      }\n    }\n  }\n\n  /**\n   * Simplified version of `create` for CIDv0.\n   *\n   * @template {unknown} [T=unknown]\n   * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n   * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n   */\n  static createV0 (digest) {\n    return CID.create(0, DAG_PB_CODE, digest)\n  }\n\n  /**\n   * Simplified version of `create` for CIDv1.\n   *\n   * @template {unknown} Data\n   * @template {number} Code\n   * @template {number} Alg\n   * @param {Code} code - Content encoding format code.\n   * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n   * @returns {CID<Data, Code, Alg, 1>}\n   */\n  static createV1 (code, digest) {\n    return CID.create(1, code, digest)\n  }\n\n  /**\n   * Decoded a CID from its binary representation. The byte array must contain\n   * only the CID with no additional bytes.\n   *\n   * An error will be thrown if the bytes provided do not contain a valid\n   * binary representation of a CID.\n   *\n   * @template {unknown} Data\n   * @template {number} Code\n   * @template {number} Alg\n   * @template {API.Version} Ver\n   * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n   * @returns {CID<Data, Code, Alg, Ver>}\n   */\n  static decode (bytes) {\n    const [cid, remainder] = CID.decodeFirst(bytes)\n    if (remainder.length) {\n      throw new Error('Incorrect length')\n    }\n    return cid\n  }\n\n  /**\n   * Decoded a CID from its binary representation at the beginning of a byte\n   * array.\n   *\n   * Returns an array with the first element containing the CID and the second\n   * element containing the remainder of the original byte array. The remainder\n   * will be a zero-length byte array if the provided bytes only contained a\n   * binary CID representation.\n   *\n   * @template {unknown} T\n   * @template {number} C\n   * @template {number} A\n   * @template {API.Version} V\n   * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n   * @returns {[CID<T, C, A, V>, Uint8Array]}\n   */\n  static decodeFirst (bytes) {\n    const specs = CID.inspectBytes(bytes)\n    const prefixSize = specs.size - specs.multihashSize\n    const multihashBytes = coerce(\n      bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n    )\n    if (multihashBytes.byteLength !== specs.multihashSize) {\n      throw new Error('Incorrect length')\n    }\n    const digestBytes = multihashBytes.subarray(\n      specs.multihashSize - specs.digestSize\n    )\n    const digest = new Digest.Digest(\n      specs.multihashCode,\n      specs.digestSize,\n      digestBytes,\n      multihashBytes\n    )\n    const cid =\n      specs.version === 0\n        ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n        : CID.createV1(specs.codec, digest)\n    return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n  }\n\n  /**\n   * Inspect the initial bytes of a CID to determine its properties.\n   *\n   * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n   * bytes but for larger multicodec code values and larger multihash digest\n   * lengths these varints can be quite large. It is recommended that at least\n   * 10 bytes be made available in the `initialBytes` argument for a complete\n   * inspection.\n   *\n   * @template {unknown} T\n   * @template {number} C\n   * @template {number} A\n   * @template {API.Version} V\n   * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n   * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n   */\n  static inspectBytes (initialBytes) {\n    let offset = 0\n    const next = () => {\n      const [i, length] = varint.decode(initialBytes.subarray(offset))\n      offset += length\n      return i\n    }\n\n    let version = /** @type {V} */ (next())\n    let codec = /** @type {C} */ (DAG_PB_CODE)\n    if (/** @type {number} */(version) === 18) {\n      // CIDv0\n      version = /** @type {V} */ (0)\n      offset = 0\n    } else {\n      codec = /** @type {C} */ (next())\n    }\n\n    if (version !== 0 && version !== 1) {\n      throw new RangeError(`Invalid CID version ${version}`)\n    }\n\n    const prefixSize = offset\n    const multihashCode = /** @type {A} */ (next()) // multihash code\n    const digestSize = next() // multihash length\n    const size = offset + digestSize\n    const multihashSize = size - prefixSize\n\n    return { version, codec, multihashCode, digestSize, multihashSize, size }\n  }\n\n  /**\n   * Takes cid in a string representation and creates an instance. If `base`\n   * decoder is not provided will use a default from the configuration. It will\n   * throw an error if encoding of the CID is not compatible with supplied (or\n   * a default decoder).\n   *\n   * @template {string} Prefix\n   * @template {unknown} Data\n   * @template {number} Code\n   * @template {number} Alg\n   * @template {API.Version} Ver\n   * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n   * @param {API.MultibaseDecoder<Prefix>} [base]\n   * @returns {CID<Data, Code, Alg, Ver>}\n   */\n  static parse (source, base) {\n    const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n    const cid = CID.decode(bytes)\n\n    if (cid.version === 0 && source[0] !== 'Q') {\n      throw Error('Version 0 CID string must not include multibase prefix')\n    }\n\n    // Cache string representation to avoid computing it on `this.toString()`\n    baseCache(cid).set(prefix, source)\n\n    return cid\n  }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n  switch (source[0]) {\n    // CIDv0 is parsed differently\n    case 'Q': {\n      const decoder = base || base58btc\n      return [\n        /** @type {Prefix} */ (base58btc.prefix),\n        decoder.decode(`${base58btc.prefix}${source}`)\n      ]\n    }\n    case base58btc.prefix: {\n      const decoder = base || base58btc\n      return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n    }\n    case base32.prefix: {\n      const decoder = base || base32\n      return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n    }\n    default: {\n      if (base == null) {\n        throw Error(\n          'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n        )\n      }\n      return [/** @type {Prefix} */(source[0]), base.decode(source)]\n    }\n  }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n  const { prefix } = base\n  if (prefix !== base58btc.prefix) {\n    throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n  }\n\n  const cid = cache.get(prefix)\n  if (cid == null) {\n    const cid = base.encode(bytes).slice(1)\n    cache.set(prefix, cid)\n    return cid\n  } else {\n    return cid\n  }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n  const { prefix } = base\n  const cid = cache.get(prefix)\n  if (cid == null) {\n    const cid = base.encode(bytes)\n    cache.set(prefix, cid)\n    return cid\n  } else {\n    return cid\n  }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n  const codeOffset = varint.encodingLength(version)\n  const hashOffset = codeOffset + varint.encodingLength(code)\n  const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n  varint.encodeTo(version, bytes, 0)\n  varint.encodeTo(code, bytes, codeOffset)\n  bytes.set(multihash, hashOffset)\n  return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n  const code = varint.decode(data, offset)\n  return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n  varint.encode(int, target, offset)\n  return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n  return varint.encodingLength(int)\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n  , REST = 0x7F\n  , MSBALL = ~REST\n  , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n\n  while(num >= INT) {\n    out[offset++] = (num & 0xFF) | MSB;\n    num /= 128;\n  }\n  while(num & MSBALL) {\n    out[offset++] = (num & 0xFF) | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  \n  encode.bytes = offset - oldOffset + 1;\n  \n  return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n  , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n  var res    = 0\n    , offset = offset || 0\n    , shift  = 0\n    , counter = offset\n    , b\n    , l = buf.length;\n\n  do {\n    if (counter >= l) {\n      read.bytes = 0;\n      throw new RangeError('Could not decode varint')\n    }\n    b = buf[counter++];\n    res += shift < 28\n      ? (b & REST$1) << shift\n      : (b & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b >= MSB$1)\n\n  read.bytes = counter - offset;\n\n  return res\n}\n\nvar N1 = Math.pow(2,  7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n  return (\n    value < N1 ? 1\n  : value < N2 ? 2\n  : value < N3 ? 3\n  : value < N4 ? 4\n  : value < N5 ? 5\n  : value < N6 ? 6\n  : value < N7 ? 7\n  : value < N8 ? 8\n  : value < N9 ? 9\n  :              10\n  )\n};\n\nvar varint = {\n    encode: encode_1\n  , decode: decode\n  , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n  const size = digest.byteLength\n  const sizeOffset = varint.encodingLength(code)\n  const digestOffset = sizeOffset + varint.encodingLength(size)\n\n  const bytes = new Uint8Array(digestOffset + size)\n  varint.encodeTo(code, bytes, 0)\n  varint.encodeTo(size, bytes, sizeOffset)\n  bytes.set(digest, digestOffset)\n\n  return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n  const bytes = coerce(multihash)\n  const [code, sizeOffset] = varint.decode(bytes)\n  const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n  const digest = bytes.subarray(sizeOffset + digestOffset)\n\n  if (digest.byteLength !== size) {\n    throw new Error('Incorrect length')\n  }\n\n  return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n  if (a === b) {\n    return true\n  } else {\n    const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n    return (\n      a.code === data.code &&\n      a.size === data.size &&\n      data.bytes instanceof Uint8Array &&\n      equalBytes(a.bytes, data.bytes)\n    )\n  }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n  /**\n   * Creates a multihash digest.\n   *\n   * @param {Code} code\n   * @param {Size} size\n   * @param {Uint8Array} digest\n   * @param {Uint8Array} bytes\n   */\n  constructor (code, size, digest, bytes) {\n    this.code = code\n    this.size = size\n    this.digest = digest\n    this.bytes = bytes\n  }\n}\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n  const hexes = hex.match(/../g)\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n  if (aa === bb) return true\n  if (aa.byteLength !== bb.byteLength) {\n    return false\n  }\n\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n  if (o instanceof ArrayBuffer) return new Uint8Array(o)\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n  }\n  throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n  o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n  name: 'base58btc',\n  prefix: 'z',\n  alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n  name: 'base58flickr',\n  prefix: 'Z',\n  alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n  /**\n   * @param {Base} name\n   * @param {Prefix} prefix\n   * @param {(bytes:Uint8Array) => string} baseEncode\n   */\n  constructor (name, prefix, baseEncode) {\n    this.name = name\n    this.prefix = prefix\n    this.baseEncode = baseEncode\n  }\n\n  /**\n   * @param {Uint8Array} bytes\n   * @returns {API.Multibase<Prefix>}\n   */\n  encode (bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${this.prefix}${this.baseEncode(bytes)}`\n    } else {\n      throw Error('Unknown type, must be binary type')\n    }\n  }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n  /**\n   * @param {Base} name\n   * @param {Prefix} prefix\n   * @param {(text:string) => Uint8Array} baseDecode\n   */\n  constructor (name, prefix, baseDecode) {\n    this.name = name\n    this.prefix = prefix\n    /* c8 ignore next 3 */\n    if (prefix.codePointAt(0) === undefined) {\n      throw new Error('Invalid prefix character')\n    }\n    /** @private */\n    this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n    this.baseDecode = baseDecode\n  }\n\n  /**\n   * @param {string} text\n   */\n  decode (text) {\n    if (typeof text === 'string') {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n      }\n      return this.baseDecode(text.slice(this.prefix.length))\n    } else {\n      throw Error('Can only multibase decode strings')\n    }\n  }\n\n  /**\n   * @template {string} OtherPrefix\n   * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n   * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n   */\n  or (decoder) {\n    return or(this, decoder)\n  }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n  /**\n   * @param {Decoders<Prefix>} decoders\n   */\n  constructor (decoders) {\n    this.decoders = decoders\n  }\n\n  /**\n   * @template {string} OtherPrefix\n   * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n   * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n   */\n  or (decoder) {\n    return or(this, decoder)\n  }\n\n  /**\n   * @param {string} input\n   * @returns {Uint8Array}\n   */\n  decode (input) {\n    const prefix = /** @type {Prefix} */ (input[0])\n    const decoder = this.decoders[prefix]\n    if (decoder) {\n      return decoder.decode(input)\n    } else {\n      throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n    }\n  }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n  ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n  ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n  /**\n   * @param {Base} name\n   * @param {Prefix} prefix\n   * @param {(bytes:Uint8Array) => string} baseEncode\n   * @param {(text:string) => Uint8Array} baseDecode\n   */\n  constructor (name, prefix, baseEncode, baseDecode) {\n    this.name = name\n    this.prefix = prefix\n    this.baseEncode = baseEncode\n    this.baseDecode = baseDecode\n    this.encoder = new Encoder(name, prefix, baseEncode)\n    this.decoder = new Decoder(name, prefix, baseDecode)\n  }\n\n  /**\n   * @param {Uint8Array} input\n   */\n  encode (input) {\n    return this.encoder.encode(input)\n  }\n\n  /**\n   * @param {string} input\n   */\n  decode (input) {\n    return this.decoder.decode(input)\n  }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n  new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n  const { encode, decode } = basex(alphabet, name)\n  return from({\n    prefix,\n    name,\n    encode,\n    /**\n     * @param {string} text\n     */\n    decode: text => coerce(decode(text))\n  })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  // Build the character lookup table:\n  /** @type {Record<string, number>} */\n  const codes = {}\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i\n  }\n\n  // Count the padding bytes:\n  let end = string.length\n  while (string[end - 1] === '=') {\n    --end\n  }\n\n  // Allocate the output:\n  const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n  // Parse the data:\n  let bits = 0 // Number of bits currently in the buffer\n  let buffer = 0 // Bits waiting to be written out, MSB first\n  let written = 0 // Next byte to write\n  for (let i = 0; i < end; ++i) {\n    // Read one character from the string:\n    const value = codes[string[i]]\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${name} character`)\n    }\n\n    // Append the bits to the buffer:\n    buffer = (buffer << bitsPerChar) | value\n    bits += bitsPerChar\n\n    // Write out some bits if the buffer has a byte's worth:\n    if (bits >= 8) {\n      bits -= 8\n      out[written++] = 0xff & (buffer >> bits)\n    }\n  }\n\n  // Verify that we have received just enough bits:\n  if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n    throw new SyntaxError('Unexpected end of data')\n  }\n\n  return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '='\n  const mask = (1 << bitsPerChar) - 1\n  let out = ''\n\n  let bits = 0 // Number of bits currently in the buffer\n  let buffer = 0 // Bits waiting to be written out, MSB first\n  for (let i = 0; i < data.length; ++i) {\n    // Slurp data into the buffer:\n    buffer = (buffer << 8) | data[i]\n    bits += 8\n\n    // Write out as much as we can:\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar\n      out += alphabet[mask & (buffer >> bits)]\n    }\n  }\n\n  // Partial character:\n  if (bits) {\n    out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n  }\n\n  // Add padding characters until we hit a byte boundary:\n  if (pad) {\n    while ((out.length * bitsPerChar) & 7) {\n      out += '='\n    }\n  }\n\n  return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n  return from({\n    prefix,\n    name,\n    encode (input) {\n      return encode(input, alphabet, bitsPerChar)\n    },\n    decode (input) {\n      return decode(input, alphabet, bitsPerChar, name)\n    }\n  })\n}\n", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n  if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n  var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n  function encode (source) {\n    if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n    if (source.length === 0) { return '' }\n        // Skip & count leading zeroes.\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n        // Allocate enough space in big-endian base58 representation.\n    var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n    var b58 = new Uint8Array(size);\n        // Process the bytes.\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n            // Apply \"b58 = b58 * 256 + ch\".\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n        carry += (256 * b58[it1]) >>> 0;\n        b58[it1] = (carry % BASE) >>> 0;\n        carry = (carry / BASE) >>> 0;\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i;\n      pbegin++;\n    }\n        // Skip leading zeroes in base58 result.\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n        // Translate the result into a string.\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n    return str\n  }\n  function decodeUnsafe (source) {\n    if (typeof source !== 'string') { throw new TypeError('Expected String') }\n    if (source.length === 0) { return new Uint8Array() }\n    var psz = 0;\n        // Skip leading spaces.\n    if (source[psz] === ' ') { return }\n        // Skip and count leading '1's.\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n        // Allocate enough space in big-endian base256 representation.\n    var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n    var b256 = new Uint8Array(size);\n        // Process the characters.\n    while (source[psz]) {\n            // Decode character\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n            // Invalid character\n      if (carry === 255) { return }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n        carry += (BASE * b256[it3]) >>> 0;\n        b256[it3] = (carry % 256) >>> 0;\n        carry = (carry / 256) >>> 0;\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i;\n      psz++;\n    }\n        // Skip trailing spaces.\n    if (source[psz] === ' ') { return }\n        // Skip leading zeroes in b256.\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch\n  }\n  function decode (string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) { return buffer }\n    throw new Error(`Non-${name} character`)\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "// this is dummy module overlayed by interface.ts\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n  prefix: 'b',\n  name: 'base32',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n  bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n  prefix: 'B',\n  name: 'base32upper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n  bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n  prefix: 'c',\n  name: 'base32pad',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n  bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n  prefix: 'C',\n  name: 'base32padupper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n  bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n  prefix: 'v',\n  name: 'base32hex',\n  alphabet: '0123456789abcdefghijklmnopqrstuv',\n  bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n  prefix: 'V',\n  name: 'base32hexupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n  bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n  prefix: 't',\n  name: 'base32hexpad',\n  alphabet: '0123456789abcdefghijklmnopqrstuv=',\n  bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n  prefix: 'T',\n  name: 'base32hexpadupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n  bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n  prefix: 'h',\n  name: 'base32z',\n  alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n  bitsPerChar: 5\n})\n", "// this is dummy module overlayed by interface.ts\n", "import parallelBatch from 'it-parallel-batch'\nimport { DAGBuilder, DagBuilderProgressEvents, defaultDagBuilder } from './dag-builder/index.js'\nimport { defaultTreeBuilder } from './tree-builder.js'\nimport type { UnixFS, Mtime } from 'ipfs-unixfs'\nimport type { CID, Version as CIDVersion } from 'multiformats/cid'\nimport type { Blockstore } from 'interface-blockstore'\nimport { ChunkValidator, defaultChunkValidator } from './dag-builder/validate-chunks.js'\nimport { fixedSize } from './chunker/fixed-size.js'\nimport type { Chunker } from './chunker/index.js'\nimport { balanced, FileLayout } from './layout/index.js'\nimport { BufferImportProgressEvents, defaultBufferImporter } from './dag-builder/buffer-importer.js'\nimport first from 'it-first'\nimport errcode from 'err-code'\nimport type { AwaitIterable } from 'interface-store'\nimport type { ProgressOptions } from 'progress-events'\nimport type { ReducerProgressEvents } from './dag-builder/file.js'\n\nexport type ByteStream = AwaitIterable<Uint8Array>\nexport type ImportContent = ByteStream | Uint8Array\n\nexport type WritableStorage = Pick<Blockstore, 'put'>\n\nexport interface FileCandidate {\n  path?: string\n  content: ImportContent\n  mtime?: Mtime\n  mode?: number\n}\n\nexport interface DirectoryCandidate {\n  path: string\n  mtime?: Mtime\n  mode?: number\n}\n\nexport type ImportCandidate = FileCandidate | DirectoryCandidate\n\nexport interface File {\n  content: AsyncIterable<Uint8Array>\n  path?: string\n  mtime?: Mtime\n  mode?: number\n  originalPath?: string\n}\n\nexport interface Directory {\n  path?: string\n  mtime?: Mtime\n  mode?: number\n  originalPath?: string\n}\n\nexport interface ImportResult {\n  cid: CID\n  size: bigint\n  path?: string\n  unixfs?: UnixFS\n}\n\nexport interface MultipleBlockImportResult extends ImportResult {\n  originalPath?: string\n}\n\nexport interface SingleBlockImportResult extends ImportResult {\n  single: true\n  originalPath?: string\n  block: Uint8Array\n}\n\nexport type InProgressImportResult = SingleBlockImportResult | MultipleBlockImportResult\n\nexport interface BufferImporterResult extends ImportResult {\n  block: Uint8Array\n}\n\nexport interface HamtHashFn { (value: Uint8Array): Promise<Uint8Array> }\nexport interface TreeBuilder { (source: AsyncIterable<InProgressImportResult>, blockstore: WritableStorage): AsyncIterable<ImportResult> }\nexport interface BufferImporter { (file: File, blockstore: WritableStorage): AsyncIterable<() => Promise<BufferImporterResult>> }\n\nexport type ImporterProgressEvents =\n  BufferImportProgressEvents |\n  DagBuilderProgressEvents |\n  ReducerProgressEvents\n\n/**\n * Options to control the importer's behaviour\n */\nexport interface ImporterOptions extends ProgressOptions<ImporterProgressEvents> {\n  /**\n   * When a file would span multiple DAGNodes, if this is true the leaf nodes\n   * will not be wrapped in `UnixFS` protobufs and will instead contain the\n   * raw file bytes. Default: true\n   */\n  rawLeaves?: boolean\n\n  /**\n   * If the file being imported is small enough to fit into one DAGNodes, store\n   * the file data in the root node along with the UnixFS metadata instead of\n   * in a leaf node which would then require additional I/O to load. Default: true\n   */\n  reduceSingleLeafToSelf?: boolean\n\n  /**\n   * What type of UnixFS node leaves should be - can be `'file'` or `'raw'`\n   * (ignored when `rawLeaves` is `true`).\n   *\n   * This option exists to simulate kubo's trickle dag which uses a combination\n   * of `'raw'` UnixFS leaves and `reduceSingleLeafToSelf: false`.\n   *\n   * For modern code the `rawLeaves: true` option should be used instead so leaves\n   * are plain Uint8Arrays without a UnixFS/Protobuf wrapper.\n   */\n  leafType?: 'file' | 'raw'\n\n  /**\n   * the CID version to use when storing the data. Default: 1\n   */\n  cidVersion?: CIDVersion\n\n  /**\n   * If the serialized node is larger than this it might be converted to a HAMT\n   * sharded directory. Default: 256KiB\n   */\n  shardSplitThresholdBytes?: number\n\n  /**\n   * How many files to import concurrently. For large numbers of small files this\n   * should be high (e.g. 50). Default: 10\n   */\n  fileImportConcurrency?: number\n\n  /**\n   * How many blocks to hash and write to the block store concurrently. For small\n   * numbers of large files this should be high (e.g. 50). Default: 50\n   */\n  blockWriteConcurrency?: number\n\n  /**\n   * If true, all imported files and folders will be contained in a directory that\n   * will correspond to the CID of the final entry yielded. Default: false\n   */\n  wrapWithDirectory?: boolean\n\n  /**\n   * The chunking strategy. See [./src/chunker/index.ts](./src/chunker/index.ts)\n   * for available chunkers. Default: fixedSize\n   */\n  chunker?: Chunker\n\n  /**\n   * How the DAG that represents files are created. See\n   * [./src/layout/index.ts](./src/layout/index.ts) for available layouts. Default: balanced\n   */\n  layout?: FileLayout\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function should read `{ path, content }` entries from `source` and turn them\n   * into DAGs\n   * It should yield a `function` that returns a `Promise` that resolves to\n   * `{ cid, path, unixfs, node }` where `cid` is a `CID`, `path` is a string, `unixfs`\n   * is a UnixFS entry and `node` is a `DAGNode`.\n   * Values will be pulled from this generator in parallel - the amount of parallelisation\n   * is controlled by the `fileImportConcurrency` option (default: 50)\n   */\n  dagBuilder?: DAGBuilder\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function should read `{ cid, path, unixfs, node }` entries from `source` and\n   * place them in a directory structure\n   * It should yield an object with the properties `{ cid, path, unixfs, size }` where\n   * `cid` is a `CID`, `path` is a string, `unixfs` is a UnixFS entry and `size` is a `Number`.\n   */\n  treeBuilder?: TreeBuilder\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function should read `Buffer`s from `source` and persist them using `blockstore.put`\n   * or similar\n   * `entry` is the `{ path, content }` entry, where `entry.content` is an async\n   * generator that yields Buffers\n   * It should yield functions that return a Promise that resolves to an object with\n   * the properties `{ cid, unixfs, size }` where `cid` is a [CID], `unixfs` is a [UnixFS] entry and `size` is a `Number` that represents the serialized size of the [IPLD] node that holds the buffer data.\n   * Values will be pulled from this generator in parallel - the amount of\n   * parallelisation is controlled by the `blockWriteConcurrency` option (default: 10)\n   */\n  bufferImporter?: BufferImporter\n\n  /**\n   * This option can be used to override the importer internals.\n   *\n   * This function takes input from the `content` field of imported entries.\n   * It should transform them into `Buffer`s, throwing an error if it cannot.\n   * It should yield `Buffer` objects constructed from the `source` or throw an\n   * `Error`\n   */\n  chunkValidator?: ChunkValidator\n}\n\nexport type ImportCandidateStream = AsyncIterable<FileCandidate | DirectoryCandidate> | Iterable<FileCandidate | DirectoryCandidate>\n\n/**\n * The importer creates UnixFS DAGs and stores the blocks that make\n * them up in the passed blockstore.\n *\n * @example\n *\n * ```typescript\n * import { importer } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [{\n *   path: './foo.txt',\n *   content: Uint8Array.from([0, 1, 2, 3, 4])\n * }, {\n *   path: './bar.txt',\n *   content: Uint8Array.from([0, 1, 2, 3, 4])\n * }]\n *\n * for await (const entry of importer(input, blockstore)) {\n *   console.info(entry)\n *   // { cid: CID(), ... }\n * }\n * ```\n */\nexport async function * importer (source: ImportCandidateStream, blockstore: WritableStorage, options: ImporterOptions = {}): AsyncGenerator<ImportResult, void, unknown> {\n  let candidates: AsyncIterable<FileCandidate | DirectoryCandidate> | Iterable<FileCandidate | DirectoryCandidate>\n\n  if (Symbol.asyncIterator in source || Symbol.iterator in source) {\n    candidates = source\n  } else {\n    candidates = [source]\n  }\n\n  const wrapWithDirectory = options.wrapWithDirectory ?? false\n  const shardSplitThresholdBytes = options.shardSplitThresholdBytes ?? 262144\n  const cidVersion = options.cidVersion ?? 1\n  const rawLeaves = options.rawLeaves ?? true\n  const leafType = options.leafType ?? 'file'\n  const fileImportConcurrency = options.fileImportConcurrency ?? 50\n  const blockWriteConcurrency = options.blockWriteConcurrency ?? 10\n  const reduceSingleLeafToSelf = options.reduceSingleLeafToSelf ?? true\n\n  const chunker = options.chunker ?? fixedSize()\n  const chunkValidator = options.chunkValidator ?? defaultChunkValidator()\n  const buildDag: DAGBuilder = options.dagBuilder ?? defaultDagBuilder({\n    chunker,\n    chunkValidator,\n    wrapWithDirectory,\n    layout: options.layout ?? balanced(),\n    bufferImporter: options.bufferImporter ?? defaultBufferImporter({\n      cidVersion,\n      rawLeaves,\n      leafType,\n      onProgress: options.onProgress\n    }),\n    blockWriteConcurrency,\n    reduceSingleLeafToSelf,\n    cidVersion,\n    onProgress: options.onProgress\n  })\n  const buildTree: TreeBuilder = options.treeBuilder ?? defaultTreeBuilder({\n    wrapWithDirectory,\n    shardSplitThresholdBytes,\n    cidVersion,\n    onProgress: options.onProgress\n  })\n\n  for await (const entry of buildTree(parallelBatch(buildDag(candidates, blockstore), fileImportConcurrency), blockstore)) {\n    yield {\n      cid: entry.cid,\n      path: entry.path,\n      unixfs: entry.unixfs,\n      size: entry.size\n    }\n  }\n}\n\n/**\n * `importFile` is similar to `importer` except it accepts a single\n * `FileCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importFile } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: FileCandidate = {\n *   path: './foo.txt',\n *   content: Uint8Array.from([0, 1, 2, 3, 4])\n * }\n *\n * const entry = await importFile(input, blockstore)\n * ```\n */\nexport async function importFile (content: FileCandidate, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  const result = await first(importer([content], blockstore, options))\n\n  if (result == null) {\n    throw errcode(new Error('Nothing imported'), 'ERR_INVALID_PARAMS')\n  }\n\n  return result\n}\n\n/**\n * `importDir` is similar to `importer` except it accepts a single\n * `DirectoryCandidate` and returns a promise of a single `ImportResult`\n * instead of a stream of results.\n *\n * @example\n *\n * ```typescript\n * import { importDirectory } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input: DirectoryCandidate = {\n *   path: './foo.txt'\n * }\n *\n * const entry = await importDirectory(input, blockstore)\n * ```\n */\nexport async function importDirectory (content: DirectoryCandidate, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  const result = await first(importer([content], blockstore, options))\n\n  if (result == null) {\n    throw errcode(new Error('Nothing imported'), 'ERR_INVALID_PARAMS')\n  }\n\n  return result\n}\n\n/**\n * `importBytes` accepts a single Uint8Array and returns a promise\n * of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importBytes } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = Uint8Array.from([0, 1, 2, 3, 4])\n *\n * const entry = await importBytes(input, blockstore)\n * ```\n */\nexport async function importBytes (buf: ImportContent, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  return await importFile({\n    content: buf\n  }, blockstore, options)\n}\n\n/**\n * `importByteStream` accepts a single stream of Uint8Arrays and\n * returns a promise of a single `ImportResult`.\n *\n * @example\n *\n * ```typescript\n * import { importByteStream } from 'ipfs-unixfs-importer'\n * import { MemoryBlockstore } from 'blockstore-core'\n *\n * // store blocks in memory, other blockstores are available\n * const blockstore = new MemoryBlockstore()\n *\n * const input = [\n *   Uint8Array.from([0, 1, 2, 3, 4]),\n *   Uint8Array.from([5, 6, 7, 8, 9])\n * ]\n *\n * const entry = await importByteStream(input, blockstore)\n * ```\n */\nexport async function importByteStream (bufs: ByteStream, blockstore: WritableStorage, options: ImporterOptions = {}): Promise<ImportResult> {\n  return await importFile({\n    content: bufs\n  }, blockstore, options)\n}\n", "import batch from 'it-batch'\n\ninterface Success<T> {\n  ok: true\n  value: T\n}\n\ninterface Failure {\n  ok: false\n  err: Error\n}\n\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function * parallelBatch <T> (source: AsyncIterable<() => Promise<T>> | Iterable<() => Promise<T>>, size: number = 1): AsyncGenerator<T, void, undefined> {\n  for await (const tasks of batch(source, size)) {\n    const things: Array<Promise<Success<T> | Failure>> = tasks.map(\n      async (p: () => Promise<T>) => {\n        return p().then(value => ({ ok: true, value }), err => ({ ok: false, err }))\n      })\n\n    for (let i = 0; i < things.length; i++) {\n      const result = await things[i]\n\n      if (result.ok) {\n        yield result.value\n      } else {\n        throw result.err\n      }\n    }\n  }\n}\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Takes an (async) iterable that emits things and returns an async iterable that\n * emits those things in fixed-sized batches\n */\nfunction batch <T> (source: Iterable<T>, size?: number): Generator<T[], void, undefined>\nfunction batch <T> (source: Iterable<T> | AsyncIterable<T>, size?: number): AsyncGenerator<T[], void, undefined>\nfunction batch <T> (source: Iterable<T> | AsyncIterable<T>, size: number = 1): Generator<T[], void, undefined> | AsyncGenerator<T[], void, undefined> {\n  size = Number(size)\n\n  if (isAsyncIterable(source)) {\n    return (async function * () {\n      let things: T[] = []\n\n      if (size < 1) {\n        size = 1\n      }\n\n      if (size !== Math.round(size)) {\n        throw new Error('Batch size must be an integer')\n      }\n\n      for await (const thing of source) {\n        things.push(thing)\n\n        while (things.length >= size) {\n          yield things.slice(0, size)\n\n          things = things.slice(size)\n        }\n      }\n\n      while (things.length > 0) {\n        yield things.slice(0, size)\n\n        things = things.slice(size)\n      }\n    }())\n  }\n\n  return (function * () {\n    let things: T[] = []\n\n    if (size < 1) {\n      size = 1\n    }\n\n    if (size !== Math.round(size)) {\n      throw new Error('Batch size must be an integer')\n    }\n\n    for (const thing of source) {\n      things.push(thing)\n\n      while (things.length >= size) {\n        yield things.slice(0, size)\n\n        things = things.slice(size)\n      }\n    }\n\n    while (things.length > 0) {\n      yield things.slice(0, size)\n\n      things = things.slice(size)\n    }\n  }())\n}\n\nexport default batch\n", "import { dirBuilder, DirBuilderOptions } from './dir.js'\nimport { fileBuilder, FileBuilderOptions } from './file.js'\nimport errCode from 'err-code'\nimport type { Directory, File, FileCandidate, ImportCandidate, ImporterProgressEvents, InProgressImportResult, WritableStorage } from '../index.js'\nimport type { ChunkValidator } from './validate-chunks.js'\nimport type { Chunker } from '../chunker/index.js'\nimport type { ProgressEvent, ProgressOptions } from 'progress-events'\nimport { CustomProgressEvent } from 'progress-events'\n\n/**\n * Passed to the onProgress callback while importing files\n */\nexport interface ImportReadProgress {\n  /**\n   * How many bytes we have read from this source so far\n   */\n  bytesRead: bigint\n\n  /**\n   * The size of the current chunk\n   */\n  chunkSize: bigint\n\n  /**\n   * The path of the file being imported, if one was specified\n   */\n  path?: string\n}\n\nexport type DagBuilderProgressEvents =\n  ProgressEvent<'unixfs:importer:progress:file:read', ImportReadProgress>\n\nfunction isIterable (thing: any): thing is Iterable<any> {\n  return Symbol.iterator in thing\n}\n\nfunction isAsyncIterable (thing: any): thing is AsyncIterable<any> {\n  return Symbol.asyncIterator in thing\n}\n\nfunction contentAsAsyncIterable (content: Uint8Array | AsyncIterable<Uint8Array> | Iterable<Uint8Array>): AsyncIterable<Uint8Array> {\n  try {\n    if (content instanceof Uint8Array) {\n      return (async function * () {\n        yield content\n      }())\n    } else if (isIterable(content)) {\n      return (async function * () {\n        yield * content\n      }())\n    } else if (isAsyncIterable(content)) {\n      return content\n    }\n  } catch {\n    throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n  }\n\n  throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n}\n\nexport interface DagBuilderOptions extends FileBuilderOptions, DirBuilderOptions, ProgressOptions<ImporterProgressEvents> {\n  chunker: Chunker\n  chunkValidator: ChunkValidator\n  wrapWithDirectory: boolean\n}\n\nexport type ImporterSourceStream = AsyncIterable<ImportCandidate> | Iterable<ImportCandidate>\n\nexport interface DAGBuilder {\n  (source: ImporterSourceStream, blockstore: WritableStorage): AsyncIterable<() => Promise<InProgressImportResult>>\n}\n\nexport function defaultDagBuilder (options: DagBuilderOptions): DAGBuilder {\n  return async function * dagBuilder (source, blockstore) {\n    for await (const entry of source) {\n      let originalPath: string | undefined\n\n      if (entry.path != null) {\n        originalPath = entry.path\n        entry.path = entry.path\n          .split('/')\n          .filter(path => path != null && path !== '.')\n          .join('/')\n      }\n\n      if (isFileCandidate(entry)) {\n        const file: File = {\n          path: entry.path,\n          mtime: entry.mtime,\n          mode: entry.mode,\n          content: (async function * () {\n            let bytesRead = 0n\n\n            for await (const chunk of options.chunker(options.chunkValidator(contentAsAsyncIterable(entry.content)))) {\n              const currentChunkSize = BigInt(chunk.byteLength)\n              bytesRead += currentChunkSize\n\n              options.onProgress?.(new CustomProgressEvent<ImportReadProgress>('unixfs:importer:progress:file:read', {\n                bytesRead,\n                chunkSize: currentChunkSize,\n                path: entry.path\n              }))\n\n              yield chunk\n            }\n          })(),\n          originalPath\n        }\n\n        yield async () => await fileBuilder(file, blockstore, options)\n      } else if (entry.path != null) {\n        const dir: Directory = {\n          path: entry.path,\n          mtime: entry.mtime,\n          mode: entry.mode,\n          originalPath\n        }\n\n        yield async () => await dirBuilder(dir, blockstore, options)\n      } else {\n        throw new Error('Import candidate must have content or path or both')\n      }\n    }\n  }\n}\n\nfunction isFileCandidate (entry: any): entry is FileCandidate {\n  return entry.content != null\n}\n", "import { UnixFS } from 'ipfs-unixfs'\nimport { persist } from '../utils/persist.js'\nimport { encode, prepare } from '@ipld/dag-pb'\nimport type { Directory, InProgressImportResult, WritableStorage } from '../index.js'\nimport type { Version } from 'multiformats/cid'\n\nexport interface DirBuilderOptions {\n  cidVersion: Version\n  signal?: AbortSignal\n}\n\nexport const dirBuilder = async (dir: Directory, blockstore: WritableStorage, options: DirBuilderOptions): Promise<InProgressImportResult> => {\n  const unixfs = new UnixFS({\n    type: 'directory',\n    mtime: dir.mtime,\n    mode: dir.mode\n  })\n\n  const block = encode(prepare({ Data: unixfs.marshal() }))\n  const cid = await persist(block, blockstore, options)\n  const path = dir.path\n\n  return {\n    cid,\n    path,\n    unixfs,\n    size: BigInt(block.length),\n    originalPath: dir.originalPath,\n    block\n  }\n}\n", "import errcode from 'err-code'\nimport { Data as PBData } from './unixfs.js'\n\nexport interface Mtime {\n  secs: bigint\n  nsecs?: number\n}\n\nexport type MtimeLike = Mtime | { Seconds: number, FractionalNanoseconds?: number } | [number, number] | Date\n\nconst types: Record<string, string> = {\n  Raw: 'raw',\n  Directory: 'directory',\n  File: 'file',\n  Metadata: 'metadata',\n  Symlink: 'symlink',\n  HAMTShard: 'hamt-sharded-directory'\n}\n\nconst dirTypes = [\n  'directory',\n  'hamt-sharded-directory'\n]\n\nconst DEFAULT_FILE_MODE = parseInt('0644', 8)\nconst DEFAULT_DIRECTORY_MODE = parseInt('0755', 8)\n\nexport interface UnixFSOptions {\n  type?: string\n  data?: Uint8Array\n  blockSizes?: bigint[]\n  hashType?: bigint\n  fanout?: bigint\n  mtime?: Mtime\n  mode?: number\n}\n\nclass UnixFS {\n  /**\n   * Decode from protobuf https://github.com/ipfs/specs/blob/master/UNIXFS.md\n   */\n  static unmarshal (marshaled: Uint8Array): UnixFS {\n    const message = PBData.decode(marshaled)\n\n    const data = new UnixFS({\n      type: types[message.Type != null ? message.Type.toString() : 'File'],\n      data: message.Data,\n      blockSizes: message.blocksizes,\n      mode: message.mode,\n      mtime: message.mtime != null\n        ? {\n            secs: message.mtime.Seconds ?? 0n,\n            nsecs: message.mtime.FractionalNanoseconds\n          }\n        : undefined\n    })\n\n    // make sure we honour the original mode\n    data._originalMode = message.mode ?? 0\n\n    return data\n  }\n\n  public type: string\n  public data?: Uint8Array\n  public blockSizes: bigint[]\n  public hashType?: bigint\n  public fanout?: bigint\n  public mtime?: Mtime\n\n  private _mode?: number\n  private _originalMode: number\n\n  constructor (options: UnixFSOptions = {\n    type: 'file'\n  }) {\n    const {\n      type,\n      data,\n      blockSizes,\n      hashType,\n      fanout,\n      mtime,\n      mode\n    } = options\n\n    if (type != null && !Object.values(types).includes(type)) {\n      throw errcode(new Error('Type: ' + type + ' is not valid'), 'ERR_INVALID_TYPE')\n    }\n\n    this.type = type ?? 'file'\n    this.data = data\n    this.hashType = hashType\n    this.fanout = fanout\n    this.blockSizes = blockSizes ?? []\n    this._originalMode = 0\n    this.mode = mode\n    this.mtime = mtime\n  }\n\n  set mode (mode: number | undefined) {\n    if (mode == null) {\n      this._mode = this.isDirectory() ? DEFAULT_DIRECTORY_MODE : DEFAULT_FILE_MODE\n    } else {\n      this._mode = (mode & 0xFFF)\n    }\n  }\n\n  get mode (): number | undefined {\n    return this._mode\n  }\n\n  isDirectory (): boolean {\n    return dirTypes.includes(this.type)\n  }\n\n  addBlockSize (size: bigint): void {\n    this.blockSizes.push(size)\n  }\n\n  removeBlockSize (index: number): void {\n    this.blockSizes.splice(index, 1)\n  }\n\n  /**\n   * Returns `0n` for directories or `data.length + sum(blockSizes)` for everything else\n   */\n  fileSize (): bigint {\n    if (this.isDirectory()) {\n      // dirs don't have file size\n      return 0n\n    }\n\n    let sum = 0n\n    this.blockSizes.forEach((size) => {\n      sum += size\n    })\n\n    if (this.data != null) {\n      sum += BigInt(this.data.length)\n    }\n\n    return sum\n  }\n\n  /**\n   * encode to protobuf Uint8Array\n   */\n  marshal (): Uint8Array {\n    let type\n\n    switch (this.type) {\n      case 'raw': type = PBData.DataType.Raw; break\n      case 'directory': type = PBData.DataType.Directory; break\n      case 'file': type = PBData.DataType.File; break\n      case 'metadata': type = PBData.DataType.Metadata; break\n      case 'symlink': type = PBData.DataType.Symlink; break\n      case 'hamt-sharded-directory': type = PBData.DataType.HAMTShard; break\n      default:\n        throw errcode(new Error(`Type: ${type} is not valid`), 'ERR_INVALID_TYPE')\n    }\n\n    let data = this.data\n\n    if (this.data == null || this.data.length === 0) {\n      data = undefined\n    }\n\n    let mode\n\n    if (this.mode != null) {\n      mode = (this._originalMode & 0xFFFFF000) | (this.mode ?? 0)\n\n      if (mode === DEFAULT_FILE_MODE && !this.isDirectory()) {\n        mode = undefined\n      }\n\n      if (mode === DEFAULT_DIRECTORY_MODE && this.isDirectory()) {\n        mode = undefined\n      }\n    }\n\n    let mtime\n\n    if (this.mtime != null) {\n      mtime = {\n        Seconds: this.mtime.secs,\n        FractionalNanoseconds: this.mtime.nsecs\n      }\n    }\n\n    return PBData.encode({\n      Type: type,\n      Data: data,\n      filesize: this.isDirectory() ? undefined : this.fileSize(),\n      blocksizes: this.blockSizes,\n      hashType: this.hashType,\n      fanout: this.fanout,\n      mode,\n      mtime\n    })\n  }\n}\n\nexport { UnixFS }\n", "/* eslint-disable import/export */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */\n/* eslint-disable @typescript-eslint/no-empty-interface */\n\nimport { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime'\nimport type { Codec } from 'protons-runtime'\nimport type { Uint8ArrayList } from 'uint8arraylist'\n\nexport interface Data {\n  Type?: Data.DataType\n  Data?: Uint8Array\n  filesize?: bigint\n  blocksizes: bigint[]\n  hashType?: bigint\n  fanout?: bigint\n  mode?: number\n  mtime?: UnixTime\n}\n\nexport namespace Data {\n  export enum DataType {\n    Raw = 'Raw',\n    Directory = 'Directory',\n    File = 'File',\n    Metadata = 'Metadata',\n    Symlink = 'Symlink',\n    HAMTShard = 'HAMTShard'\n  }\n\n  enum __DataTypeValues {\n    Raw = 0,\n    Directory = 1,\n    File = 2,\n    Metadata = 3,\n    Symlink = 4,\n    HAMTShard = 5\n  }\n\n  export namespace DataType {\n    export const codec = (): Codec<DataType> => {\n      return enumeration<DataType>(__DataTypeValues)\n    }\n  }\n\n  let _codec: Codec<Data>\n\n  export const codec = (): Codec<Data> => {\n    if (_codec == null) {\n      _codec = message<Data>((obj, w, opts = {}) => {\n        if (opts.lengthDelimited !== false) {\n          w.fork()\n        }\n\n        if (obj.Type != null) {\n          w.uint32(8)\n          Data.DataType.codec().encode(obj.Type, w)\n        }\n\n        if (obj.Data != null) {\n          w.uint32(18)\n          w.bytes(obj.Data)\n        }\n\n        if (obj.filesize != null) {\n          w.uint32(24)\n          w.uint64(obj.filesize)\n        }\n\n        if (obj.blocksizes != null) {\n          for (const value of obj.blocksizes) {\n            w.uint32(32)\n            w.uint64(value)\n          }\n        }\n\n        if (obj.hashType != null) {\n          w.uint32(40)\n          w.uint64(obj.hashType)\n        }\n\n        if (obj.fanout != null) {\n          w.uint32(48)\n          w.uint64(obj.fanout)\n        }\n\n        if (obj.mode != null) {\n          w.uint32(56)\n          w.uint32(obj.mode)\n        }\n\n        if (obj.mtime != null) {\n          w.uint32(66)\n          UnixTime.codec().encode(obj.mtime, w)\n        }\n\n        if (opts.lengthDelimited !== false) {\n          w.ldelim()\n        }\n      }, (reader, length) => {\n        const obj: any = {\n          blocksizes: []\n        }\n\n        const end = length == null ? reader.len : reader.pos + length\n\n        while (reader.pos < end) {\n          const tag = reader.uint32()\n\n          switch (tag >>> 3) {\n            case 1:\n              obj.Type = Data.DataType.codec().decode(reader)\n              break\n            case 2:\n              obj.Data = reader.bytes()\n              break\n            case 3:\n              obj.filesize = reader.uint64()\n              break\n            case 4:\n              obj.blocksizes.push(reader.uint64())\n              break\n            case 5:\n              obj.hashType = reader.uint64()\n              break\n            case 6:\n              obj.fanout = reader.uint64()\n              break\n            case 7:\n              obj.mode = reader.uint32()\n              break\n            case 8:\n              obj.mtime = UnixTime.codec().decode(reader, reader.uint32())\n              break\n            default:\n              reader.skipType(tag & 7)\n              break\n          }\n        }\n\n        return obj\n      })\n    }\n\n    return _codec\n  }\n\n  export const encode = (obj: Partial<Data>): Uint8Array => {\n    return encodeMessage(obj, Data.codec())\n  }\n\n  export const decode = (buf: Uint8Array | Uint8ArrayList): Data => {\n    return decodeMessage(buf, Data.codec())\n  }\n}\n\nexport interface UnixTime {\n  Seconds?: bigint\n  FractionalNanoseconds?: number\n}\n\nexport namespace UnixTime {\n  let _codec: Codec<UnixTime>\n\n  export const codec = (): Codec<UnixTime> => {\n    if (_codec == null) {\n      _codec = message<UnixTime>((obj, w, opts = {}) => {\n        if (opts.lengthDelimited !== false) {\n          w.fork()\n        }\n\n        if (obj.Seconds != null) {\n          w.uint32(8)\n          w.int64(obj.Seconds)\n        }\n\n        if (obj.FractionalNanoseconds != null) {\n          w.uint32(21)\n          w.fixed32(obj.FractionalNanoseconds)\n        }\n\n        if (opts.lengthDelimited !== false) {\n          w.ldelim()\n        }\n      }, (reader, length) => {\n        const obj: any = {}\n\n        const end = length == null ? reader.len : reader.pos + length\n\n        while (reader.pos < end) {\n          const tag = reader.uint32()\n\n          switch (tag >>> 3) {\n            case 1:\n              obj.Seconds = reader.int64()\n              break\n            case 2:\n              obj.FractionalNanoseconds = reader.fixed32()\n              break\n            default:\n              reader.skipType(tag & 7)\n              break\n          }\n        }\n\n        return obj\n      })\n    }\n\n    return _codec\n  }\n\n  export const encode = (obj: Partial<UnixTime>): Uint8Array => {\n    return encodeMessage(obj, UnixTime.codec())\n  }\n\n  export const decode = (buf: Uint8Array | Uint8ArrayList): UnixTime => {\n    return decodeMessage(buf, UnixTime.codec())\n  }\n}\n\nexport interface Metadata {\n  MimeType?: string\n}\n\nexport namespace Metadata {\n  let _codec: Codec<Metadata>\n\n  export const codec = (): Codec<Metadata> => {\n    if (_codec == null) {\n      _codec = message<Metadata>((obj, w, opts = {}) => {\n        if (opts.lengthDelimited !== false) {\n          w.fork()\n        }\n\n        if (obj.MimeType != null) {\n          w.uint32(10)\n          w.string(obj.MimeType)\n        }\n\n        if (opts.lengthDelimited !== false) {\n          w.ldelim()\n        }\n      }, (reader, length) => {\n        const obj: any = {}\n\n        const end = length == null ? reader.len : reader.pos + length\n\n        while (reader.pos < end) {\n          const tag = reader.uint32()\n\n          switch (tag >>> 3) {\n            case 1:\n              obj.MimeType = reader.string()\n              break\n            default:\n              reader.skipType(tag & 7)\n              break\n          }\n        }\n\n        return obj\n      })\n    }\n\n    return _codec\n  }\n\n  export const encode = (obj: Partial<Metadata>): Uint8Array => {\n    return encodeMessage(obj, Metadata.codec())\n  }\n\n  export const decode = (buf: Uint8Array | Uint8ArrayList): Metadata => {\n    return decodeMessage(buf, Metadata.codec())\n  }\n}\n", "import type { Codec } from './codec.js'\n\nexport interface FieldDef {\n  name: string\n  codec: Codec<any>\n  optional?: true\n  repeats?: true\n  packed?: true\n}\n\nexport {\n  decodeMessage\n} from './decode.js'\n\nexport {\n  encodeMessage\n} from './encode.js'\n\nexport { enumeration } from './codecs/enum.js'\nexport { message } from './codecs/message.js'\nexport { reader, writer } from './utils.js'\nexport type { Codec, EncodeOptions } from './codec.js'\n\nexport interface Writer {\n  /**\n   * Current length\n   */\n  len: number\n\n  /**\n   * Writes an unsigned 32 bit value as a varint\n   */\n  uint32: (value: number) => Writer\n\n  /**\n   * Writes a signed 32 bit value as a varint`\n   */\n  int32: (value: number) => Writer\n\n  /**\n   * Writes a 32 bit value as a varint, zig-zag encoded\n   */\n  sint32: (value: number) => Writer\n\n  /**\n   * Writes an unsigned 64 bit value as a varint\n   */\n  uint64: (value: bigint) => Writer\n\n  /**\n   * Writes a signed 64 bit value as a varint\n   */\n  int64: (value: bigint) => Writer\n\n  /**\n   * Writes a signed 64 bit value as a varint, zig-zag encoded\n   */\n  sint64: (value: bigint) => Writer\n\n  /**\n   * Writes a boolish value as a varint\n   */\n  bool: (value: boolean) => Writer\n\n  /**\n   * Writes an unsigned 32 bit value as fixed 32 bits\n   */\n  fixed32: (value: number) => Writer\n\n  /**\n   * Writes a signed 32 bit value as fixed 32 bits\n   */\n  sfixed32: (value: number) => Writer\n\n  /**\n   * Writes an unsigned 64 bit value as fixed 64 bits\n   */\n  fixed64: (value: bigint) => Writer\n\n  /**\n   * Writes a signed 64 bit value as fixed 64 bits\n   */\n  sfixed64: (value: bigint) => Writer\n\n  /**\n   * Writes a float (32 bit)\n   */\n  float: (value: number) => Writer\n\n  /**\n   * Writes a double (64 bit float)\n   */\n  double: (value: number) => Writer\n\n  /**\n   * Writes a sequence of bytes\n   */\n  bytes: (value: Uint8Array) => Writer\n\n  /**\n   * Writes a string\n   */\n  string: (value: string) => Writer\n\n  /**\n   * Forks this writer's state by pushing it to a stack.\n   * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n   */\n  fork: () => Writer\n\n  /**\n   * Resets this instance to the last state.\n   */\n  reset: () => Writer\n\n  /**\n   * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n   */\n  ldelim: () => Writer\n\n  /**\n   * Finishes the write operation\n   */\n  finish: () => Uint8Array\n}\n\nexport interface Reader {\n  /**\n   * Read buffer\n   */\n  buf: Uint8Array\n\n  /**\n   * Read buffer position\n   */\n  pos: number\n\n  /**\n   * Read buffer length\n   */\n  len: number\n\n  /**\n   * Reads a varint as an unsigned 32 bit value\n   */\n  uint32: () => number\n\n  /**\n   * Reads a varint as a signed 32 bit value\n   */\n  int32: () => number\n\n  /**\n   * Reads a zig-zag encoded varint as a signed 32 bit value\n   */\n  sint32: () => number\n\n  /**\n   * Reads a varint as a boolean\n   */\n  bool: () => boolean\n\n  /**\n   * Reads fixed 32 bits as an unsigned 32 bit integer\n   */\n  fixed32: () => number\n\n  /**\n   * Reads fixed 32 bits as a signed 32 bit integer\n   */\n  sfixed32: () => number\n\n  /**\n   * Reads a float (32 bit) as a number\n   */\n  float: () => number\n\n  /**\n   * Reads a double (64 bit float) as a number\n   */\n  double: () => number\n\n  /**\n   * Reads a sequence of bytes preceded by its length as a varint\n   */\n  bytes: () => Uint8Array\n\n  /**\n   * Reads a string preceded by its byte length as a varint\n   */\n  string: () => string\n\n  /**\n   * Skips the specified number of bytes if specified, otherwise skips a varints`\n   */\n  skip: (length?: number) => void\n\n  /**\n   * Skips the next element of the specified wire type\n   */\n  skipType: (wireType: number) => void\n\n  /**\n   * Reads a varint as a signed 64 bit value\n   */\n  int64: () => bigint\n\n  /**\n   * Reads a varint as an unsigned 64 bit value\n   */\n  uint64: () => bigint\n\n  /**\n   * Reads a zig-zag encoded varint as a signed 64 bit value\n   */\n  sint64: () => bigint\n\n  /**\n   * Reads fixed 64 bits\n   */\n  fixed64: () => bigint\n\n  /**\n   * Reads zig-zag encoded fixed 64 bits\n   */\n  sfixed64: () => bigint\n}\n", "import type { Uint8ArrayList } from 'uint8arraylist'\n\nimport type { Codec } from './codec.js'\nimport { reader } from './utils.js'\n\nexport function decodeMessage <T> (buf: Uint8Array | Uint8ArrayList, codec: Codec<T>): T {\n  const r = reader(buf instanceof Uint8Array ? buf : buf.subarray())\n\n  return codec.decode(r)\n}\n", "// @ts-expect-error no types\nimport ReaderClass from 'protobufjs/src/reader.js'\n// @ts-expect-error no types\nimport ReaderBufferClass from 'protobufjs/src/reader_buffer.js'\n// @ts-expect-error no types\nimport util from 'protobufjs/src/util/minimal.js'\n// @ts-expect-error no types\nimport WriterClass from 'protobufjs/src/writer.js'\n// @ts-expect-error no types\nimport WriterBufferClass from 'protobufjs/src/writer_buffer.js'\n\nimport type { Reader, Writer } from './index.js'\n\nfunction configure (): void {\n  util._configure()\n  ReaderClass._configure(ReaderBufferClass)\n  WriterClass._configure(WriterBufferClass)\n}\n\n// Set up buffer utility according to the environment\nconfigure()\n\n// monkey patch the reader to add native bigint support\nconst methods = [\n  'uint64', 'int64', 'sint64', 'fixed64', 'sfixed64'\n]\n\nfunction patchReader (obj: any): any {\n  for (const method of methods) {\n    if (obj[method] == null) {\n      continue\n    }\n\n    const original = obj[method]\n    obj[method] = function (): bigint {\n      return BigInt(original.call(this).toString())\n    }\n  }\n\n  return obj\n}\n\nexport function reader (buf: Uint8Array): Reader {\n  return patchReader(new ReaderClass(buf))\n}\n\nfunction patchWriter (obj: any): any {\n  for (const method of methods) {\n    if (obj[method] == null) {\n      continue\n    }\n\n    const original = obj[method]\n    obj[method] = function (val: bigint) {\n      return original.call(this, val.toString())\n    }\n  }\n\n  return obj\n}\n\nexport function writer (): Writer {\n  return patchWriter(WriterClass.create())\n}\n", "import type { Codec } from './codec.js'\nimport { writer } from './utils.js'\n\nexport function encodeMessage <T> (message: T, codec: Codec<T>): Uint8Array {\n  const w = writer()\n\n  codec.encode(message, w, {\n    lengthDelimited: false\n  })\n\n  return w.finish()\n}\n", "\nimport { createCodec, CODEC_TYPES } from '../codec.js'\nimport type { DecodeFunction, EncodeFunction, Codec } from '../codec.js'\n\nexport function enumeration <T> (v: any): Codec<T> {\n  function findValue (val: string | number): number {\n    // Use the reverse mapping to look up the enum key for the stored value\n    // https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings\n    if (v[val.toString()] == null) {\n      throw new Error('Invalid enum value')\n    }\n\n    return v[val]\n  }\n\n  const encode: EncodeFunction<number | string> = function enumEncode (val, writer) {\n    const enumValue = findValue(val)\n\n    writer.int32(enumValue)\n  }\n\n  const decode: DecodeFunction<number | string> = function enumDecode (reader) {\n    const val = reader.int32()\n\n    return findValue(val)\n  }\n\n  // @ts-expect-error yeah yeah\n  return createCodec('enum', CODEC_TYPES.VARINT, encode, decode)\n}\n", "import type { Writer, Reader } from './index.js'\n\n// https://developers.google.com/protocol-buffers/docs/encoding#structure\nexport enum CODEC_TYPES {\n  VARINT = 0,\n  BIT64,\n  LENGTH_DELIMITED,\n  START_GROUP,\n  END_GROUP,\n  BIT32\n}\n\nexport interface EncodeOptions {\n  lengthDelimited?: boolean\n  writeDefaults?: boolean\n}\n\nexport interface EncodeFunction<T> {\n  (value: Partial<T>, writer: Writer, opts?: EncodeOptions): void\n}\n\nexport interface DecodeFunction<T> {\n  (reader: Reader, length?: number): T\n}\n\nexport interface Codec<T> {\n  name: string\n  type: CODEC_TYPES\n  encode: EncodeFunction<T>\n  decode: DecodeFunction<T>\n}\n\nexport function createCodec <T> (name: string, type: CODEC_TYPES, encode: EncodeFunction<T>, decode: DecodeFunction<T>): Codec<T> {\n  return {\n    name,\n    type,\n    encode,\n    decode\n  }\n}\n", "import { createCodec, CODEC_TYPES, EncodeOptions } from '../codec.js'\nimport type { Codec } from '../codec.js'\nimport type { Reader, Writer } from '../index.js'\n\nexport interface Factory<A, T> {\n  new (obj: A): T\n}\n\nexport function message <T> (encode: (obj: Partial<T>, writer: Writer, opts?: EncodeOptions) => void, decode: (reader: Reader, length?: number) => T): Codec<T> {\n  return createCodec('message', CODEC_TYPES.LENGTH_DELIMITED, encode, decode)\n}\n", "import { CID } from 'multiformats/cid'\nimport * as dagPb from '@ipld/dag-pb'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport type { WritableStorage } from '../index.js'\nimport type { BlockCodec } from 'multiformats/codecs/interface'\nimport type { Version as CIDVersion } from 'multiformats/cid'\nimport type { ProgressOptions } from 'progress-events'\n\nexport interface PersistOptions extends ProgressOptions {\n  codec?: BlockCodec<any, any>\n  cidVersion: CIDVersion\n  signal?: AbortSignal\n}\n\nexport const persist = async (buffer: Uint8Array, blockstore: WritableStorage, options: PersistOptions): Promise<CID> => {\n  if (options.codec == null) {\n    options.codec = dagPb\n  }\n\n  const multihash = await sha256.digest(buffer)\n  const cid = CID.create(options.cidVersion, options.codec.code, multihash)\n\n  await blockstore.put(cid, buffer, options)\n\n  return cid\n}\n", "import { CID } from 'multiformats/cid'\nimport { decodeNode } from './pb-decode.js'\nimport { encodeNode } from './pb-encode.js'\nimport { prepare, validate, createNode, createLink } from './util.js'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nexport const name = 'dag-pb'\nexport const code = 0x70\n\n/**\n * @param {PBNode} node\n * @returns {ByteView<PBNode>}\n */\nexport function encode (node) {\n  validate(node)\n\n  const pbn = {}\n  if (node.Links) {\n    pbn.Links = node.Links.map((l) => {\n      const link = {}\n      if (l.Hash) {\n        link.Hash = l.Hash.bytes // cid -> bytes\n      }\n      if (l.Name !== undefined) {\n        link.Name = l.Name\n      }\n      if (l.Tsize !== undefined) {\n        link.Tsize = l.Tsize\n      }\n      return link\n    })\n  }\n  if (node.Data) {\n    pbn.Data = node.Data\n  }\n\n  return encodeNode(pbn)\n}\n\n/**\n * @param {ByteView<PBNode>} bytes\n * @returns {PBNode}\n */\nexport function decode (bytes) {\n  const pbn = decodeNode(bytes)\n\n  const node = {}\n\n  if (pbn.Data) {\n    node.Data = pbn.Data\n  }\n\n  if (pbn.Links) {\n    node.Links = pbn.Links.map((l) => {\n      const link = {}\n      try {\n        link.Hash = CID.decode(l.Hash)\n      } catch (e) {}\n      if (!link.Hash) {\n        throw new Error('Invalid Hash field found in link, expected CID')\n      }\n      if (l.Name !== undefined) {\n        link.Name = l.Name\n      }\n      if (l.Tsize !== undefined) {\n        link.Tsize = l.Tsize\n      }\n      return link\n    })\n  }\n\n  return node\n}\n\nexport { prepare, validate, createNode, createLink }\n", "const textDecoder = new TextDecoder()\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[number, number]}\n */\nfunction decodeVarint (bytes, offset) {\n  let v = 0\n\n  for (let shift = 0; ; shift += 7) {\n    /* c8 ignore next 3 */\n    if (shift >= 64) {\n      throw new Error('protobuf: varint overflow')\n    }\n    /* c8 ignore next 3 */\n    if (offset >= bytes.length) {\n      throw new Error('protobuf: unexpected end of data')\n    }\n\n    const b = bytes[offset++]\n    v += shift < 28 ? (b & 0x7f) << shift : (b & 0x7f) * (2 ** shift)\n    if (b < 0x80) {\n      break\n    }\n  }\n  return [v, offset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[Uint8Array, number]}\n */\nfunction decodeBytes (bytes, offset) {\n  let byteLen\n  ;[byteLen, offset] = decodeVarint(bytes, offset)\n  const postOffset = offset + byteLen\n\n  /* c8 ignore next 3 */\n  if (byteLen < 0 || postOffset < 0) {\n    throw new Error('protobuf: invalid length')\n  }\n  /* c8 ignore next 3 */\n  if (postOffset > bytes.length) {\n    throw new Error('protobuf: unexpected end of data')\n  }\n\n  return [bytes.subarray(offset, postOffset), postOffset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} index\n * @returns {[number, number, number]}\n */\nfunction decodeKey (bytes, index) {\n  let wire\n  ;[wire, index] = decodeVarint(bytes, index)\n  // [wireType, fieldNum, newIndex]\n  return [wire & 0x7, wire >> 3, index]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBLink}\n */\nfunction decodeLink (bytes) {\n  /** @type {RawPBLink} */\n  const link = {}\n  const l = bytes.length\n  let index = 0\n\n  while (index < l) {\n    let wireType, fieldNum\n    ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n    if (fieldNum === 1) {\n      if (link.Hash) {\n        throw new Error('protobuf: (PBLink) duplicate Hash section')\n      }\n      if (wireType !== 2) {\n        throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Hash`)\n      }\n      if (link.Name !== undefined) {\n        throw new Error('protobuf: (PBLink) invalid order, found Name before Hash')\n      }\n      if (link.Tsize !== undefined) {\n        throw new Error('protobuf: (PBLink) invalid order, found Tsize before Hash')\n      }\n\n      [link.Hash, index] = decodeBytes(bytes, index)\n    } else if (fieldNum === 2) {\n      if (link.Name !== undefined) {\n        throw new Error('protobuf: (PBLink) duplicate Name section')\n      }\n      if (wireType !== 2) {\n        throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Name`)\n      }\n      if (link.Tsize !== undefined) {\n        throw new Error('protobuf: (PBLink) invalid order, found Tsize before Name')\n      }\n\n      let byts\n      ;[byts, index] = decodeBytes(bytes, index)\n      link.Name = textDecoder.decode(byts)\n    } else if (fieldNum === 3) {\n      if (link.Tsize !== undefined) {\n        throw new Error('protobuf: (PBLink) duplicate Tsize section')\n      }\n      if (wireType !== 0) {\n        throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Tsize`)\n      }\n\n      [link.Tsize, index] = decodeVarint(bytes, index)\n    } else {\n      throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${fieldNum}`)\n    }\n  }\n\n  /* c8 ignore next 3 */\n  if (index > l) {\n    throw new Error('protobuf: (PBLink) unexpected end of data')\n  }\n\n  return link\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBNode}\n */\nexport function decodeNode (bytes) {\n  const l = bytes.length\n  let index = 0\n  /** @type {RawPBLink[]|void} */\n  let links\n  let linksBeforeData = false\n  /** @type {Uint8Array|void} */\n  let data\n\n  while (index < l) {\n    let wireType, fieldNum\n    ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n    if (wireType !== 2) {\n      throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${wireType}`)\n    }\n\n    if (fieldNum === 1) {\n      if (data) {\n        throw new Error('protobuf: (PBNode) duplicate Data section')\n      }\n\n      [data, index] = decodeBytes(bytes, index)\n      if (links) {\n        linksBeforeData = true\n      }\n    } else if (fieldNum === 2) {\n      if (linksBeforeData) { // interleaved Links/Data/Links\n        throw new Error('protobuf: (PBNode) duplicate Links section')\n      } else if (!links) {\n        links = []\n      }\n      let byts\n      ;[byts, index] = decodeBytes(bytes, index)\n      links.push(decodeLink(byts))\n    } else {\n      throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${fieldNum}`)\n    }\n  }\n\n  /* c8 ignore next 3 */\n  if (index > l) {\n    throw new Error('protobuf: (PBNode) unexpected end of data')\n  }\n\n  /** @type {RawPBNode} */\n  const node = {}\n  if (data) {\n    node.Data = data\n  }\n  node.Links = links || []\n  return node\n}\n", "const textEncoder = new TextEncoder()\nconst maxInt32 = 2 ** 32\nconst maxUInt32 = 2 ** 31\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n// the encoders work backward from the end of the bytes array\n\n/**\n * encodeLink() is passed a slice of the parent byte array that ends where this\n * link needs to end, so it packs to the right-most part of the passed `bytes`\n *\n * @param {RawPBLink} link\n * @param {Uint8Array} bytes\n * @returns {number}\n */\nfunction encodeLink (link, bytes) {\n  let i = bytes.length\n\n  if (typeof link.Tsize === 'number') {\n    if (link.Tsize < 0) {\n      throw new Error('Tsize cannot be negative')\n    }\n    if (!Number.isSafeInteger(link.Tsize)) {\n      throw new Error('Tsize too large for encoding')\n    }\n    i = encodeVarint(bytes, i, link.Tsize) - 1\n    bytes[i] = 0x18\n  }\n\n  if (typeof link.Name === 'string') {\n    const nameBytes = textEncoder.encode(link.Name)\n    i -= nameBytes.length\n    bytes.set(nameBytes, i)\n    i = encodeVarint(bytes, i, nameBytes.length) - 1\n    bytes[i] = 0x12\n  }\n\n  if (link.Hash) {\n    i -= link.Hash.length\n    bytes.set(link.Hash, i)\n    i = encodeVarint(bytes, i, link.Hash.length) - 1\n    bytes[i] = 0xa\n  }\n\n  return bytes.length - i\n}\n\n/**\n * Encodes a PBNode into a new byte array of precisely the correct size\n *\n * @param {RawPBNode} node\n * @returns {Uint8Array}\n */\nexport function encodeNode (node) {\n  const size = sizeNode(node)\n  const bytes = new Uint8Array(size)\n  let i = size\n\n  if (node.Data) {\n    i -= node.Data.length\n    bytes.set(node.Data, i)\n    i = encodeVarint(bytes, i, node.Data.length) - 1\n    bytes[i] = 0xa\n  }\n\n  if (node.Links) {\n    for (let index = node.Links.length - 1; index >= 0; index--) {\n      const size = encodeLink(node.Links[index], bytes.subarray(0, i))\n      i -= size\n      i = encodeVarint(bytes, i, size) - 1\n      bytes[i] = 0x12\n    }\n  }\n\n  return bytes\n}\n\n/**\n * work out exactly how many bytes this link takes up\n *\n * @param {RawPBLink} link\n * @returns\n */\nfunction sizeLink (link) {\n  let n = 0\n\n  if (link.Hash) {\n    const l = link.Hash.length\n    n += 1 + l + sov(l)\n  }\n\n  if (typeof link.Name === 'string') {\n    const l = textEncoder.encode(link.Name).length\n    n += 1 + l + sov(l)\n  }\n\n  if (typeof link.Tsize === 'number') {\n    n += 1 + sov(link.Tsize)\n  }\n\n  return n\n}\n\n/**\n * Work out exactly how many bytes this node takes up\n *\n * @param {RawPBNode} node\n * @returns {number}\n */\nfunction sizeNode (node) {\n  let n = 0\n\n  if (node.Data) {\n    const l = node.Data.length\n    n += 1 + l + sov(l)\n  }\n\n  if (node.Links) {\n    for (const link of node.Links) {\n      const l = sizeLink(link)\n      n += 1 + l + sov(l)\n    }\n  }\n\n  return n\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @param {number} v\n * @returns {number}\n */\nfunction encodeVarint (bytes, offset, v) {\n  offset -= sov(v)\n  const base = offset\n\n  while (v >= maxUInt32) {\n    bytes[offset++] = (v & 0x7f) | 0x80\n    v /= 128\n  }\n\n  while (v >= 128) {\n    bytes[offset++] = (v & 0x7f) | 0x80\n    v >>>= 7\n  }\n\n  bytes[offset] = v\n\n  return base\n}\n\n/**\n * size of varint\n *\n * @param {number} x\n * @returns {number}\n */\nfunction sov (x) {\n  if (x % 2 === 0) {\n    x++\n  }\n  return Math.floor((len64(x) + 6) / 7)\n}\n\n/**\n * golang math/bits, how many bits does it take to represent this integer?\n *\n * @param {number} x\n * @returns {number}\n */\nfunction len64 (x) {\n  let n = 0\n  if (x >= maxInt32) {\n    x = Math.floor(x / maxInt32)\n    n = 32\n  }\n  if (x >= (1 << 16)) {\n    x >>>= 16\n    n += 16\n  }\n  if (x >= (1 << 8)) {\n    x >>>= 8\n    n += 8\n  }\n  return n + len8tab[x]\n}\n\n// golang math/bits\nconst len8tab = [\n  0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8\n]\n", "import { CID } from 'multiformats/cid'\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nconst pbNodeProperties = ['Data', 'Links']\nconst pbLinkProperties = ['Hash', 'Name', 'Tsize']\n\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {PBLink} a\n * @param {PBLink} b\n * @returns {number}\n */\nfunction linkComparator (a, b) {\n  if (a === b) {\n    return 0\n  }\n\n  const abuf = a.Name ? textEncoder.encode(a.Name) : []\n  const bbuf = b.Name ? textEncoder.encode(b.Name) : []\n\n  let x = abuf.length\n  let y = bbuf.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (abuf[i] !== bbuf[i]) {\n      x = abuf[i]\n      y = bbuf[i]\n      break\n    }\n  }\n\n  return x < y ? -1 : y < x ? 1 : 0\n}\n\n/**\n * @param {any} node\n * @param {string[]} properties\n * @returns {boolean}\n */\nfunction hasOnlyProperties (node, properties) {\n  return !Object.keys(node).some((p) => !properties.includes(p))\n}\n\n/**\n * Converts a CID, or a PBLink-like object to a PBLink\n *\n * @param {any} link\n * @returns {PBLink}\n */\nfunction asLink (link) {\n  if (typeof link.asCID === 'object') {\n    const Hash = CID.asCID(link)\n    if (!Hash) {\n      throw new TypeError('Invalid DAG-PB form')\n    }\n    return { Hash }\n  }\n\n  if (typeof link !== 'object' || Array.isArray(link)) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  const pbl = {}\n\n  if (link.Hash) {\n    let cid = CID.asCID(link.Hash)\n    try {\n      if (!cid) {\n        if (typeof link.Hash === 'string') {\n          cid = CID.parse(link.Hash)\n        } else if (link.Hash instanceof Uint8Array) {\n          cid = CID.decode(link.Hash)\n        }\n      }\n    } catch (/** @type {any} */ e) {\n      throw new TypeError(`Invalid DAG-PB form: ${e.message}`)\n    }\n\n    if (cid) {\n      pbl.Hash = cid\n    }\n  }\n\n  if (!pbl.Hash) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  if (typeof link.Name === 'string') {\n    pbl.Name = link.Name\n  }\n\n  if (typeof link.Tsize === 'number') {\n    pbl.Tsize = link.Tsize\n  }\n\n  return pbl\n}\n\n/**\n * @param {any} node\n * @returns {PBNode}\n */\nexport function prepare (node) {\n  if (node instanceof Uint8Array || typeof node === 'string') {\n    node = { Data: node }\n  }\n\n  if (typeof node !== 'object' || Array.isArray(node)) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  /** @type {PBNode} */\n  const pbn = {}\n\n  if (node.Data !== undefined) {\n    if (typeof node.Data === 'string') {\n      pbn.Data = textEncoder.encode(node.Data)\n    } else if (node.Data instanceof Uint8Array) {\n      pbn.Data = node.Data\n    } else {\n      throw new TypeError('Invalid DAG-PB form')\n    }\n  }\n\n  if (node.Links !== undefined) {\n    if (Array.isArray(node.Links)) {\n      pbn.Links = node.Links.map(asLink)\n      pbn.Links.sort(linkComparator)\n    } else {\n      throw new TypeError('Invalid DAG-PB form')\n    }\n  } else {\n    pbn.Links = []\n  }\n\n  return pbn\n}\n\n/**\n * @param {PBNode} node\n */\nexport function validate (node) {\n  /*\n  type PBLink struct {\n    Hash optional Link\n    Name optional String\n    Tsize optional Int\n  }\n\n  type PBNode struct {\n    Links [PBLink]\n    Data optional Bytes\n  }\n  */\n  // @ts-ignore private property for TS\n  if (!node || typeof node !== 'object' || Array.isArray(node) || node instanceof Uint8Array || (node['/'] && node['/'] === node.bytes)) {\n    throw new TypeError('Invalid DAG-PB form')\n  }\n\n  if (!hasOnlyProperties(node, pbNodeProperties)) {\n    throw new TypeError('Invalid DAG-PB form (extraneous properties)')\n  }\n\n  if (node.Data !== undefined && !(node.Data instanceof Uint8Array)) {\n    throw new TypeError('Invalid DAG-PB form (Data must be bytes)')\n  }\n\n  if (!Array.isArray(node.Links)) {\n    throw new TypeError('Invalid DAG-PB form (Links must be a list)')\n  }\n\n  for (let i = 0; i < node.Links.length; i++) {\n    const link = node.Links[i]\n    // @ts-ignore private property for TS\n    if (!link || typeof link !== 'object' || Array.isArray(link) || link instanceof Uint8Array || (link['/'] && link['/'] === link.bytes)) {\n      throw new TypeError('Invalid DAG-PB form (bad link)')\n    }\n\n    if (!hasOnlyProperties(link, pbLinkProperties)) {\n      throw new TypeError('Invalid DAG-PB form (extraneous properties on link)')\n    }\n\n    if (link.Hash === undefined) {\n      throw new TypeError('Invalid DAG-PB form (link must have a Hash)')\n    }\n\n    // @ts-ignore private property for TS\n    if (link.Hash == null || !link.Hash['/'] || link.Hash['/'] !== link.Hash.bytes) {\n      throw new TypeError('Invalid DAG-PB form (link Hash must be a CID)')\n    }\n\n    if (link.Name !== undefined && typeof link.Name !== 'string') {\n      throw new TypeError('Invalid DAG-PB form (link Name must be a string)')\n    }\n\n    if (link.Tsize !== undefined) {\n      if (typeof link.Tsize !== 'number' || link.Tsize % 1 !== 0) {\n        throw new TypeError('Invalid DAG-PB form (link Tsize must be an integer)')\n      }\n      if (link.Tsize < 0) {\n        throw new TypeError('Invalid DAG-PB form (link Tsize cannot be negative)')\n      }\n    }\n\n    if (i > 0 && linkComparator(link, node.Links[i - 1]) === -1) {\n      throw new TypeError('Invalid DAG-PB form (links must be sorted by Name bytes)')\n    }\n  }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {PBLink[]} [links=[]]\n * @returns {PBNode}\n */\nexport function createNode (data, links = []) {\n  return prepare({ Data: data, Links: links })\n}\n\n/**\n * @param {string} name\n * @param {number} size\n * @param {CID} cid\n * @returns {PBLink}\n */\nexport function createLink (name, size, cid) {\n  return asLink({ Hash: cid, Name: name, Tsize: size })\n}\n", "/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n  /**\n   * @param {Uint8Array} data\n   */\n  async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n  name: 'sha2-256',\n  code: 0x12,\n  encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n  name: 'sha2-512',\n  code: 0x13,\n  encode: sha('SHA-512')\n})\n", "import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await<Uint8Array>} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher<Code>}\n */\nexport class Hasher {\n  /**\n   *\n   * @param {Name} name\n   * @param {Code} code\n   * @param {(input: Uint8Array) => Await<Uint8Array>} encode\n   */\n  constructor (name, code, encode) {\n    this.name = name\n    this.code = code\n    this.encode = encode\n  }\n\n  /**\n   * @param {Uint8Array} input\n   * @returns {Await<Digest.Digest<Code, number>>}\n   */\n  digest (input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input)\n      return result instanceof Uint8Array\n        ? Digest.create(this.code, result)\n        /* c8 ignore next 1 */\n        : result.then(digest => Digest.create(this.code, digest))\n    } else {\n      throw Error('Unknown type, must be binary type')\n      /* c8 ignore next 1 */\n    }\n  }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise<T>|T} Await\n */\n", "import { UnixFS } from 'ipfs-unixfs'\nimport { persist } from '../utils/persist.js'\nimport { encode, PBLink, PBNode, prepare } from '@ipld/dag-pb'\nimport parallelBatch from 'it-parallel-batch'\nimport * as rawCodec from 'multiformats/codecs/raw'\nimport type { BufferImporter, File, InProgressImportResult, WritableStorage, SingleBlockImportResult, ImporterProgressEvents } from '../index.js'\nimport type { FileLayout, Reducer } from '../layout/index.js'\nimport type { CID, Version } from 'multiformats/cid'\nimport { CustomProgressEvent } from 'progress-events'\nimport type { ProgressOptions, ProgressEvent } from 'progress-events'\n\ninterface BuildFileBatchOptions {\n  bufferImporter: BufferImporter\n  blockWriteConcurrency: number\n}\n\nasync function * buildFileBatch (file: File, blockstore: WritableStorage, options: BuildFileBatchOptions): AsyncGenerator<InProgressImportResult> {\n  let count = -1\n  let previous: SingleBlockImportResult | undefined\n\n  for await (const entry of parallelBatch(options.bufferImporter(file, blockstore), options.blockWriteConcurrency)) {\n    count++\n\n    if (count === 0) {\n      // cache the first entry if case there aren't any more\n      previous = {\n        ...entry,\n        single: true\n      }\n\n      continue\n    } else if (count === 1 && (previous != null)) {\n      // we have the second block of a multiple block import so yield the first\n      yield {\n        ...previous,\n        block: undefined,\n        single: undefined\n      }\n      previous = undefined\n    }\n\n    // yield the second or later block of a multiple block import\n    yield {\n      ...entry,\n      block: undefined\n    }\n  }\n\n  if (previous != null) {\n    yield previous\n  }\n}\n\nexport interface LayoutLeafProgress {\n  /**\n   * The CID of the leaf being written\n   */\n  cid: CID\n\n  /**\n   * The path of the file being imported, if one was specified\n   */\n  path?: string\n}\n\nexport type ReducerProgressEvents =\n  ProgressEvent<'unixfs:importer:progress:file:layout', LayoutLeafProgress>\n\ninterface ReduceOptions extends ProgressOptions<ImporterProgressEvents> {\n  reduceSingleLeafToSelf: boolean\n  cidVersion: Version\n  signal?: AbortSignal\n}\n\nfunction isSingleBlockImport (result: any): result is SingleBlockImportResult {\n  return result.single === true\n}\n\nconst reduce = (file: File, blockstore: WritableStorage, options: ReduceOptions): Reducer => {\n  const reducer: Reducer = async function (leaves) {\n    if (leaves.length === 1 && isSingleBlockImport(leaves[0]) && options.reduceSingleLeafToSelf) {\n      const leaf = leaves[0]\n      let node: Uint8Array | PBNode = leaf.block\n\n      if (isSingleBlockImport(leaf) && (file.mtime !== undefined || file.mode !== undefined)) {\n        // only one leaf node which is a raw leaf - we have metadata so convert it into a\n        // UnixFS entry otherwise we'll have nowhere to store the metadata\n        leaf.unixfs = new UnixFS({\n          type: 'file',\n          mtime: file.mtime,\n          mode: file.mode,\n          data: leaf.block\n        })\n\n        node = { Data: leaf.unixfs.marshal(), Links: [] }\n\n        leaf.block = encode(prepare(node))\n\n        leaf.cid = await persist(leaf.block, blockstore, {\n          ...options,\n          cidVersion: options.cidVersion\n        })\n        leaf.size = BigInt(leaf.block.length)\n      }\n\n      options.onProgress?.(new CustomProgressEvent<LayoutLeafProgress>('unixfs:importer:progress:file:layout', {\n        cid: leaf.cid,\n        path: leaf.originalPath\n      }))\n\n      return {\n        cid: leaf.cid,\n        path: file.path,\n        unixfs: leaf.unixfs,\n        size: leaf.size,\n        originalPath: leaf.originalPath\n      }\n    }\n\n    // create a parent node and add all the leaves\n    const f = new UnixFS({\n      type: 'file',\n      mtime: file.mtime,\n      mode: file.mode\n    })\n\n    const links: PBLink[] = leaves\n      .filter(leaf => {\n        if (leaf.cid.code === rawCodec.code && leaf.size > 0) {\n          return true\n        }\n\n        if ((leaf.unixfs != null) && (leaf.unixfs.data == null) && leaf.unixfs.fileSize() > 0n) {\n          return true\n        }\n\n        return Boolean(leaf.unixfs?.data?.length)\n      })\n      .map((leaf) => {\n        if (leaf.cid.code === rawCodec.code) {\n          // node is a leaf buffer\n          f.addBlockSize(leaf.size)\n\n          return {\n            Name: '',\n            Tsize: Number(leaf.size),\n            Hash: leaf.cid\n          }\n        }\n\n        if ((leaf.unixfs == null) || (leaf.unixfs.data == null)) {\n          // node is an intermediate node\n          f.addBlockSize(leaf.unixfs?.fileSize() ?? 0n)\n        } else {\n          // node is a unixfs 'file' leaf node\n          f.addBlockSize(BigInt(leaf.unixfs.data.length))\n        }\n\n        return {\n          Name: '',\n          Tsize: Number(leaf.size),\n          Hash: leaf.cid\n        }\n      })\n\n    const node = {\n      Data: f.marshal(),\n      Links: links\n    }\n    const block = encode(prepare(node))\n    const cid = await persist(block, blockstore, options)\n\n    options.onProgress?.(new CustomProgressEvent<LayoutLeafProgress>('unixfs:importer:progress:file:layout', {\n      cid,\n      path: file.originalPath\n    }))\n\n    return {\n      cid,\n      path: file.path,\n      unixfs: f,\n      size: BigInt(block.length + node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), 0)),\n      originalPath: file.originalPath,\n      block\n    }\n  }\n\n  return reducer\n}\n\nexport interface FileBuilderOptions extends BuildFileBatchOptions, ReduceOptions {\n  layout: FileLayout\n}\n\nexport const fileBuilder = async (file: File, block: WritableStorage, options: FileBuilderOptions): Promise<InProgressImportResult> => {\n  return await options.layout(buildFileBatch(file, block, options), reduce(file, block, options))\n}\n", "// @ts-check\n\nimport { coerce } from '../bytes.js'\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView<T>} ByteView\n */\n\nexport const name = 'raw'\nexport const code = 0x55\n\n/**\n * @param {Uint8Array} node\n * @returns {ByteView<Uint8Array>}\n */\nexport const encode = (node) => coerce(node)\n\n/**\n * @param {ByteView<Uint8Array>} data\n * @returns {Uint8Array}\n */\nexport const decode = (data) => coerce(data)\n", "\n/**\n * Progress events are emitted during long running operations\n */\nexport interface ProgressEvent<T extends string = any, D = unknown> {\n  /**\n   * The event type\n   */\n  type: T\n\n  /**\n   * Context-specific event information\n   */\n  detail: D\n}\n\n/**\n * An implementation of the ProgressEvent interface, this is essentially\n * a typed `CustomEvent` with a `type` property that lets us disambiguate\n * events passed to `progress` callbacks.\n */\nexport class CustomProgressEvent<D = unknown, T extends string = any> extends Event implements ProgressEvent<T, D> {\n  // @ts-expect-error type is a property of Event, we just declare it here for use as a type disambiguator\n  public type: T\n  public detail: D\n\n  constructor (type: T, detail?: any) {\n    super(type)\n\n    this.detail = detail\n  }\n}\n\n/**\n * Define an `onProgress` callback that can be invoked with `ProgressEvent`s\n *\n * @example\n *\n * ```typescript\n * type MyOperationProgressEvents =\n *   ProgressEvent<'operation:start'> |\n *   ProgressEvent<'operation:success', Result> |\n *   ProgressEvent<'operation:error', Error>\n *\n * export interface MyOperationOptions extends ProgressOptions<MyOperationProgressEvents> {\n *  // define options here\n * }\n * ```\n */\nexport interface ProgressOptions<Event extends ProgressEvent = any> {\n  onProgress?: (evt: Event) => void\n}\n", "import { DirFlat } from './dir-flat.js'\nimport { flatToShard } from './flat-to-shard.js'\nimport { Dir } from './dir.js'\nimport { toPathComponents } from './utils/to-path-components.js'\nimport type { ImportResult, InProgressImportResult, TreeBuilder, WritableStorage } from './index.js'\nimport type { PersistOptions } from './utils/persist.js'\n\nexport interface AddToTreeOptions extends PersistOptions {\n  shardSplitThresholdBytes: number\n}\n\nasync function addToTree (elem: InProgressImportResult, tree: Dir, options: AddToTreeOptions): Promise<Dir> {\n  const pathElems = toPathComponents(elem.path ?? '')\n  const lastIndex = pathElems.length - 1\n  let parent = tree\n  let currentPath = ''\n\n  for (let i = 0; i < pathElems.length; i++) {\n    const pathElem = pathElems[i]\n\n    currentPath += `${currentPath !== '' ? '/' : ''}${pathElem}`\n\n    const last = (i === lastIndex)\n    parent.dirty = true\n    parent.cid = undefined\n    parent.size = undefined\n\n    if (last) {\n      await parent.put(pathElem, elem)\n      tree = await flatToShard(null, parent, options.shardSplitThresholdBytes, options)\n    } else {\n      let dir = await parent.get(pathElem)\n\n      if ((dir == null) || !(dir instanceof Dir)) {\n        dir = new DirFlat({\n          root: false,\n          dir: true,\n          parent,\n          parentKey: pathElem,\n          path: currentPath,\n          dirty: true,\n          flat: true,\n          mtime: dir?.unixfs?.mtime,\n          mode: dir?.unixfs?.mode\n        }, options)\n      }\n\n      await parent.put(pathElem, dir)\n\n      parent = dir\n    }\n  }\n\n  return tree\n}\n\nasync function * flushAndYield (tree: Dir | InProgressImportResult, blockstore: WritableStorage): AsyncGenerator<ImportResult> {\n  if (!(tree instanceof Dir)) {\n    if (tree.unixfs?.isDirectory() === true) {\n      yield tree\n    }\n\n    return\n  }\n\n  yield * tree.flush(blockstore)\n}\n\nexport interface TreeBuilderOptions extends AddToTreeOptions {\n  wrapWithDirectory: boolean\n}\n\nexport function defaultTreeBuilder (options: TreeBuilderOptions): TreeBuilder {\n  return async function * treeBuilder (source, block) {\n    let tree: Dir = new DirFlat({\n      root: true,\n      dir: true,\n      path: '',\n      dirty: true,\n      flat: true\n    }, options)\n\n    let rootDir: string | undefined\n    let singleRoot = false\n\n    for await (const entry of source) {\n      if (entry == null) {\n        continue\n      }\n\n      // if all paths are from the same root directory, we should\n      // wrap them all in that root directory\n      const dir = `${entry.originalPath ?? ''}`.split('/')[0]\n\n      if (dir != null && dir !== '') {\n        if (rootDir == null) {\n          rootDir = dir\n          singleRoot = true\n        } else if (rootDir !== dir) {\n          singleRoot = false\n        }\n      }\n\n      tree = await addToTree(entry, tree, options)\n\n      if (entry.unixfs == null || !entry.unixfs.isDirectory()) {\n        yield entry\n      }\n    }\n\n    if (options.wrapWithDirectory || (singleRoot && tree.childCount() > 1)) {\n      yield * flushAndYield(tree, block)\n    } else {\n      for await (const unwrapped of tree.eachChildSeries()) {\n        if (unwrapped == null) {\n          continue\n        }\n\n        yield * flushAndYield(unwrapped.child, block)\n      }\n    }\n  }\n}\n", "import { encode, PBNode, prepare } from '@ipld/dag-pb'\nimport type { Blockstore } from 'interface-blockstore'\nimport { UnixFS } from 'ipfs-unixfs'\nimport type { CID } from 'multiformats/cid'\nimport { Dir, CID_V0, CID_V1, DirProps } from './dir.js'\nimport type { ImportResult, InProgressImportResult } from './index.js'\nimport { persist, PersistOptions } from './utils/persist.js'\n\nexport class DirFlat extends Dir {\n  private readonly _children: Map<string, InProgressImportResult | Dir>\n\n  constructor (props: DirProps, options: PersistOptions) {\n    super(props, options)\n\n    this._children = new Map()\n  }\n\n  async put (name: string, value: InProgressImportResult | Dir): Promise<void> {\n    this.cid = undefined\n    this.size = undefined\n    this.nodeSize = undefined\n\n    this._children.set(name, value)\n  }\n\n  async get (name: string): Promise<InProgressImportResult | Dir | undefined> {\n    return await Promise.resolve(this._children.get(name))\n  }\n\n  childCount (): number {\n    return this._children.size\n  }\n\n  directChildrenCount (): number {\n    return this.childCount()\n  }\n\n  onlyChild (): InProgressImportResult | Dir {\n    return this._children.values().next().value\n  }\n\n  async * eachChildSeries (): AsyncGenerator<{ key: string, child: InProgressImportResult | Dir }, void, undefined> {\n    for (const [key, child] of this._children.entries()) {\n      yield {\n        key,\n        child\n      }\n    }\n  }\n\n  estimateNodeSize (): number {\n    if (this.nodeSize !== undefined) {\n      return this.nodeSize\n    }\n\n    this.nodeSize = 0\n\n    // estimate size only based on DAGLink name and CID byte lengths\n    // https://github.com/ipfs/go-unixfsnode/blob/37b47f1f917f1b2f54c207682f38886e49896ef9/data/builder/directory.go#L81-L96\n    for (const [name, child] of this._children.entries()) {\n      if (child.size != null && (child.cid != null)) {\n        this.nodeSize += name.length + (this.options.cidVersion === 1 ? CID_V1.bytes.byteLength : CID_V0.bytes.byteLength)\n      }\n    }\n\n    return this.nodeSize\n  }\n\n  async * flush (block: Blockstore): AsyncGenerator<ImportResult> {\n    const links = []\n\n    for (const [name, child] of this._children.entries()) {\n      let result: { size?: bigint | number, cid?: CID } = child\n\n      if (child instanceof Dir) {\n        for await (const entry of child.flush(block)) {\n          result = entry\n\n          yield entry\n        }\n      }\n\n      if (result.size != null && (result.cid != null)) {\n        links.push({\n          Name: name,\n          Tsize: Number(result.size),\n          Hash: result.cid\n        })\n      }\n    }\n\n    const unixfs = new UnixFS({\n      type: 'directory',\n      mtime: this.mtime,\n      mode: this.mode\n    })\n\n    const node: PBNode = { Data: unixfs.marshal(), Links: links }\n    const buffer = encode(prepare(node))\n    const cid = await persist(buffer, block, this.options)\n    const size = buffer.length + node.Links.reduce(\n      /**\n       * @param {number} acc\n       * @param {PBLink} curr\n       */\n      (acc, curr) => acc + (curr.Tsize == null ? 0 : curr.Tsize),\n      0)\n\n    this.cid = cid\n    this.size = size\n\n    yield {\n      cid,\n      unixfs,\n      path: this.path,\n      size: BigInt(size)\n    }\n  }\n}\n", "import type { WritableStorage, ImportResult, InProgressImportResult } from './index.js'\nimport type { Mtime, UnixFS } from 'ipfs-unixfs'\nimport { CID } from 'multiformats/cid'\nimport type { PersistOptions } from './utils/persist.js'\n\nexport interface DirProps {\n  root: boolean\n  dir: boolean\n  path: string\n  dirty: boolean\n  flat: boolean\n  parent?: Dir\n  parentKey?: string\n  unixfs?: UnixFS\n  mode?: number\n  mtime?: Mtime\n}\n\nexport abstract class Dir {\n  public options: PersistOptions\n  public root: boolean\n  public dir: boolean\n  public path: string\n  public dirty: boolean\n  public flat: boolean\n  public parent?: Dir\n  public parentKey?: string\n  public unixfs?: UnixFS\n  public mode?: number\n  public mtime?: Mtime\n  public cid?: CID\n  public size?: number\n  public nodeSize?: number\n\n  constructor (props: DirProps, options: PersistOptions) {\n    this.options = options ?? {}\n\n    this.root = props.root\n    this.dir = props.dir\n    this.path = props.path\n    this.dirty = props.dirty\n    this.flat = props.flat\n    this.parent = props.parent\n    this.parentKey = props.parentKey\n    this.unixfs = props.unixfs\n    this.mode = props.mode\n    this.mtime = props.mtime\n  }\n\n  abstract put (name: string, value: InProgressImportResult | Dir): Promise<void>\n  abstract get (name: string): Promise<InProgressImportResult | Dir | undefined>\n  abstract eachChildSeries (): AsyncIterable<{ key: string, child: InProgressImportResult | Dir }>\n  abstract flush (blockstore: WritableStorage): AsyncGenerator<ImportResult>\n  abstract estimateNodeSize (): number\n  abstract childCount (): number\n}\n\n// we use these to calculate the node size to use as a check for whether a directory\n// should be sharded or not. Since CIDs have a constant length and We're only\n// interested in the data length and not the actual content identifier we can use\n// any old CID instead of having to hash the data which is expensive.\nexport const CID_V0 = CID.parse('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn')\nexport const CID_V1 = CID.parse('zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi')\n", "import DirSharded from './dir-sharded.js'\nimport { DirFlat } from './dir-flat.js'\nimport type { Dir } from './dir.js'\nimport type { PersistOptions } from './utils/persist.js'\n\nexport async function flatToShard (child: Dir | null, dir: Dir, threshold: number, options: PersistOptions): Promise<DirSharded> {\n  let newDir = dir\n\n  if (dir instanceof DirFlat && dir.estimateNodeSize() > threshold) {\n    newDir = await convertToShard(dir, options)\n  }\n\n  const parent = newDir.parent\n\n  if (parent != null) {\n    if (newDir !== dir) {\n      if (child != null) {\n        child.parent = newDir\n      }\n\n      if (newDir.parentKey == null) {\n        throw new Error('No parent key found')\n      }\n\n      await parent.put(newDir.parentKey, newDir)\n    }\n\n    return await flatToShard(newDir, parent, threshold, options)\n  }\n\n  // @ts-expect-error\n  return newDir\n}\n\nasync function convertToShard (oldDir: DirFlat, options: PersistOptions): Promise<DirSharded> {\n  const newDir = new DirSharded({\n    root: oldDir.root,\n    dir: true,\n    parent: oldDir.parent,\n    parentKey: oldDir.parentKey,\n    path: oldDir.path,\n    dirty: oldDir.dirty,\n    flat: false,\n    mtime: oldDir.mtime,\n    mode: oldDir.mode\n  }, options)\n\n  for await (const { key, child } of oldDir.eachChildSeries()) {\n    await newDir.put(key, child)\n  }\n\n  return newDir\n}\n", "import { encode, PBLink, prepare } from '@ipld/dag-pb'\nimport { UnixFS } from 'ipfs-unixfs'\nimport { Dir, CID_V0, CID_V1, DirProps } from './dir.js'\nimport { persist, PersistOptions } from './utils/persist.js'\nimport { createHAMT, Bucket, BucketChild } from 'hamt-sharding'\nimport { murmur3128 } from '@multiformats/murmur3'\nimport type { ImportResult, InProgressImportResult } from './index.js'\nimport type { Blockstore } from 'interface-blockstore'\n\nasync function hamtHashFn (buf: Uint8Array): Promise<Uint8Array> {\n  return (await murmur3128.encode(buf))\n    // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n    // implementation only uses the first 64, so we must do the same\n    // for parity..\n    .slice(0, 8)\n    // Invert buffer because that's how Go impl does it\n    .reverse()\n}\n\nconst HAMT_HASH_CODE = BigInt(0x22)\n\nclass DirSharded extends Dir {\n  private readonly _bucket: Bucket<InProgressImportResult | Dir>\n\n  constructor (props: DirProps, options: PersistOptions) {\n    super(props, options)\n\n    this._bucket = createHAMT({\n      hashFn: hamtHashFn,\n      bits: 8\n    })\n  }\n\n  async put (name: string, value: InProgressImportResult | Dir): Promise<void> {\n    this.cid = undefined\n    this.size = undefined\n    this.nodeSize = undefined\n\n    await this._bucket.put(name, value)\n  }\n\n  async get (name: string): Promise<InProgressImportResult | Dir | undefined> {\n    return await this._bucket.get(name)\n  }\n\n  childCount (): number {\n    return this._bucket.leafCount()\n  }\n\n  directChildrenCount (): number {\n    return this._bucket.childrenCount()\n  }\n\n  onlyChild (): Bucket<InProgressImportResult | Dir> | BucketChild<InProgressImportResult | Dir> {\n    return this._bucket.onlyChild()\n  }\n\n  async * eachChildSeries (): AsyncGenerator<{ key: string, child: InProgressImportResult | Dir }> {\n    for await (const { key, value } of this._bucket.eachLeafSeries()) {\n      yield {\n        key,\n        child: value\n      }\n    }\n  }\n\n  estimateNodeSize (): number {\n    if (this.nodeSize !== undefined) {\n      return this.nodeSize\n    }\n\n    this.nodeSize = calculateSize(this._bucket, this, this.options)\n\n    return this.nodeSize\n  }\n\n  async * flush (blockstore: Blockstore): AsyncGenerator<ImportResult> {\n    for await (const entry of flush(this._bucket, blockstore, this, this.options)) {\n      yield {\n        ...entry,\n        path: this.path\n      }\n    }\n  }\n}\n\nexport default DirSharded\n\nasync function * flush (bucket: Bucket<Dir | InProgressImportResult>, blockstore: Blockstore, shardRoot: DirSharded | null, options: PersistOptions): AsyncIterable<ImportResult> {\n  const children = bucket._children\n  const links: PBLink[] = []\n  let childrenSize = 0n\n\n  for (let i = 0; i < children.length; i++) {\n    const child = children.get(i)\n\n    if (child == null) {\n      continue\n    }\n\n    const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0')\n\n    if (child instanceof Bucket) {\n      let shard\n\n      for await (const subShard of flush(child, blockstore, null, options)) {\n        shard = subShard\n      }\n\n      if (shard == null) {\n        throw new Error('Could not flush sharded directory, no subshard found')\n      }\n\n      links.push({\n        Name: labelPrefix,\n        Tsize: Number(shard.size),\n        Hash: shard.cid\n      })\n      childrenSize += shard.size\n    } else if (isDir(child.value)) {\n      const dir = child.value\n      let flushedDir: ImportResult | undefined\n\n      for await (const entry of dir.flush(blockstore)) {\n        flushedDir = entry\n\n        yield flushedDir\n      }\n\n      if (flushedDir == null) {\n        throw new Error('Did not flush dir')\n      }\n\n      const label = labelPrefix + child.key\n      links.push({\n        Name: label,\n        Tsize: Number(flushedDir.size),\n        Hash: flushedDir.cid\n      })\n\n      childrenSize += flushedDir.size\n    } else {\n      const value = child.value\n\n      if (value.cid == null) {\n        continue\n      }\n\n      const label = labelPrefix + child.key\n      const size = value.size\n\n      links.push({\n        Name: label,\n        Tsize: Number(size),\n        Hash: value.cid\n      })\n      childrenSize += BigInt(size ?? 0)\n    }\n  }\n\n  // go-ipfs uses little endian, that's why we have to\n  // reverse the bit field before storing it\n  const data = Uint8Array.from(children.bitField().reverse())\n  const dir = new UnixFS({\n    type: 'hamt-sharded-directory',\n    data,\n    fanout: BigInt(bucket.tableSize()),\n    hashType: HAMT_HASH_CODE,\n    mtime: shardRoot?.mtime,\n    mode: shardRoot?.mode\n  })\n\n  const node = {\n    Data: dir.marshal(),\n    Links: links\n  }\n  const buffer = encode(prepare(node))\n  const cid = await persist(buffer, blockstore, options)\n  const size = BigInt(buffer.byteLength) + childrenSize\n\n  yield {\n    cid,\n    unixfs: dir,\n    size\n  }\n}\n\nfunction isDir (obj: any): obj is Dir {\n  return typeof obj.flush === 'function'\n}\n\nfunction calculateSize (bucket: Bucket<any>, shardRoot: DirSharded | null, options: PersistOptions): number {\n  const children = bucket._children\n  const links: PBLink[] = []\n\n  for (let i = 0; i < children.length; i++) {\n    const child = children.get(i)\n\n    if (child == null) {\n      continue\n    }\n\n    const labelPrefix = i.toString(16).toUpperCase().padStart(2, '0')\n\n    if (child instanceof Bucket) {\n      const size = calculateSize(child, null, options)\n\n      links.push({\n        Name: labelPrefix,\n        Tsize: Number(size),\n        Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n      })\n    } else if (typeof child.value.flush === 'function') {\n      const dir = child.value\n      const size = dir.nodeSize()\n\n      links.push({\n        Name: labelPrefix + child.key,\n        Tsize: Number(size),\n        Hash: options.cidVersion === 0 ? CID_V0 : CID_V1\n      })\n    } else {\n      const value = child.value\n\n      if (value.cid == null) {\n        continue\n      }\n\n      const label = labelPrefix + child.key\n      const size = value.size\n\n      links.push({\n        Name: label,\n        Tsize: Number(size),\n        Hash: value.cid\n      })\n    }\n  }\n\n  // go-ipfs uses little endian, that's why we have to\n  // reverse the bit field before storing it\n  const data = Uint8Array.from(children.bitField().reverse())\n  const dir = new UnixFS({\n    type: 'hamt-sharded-directory',\n    data,\n    fanout: BigInt(bucket.tableSize()),\n    hashType: HAMT_HASH_CODE,\n    mtime: shardRoot?.mtime,\n    mode: shardRoot?.mode\n  })\n\n  const buffer = encode(prepare({\n    Data: dir.marshal(),\n    Links: links\n  }))\n\n  return buffer.length\n}\n", "import { Bucket } from './bucket.js'\nimport type { BucketOptions, BucketPosition, BucketChild } from './bucket.js'\nimport { wrapHash } from './consumable-hash.js'\n\ninterface UserBucketOptions {\n  hashFn: (value: Uint8Array) => Promise<Uint8Array>\n  bits?: number\n}\n\nexport function createHAMT<T> (options: UserBucketOptions) {\n  if (options == null || options.hashFn == null) {\n    throw new Error('please define an options.hashFn')\n  }\n\n  const bucketOptions = {\n    bits: options.bits ?? 8,\n    hash: wrapHash(options.hashFn)\n  }\n\n  return new Bucket<T>(bucketOptions)\n}\n\nexport { Bucket }\nexport type { BucketOptions, BucketPosition, BucketChild }\n", "// @ts-expect-error\nimport SparseArray from 'sparse-array'\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'\nimport type { InfiniteHash } from './consumable-hash.js'\n\nexport interface BucketChild<V> {\n  key: string\n  value: V\n  hash: InfiniteHash\n}\n\ninterface SA<B> {\n  length: number\n  compactArray: () => B[]\n  get: (i: number) => B\n  set: (i: number, value: B) => void\n  reduce: <A> (fn: (acc: A, curr: B, index: number) => A, initial: A) => B\n  find: (fn: (item: B) => boolean) => B | undefined\n  bitField: () => number[]\n  unset: (i: number) => void\n}\n\nexport interface BucketPosition<T> {\n  bucket: Bucket<T>\n  pos: number\n  hash: InfiniteHash\n  existingChild?: BucketChild<T>\n}\n\nexport interface BucketOptions {\n  bits: number\n  hash: (value: Uint8Array | InfiniteHash) => InfiniteHash\n}\n\nexport class Bucket<T> {\n  _options: BucketOptions\n  _popCount: number\n  _parent?: Bucket<T>\n  _posAtParent: number\n  _children: SA<Bucket<T> | BucketChild<T>>\n\n  key: string | null\n\n  constructor (options: BucketOptions, parent?: Bucket<T>, posAtParent = 0) {\n    this._options = options\n    this._popCount = 0\n    this._parent = parent\n    this._posAtParent = posAtParent\n    this._children = new SparseArray()\n    this.key = null\n  }\n\n  async put (key: string, value: T) {\n    const place = await this._findNewBucketAndPos(key)\n\n    await place.bucket._putAt(place, key, value)\n  }\n\n  async get (key: string) {\n    const child = await this._findChild(key)\n\n    if (child != null) {\n      return child.value\n    }\n  }\n\n  async del (key: string) {\n    const place = await this._findPlace(key)\n    const child = place.bucket._at(place.pos)\n\n    if (child != null && child.key === key) {\n      place.bucket._delAt(place.pos)\n    }\n  }\n\n  leafCount (): number {\n    const children = this._children.compactArray()\n\n    return children.reduce((acc, child) => {\n      if (child instanceof Bucket) {\n        return acc + child.leafCount()\n      }\n\n      return acc + 1\n    }, 0)\n  }\n\n  childrenCount () {\n    return this._children.length\n  }\n\n  onlyChild () {\n    return this._children.get(0)\n  }\n\n  * eachLeafSeries (): Iterable<BucketChild<T>> {\n    const children = this._children.compactArray()\n\n    for (const child of children) {\n      if (child instanceof Bucket) {\n        yield * child.eachLeafSeries()\n      } else {\n        yield child\n      }\n    }\n  }\n\n  serialize (map: (value: BucketChild<T>, index: number) => T, reduce: (reduced: any) => any) {\n    const acc: T[] = []\n    // serialize to a custom non-sparse representation\n    return reduce(this._children.reduce((acc, child, index) => {\n      if (child != null) {\n        if (child instanceof Bucket) {\n          acc.push(child.serialize(map, reduce))\n        } else {\n          acc.push(map(child, index))\n        }\n      }\n      return acc\n    }, acc))\n  }\n\n  async asyncTransform (asyncMap: (value: BucketChild<T>) => Promise<T[]>, asyncReduce: (reduced: any) => Promise<any>) {\n    return await asyncTransformBucket(this, asyncMap, asyncReduce)\n  }\n\n  toJSON () {\n    return this.serialize(mapNode, reduceNodes)\n  }\n\n  prettyPrint () {\n    return JSON.stringify(this.toJSON(), null, '  ')\n  }\n\n  tableSize () {\n    return Math.pow(2, this._options.bits)\n  }\n\n  async _findChild (key: string) {\n    const result = await this._findPlace(key)\n    const child = result.bucket._at(result.pos)\n\n    if (child instanceof Bucket) {\n      // should not be possible, this._findPlace should always\n      // return a location for a child, not a bucket\n      return undefined\n    }\n\n    if (child != null && child.key === key) {\n      return child\n    }\n  }\n\n  async _findPlace (key: string | InfiniteHash): Promise<BucketPosition<T>> {\n    const hashValue = this._options.hash(typeof key === 'string' ? uint8ArrayFromString(key) : key)\n    const index = await hashValue.take(this._options.bits)\n\n    const child = this._children.get(index)\n\n    if (child instanceof Bucket) {\n      return await child._findPlace(hashValue)\n    }\n\n    return {\n      bucket: this,\n      pos: index,\n      hash: hashValue,\n      existingChild: child\n    }\n  }\n\n  async _findNewBucketAndPos (key: string | InfiniteHash): Promise<BucketPosition<T>> {\n    const place = await this._findPlace(key)\n\n    if ((place.existingChild != null) && place.existingChild.key !== key) {\n      // conflict\n      const bucket = new Bucket(this._options, place.bucket, place.pos)\n      place.bucket._putObjectAt(place.pos, bucket)\n\n      // put the previous value\n      const newPlace = await bucket._findPlace(place.existingChild.hash)\n      newPlace.bucket._putAt(newPlace, place.existingChild.key, place.existingChild.value)\n\n      return await bucket._findNewBucketAndPos(place.hash)\n    }\n\n    // no conflict, we found the place\n    return place\n  }\n\n  _putAt (place: BucketPosition<T>, key: string, value: T) {\n    this._putObjectAt(place.pos, {\n      key: key,\n      value: value,\n      hash: place.hash\n    })\n  }\n\n  _putObjectAt (pos: number, object: Bucket<T> | BucketChild<T>) {\n    if (this._children.get(pos) == null) {\n      this._popCount++\n    }\n    this._children.set(pos, object)\n  }\n\n  _delAt (pos: number) {\n    if (pos === -1) {\n      throw new Error('Invalid position')\n    }\n\n    if (this._children.get(pos) != null) {\n      this._popCount--\n    }\n    this._children.unset(pos)\n    this._level()\n  }\n\n  _level () {\n    if (this._parent != null && this._popCount <= 1) {\n      if (this._popCount === 1) {\n        // remove myself from parent, replacing me with my only child\n        const onlyChild = this._children.find(exists)\n\n        if ((onlyChild != null) && !(onlyChild instanceof Bucket)) {\n          const hash = onlyChild.hash\n          hash.untake(this._options.bits)\n          const place = {\n            pos: this._posAtParent,\n            hash: hash,\n            bucket: this._parent\n          }\n          this._parent._putAt(place, onlyChild.key, onlyChild.value)\n        }\n      } else {\n        this._parent._delAt(this._posAtParent)\n      }\n    }\n  }\n\n  _at (index: number) {\n    return this._children.get(index)\n  }\n}\n\nfunction exists (o: any) {\n  return Boolean(o)\n}\n\nfunction mapNode (node: any, _: number) {\n  return node.key\n}\n\nfunction reduceNodes (nodes: any) {\n  return nodes\n}\n\nasync function asyncTransformBucket<T> (bucket: Bucket<T>, asyncMap: (value: BucketChild<T>) => Promise<T[]>, asyncReduce: (reduced: any) => Promise<any>) {\n  const output = []\n\n  for (const child of bucket._children.compactArray()) {\n    if (child instanceof Bucket) {\n      await asyncTransformBucket(child, asyncMap, asyncReduce)\n    } else {\n      const mappedChildren = await asyncMap(child)\n\n      output.push({\n        bitField: bucket._children.bitField(),\n        children: mappedChildren\n      })\n    }\n  }\n\n  return await asyncReduce(output)\n}\n", "import bases, { SupportedEncodings } from './util/bases.js'\nimport { asUint8Array } from './util/as-uint8array.js'\n\nexport type { SupportedEncodings }\n\n/**\n * Create a `Uint8Array` from the passed string\n *\n * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module.\n *\n * Also `ascii` which is similar to node's 'binary' encoding.\n */\nexport function fromString (string: string, encoding: SupportedEncodings = 'utf8'): Uint8Array {\n  const base = bases[encoding]\n\n  if (base == null) {\n    throw new Error(`Unsupported encoding \"${encoding}\"`)\n  }\n\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return asUint8Array(globalThis.Buffer.from(string, 'utf-8'))\n  }\n\n  // add multibase prefix\n  return base.decoder.decode(`${base.prefix}${string}`) // eslint-disable-line @typescript-eslint/restrict-template-expressions\n}\n", "import type { MultibaseCodec } from 'multiformats'\nimport { bases } from 'multiformats/basics'\nimport { allocUnsafe } from '../alloc.js'\n\nfunction createCodec (name: string, prefix: string, encode: (buf: Uint8Array) => string, decode: (str: string) => Uint8Array): MultibaseCodec<any> {\n  return {\n    name,\n    prefix,\n    encoder: {\n      name,\n      prefix,\n      encode\n    },\n    decoder: {\n      decode\n    }\n  }\n}\n\nconst string = createCodec('utf8', 'u', (buf) => {\n  const decoder = new TextDecoder('utf8')\n  return 'u' + decoder.decode(buf)\n}, (str) => {\n  const encoder = new TextEncoder()\n  return encoder.encode(str.substring(1))\n})\n\nconst ascii = createCodec('ascii', 'a', (buf) => {\n  let string = 'a'\n\n  for (let i = 0; i < buf.length; i++) {\n    string += String.fromCharCode(buf[i])\n  }\n  return string\n}, (str) => {\n  str = str.substring(1)\n  const buf = allocUnsafe(str.length)\n\n  for (let i = 0; i < str.length; i++) {\n    buf[i] = str.charCodeAt(i)\n  }\n\n  return buf\n})\n\nexport type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof typeof bases\n\nconst BASES: Record<SupportedEncodings, MultibaseCodec<any>> = {\n  utf8: string,\n  'utf-8': string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii: ascii,\n  binary: ascii,\n\n  ...bases\n}\n\nexport default BASES\n", "// @ts-check\n\nimport * as identityBase from './bases/identity.js'\nimport * as base2 from './bases/base2.js'\nimport * as base8 from './bases/base8.js'\nimport * as base10 from './bases/base10.js'\nimport * as base16 from './bases/base16.js'\nimport * as base32 from './bases/base32.js'\nimport * as base36 from './bases/base36.js'\nimport * as base58 from './bases/base58.js'\nimport * as base64 from './bases/base64.js'\nimport * as base256emoji from './bases/base256emoji.js'\nimport * as sha2 from './hashes/sha2.js'\nimport * as identity from './hashes/identity.js'\n\nimport * as raw from './codecs/raw.js'\nimport * as json from './codecs/json.js'\n\nimport { CID, hasher, digest, varint, bytes } from './index.js'\n\nconst bases = { ...identityBase, ...base2, ...base8, ...base10, ...base16, ...base32, ...base36, ...base58, ...base64, ...base256emoji }\nconst hashes = { ...sha2, ...identity }\nconst codecs = { raw, json }\n\nexport { CID, hasher, digest, varint, bytes, hashes, bases, codecs }\n", "// @ts-check\n\nimport { from } from './base.js'\nimport { fromString, toString } from '../bytes.js'\n\nexport const identity = from({\n  prefix: '\\x00',\n  name: 'identity',\n  encode: (buf) => toString(buf),\n  decode: (str) => fromString(str)\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base2 = rfc4648({\n  prefix: '0',\n  name: 'base2',\n  alphabet: '01',\n  bitsPerChar: 1\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base8 = rfc4648({\n  prefix: '7',\n  name: 'base8',\n  alphabet: '01234567',\n  bitsPerChar: 3\n})\n", "import { baseX } from './base.js'\n\nexport const base10 = baseX({\n  prefix: '9',\n  name: 'base10',\n  alphabet: '0123456789'\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base16 = rfc4648({\n  prefix: 'f',\n  name: 'base16',\n  alphabet: '0123456789abcdef',\n  bitsPerChar: 4\n})\n\nexport const base16upper = rfc4648({\n  prefix: 'F',\n  name: 'base16upper',\n  alphabet: '0123456789ABCDEF',\n  bitsPerChar: 4\n})\n", "import { baseX } from './base.js'\n\nexport const base36 = baseX({\n  prefix: 'k',\n  name: 'base36',\n  alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n  prefix: 'K',\n  name: 'base36upper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n", "// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n})\n", "import { from } from './base.js'\n\nconst alphabet = Array.from('\uD83D\uDE80\uD83E\uDE90\u2604\uD83D\uDEF0\uD83C\uDF0C\uD83C\uDF11\uD83C\uDF12\uD83C\uDF13\uD83C\uDF14\uD83C\uDF15\uD83C\uDF16\uD83C\uDF17\uD83C\uDF18\uD83C\uDF0D\uD83C\uDF0F\uD83C\uDF0E\uD83D\uDC09\u2600\uD83D\uDCBB\uD83D\uDDA5\uD83D\uDCBE\uD83D\uDCBF\uD83D\uDE02\u2764\uD83D\uDE0D\uD83E\uDD23\uD83D\uDE0A\uD83D\uDE4F\uD83D\uDC95\uD83D\uDE2D\uD83D\uDE18\uD83D\uDC4D\uD83D\uDE05\uD83D\uDC4F\uD83D\uDE01\uD83D\uDD25\uD83E\uDD70\uD83D\uDC94\uD83D\uDC96\uD83D\uDC99\uD83D\uDE22\uD83E\uDD14\uD83D\uDE06\uD83D\uDE44\uD83D\uDCAA\uD83D\uDE09\u263A\uD83D\uDC4C\uD83E\uDD17\uD83D\uDC9C\uD83D\uDE14\uD83D\uDE0E\uD83D\uDE07\uD83C\uDF39\uD83E\uDD26\uD83C\uDF89\uD83D\uDC9E\u270C\u2728\uD83E\uDD37\uD83D\uDE31\uD83D\uDE0C\uD83C\uDF38\uD83D\uDE4C\uD83D\uDE0B\uD83D\uDC97\uD83D\uDC9A\uD83D\uDE0F\uD83D\uDC9B\uD83D\uDE42\uD83D\uDC93\uD83E\uDD29\uD83D\uDE04\uD83D\uDE00\uD83D\uDDA4\uD83D\uDE03\uD83D\uDCAF\uD83D\uDE48\uD83D\uDC47\uD83C\uDFB6\uD83D\uDE12\uD83E\uDD2D\u2763\uD83D\uDE1C\uD83D\uDC8B\uD83D\uDC40\uD83D\uDE2A\uD83D\uDE11\uD83D\uDCA5\uD83D\uDE4B\uD83D\uDE1E\uD83D\uDE29\uD83D\uDE21\uD83E\uDD2A\uD83D\uDC4A\uD83E\uDD73\uD83D\uDE25\uD83E\uDD24\uD83D\uDC49\uD83D\uDC83\uD83D\uDE33\u270B\uD83D\uDE1A\uD83D\uDE1D\uD83D\uDE34\uD83C\uDF1F\uD83D\uDE2C\uD83D\uDE43\uD83C\uDF40\uD83C\uDF37\uD83D\uDE3B\uD83D\uDE13\u2B50\u2705\uD83E\uDD7A\uD83C\uDF08\uD83D\uDE08\uD83E\uDD18\uD83D\uDCA6\u2714\uD83D\uDE23\uD83C\uDFC3\uD83D\uDC90\u2639\uD83C\uDF8A\uD83D\uDC98\uD83D\uDE20\u261D\uD83D\uDE15\uD83C\uDF3A\uD83C\uDF82\uD83C\uDF3B\uD83D\uDE10\uD83D\uDD95\uD83D\uDC9D\uD83D\uDE4A\uD83D\uDE39\uD83D\uDDE3\uD83D\uDCAB\uD83D\uDC80\uD83D\uDC51\uD83C\uDFB5\uD83E\uDD1E\uD83D\uDE1B\uD83D\uDD34\uD83D\uDE24\uD83C\uDF3C\uD83D\uDE2B\u26BD\uD83E\uDD19\u2615\uD83C\uDFC6\uD83E\uDD2B\uD83D\uDC48\uD83D\uDE2E\uD83D\uDE46\uD83C\uDF7B\uD83C\uDF43\uD83D\uDC36\uD83D\uDC81\uD83D\uDE32\uD83C\uDF3F\uD83E\uDDE1\uD83C\uDF81\u26A1\uD83C\uDF1E\uD83C\uDF88\u274C\u270A\uD83D\uDC4B\uD83D\uDE30\uD83E\uDD28\uD83D\uDE36\uD83E\uDD1D\uD83D\uDEB6\uD83D\uDCB0\uD83C\uDF53\uD83D\uDCA2\uD83E\uDD1F\uD83D\uDE41\uD83D\uDEA8\uD83D\uDCA8\uD83E\uDD2C\u2708\uD83C\uDF80\uD83C\uDF7A\uD83E\uDD13\uD83D\uDE19\uD83D\uDC9F\uD83C\uDF31\uD83D\uDE16\uD83D\uDC76\uD83E\uDD74\u25B6\u27A1\u2753\uD83D\uDC8E\uD83D\uDCB8\u2B07\uD83D\uDE28\uD83C\uDF1A\uD83E\uDD8B\uD83D\uDE37\uD83D\uDD7A\u26A0\uD83D\uDE45\uD83D\uDE1F\uD83D\uDE35\uD83D\uDC4E\uD83E\uDD32\uD83E\uDD20\uD83E\uDD27\uD83D\uDCCC\uD83D\uDD35\uD83D\uDC85\uD83E\uDDD0\uD83D\uDC3E\uD83C\uDF52\uD83D\uDE17\uD83E\uDD11\uD83C\uDF0A\uD83E\uDD2F\uD83D\uDC37\u260E\uD83D\uDCA7\uD83D\uDE2F\uD83D\uDC86\uD83D\uDC46\uD83C\uDFA4\uD83D\uDE47\uD83C\uDF51\u2744\uD83C\uDF34\uD83D\uDCA3\uD83D\uDC38\uD83D\uDC8C\uD83D\uDCCD\uD83E\uDD40\uD83E\uDD22\uD83D\uDC45\uD83D\uDCA1\uD83D\uDCA9\uD83D\uDC50\uD83D\uDCF8\uD83D\uDC7B\uD83E\uDD10\uD83E\uDD2E\uD83C\uDFBC\uD83E\uDD75\uD83D\uDEA9\uD83C\uDF4E\uD83C\uDF4A\uD83D\uDC7C\uD83D\uDC8D\uD83D\uDCE3\uD83E\uDD42')\nconst alphabetBytesToChars = /** @type {string[]} */ (alphabet.reduce((p, c, i) => { p[i] = c; return p }, /** @type {string[]} */([])))\nconst alphabetCharsToBytes = /** @type {number[]} */ (alphabet.reduce((p, c, i) => { p[/** @type {number} */ (c.codePointAt(0))] = i; return p }, /** @type {number[]} */([])))\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nfunction encode (data) {\n  return data.reduce((p, c) => {\n    p += alphabetBytesToChars[c]\n    return p\n  }, '')\n}\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nfunction decode (str) {\n  const byts = []\n  for (const char of str) {\n    const byt = alphabetCharsToBytes[/** @type {number} */ (char.codePointAt(0))]\n    if (byt === undefined) {\n      throw new Error(`Non-base256emoji character: ${char}`)\n    }\n    byts.push(byt)\n  }\n  return new Uint8Array(byts)\n}\n\nexport const base256emoji = from({\n  prefix: '\uD83D\uDE80',\n  name: 'base256emoji',\n  encode,\n  decode\n})\n", "import { coerce } from '../bytes.js'\nimport * as Digest from './digest.js'\n\nconst code = 0x0\nconst name = 'identity'\n\n/** @type {(input:Uint8Array) => Uint8Array} */\nconst encode = coerce\n\n/**\n * @param {Uint8Array} input\n * @returns {Digest.Digest<typeof code, number>}\n */\nconst digest = (input) => Digest.create(code, encode(input))\n\nexport const identity = { code, name, encode, digest }\n", "// @ts-check\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView<T>} ByteView\n */\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const name = 'json'\nexport const code = 0x0200\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => textEncoder.encode(JSON.stringify(node))\n\n/**\n * @template T\n * @param {ByteView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => JSON.parse(textDecoder.decode(data))\n", "import { CID } from './cid.js'\nimport * as varint from './varint.js'\nimport * as bytes from './bytes.js'\nimport * as hasher from './hashes/hasher.js'\nimport * as digest from './hashes/digest.js'\n// This way TS will also expose all the types from module\nexport * from './interface.js'\n\nexport { CID, hasher, digest, varint, bytes }\n", "// this is dummy module overlayed by interface.ts\n", "import { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a `Uint8Array` of the requested size. Referenced memory will\n * be initialized to 0.\n */\nexport function alloc (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size))\n  }\n\n  return new Uint8Array(size)\n}\n\n/**\n * Where possible returns a Uint8Array of the requested size that references\n * uninitialized memory. Only use if you are certain you will immediately\n * overwrite every value in the returned `Uint8Array`.\n */\nexport function allocUnsafe (size: number = 0): Uint8Array {\n  if (globalThis.Buffer?.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size))\n  }\n\n  return new Uint8Array(size)\n}\n", "\n/**\n * To guarantee Uint8Array semantics, convert nodejs Buffers\n * into vanilla Uint8Arrays\n */\nexport function asUint8Array (buf: Uint8Array): Uint8Array {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n  }\n\n  return buf\n}\n", "import { ConsumableBuffer } from './consumable-buffer.js'\nimport { concat as uint8ArrayConcat } from 'uint8arrays/concat'\n\nexport function wrapHash (hashFn: (value: Uint8Array) => Promise<Uint8Array>) {\n  function hashing (value: InfiniteHash | Uint8Array) {\n    if (value instanceof InfiniteHash) {\n      // already a hash. return it\n      return value\n    } else {\n      return new InfiniteHash(value, hashFn)\n    }\n  }\n\n  return hashing\n}\n\nexport class InfiniteHash {\n  _value: Uint8Array\n  _hashFn: (value: Uint8Array) => Promise<Uint8Array>\n  _depth: number\n  _availableBits: number\n  _currentBufferIndex: number\n  _buffers: ConsumableBuffer[]\n\n  constructor (value: Uint8Array, hashFn: (value: Uint8Array) => Promise<Uint8Array>) {\n    if (!(value instanceof Uint8Array)) {\n      throw new Error('can only hash Uint8Arrays')\n    }\n\n    this._value = value\n    this._hashFn = hashFn\n    this._depth = -1\n    this._availableBits = 0\n    this._currentBufferIndex = 0\n    this._buffers = []\n  }\n\n  async take (bits: number) {\n    let pendingBits = bits\n\n    while (this._availableBits < pendingBits) {\n      await this._produceMoreBits()\n    }\n\n    let result = 0\n\n    while (pendingBits > 0) {\n      const hash = this._buffers[this._currentBufferIndex]\n      const available = Math.min(hash.availableBits(), pendingBits)\n      const took = hash.take(available)\n      result = (result << available) + took\n      pendingBits -= available\n      this._availableBits -= available\n\n      if (hash.availableBits() === 0) {\n        this._currentBufferIndex++\n      }\n    }\n\n    return result\n  }\n\n  untake (bits: number) {\n    let pendingBits = bits\n\n    while (pendingBits > 0) {\n      const hash = this._buffers[this._currentBufferIndex]\n      const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits)\n      hash.untake(availableForUntake)\n      pendingBits -= availableForUntake\n      this._availableBits += availableForUntake\n\n      if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n        this._depth--\n        this._currentBufferIndex--\n      }\n    }\n  }\n\n  async _produceMoreBits () {\n    this._depth++\n\n    const value = this._depth > 0 ? uint8ArrayConcat([this._value, Uint8Array.from([this._depth])]) : this._value\n    const hashValue = await this._hashFn(value)\n    const buffer = new ConsumableBuffer(hashValue)\n\n    this._buffers.push(buffer)\n    this._availableBits += buffer.availableBits()\n  }\n}\n", "const START_MASKS = [\n  0b11111111,\n  0b11111110,\n  0b11111100,\n  0b11111000,\n  0b11110000,\n  0b11100000,\n  0b11000000,\n  0b10000000\n]\n\nconst STOP_MASKS = [\n  0b00000001,\n  0b00000011,\n  0b00000111,\n  0b00001111,\n  0b00011111,\n  0b00111111,\n  0b01111111,\n  0b11111111\n]\n\nexport class ConsumableBuffer {\n  _value: Uint8Array\n  _currentBytePos: number\n  _currentBitPos: number\n\n  constructor (value: Uint8Array) {\n    this._value = value\n    this._currentBytePos = value.length - 1\n    this._currentBitPos = 7\n  }\n\n  availableBits () {\n    return this._currentBitPos + 1 + this._currentBytePos * 8\n  }\n\n  totalBits () {\n    return this._value.length * 8\n  }\n\n  take (bits: number) {\n    let pendingBits = bits\n    let result = 0\n    while (pendingBits > 0 && this._haveBits()) {\n      const byte = this._value[this._currentBytePos]\n      const availableBits = this._currentBitPos + 1\n      const taking = Math.min(availableBits, pendingBits)\n      const value = byteBitsToInt(byte, availableBits - taking, taking)\n      result = (result << taking) + value\n\n      pendingBits -= taking\n\n      this._currentBitPos -= taking\n      if (this._currentBitPos < 0) {\n        this._currentBitPos = 7\n        this._currentBytePos--\n      }\n    }\n\n    return result\n  }\n\n  untake (bits: number) {\n    this._currentBitPos += bits\n    while (this._currentBitPos > 7) {\n      this._currentBitPos -= 8\n      this._currentBytePos += 1\n    }\n  }\n\n  _haveBits () {\n    return this._currentBytePos >= 0\n  }\n}\n\nfunction byteBitsToInt (byte: number, start: number, length: number) {\n  const mask = maskFor(start, length)\n  return (byte & mask) >>> start\n}\n\nfunction maskFor (start: number, length: number) {\n  return START_MASKS[start] & STOP_MASKS[Math.min(length + start - 1, 7)]\n}\n", "import { allocUnsafe } from './alloc.js'\nimport { asUint8Array } from './util/as-uint8array.js'\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n */\nexport function concat (arrays: Array<ArrayLike<number>>, length?: number): Uint8Array {\n  if (length == null) {\n    length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n  }\n\n  const output = allocUnsafe(length)\n  let offset = 0\n\n  for (const arr of arrays) {\n    output.set(arr, offset)\n    offset += arr.length\n  }\n\n  return asUint8Array(output)\n}\n", "import { from } from 'multiformats/hashes/hasher'\nimport { bytes } from 'multiformats'\n// @ts-expect-error no types\nimport mur from 'murmurhash3js-revisited'\n\n/**\n * @param {number} number\n * @returns {Uint8Array}\n */\nfunction fromNumberTo32BitBuf (number) {\n  const bytes = new Array(4)\n  for (let i = 0; i < 4; i++) {\n    bytes[i] = number & 0xff\n    number = number >> 8\n  }\n  return new Uint8Array(bytes)\n}\n\nexport const murmur332 = from({\n  name: 'murmur3-32',\n  code: 0x23,\n  encode: (input) => fromNumberTo32BitBuf(mur.x86.hash32(input))\n})\n\nexport const murmur3128 = from({\n  name: 'murmur3-128',\n  code: 0x22,\n  encode: (input) => bytes.fromHex(mur.x64.hash128(input))\n})\n\n// A special-use 0x22 that truncates 64 bits, specifically for use in the UnixFS HAMT\nexport const murmur364 = from({\n  name: 'murmur3-x64-64',\n  code: 0x22,\n  encode: (input) => bytes.fromHex(mur.x64.hash128(input)).subarray(0, 8)\n})\n", "export const toPathComponents = (path: string = ''): string[] => {\n  // split on / unless escaped with \\\n  return (path\n    .trim()\n    .match(/([^\\\\/]|\\\\\\/)+/g) ?? [])\n    .filter(Boolean)\n}\n", "import errCode from 'err-code'\nimport { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'\n\nexport interface ChunkValidator { (source: AsyncIterable<Uint8Array>): AsyncIterable<Uint8Array> }\n\nexport const defaultChunkValidator = (): ChunkValidator => {\n  return async function * validateChunks (source) {\n    for await (const content of source) {\n      if (content.length === undefined) {\n        throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n      }\n\n      if (typeof content === 'string' || content instanceof String) {\n        yield uint8ArrayFromString(content.toString())\n      } else if (Array.isArray(content)) {\n        yield Uint8Array.from(content)\n      } else if (content instanceof Uint8Array) {\n        yield content\n      } else {\n        throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n      }\n    }\n  }\n}\n", "import { Uint8ArrayList } from 'uint8arraylist'\nimport type { Chunker } from './index.js'\n\nexport interface FixedSizeOptions {\n  chunkSize?: number\n}\n\nconst DEFAULT_CHUNK_SIZE = 262144\n\nexport const fixedSize = (options: FixedSizeOptions = {}): Chunker => {\n  const chunkSize = options.chunkSize ?? DEFAULT_CHUNK_SIZE\n\n  return async function * fixedSizeChunker (source) {\n    let list = new Uint8ArrayList()\n    let currentLength = 0\n    let emitted = false\n\n    for await (const buffer of source) {\n      list.append(buffer)\n\n      currentLength += buffer.length\n\n      while (currentLength >= chunkSize) {\n        yield list.slice(0, chunkSize)\n        emitted = true\n\n        // throw away consumed bytes\n        if (chunkSize === list.length) {\n          list = new Uint8ArrayList()\n          currentLength = 0\n        } else {\n          const newBl = new Uint8ArrayList()\n          newBl.append(list.sublist(chunkSize))\n          list = newBl\n\n          // update our offset\n          currentLength -= chunkSize\n        }\n      }\n    }\n\n    if (!emitted || currentLength > 0) {\n      // return any remaining bytes\n      yield list.subarray(0, currentLength)\n    }\n  }\n}\n", "import { concat } from 'uint8arrays/concat'\nimport { equals } from 'uint8arrays/equals'\nimport { allocUnsafe, alloc } from 'uint8arrays/alloc'\n\nconst symbol = Symbol.for('@achingbrain/uint8arraylist')\n\nexport type Appendable = Uint8ArrayList | Uint8Array\n\nfunction findBufAndOffset (bufs: Uint8Array[], index: number) {\n  if (index == null || index < 0) {\n    throw new RangeError('index is out of bounds')\n  }\n\n  let offset = 0\n\n  for (const buf of bufs) {\n    const bufEnd = offset + buf.byteLength\n\n    if (index < bufEnd) {\n      return {\n        buf,\n        index: index - offset\n      }\n    }\n\n    offset = bufEnd\n  }\n\n  throw new RangeError('index is out of bounds')\n}\n\n/**\n * Check if object is a CID instance\n *\n * @example\n *\n * ```js\n * import { isUint8ArrayList, Uint8ArrayList } from 'uint8arraylist'\n *\n * isUint8ArrayList(true) // false\n * isUint8ArrayList([]) // false\n * isUint8ArrayList(new Uint8ArrayList()) // true\n * ```\n */\nexport function isUint8ArrayList (value: any): value is Uint8ArrayList {\n  return Boolean(value?.[symbol])\n}\n\nexport class Uint8ArrayList implements Iterable<Uint8Array> {\n  private bufs: Uint8Array[]\n  public length: number\n\n  constructor (...data: Appendable[]) {\n    // Define symbol\n    Object.defineProperty(this, symbol, { value: true })\n\n    this.bufs = []\n    this.length = 0\n\n    if (data.length > 0) {\n      this.appendAll(data)\n    }\n  }\n\n  * [Symbol.iterator] () {\n    yield * this.bufs\n  }\n\n  get byteLength () {\n    return this.length\n  }\n\n  /**\n   * Add one or more `bufs` to the end of this Uint8ArrayList\n   */\n  append (...bufs: Appendable[]) {\n    this.appendAll(bufs)\n  }\n\n  /**\n   * Add all `bufs` to the end of this Uint8ArrayList\n   */\n  appendAll (bufs: Appendable[]) {\n    let length = 0\n\n    for (const buf of bufs) {\n      if (buf instanceof Uint8Array) {\n        length += buf.byteLength\n        this.bufs.push(buf)\n      } else if (isUint8ArrayList(buf)) {\n        length += buf.byteLength\n        this.bufs.push(...buf.bufs)\n      } else {\n        throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList')\n      }\n    }\n\n    this.length += length\n  }\n\n  /**\n   * Add one or more `bufs` to the start of this Uint8ArrayList\n   */\n  prepend (...bufs: Appendable[]) {\n    this.prependAll(bufs)\n  }\n\n  /**\n   * Add all `bufs` to the start of this Uint8ArrayList\n   */\n  prependAll (bufs: Appendable[]) {\n    let length = 0\n\n    for (const buf of bufs.reverse()) {\n      if (buf instanceof Uint8Array) {\n        length += buf.byteLength\n        this.bufs.unshift(buf)\n      } else if (isUint8ArrayList(buf)) {\n        length += buf.byteLength\n        this.bufs.unshift(...buf.bufs)\n      } else {\n        throw new Error('Could not prepend value, must be an Uint8Array or a Uint8ArrayList')\n      }\n    }\n\n    this.length += length\n  }\n\n  /**\n   * Read the value at `index`\n   */\n  get (index: number) {\n    const res = findBufAndOffset(this.bufs, index)\n\n    return res.buf[res.index]\n  }\n\n  /**\n   * Set the value at `index` to `value`\n   */\n  set (index: number, value: number) {\n    const res = findBufAndOffset(this.bufs, index)\n\n    res.buf[res.index] = value\n  }\n\n  /**\n   * Copy bytes from `buf` to the index specified by `offset`\n   */\n  write (buf: Appendable, offset: number = 0) {\n    if (buf instanceof Uint8Array) {\n      for (let i = 0; i < buf.length; i++) {\n        this.set(offset + i, buf[i])\n      }\n    } else if (isUint8ArrayList(buf)) {\n      for (let i = 0; i < buf.length; i++) {\n        this.set(offset + i, buf.get(i))\n      }\n    } else {\n      throw new Error('Could not write value, must be an Uint8Array or a Uint8ArrayList')\n    }\n  }\n\n  /**\n   * Remove bytes from the front of the pool\n   */\n  consume (bytes: number) {\n    // first, normalize the argument, in accordance with how Buffer does it\n    bytes = Math.trunc(bytes)\n\n    // do nothing if not a positive number\n    if (Number.isNaN(bytes) || bytes <= 0) {\n      return\n    }\n\n    // if consuming all bytes, skip iterating\n    if (bytes === this.byteLength) {\n      this.bufs = []\n      this.length = 0\n      return\n    }\n\n    while (this.bufs.length > 0) {\n      if (bytes >= this.bufs[0].byteLength) {\n        bytes -= this.bufs[0].byteLength\n        this.length -= this.bufs[0].byteLength\n        this.bufs.shift()\n      } else {\n        this.bufs[0] = this.bufs[0].subarray(bytes)\n        this.length -= bytes\n        break\n      }\n    }\n  }\n\n  /**\n   * Extracts a section of an array and returns a new array.\n   *\n   * This is a copy operation as it is with Uint8Arrays and Arrays\n   * - note this is different to the behaviour of Node Buffers.\n   */\n  slice (beginInclusive?: number, endExclusive?: number): Uint8Array {\n    const { bufs, length } = this._subList(beginInclusive, endExclusive)\n\n    return concat(bufs, length)\n  }\n\n  /**\n   * Returns a alloc from the given start and end element index.\n   *\n   * In the best case where the data extracted comes from a single Uint8Array\n   * internally this is a no-copy operation otherwise it is a copy operation.\n   */\n  subarray (beginInclusive?: number, endExclusive?: number): Uint8Array {\n    const { bufs, length } = this._subList(beginInclusive, endExclusive)\n\n    if (bufs.length === 1) {\n      return bufs[0]\n    }\n\n    return concat(bufs, length)\n  }\n\n  /**\n   * Returns a allocList from the given start and end element index.\n   *\n   * This is a no-copy operation.\n   */\n  sublist (beginInclusive?: number, endExclusive?: number): Uint8ArrayList {\n    const { bufs, length } = this._subList(beginInclusive, endExclusive)\n\n    const list = new Uint8ArrayList()\n    list.length = length\n    // don't loop, just set the bufs\n    list.bufs = bufs\n\n    return list\n  }\n\n  private _subList (beginInclusive?: number, endExclusive?: number) {\n    beginInclusive = beginInclusive ?? 0\n    endExclusive = endExclusive ?? this.length\n\n    if (beginInclusive < 0) {\n      beginInclusive = this.length + beginInclusive\n    }\n\n    if (endExclusive < 0) {\n      endExclusive = this.length + endExclusive\n    }\n\n    if (beginInclusive < 0 || endExclusive > this.length) {\n      throw new RangeError('index is out of bounds')\n    }\n\n    if (beginInclusive === endExclusive) {\n      return { bufs: [], length: 0 }\n    }\n\n    if (beginInclusive === 0 && endExclusive === this.length) {\n      return { bufs: [...this.bufs], length: this.length }\n    }\n\n    const bufs: Uint8Array[] = []\n    let offset = 0\n\n    for (let i = 0; i < this.bufs.length; i++) {\n      const buf = this.bufs[i]\n      const bufStart = offset\n      const bufEnd = bufStart + buf.byteLength\n\n      // for next loop\n      offset = bufEnd\n\n      if (beginInclusive >= bufEnd) {\n        // start after this buf\n        continue\n      }\n\n      const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd\n      const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd\n\n      if (sliceStartInBuf && sliceEndsInBuf) {\n        // slice is wholly contained within this buffer\n        if (beginInclusive === bufStart && endExclusive === bufEnd) {\n          // requested whole buffer\n          bufs.push(buf)\n          break\n        }\n\n        // requested part of buffer\n        const start = beginInclusive - bufStart\n        bufs.push(buf.subarray(start, start + (endExclusive - beginInclusive)))\n        break\n      }\n\n      if (sliceStartInBuf) {\n        // slice starts in this buffer\n        if (beginInclusive === 0) {\n          // requested whole buffer\n          bufs.push(buf)\n          continue\n        }\n\n        // requested part of buffer\n        bufs.push(buf.subarray(beginInclusive - bufStart))\n        continue\n      }\n\n      if (sliceEndsInBuf) {\n        if (endExclusive === bufEnd) {\n          // requested whole buffer\n          bufs.push(buf)\n          break\n        }\n\n        // requested part of buffer\n        bufs.push(buf.subarray(0, endExclusive - bufStart))\n        break\n      }\n\n      // slice started before this buffer and ends after it\n      bufs.push(buf)\n    }\n\n    return { bufs, length: endExclusive - beginInclusive }\n  }\n\n  indexOf (search: Uint8ArrayList | Uint8Array, offset: number = 0): number {\n    if (!isUint8ArrayList(search) && !(search instanceof Uint8Array)) {\n      throw new TypeError('The \"value\" argument must be a Uint8ArrayList or Uint8Array')\n    }\n\n    const needle = search instanceof Uint8Array ? search : search.subarray()\n\n    offset = Number(offset ?? 0)\n\n    if (isNaN(offset)) {\n      offset = 0\n    }\n\n    if (offset < 0) {\n      offset = this.length + offset\n    }\n\n    if (offset < 0) {\n      offset = 0\n    }\n\n    if (search.length === 0) {\n      return offset > this.length ? this.length : offset\n    }\n\n    // https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm\n    const M: number = needle.byteLength\n\n    if (M === 0) {\n      throw new TypeError('search must be at least 1 byte long')\n    }\n\n    // radix\n    const radix: number = 256\n    const rightmostPositions: Int32Array = new Int32Array(radix)\n\n    // position of the rightmost occurrence of the byte c in the pattern\n    for (let c: number = 0; c < radix; c++) {\n      // -1 for bytes not in pattern\n      rightmostPositions[c] = -1\n    }\n\n    for (let j = 0; j < M; j++) {\n      // rightmost position for bytes in pattern\n      rightmostPositions[needle[j]] = j\n    }\n\n    // Return offset of first match, -1 if no match\n    const right = rightmostPositions\n    const lastIndex = this.byteLength - needle.byteLength\n    const lastPatIndex = needle.byteLength - 1\n    let skip: number\n\n    for (let i = offset; i <= lastIndex; i += skip) {\n      skip = 0\n\n      for (let j = lastPatIndex; j >= 0; j--) {\n        const char: number = this.get(i + j)\n\n        if (needle[j] !== char) {\n          skip = Math.max(1, j - right[char])\n          break\n        }\n      }\n\n      if (skip === 0) {\n        return i\n      }\n    }\n\n    return -1\n  }\n\n  getInt8 (byteOffset: number): number {\n    const buf = this.subarray(byteOffset, byteOffset + 1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getInt8(0)\n  }\n\n  setInt8 (byteOffset: number, value: number): void {\n    const buf = allocUnsafe(1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setInt8(0, value)\n\n    this.write(buf, byteOffset)\n  }\n\n  getInt16 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getInt16(0, littleEndian)\n  }\n\n  setInt16 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setInt16(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getInt32 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getInt32(0, littleEndian)\n  }\n\n  setInt32 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setInt32(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getBigInt64 (byteOffset: number, littleEndian?: boolean): bigint {\n    const buf = this.subarray(byteOffset, byteOffset + 8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getBigInt64(0, littleEndian)\n  }\n\n  setBigInt64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {\n    const buf = alloc(8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setBigInt64(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getUint8 (byteOffset: number): number {\n    const buf = this.subarray(byteOffset, byteOffset + 1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getUint8(0)\n  }\n\n  setUint8 (byteOffset: number, value: number): void {\n    const buf = allocUnsafe(1)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setUint8(0, value)\n\n    this.write(buf, byteOffset)\n  }\n\n  getUint16 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getUint16(0, littleEndian)\n  }\n\n  setUint16 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(2)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setUint16(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getUint32 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getUint32(0, littleEndian)\n  }\n\n  setUint32 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setUint32(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getBigUint64 (byteOffset: number, littleEndian?: boolean): bigint {\n    const buf = this.subarray(byteOffset, byteOffset + 8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getBigUint64(0, littleEndian)\n  }\n\n  setBigUint64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {\n    const buf = alloc(8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setBigUint64(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getFloat32 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getFloat32(0, littleEndian)\n  }\n\n  setFloat32 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(4)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setFloat32(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  getFloat64 (byteOffset: number, littleEndian?: boolean): number {\n    const buf = this.subarray(byteOffset, byteOffset + 8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n\n    return view.getFloat64(0, littleEndian)\n  }\n\n  setFloat64 (byteOffset: number, value: number, littleEndian?: boolean): void {\n    const buf = alloc(8)\n    const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n    view.setFloat64(0, value, littleEndian)\n\n    this.write(buf, byteOffset)\n  }\n\n  equals (other: any): other is Uint8ArrayList {\n    if (other == null) {\n      return false\n    }\n\n    if (!(other instanceof Uint8ArrayList)) {\n      return false\n    }\n\n    if (other.bufs.length !== this.bufs.length) {\n      return false\n    }\n\n    for (let i = 0; i < this.bufs.length; i++) {\n      if (!equals(this.bufs[i], other.bufs[i])) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  /**\n   * Create a Uint8ArrayList from a pre-existing list of Uint8Arrays.  Use this\n   * method if you know the total size of all the Uint8Arrays ahead of time.\n   */\n  static fromUint8Arrays (bufs: Uint8Array[], length?: number): Uint8ArrayList {\n    const list = new Uint8ArrayList()\n    list.bufs = bufs\n\n    if (length == null) {\n      length = bufs.reduce((acc, curr) => acc + curr.byteLength, 0)\n    }\n\n    list.length = length\n\n    return list\n  }\n}\n\n/*\nfunction indexOf (needle: Uint8Array, haystack: Uint8Array, offset = 0) {\n  for (let i = offset; i < haystack.byteLength; i++) {\n    for (let j = 0; j < needle.length; j++) {\n      if (haystack[i + j] !== needle[j]) {\n        break\n      }\n\n      if (j === needle.byteLength -1) {\n        return i\n      }\n    }\n\n    if (haystack.byteLength - i < needle.byteLength) {\n      break\n    }\n  }\n\n  return -1\n}\n*/\n", "/**\n * Returns true if the two passed Uint8Arrays have the same content\n */\nexport function equals (a: Uint8Array, b: Uint8Array): boolean {\n  if (a === b) {\n    return true\n  }\n\n  if (a.byteLength !== b.byteLength) {\n    return false\n  }\n\n  for (let i = 0; i < a.byteLength; i++) {\n    if (a[i] !== b[i]) {\n      return false\n    }\n  }\n\n  return true\n}\n", "import type { InProgressImportResult } from '../index.js'\n\nexport interface Reducer { (leaves: InProgressImportResult[]): Promise<InProgressImportResult> }\nexport interface FileLayout { (source: AsyncIterable<InProgressImportResult> | Iterable<InProgressImportResult>, reducer: Reducer): Promise<InProgressImportResult> }\n\nexport { balanced } from './balanced.js'\nexport { flat } from './flat.js'\nexport { trickle } from './trickle.js'\n", "import batch from 'it-batch'\nimport type { InProgressImportResult } from '../index.js'\nimport type { FileLayout } from './index.js'\n\nconst DEFAULT_MAX_CHILDREN_PER_NODE = 174\n\nexport interface BalancedOptions {\n  maxChildrenPerNode?: number\n}\n\nexport function balanced (options?: BalancedOptions): FileLayout {\n  const maxChildrenPerNode = options?.maxChildrenPerNode ?? DEFAULT_MAX_CHILDREN_PER_NODE\n\n  return async function balancedLayout (source, reduce): Promise<InProgressImportResult> {\n    const roots = []\n\n    for await (const chunked of batch(source, maxChildrenPerNode)) {\n      roots.push(await reduce(chunked))\n    }\n\n    if (roots.length > 1) {\n      return await balancedLayout(roots, reduce)\n    }\n\n    return roots[0]\n  }\n}\n", "import all from 'it-all'\nimport type { FileLayout } from './index.js'\nimport type { InProgressImportResult } from '../index.js'\n\nexport function flat (): FileLayout {\n  return async function flatLayout (source, reduce): Promise<InProgressImportResult> {\n    return await reduce(await all(source))\n  }\n}\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Collects all values from an (async) iterable and returns them as an array\n */\nfunction all <T> (source: Iterable<T>): T[]\nfunction all <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T[]>\nfunction all <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T[]> | T[] {\n  if (isAsyncIterable(source)) {\n    return (async () => {\n      const arr = []\n\n      for await (const entry of source) {\n        arr.push(entry)\n      }\n\n      return arr\n    })()\n  }\n\n  const arr = []\n\n  for (const entry of source) {\n    arr.push(entry)\n  }\n\n  return arr\n}\n\nexport default all\n", "import type { UnixFS } from 'ipfs-unixfs'\nimport batch from 'it-batch'\nimport type { CID } from 'multiformats/cid'\nimport type { InProgressImportResult } from '../index.js'\nimport type { FileLayout, Reducer } from '../layout/index.js'\n\nconst DEFAULT_LAYER_REPEAT = 4\nconst DEFAULT_MAX_CHILDREN_PER_NODE = 174\n\ninterface TrickleDagNode {\n  children: InProgressImportResult[]\n  depth: number\n  maxDepth: number\n  maxChildren: number\n  data?: InProgressImportResult[]\n  parent?: TrickleDagNode\n  cid?: CID\n  size?: number\n  unixfs?: UnixFS\n}\n\nexport interface TrickleOptions {\n  layerRepeat?: number\n  maxChildrenPerNode?: number\n}\n\n/**\n * @see https://github.com/ipfs/specs/pull/57#issuecomment-265205384\n */\nexport function trickle (options?: TrickleOptions): FileLayout {\n  const layerRepeat = options?.layerRepeat ?? DEFAULT_LAYER_REPEAT\n  const maxChildrenPerNode = options?.maxChildrenPerNode ?? DEFAULT_MAX_CHILDREN_PER_NODE\n\n  return async function trickleLayout (source, reduce): Promise<InProgressImportResult> {\n    const root = new Root(layerRepeat)\n    let iteration = 0\n    let maxDepth = 1\n    let subTree: SubTree = root\n\n    for await (const layer of batch(source, maxChildrenPerNode)) {\n      if (subTree.isFull()) {\n        if (subTree !== root) {\n          root.addChild(await subTree.reduce(reduce))\n        }\n\n        if (iteration > 0 && iteration % layerRepeat === 0) {\n          maxDepth++\n        }\n\n        subTree = new SubTree(maxDepth, layerRepeat, iteration)\n\n        iteration++\n      }\n\n      subTree.append(layer)\n    }\n\n    if (subTree != null && subTree !== root) {\n      root.addChild(await subTree.reduce(reduce))\n    }\n\n    return await root.reduce(reduce)\n  }\n}\n\nclass SubTree {\n  public root: TrickleDagNode\n  public node: TrickleDagNode\n  public parent: TrickleDagNode\n  public maxDepth: number\n  public layerRepeat: number\n  public currentDepth: number\n  public iteration: number\n\n  constructor (maxDepth: number, layerRepeat: number, iteration: number = 0) {\n    this.maxDepth = maxDepth\n    this.layerRepeat = layerRepeat\n    this.currentDepth = 1\n    this.iteration = iteration\n\n    this.root = this.node = this.parent = {\n      children: [],\n      depth: this.currentDepth,\n      maxDepth,\n      maxChildren: (this.maxDepth - this.currentDepth) * this.layerRepeat\n    }\n  }\n\n  isFull (): boolean {\n    if (this.root.data == null) {\n      return false\n    }\n\n    if (this.currentDepth < this.maxDepth && this.node.maxChildren > 0) {\n      // can descend\n      this._addNextNodeToParent(this.node)\n\n      return false\n    }\n\n    // try to find new node from node.parent\n    const distantRelative = this._findParent(this.node, this.currentDepth)\n\n    if (distantRelative != null) {\n      this._addNextNodeToParent(distantRelative)\n\n      return false\n    }\n\n    return true\n  }\n\n  _addNextNodeToParent (parent: TrickleDagNode): void {\n    this.parent = parent\n\n    // find site for new node\n    const nextNode = {\n      children: [],\n      depth: parent.depth + 1,\n      parent,\n      maxDepth: this.maxDepth,\n      maxChildren: Math.floor(parent.children.length / this.layerRepeat) * this.layerRepeat\n    }\n\n    // @ts-expect-error\n    parent.children.push(nextNode)\n\n    this.currentDepth = nextNode.depth\n    this.node = nextNode\n  }\n\n  append (layer: InProgressImportResult[]): void {\n    this.node.data = layer\n  }\n\n  async reduce (reduce: Reducer): Promise<InProgressImportResult> {\n    return await this._reduce(this.root, reduce)\n  }\n\n  async _reduce (node: TrickleDagNode, reduce: Reducer): Promise<InProgressImportResult> {\n    let children: InProgressImportResult[] = []\n\n    if (node.children.length > 0) {\n      children = await Promise.all(\n        node.children\n          // @ts-expect-error\n          .filter(child => child.data)\n          // @ts-expect-error\n          .map(async child => await this._reduce(child, reduce))\n      )\n    }\n\n    return await reduce((node.data ?? []).concat(children))\n  }\n\n  _findParent (node: TrickleDagNode, depth: number): TrickleDagNode | undefined {\n    const parent = node.parent\n\n    if (parent == null || parent.depth === 0) {\n      return\n    }\n\n    if (parent.children.length === parent.maxChildren || parent.maxChildren === 0) {\n      // this layer is full, may be able to traverse to a different branch\n      return this._findParent(parent, depth)\n    }\n\n    return parent\n  }\n}\n\nclass Root extends SubTree {\n  constructor (layerRepeat: number) {\n    super(0, layerRepeat)\n\n    this.root.depth = 0\n    this.currentDepth = 1\n  }\n\n  addChild (child: InProgressImportResult): void {\n    this.root.children.push(child)\n  }\n\n  async reduce (reduce: Reducer): Promise<InProgressImportResult> {\n    return await reduce((this.root.data ?? []).concat(this.root.children))\n  }\n}\n", "import { UnixFS } from 'ipfs-unixfs'\nimport { persist, PersistOptions } from '../utils/persist.js'\nimport * as dagPb from '@ipld/dag-pb'\nimport * as raw from 'multiformats/codecs/raw'\nimport type { BufferImporter } from '../index.js'\nimport type { CID, Version } from 'multiformats/cid'\nimport { CustomProgressEvent } from 'progress-events'\nimport type { ProgressOptions, ProgressEvent } from 'progress-events'\n\n/**\n * Passed to the onProgress callback while importing files\n */\nexport interface ImportWriteProgress {\n  /**\n   * How many bytes we have written for this source so far - this may be\n   * bigger than the file size due to the DAG-PB wrappers of each block\n   */\n  bytesWritten: bigint\n\n  /**\n   * The CID of the block that has been written\n   */\n  cid: CID\n\n  /**\n   * The path of the file being imported, if one was specified\n   */\n  path?: string\n}\n\nexport type BufferImportProgressEvents =\n  ProgressEvent<'unixfs:importer:progress:file:write', ImportWriteProgress>\n\nexport interface BufferImporterOptions extends ProgressOptions<BufferImportProgressEvents> {\n  cidVersion: Version\n  rawLeaves: boolean\n  leafType: 'file' | 'raw'\n}\n\nexport function defaultBufferImporter (options: BufferImporterOptions): BufferImporter {\n  return async function * bufferImporter (file, blockstore) {\n    let bytesWritten = 0n\n\n    for await (let block of file.content) {\n      yield async () => { // eslint-disable-line no-loop-func\n        let unixfs\n\n        const opts: PersistOptions = {\n          codec: dagPb,\n          cidVersion: options.cidVersion,\n          onProgress: options.onProgress\n        }\n\n        if (options.rawLeaves) {\n          opts.codec = raw\n          opts.cidVersion = 1\n        } else {\n          unixfs = new UnixFS({\n            type: options.leafType,\n            data: block\n          })\n\n          block = dagPb.encode({\n            Data: unixfs.marshal(),\n            Links: []\n          })\n        }\n\n        const cid = await persist(block, blockstore, opts)\n\n        bytesWritten += BigInt(block.byteLength)\n\n        options.onProgress?.(new CustomProgressEvent<ImportWriteProgress>('unixfs:importer:progress:file:write', {\n          bytesWritten,\n          cid,\n          path: file.path\n        }))\n\n        return {\n          cid,\n          unixfs,\n          size: BigInt(block.length),\n          block\n        }\n      }\n    }\n  }\n}\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Returns the first result from an (async) iterable, unless empty, in which\n * case returns `undefined`\n */\nfunction first <T> (source: Iterable<T>): T | undefined\nfunction first <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined>\nfunction first <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined> | T | undefined {\n  if (isAsyncIterable(source)) {\n    return (async () => {\n      for await (const entry of source) { // eslint-disable-line no-unreachable-loop\n        return entry\n      }\n\n      return undefined\n    })()\n  }\n\n  for (const entry of source) { // eslint-disable-line no-unreachable-loop\n    return entry\n  }\n\n  return undefined\n}\n\nexport default first\n", "import * as ErrorsImport from './errors.js'\n\nexport { BaseBlockstore } from './base.js'\nexport { MemoryBlockstore } from './memory.js'\n\nexport const Errors = {\n  ...ErrorsImport\n}\n", "import errCode from 'err-code'\n\nexport function openFailedError (err?: Error): Error {\n  err = err ?? new Error('Open failed')\n  return errCode(err, 'ERR_OPEN_FAILED')\n}\n\nexport function closeFailedError (err?: Error): Error {\n  err = err ?? new Error('Close failed')\n  return errCode(err, 'ERR_CLOSE_FAILED')\n}\n\nexport function putFailedError (err?: Error): Error {\n  err = err ?? new Error('Put failed')\n  return errCode(err, 'ERR_PUT_FAILED')\n}\n\nexport function getFailedError (err?: Error): Error {\n  err = err ?? new Error('Get failed')\n  return errCode(err, 'ERR_GET_FAILED')\n}\n\nexport function deleteFailedError (err?: Error): Error {\n  err = err ?? new Error('Delete failed')\n  return errCode(err, 'ERR_DELETE_FAILED')\n}\n\nexport function hasFailedError (err?: Error): Error {\n  err = err ?? new Error('Has failed')\n  return errCode(err, 'ERR_HAS_FAILED')\n}\n\nexport function notFoundError (err?: Error): Error {\n  err = err ?? new Error('Not Found')\n  return errCode(err, 'ERR_NOT_FOUND')\n}\n\nexport function abortedError (err?: Error): Error {\n  err = err ?? new Error('Aborted')\n  return errCode(err, 'ERR_ABORTED')\n}\n", "import type { Blockstore, Pair } from 'interface-blockstore'\nimport type { AbortOptions, Await, AwaitIterable } from 'interface-store'\nimport type { CID } from 'multiformats/cid'\n\nexport class BaseBlockstore implements Blockstore {\n  has (key: CID, options?: AbortOptions): Await<boolean> {\n    return Promise.reject(new Error('.has is not implemented'))\n  }\n\n  put (key: CID, val: Uint8Array, options?: AbortOptions): Await<CID> {\n    return Promise.reject(new Error('.put is not implemented'))\n  }\n\n  async * putMany (source: AwaitIterable<Pair>, options?: AbortOptions): AwaitIterable<CID> {\n    for await (const { cid, block } of source) {\n      await this.put(cid, block, options)\n      yield cid\n    }\n  }\n\n  get (key: CID, options?: AbortOptions): Await<Uint8Array> {\n    return Promise.reject(new Error('.get is not implemented'))\n  }\n\n  async * getMany (source: AwaitIterable<CID>, options?: AbortOptions): AwaitIterable<Pair> {\n    for await (const key of source) {\n      yield {\n        cid: key,\n        block: await this.get(key, options)\n      }\n    }\n  }\n\n  async delete (key: CID, options?: AbortOptions): Promise<void> {\n    await Promise.reject(new Error('.delete is not implemented'))\n  }\n\n  async * deleteMany (source: AwaitIterable<CID>, options?: AbortOptions): AwaitIterable<CID> {\n    for await (const key of source) {\n      await this.delete(key, options)\n      yield key\n    }\n  }\n\n  /**\n   * Extending classes should override `query` or implement this method\n   */\n  async * getAll (options?: AbortOptions): AwaitIterable<Pair> { // eslint-disable-line require-yield\n    throw new Error('.getAll is not implemented')\n  }\n}\n", "import { BaseBlockstore } from './base.js'\nimport { base32 } from 'multiformats/bases/base32'\nimport * as raw from 'multiformats/codecs/raw'\nimport { CID } from 'multiformats/cid'\nimport * as Digest from 'multiformats/hashes/digest'\nimport * as Errors from './errors.js'\nimport type { Await, AwaitIterable } from 'interface-store'\nimport type { Pair } from 'interface-blockstore'\n\nexport class MemoryBlockstore extends BaseBlockstore {\n  private readonly data: Map<string, Uint8Array>\n\n  constructor () {\n    super()\n\n    this.data = new Map()\n  }\n\n  put (key: CID, val: Uint8Array): Await<CID> { // eslint-disable-line require-await\n    this.data.set(base32.encode(key.multihash.bytes), val)\n\n    return key\n  }\n\n  get (key: CID): Await<Uint8Array> {\n    const buf = this.data.get(base32.encode(key.multihash.bytes))\n\n    if (buf == null) {\n      throw Errors.notFoundError()\n    }\n\n    return buf\n  }\n\n  has (key: CID): Await<boolean> {\n    return this.data.has(base32.encode(key.multihash.bytes))\n  }\n\n  async delete (key: CID): Promise<void> {\n    this.data.delete(base32.encode(key.multihash.bytes))\n  }\n\n  async * getAll (): AwaitIterable<Pair> {\n    for (const [key, value] of this.data.entries()) {\n      yield {\n        cid: CID.createV1(raw.code, Digest.decode(base32.decode(key))),\n        block: value\n      }\n    }\n  }\n}\n", "import type { Readable } from 'readable-stream';\n\n/**\n * The interface that defines how to store and fetch data associated with a message\n */\nexport interface DataStore {\n  /**\n   * Opens a connection to the underlying store.\n   */\n  open(): Promise<void>;\n\n  /**\n   * Closes the connection to the underlying store.\n   */\n  close(): Promise<void>;\n\n  /**\n   * Puts the given data in store.\n   * It is expected that the CID of the dataStream matches the given dataCid.\n   * The returned dataCid and returned dataSize will be verified against the given dataCid (and inferred dataSize).\n   * @param messageCid CID of the message that references the data.\n   * @returns The CID and size in number of bytes of the data stored.\n   */\n  put(tenant: string, messageCid: string, dataCid: string, dataStream: Readable): Promise<PutResult>;\n\n  /**\n   * Fetches the specified data.\n   * The returned dataCid and returned dataSize will be verified against the given dataCid (and inferred dataSize).\n   * @param messageCid CID of the message that references the data.\n   */\n  get(tenant: string, messageCid: string, dataCid: string): Promise<GetResult | undefined>;\n\n  /**\n   * Associates existing data.\n   * The returned dataCid and returned dataSize will be verified against the given dataCid (and inferred dataSize).\n   * @param tenant The tenant in which the data must exist under for the association to occur.\n   * @param messageCid CID of the message that references the data.\n   * @param dataCid The CID of the data stored.\n   * @returns {AssociateResult} if association succeeds. `undefined` if data to be associated is not found.\n   */\n  associate(tenant: string, messageCid: string, dataCid: string): Promise<AssociateResult | undefined>;\n\n  /**\n   * Deletes the specified data.\n   * @param messageCid CID of the message that references the data.\n   */\n  delete(tenant: string, messageCid: string, dataCid: string): Promise<void>;\n}\n\n/**\n * Result of a data store `put()` method call.\n */\nexport type PutResult = {\n  dataCid: string;\n  dataSize: number;\n};\n\n/**\n * Result of a data store `get()` method call.\n */\nexport type GetResult = {\n  dataCid: string;\n  dataSize: number;\n  dataStream: Readable;\n};\n\n/**\n * Result of a data store `associate()` method call.\n */\nexport type AssociateResult = {\n  dataCid: string;\n  dataSize: number;\n};", "import type { ImportResult } from 'ipfs-unixfs-importer';\nimport type { AssociateResult, DataStore, GetResult, PutResult } from './data-store.js';\n\nimport { BlockstoreLevel } from './blockstore-level.js';\nimport { createLevelDatabase } from './level-wrapper.js';\nimport { exporter } from 'ipfs-unixfs-exporter';\nimport { importer } from 'ipfs-unixfs-importer';\nimport { Readable } from 'readable-stream';\n\n// `BlockstoreLevel` doesn't support being a `Set` (i.e. it always requires a value), so use a placeholder instead.\nconst PLACEHOLDER_VALUE = new Uint8Array();\n\n/**\n * A simple implementation of {@link DataStore} that works in both the browser and server-side.\n * Leverages LevelDB under the hood.\n *\n * It has the following structure (`+` represents a sublevel and `->` represents a key->value pair):\n *   'data' + <tenant> + <dataCid> -> <data>\n *   'references' + <tenant> + <dataCid> + <messageCid> -> PLACEHOLDER_VALUE\n *\n * This allows for the <data> to be shared for everything that uses the same <dataCid> while also making\n * sure that the <data> can only be deleted if there are no <messageCid> for any <tenant> still using it.\n */\nexport class DataStoreLevel implements DataStore {\n  config: DataStoreLevelConfig;\n\n  blockstore: BlockstoreLevel;\n\n  constructor(config: DataStoreLevelConfig = {}) {\n    this.config = {\n      blockstoreLocation: 'DATASTORE',\n      createLevelDatabase,\n      ...config\n    };\n\n    this.blockstore = new BlockstoreLevel({\n      location            : this.config.blockstoreLocation!,\n      createLevelDatabase : this.config.createLevelDatabase,\n    });\n  }\n\n  public async open(): Promise<void> {\n    await this.blockstore.open();\n  }\n\n  async close(): Promise<void> {\n    await this.blockstore.close();\n  }\n\n  async put(tenant: string, messageCid: string, dataCid: string, dataStream: Readable): Promise<PutResult> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n    await blockstoreForReferenceCounting.put(messageCid, PLACEHOLDER_VALUE);\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n\n    const asyncDataBlocks = importer([{ content: dataStream }], blockstoreForData, { cidVersion: 1 });\n\n    // NOTE: the last block contains the root CID as well as info to derive the data size\n    let dataDagRoot!: ImportResult;\n    for await (dataDagRoot of asyncDataBlocks) { ; }\n\n    return {\n      dataCid  : String(dataDagRoot.cid),\n      dataSize : Number(dataDagRoot.unixfs?.fileSize() ?? dataDagRoot.size)\n    };\n  }\n\n  public async get(tenant: string, messageCid: string, dataCid: string): Promise<GetResult | undefined> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n\n    const allowed = await blockstoreForReferenceCounting.has(messageCid);\n    if (!allowed) {\n      return undefined;\n    }\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n\n    const exists = await blockstoreForData.has(dataCid);\n    if (!exists) {\n      return undefined;\n    }\n\n    // data is chunked into dag-pb unixfs blocks. re-inflate the chunks.\n    const dataDagRoot = await exporter(dataCid, blockstoreForData);\n    const contentIterator = dataDagRoot.content();\n\n    const dataStream = new Readable({\n      async read(): Promise<void> {\n        const result = await contentIterator.next();\n        if (result.done) {\n          this.push(null); // end the stream\n        } else {\n          this.push(result.value);\n        }\n      }\n    });\n\n    let dataSize = dataDagRoot.size;\n\n    if (dataDagRoot.type === 'file' || dataDagRoot.type === 'directory') {\n      dataSize = dataDagRoot.unixfs.fileSize();\n    }\n\n    return {\n      dataCid  : String(dataDagRoot.cid),\n      dataSize : Number(dataSize),\n      dataStream,\n    };\n  }\n\n  public async associate(tenant: string, messageCid: string, dataCid: string): Promise<AssociateResult | undefined> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n\n    const noExistingReference = await blockstoreForReferenceCounting.isEmpty();\n    if (noExistingReference) {\n      return undefined;\n    }\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n\n    const dataExists = await blockstoreForData.has(dataCid);\n    if (!dataExists) {\n      return undefined;\n    }\n\n    await blockstoreForReferenceCounting.put(messageCid, PLACEHOLDER_VALUE);\n\n    const dataDagRoot = await exporter(dataCid, blockstoreForData);\n\n    let dataSize = dataDagRoot.size;\n\n    if (dataDagRoot.type === 'file' || dataDagRoot.type === 'directory') {\n      dataSize = dataDagRoot.unixfs.fileSize();\n    }\n\n    return {\n      dataCid  : String(dataDagRoot.cid),\n      dataSize : Number(dataSize)\n    };\n  }\n\n  public async delete(tenant: string, messageCid: string, dataCid: string): Promise<void> {\n    const blockstoreForReferenceCounting = await this.getBlockstoreForReferenceCounting(tenant, dataCid);\n    await blockstoreForReferenceCounting.delete(messageCid);\n\n    const wasLastReference = await blockstoreForReferenceCounting.isEmpty();\n    if (!wasLastReference) {\n      return;\n    }\n\n    const blockstoreForData = await this.getBlockstoreForStoringData(tenant, dataCid);\n    await blockstoreForData.clear();\n  }\n\n  /**\n   * Deletes everything in the store. Mainly used in tests.\n   */\n  public async clear(): Promise<void> {\n    await this.blockstore.clear();\n  }\n\n  async dump() : Promise<void> {\n    console.group('blockstore');\n    await this.blockstore['dump']?.();\n    console.groupEnd();\n  }\n\n  /**\n   * Gets the blockstore used for reference counting purposes for the given `dataCid` in the given `tenant`.\n   */\n  private async getBlockstoreForReferenceCounting(tenant: string, dataCid: string): Promise<BlockstoreLevel> {\n    const referenceCountingPartitionName = 'references';\n    const blockstoreForReferenceCounting = await this.blockstore.partition(referenceCountingPartitionName);\n    const blockstoreForReferenceCountingByTenant = await blockstoreForReferenceCounting.partition(tenant);\n    const blockstoreForReferenceCountingDataCid = await blockstoreForReferenceCountingByTenant.partition(dataCid);\n    return blockstoreForReferenceCountingDataCid;\n  }\n\n  /**\n   * Gets the blockstore used for storing data for the given `dataCid` in the given `tenant`.\n   */\n  private async getBlockstoreForStoringData(tenant: string, dataCid: string): Promise<BlockstoreLevel> {\n    const dataPartitionName = 'data';\n    const blockstoreForData = await this.blockstore.partition(dataPartitionName);\n    const blockstoreOfGivenTenant = await blockstoreForData.partition(tenant);\n    const blockstoreOfGivenDataCid = await blockstoreOfGivenTenant.partition(dataCid);\n    return blockstoreOfGivenDataCid;\n  }\n}\n\ntype DataStoreLevelConfig = {\n  blockstoreLocation?: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import { CID } from 'multiformats';\nimport type { AbortOptions, AwaitIterable } from 'interface-store';\nimport type { Blockstore, Pair } from 'interface-blockstore';\n\nimport { createLevelDatabase, LevelWrapper } from './level-wrapper.js';\n\n// `level` works in Node.js 12+ and Electron 5+ on Linux, Mac OS, Windows and\n// FreeBSD, including any future Node.js and Electron release thanks to Node-API, including ARM\n// platforms like Raspberry Pi and Android, as well as in Chrome, Firefox, Edge, Safari, iOS Safari\n//  and Chrome for Android.\n\n/**\n * Blockstore implementation using LevelDB for storing the actual messages (in the case of MessageStore)\n * or the data associated with messages (in the case of a DataStore).\n */\nexport class BlockstoreLevel implements Blockstore {\n  config: BlockstoreLevelConfig;\n\n  db: LevelWrapper<Uint8Array>;\n\n  constructor(config: BlockstoreLevelConfig, db?: LevelWrapper<Uint8Array>) {\n    this.config = {\n      createLevelDatabase,\n      ...config\n    };\n\n    this.db = db ?? new LevelWrapper<Uint8Array>({ ...this.config, valueEncoding: 'binary' });\n  }\n\n  async open(): Promise<void> {\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    return this.db.close();\n  }\n\n  async partition(name: string): Promise<BlockstoreLevel> {\n    const db = await this.db.partition(name);\n    return new BlockstoreLevel({ ...this.config, location: '' }, db);\n  }\n\n  async put(key: CID | string, val: Uint8Array, options?: AbortOptions): Promise<CID> {\n    await this.db.put(String(key), val, options);\n    return CID.parse(key.toString());\n  }\n\n  async get(key: CID | string, options?: AbortOptions): Promise<Uint8Array> {\n    const result = await this.db.get(String(key), options);\n    return result!;\n  }\n\n  async has(key: CID | string, options?: AbortOptions): Promise<boolean> {\n    return this.db.has(String(key), options);\n  }\n\n  async delete(key: CID | string, options?: AbortOptions): Promise<void> {\n    return this.db.delete(String(key), options);\n  }\n\n  async isEmpty(options?: AbortOptions): Promise<boolean> {\n    return this.db.isEmpty(options);\n  }\n\n  async * putMany(source: AwaitIterable<Pair>, options?: AbortOptions): AsyncIterable<CID> {\n    for await (const entry of source) {\n      await this.put(entry.cid, entry.block, options);\n\n      yield entry.cid;\n    }\n  }\n\n  async * getMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<Pair> {\n    for await (const key of source) {\n      yield {\n        cid   : key,\n        block : await this.get(key, options)\n      };\n    }\n  }\n\n  async * getAll(options?: AbortOptions): AsyncIterable<Pair> {\n    // @ts-expect-error keyEncoding is 'buffer' but types for db.iterator always return the key type as 'string'\n    const li: AsyncGenerator<[Uint8Array, Uint8Array]> = this.db.iterator({\n      keys        : true,\n      keyEncoding : 'buffer'\n    }, options);\n\n    for await (const [key, value] of li) {\n      yield { cid: CID.decode(key), block: value };\n    }\n  }\n\n  async * deleteMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<CID> {\n    for await (const key of source) {\n      await this.delete(key, options);\n\n      yield key;\n    }\n  }\n\n  /**\n   * deletes all entries\n   */\n  async clear(): Promise<void> {\n    return this.db.clear();\n  }\n\n  async dump(): Promise<void> {\n    console.group('db');\n    await this.db['dump']?.();\n    console.groupEnd();\n  }\n}\n\ntype BlockstoreLevelConfig = {\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import type { AbstractBatchOperation, AbstractDatabaseOptions, AbstractIteratorOptions, AbstractLevel } from 'abstract-level';\n\nimport { abortOr } from '../utils/abort.js';\nimport { sleep } from '../utils/time.js';\n\nexport type CreateLevelDatabaseOptions<V> = AbstractDatabaseOptions<string, V>;\n\nexport type LevelDatabase<V> = AbstractLevel<string | Buffer | Uint8Array, string, V>;\n\nexport async function createLevelDatabase<V>(location: string, options?: CreateLevelDatabaseOptions<V>): Promise<LevelDatabase<V>> {\n  // Only import `'level'` when it's actually necessary (i.e. only when the default `createLevelDatabase` is used).\n  // Overriding `createLevelDatabase` will prevent this from happening.\n  const { Level } = await import('level');\n  return new Level(location, { ...options, keyEncoding: 'utf8' });\n}\n\nexport interface LevelWrapperOptions {\n  signal?: AbortSignal;\n}\n\nexport type LevelWrapperBatchOperation<V> = AbstractBatchOperation<LevelDatabase<V>, string, V>;\n\nexport type LevelWrapperIteratorOptions<V> = AbstractIteratorOptions<string, V>;\n\n// `Level` works in Node.js 12+ and Electron 5+ on Linux, Mac OS, Windows and FreeBSD, including any\n// future Node.js and Electron release thanks to Node-API, including ARM platforms like Raspberry Pi\n// and Android, as well as in Chrome, Firefox, Edge, Safari, iOS Safari and Chrome for Android.\nexport class LevelWrapper<V> {\n  config: LevelWrapperConfig<V>;\n\n  db: LevelDatabase<V>;\n\n  /**\n   * @param config.location - must be a directory path (relative or absolute) where `Level`` will\n   * store its files, or in browsers, the name of the {@link https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase `IDBDatabase`}\n   * to be opened.\n   */\n  constructor(config: LevelWrapperConfig<V>, db?: LevelDatabase<V>) {\n    this.config = {\n      createLevelDatabase,\n      ...config\n    };\n\n    this.db = db!;\n  }\n\n  async open(): Promise<void> {\n    await this.createLevelDatabase();\n\n    while (this.db.status === 'opening' || this.db.status === 'closing') {\n      await sleep(200);\n    }\n\n    if (this.db.status === 'open') {\n      return;\n    }\n\n    // `db.open()` is automatically called by the database constructor.  We're calling it explicitly\n    // in order to explicitly catch an error that would otherwise not surface until another method\n    // like `db.get()` is called.  Once `db.open()` has then been called, any read & write\n    // operations will again be queued internally until opening has finished.\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    if (!this.db) {\n      return;\n    }\n\n    while (this.db.status === 'opening' || this.db.status === 'closing') {\n      await sleep(200);\n    }\n\n    if (this.db.status === 'closed') {\n      return;\n    }\n\n    return this.db.close();\n  }\n\n  async partition(name: string): Promise<LevelWrapper<V>> {\n    await this.createLevelDatabase();\n\n    return new LevelWrapper(this.config, this.db.sublevel(name, {\n      keyEncoding   : 'utf8',\n      valueEncoding : this.config.valueEncoding\n    }));\n  }\n\n  async get(key: string, options?: LevelWrapperOptions): Promise<V|undefined>{\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    try {\n      const value = await abortOr(options?.signal, this.db.get(String(key)));\n      return value;\n    } catch (error) {\n      const e = error as { code: string };\n      // `Level`` throws an error if the key is not present.  Return `undefined` in this case.\n      if (e.code === 'LEVEL_NOT_FOUND') {\n        return undefined;\n      } else {\n        throw error;\n      }\n    }\n  }\n\n  async has(key: string, options?: LevelWrapperOptions): Promise<boolean> {\n    return !! await this.get(key, options);\n  }\n\n  async * keys(options?: LevelWrapperOptions): AsyncGenerator<string> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    for await (const key of this.db.keys()) {\n      options?.signal?.throwIfAborted();\n\n      yield key;\n    }\n  }\n\n  async * iterator(iteratorOptions?: LevelWrapperIteratorOptions<V>, options?: LevelWrapperOptions): AsyncGenerator<[string, V]> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    for await (const entry of this.db.iterator(iteratorOptions!)) {\n      options?.signal?.throwIfAborted();\n\n      yield entry;\n    }\n  }\n\n  async put(key: string, value: V, options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    return abortOr(options?.signal, this.db.put(String(key), value));\n  }\n\n  async delete(key: string, options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    return abortOr(options?.signal, this.db.del(String(key)));\n  }\n\n  async isEmpty(options?: LevelWrapperOptions): Promise<boolean> {\n    for await (const _key of this.keys(options)) {\n      return false;\n    }\n    return true;\n  }\n\n  async clear(): Promise<void> {\n    await this.createLevelDatabase();\n\n    await this.db.clear();\n\n    await this.compactUnderlyingStorage();\n  }\n\n  async batch(operations: Array<LevelWrapperBatchOperation<V>>, options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    return abortOr(options?.signal, this.db.batch(operations));\n  }\n\n  private async compactUnderlyingStorage(options?: LevelWrapperOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    await abortOr(options?.signal, this.createLevelDatabase());\n\n    const range = this.sublevelRange;\n    if (!range) {\n      return;\n    }\n\n    // additional methods are only available on the root API instance\n    const root = this.root;\n\n    if (root.db.supports.additionalMethods.compactRange) {\n      return abortOr(options?.signal, (root.db as any).compactRange?.(...range));\n    }\n  }\n\n  private get sublevelRange(): [ string, string ] | undefined {\n    const prefix = (this.db as any).prefix;\n    if (!prefix) {\n      return undefined;\n    }\n\n    // use the separator to derive an exclusive `end` that will never match to a key (which matches how `abstract-level` creates a `boundary`)\n    return [ prefix, prefix.slice(0, -1) + String.fromCharCode(prefix.charCodeAt(prefix.length - 1) + 1) ];\n  }\n\n  private get root(): LevelWrapper<V> {\n    let db = this.db;\n    for (const parent = (db as any).db; parent && parent !== db; ) {\n      db = parent;\n    }\n    return new LevelWrapper(this.config, db);\n  }\n\n  private async createLevelDatabase(): Promise<void> {\n    this.db ??= await this.config.createLevelDatabase!<V>(this.config.location, {\n      keyEncoding   : 'utf8',\n      valueEncoding : this.config.valueEncoding\n    });\n  }\n\n  async dump(): Promise<void> {\n    if (!this.db) {\n      return;\n    }\n\n    for await (const [ key, value ] of this.db.iterator()) {\n      console.debug(key, value);\n    }\n  }\n}\n\ntype LevelWrapperConfig<V> = CreateLevelDatabaseOptions<V> & {\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "/**\n * Wraps the given `AbortSignal` in a `Promise` that rejects if it is triggered (and will therefore never resolve).\n */\nfunction promisifySignal<Type>(signal: AbortSignal): Promise<Type> {\n  return new Promise((resolve, reject) => {\n    if (signal.aborted) {\n      reject(signal.reason);\n      return;\n    }\n\n    signal.addEventListener('abort', () => {\n      reject(signal.reason);\n    });\n  });\n}\n\n/**\n * Wraps the given `Promise` such that it will reject if the `AbortSignal` is triggered.\n */\nexport async function abortOr<Type>(signal: AbortSignal | undefined, promise: Promise<Type>): Promise<Type> {\n  if (!signal) {\n    return promise;\n  }\n\n  return Promise.race([\n    promise,\n    promisifySignal<Type>(signal),\n  ]);\n}\n", "import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * sleeps for the desired duration\n * @param durationInMillisecond the desired amount of sleep time\n * @returns when the provided duration has passed\n */\nexport function sleep(durationInMillisecond: number): Promise<void> {\n  return new Promise(resolve => setTimeout(resolve, durationInMillisecond));\n}\n\n/**\n * returns an UTC ISO-8601 timestamp with microsecond precision\n * using @js-temporal/polyfill\n */\nexport function getCurrentTimeInHighPrecision(): string {\n  return Temporal.Now.instant().toString({ smallestUnit: 'microseconds' });\n}\n", "import { DEBUG } from './debug';\nconst INTRINSICS = {};\nconst customUtilInspectFormatters = {\n    ['Temporal.Duration'](depth, options) {\n        const descr = options.stylize(`${this[Symbol.toStringTag]} <${this}>`, 'special');\n        if (depth < 1)\n            return descr;\n        const entries = [];\n        for (const prop of [\n            'years',\n            'months',\n            'weeks',\n            'days',\n            'hours',\n            'minutes',\n            'seconds',\n            'milliseconds',\n            'microseconds',\n            'nanoseconds'\n        ]) {\n            if (this[prop] !== 0)\n                entries.push(`  ${prop}: ${options.stylize(this[prop], 'number')}`);\n        }\n        return descr + ' {\\n' + entries.join(',\\n') + '\\n}';\n    }\n};\nfunction defaultUtilInspectFormatter(depth, options) {\n    return options.stylize(`${this[Symbol.toStringTag]} <${this}>`, 'special');\n}\nexport function MakeIntrinsicClass(Class, name) {\n    Object.defineProperty(Class.prototype, Symbol.toStringTag, {\n        value: name,\n        writable: false,\n        enumerable: false,\n        configurable: true\n    });\n    if (DEBUG) {\n        Object.defineProperty(Class.prototype, Symbol.for('nodejs.util.inspect.custom'), {\n            value: customUtilInspectFormatters[name] || defaultUtilInspectFormatter,\n            writable: false,\n            enumerable: false,\n            configurable: true\n        });\n    }\n    for (const prop of Object.getOwnPropertyNames(Class)) {\n        // we know that `prop` is present, so the descriptor is never undefined\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const desc = Object.getOwnPropertyDescriptor(Class, prop);\n        if (!desc.configurable || !desc.enumerable)\n            continue;\n        desc.enumerable = false;\n        Object.defineProperty(Class, prop, desc);\n    }\n    for (const prop of Object.getOwnPropertyNames(Class.prototype)) {\n        // we know that `prop` is present, so the descriptor is never undefined\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const desc = Object.getOwnPropertyDescriptor(Class.prototype, prop);\n        if (!desc.configurable || !desc.enumerable)\n            continue;\n        desc.enumerable = false;\n        Object.defineProperty(Class.prototype, prop, desc);\n    }\n    DefineIntrinsic(name, Class);\n    DefineIntrinsic(`${name}.prototype`, Class.prototype);\n}\nexport function DefineIntrinsic(name, value) {\n    const key = `%${name}%`;\n    if (INTRINSICS[key] !== undefined)\n        throw new Error(`intrinsic ${name} already exists`);\n    INTRINSICS[key] = value;\n}\nexport function GetIntrinsic(intrinsic) {\n    return INTRINSICS[intrinsic];\n}\n//# sourceMappingURL=intrinsicclass.js.map", "// Instant\nexport const EPOCHNANOSECONDS = 'slot-epochNanoSeconds';\n// TimeZone\nexport const TIMEZONE_ID = 'slot-timezone-identifier';\n// DateTime, Date, Time, YearMonth, MonthDay\nexport const ISO_YEAR = 'slot-year';\nexport const ISO_MONTH = 'slot-month';\nexport const ISO_DAY = 'slot-day';\nexport const ISO_HOUR = 'slot-hour';\nexport const ISO_MINUTE = 'slot-minute';\nexport const ISO_SECOND = 'slot-second';\nexport const ISO_MILLISECOND = 'slot-millisecond';\nexport const ISO_MICROSECOND = 'slot-microsecond';\nexport const ISO_NANOSECOND = 'slot-nanosecond';\nexport const CALENDAR = 'slot-calendar';\n// Date, YearMonth, and MonthDay all have the same slots, disambiguation needed:\nexport const DATE_BRAND = 'slot-date-brand';\nexport const YEAR_MONTH_BRAND = 'slot-year-month-brand';\nexport const MONTH_DAY_BRAND = 'slot-month-day-brand';\n// ZonedDateTime\nexport const INSTANT = 'slot-cached-instant';\nexport const TIME_ZONE = 'slot-time-zone';\n// Duration\nexport const YEARS = 'slot-years';\nexport const MONTHS = 'slot-months';\nexport const WEEKS = 'slot-weeks';\nexport const DAYS = 'slot-days';\nexport const HOURS = 'slot-hours';\nexport const MINUTES = 'slot-minutes';\nexport const SECONDS = 'slot-seconds';\nexport const MILLISECONDS = 'slot-milliseconds';\nexport const MICROSECONDS = 'slot-microseconds';\nexport const NANOSECONDS = 'slot-nanoseconds';\n// Calendar\nexport const CALENDAR_ID = 'slot-calendar-identifier';\nconst slots = new WeakMap();\nexport function CreateSlots(container) {\n    slots.set(container, Object.create(null));\n}\nfunction GetSlots(container) {\n    return slots.get(container);\n}\nexport function HasSlot(container, ...ids) {\n    if (!container || 'object' !== typeof container)\n        return false;\n    const myslots = GetSlots(container);\n    return !!myslots && ids.reduce((all, id) => all && id in myslots, true);\n}\nexport function GetSlot(container, id) {\n    const value = GetSlots(container)[id];\n    if (value === undefined)\n        throw new TypeError(`Missing internal slot ${id}`);\n    return value;\n}\nexport function SetSlot(container, id, value) {\n    GetSlots(container)[id] = value;\n}\n//# sourceMappingURL=slots.js.map", "const tzComponent = /\\.[-A-Za-z_]|\\.\\.[-A-Za-z._]{1,12}|\\.[-A-Za-z_][-A-Za-z._]{0,12}|[A-Za-z_][-A-Za-z._]{0,13}/;\nconst offsetNoCapture = /(?:[+\\u2212-][0-2][0-9](?::?[0-5][0-9](?::?[0-5][0-9](?:[.,]\\d{1,9})?)?)?)/;\nconst timeZoneID = new RegExp(`(?:(?:${tzComponent.source})(?:\\\\/(?:${tzComponent.source}))*|Etc/GMT[-+]\\\\d{1,2}|${offsetNoCapture.source})`);\nconst calComponent = /[A-Za-z0-9]{3,8}/;\nconst calendarID = new RegExp(`(?:${calComponent.source}(?:-${calComponent.source})*)`);\nconst yearpart = /(?:[+\\u2212-]\\d{6}|\\d{4})/;\nconst monthpart = /(?:0[1-9]|1[0-2])/;\nconst daypart = /(?:0[1-9]|[12]\\d|3[01])/;\nconst datesplit = new RegExp(`(${yearpart.source})(?:-(${monthpart.source})-(${daypart.source})|(${monthpart.source})(${daypart.source}))`);\nconst timesplit = /(\\d{2})(?::(\\d{2})(?::(\\d{2})(?:[.,](\\d{1,9}))?)?|(\\d{2})(?:(\\d{2})(?:[.,](\\d{1,9}))?)?)?/;\nexport const offset = /([+\\u2212-])([01][0-9]|2[0-3])(?::?([0-5][0-9])(?::?([0-5][0-9])(?:[.,](\\d{1,9}))?)?)?/;\nconst zonesplit = new RegExp(`(?:([zZ])|(?:${offset.source})?)(?:\\\\[(${timeZoneID.source})\\\\])?`);\nconst calendar = new RegExp(`\\\\[u-ca=(${calendarID.source})\\\\]`);\nexport const zoneddatetime = new RegExp(`^${datesplit.source}(?:(?:T|\\\\s+)${timesplit.source})?${zonesplit.source}(?:${calendar.source})?$`, 'i');\nexport const time = new RegExp(`^T?${timesplit.source}(?:${zonesplit.source})?(?:${calendar.source})?$`, 'i');\n// The short forms of YearMonth and MonthDay are only for the ISO calendar.\n// Non-ISO calendar YearMonth and MonthDay have to parse as a Temporal.PlainDate,\n// with the reference fields.\n// YYYYMM forbidden by ISO 8601 because ambiguous with YYMMDD, but allowed by\n// RFC 3339 and we don't allow 2-digit years, so we allow it.\n// Not ambiguous with HHMMSS because that requires a 'T' prefix\nexport const yearmonth = new RegExp(`^(${yearpart.source})-?(${monthpart.source})$`);\nexport const monthday = new RegExp(`^(?:--)?(${monthpart.source})-?(${daypart.source})$`);\nconst fraction = /(\\d+)(?:[.,](\\d{1,9}))?/;\nconst durationDate = /(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?/;\nconst durationTime = new RegExp(`(?:${fraction.source}H)?(?:${fraction.source}M)?(?:${fraction.source}S)?`);\nexport const duration = new RegExp(`^([+\\u2212-])?P${durationDate.source}(?:T(?!$)${durationTime.source})?$`, 'i');\n//# sourceMappingURL=regex.js.map", "const ArrayIncludes = Array.prototype.includes;\nconst ArrayPrototypePush = Array.prototype.push;\nconst IntlDateTimeFormat = globalThis.Intl.DateTimeFormat;\nconst MathMin = Math.min;\nconst MathMax = Math.max;\nconst MathAbs = Math.abs;\nconst MathFloor = Math.floor;\nconst MathSign = Math.sign;\nconst MathTrunc = Math.trunc;\nconst NumberIsNaN = Number.isNaN;\nconst NumberIsFinite = Number.isFinite;\nconst NumberCtor = Number;\nconst StringCtor = String;\nconst NumberMaxSafeInteger = Number.MAX_SAFE_INTEGER;\nconst ObjectAssign = Object.assign;\nconst ObjectCreate = Object.create;\nconst ObjectDefineProperty = Object.defineProperty;\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst ObjectIs = Object.is;\nconst ReflectApply = Reflect.apply;\nimport { DEBUG } from './debug';\nimport JSBI from 'jsbi';\nimport { GetIntrinsic } from './intrinsicclass';\nimport { CreateSlots, GetSlot, HasSlot, SetSlot, EPOCHNANOSECONDS, TIMEZONE_ID, CALENDAR_ID, INSTANT, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, DATE_BRAND, YEAR_MONTH_BRAND, MONTH_DAY_BRAND, TIME_ZONE, CALENDAR, YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS } from './slots';\nexport const ZERO = JSBI.BigInt(0);\nconst ONE = JSBI.BigInt(1);\nconst SIXTY = JSBI.BigInt(60);\nexport const THOUSAND = JSBI.BigInt(1e3);\nexport const MILLION = JSBI.BigInt(1e6);\nexport const BILLION = JSBI.BigInt(1e9);\nconst NEGATIVE_ONE = JSBI.BigInt(-1);\nconst DAY_SECONDS = 86400;\nconst DAY_NANOS = JSBI.multiply(JSBI.BigInt(DAY_SECONDS), BILLION);\nconst NS_MIN = JSBI.multiply(JSBI.BigInt(-86400), JSBI.BigInt(1e17));\nconst NS_MAX = JSBI.multiply(JSBI.BigInt(86400), JSBI.BigInt(1e17));\nconst YEAR_MIN = -271821;\nconst YEAR_MAX = 275760;\nconst BEFORE_FIRST_OFFSET_TRANSITION = JSBI.multiply(JSBI.BigInt(-388152), JSBI.BigInt(1e13)); // 1847-01-01T00:00:00Z\nconst ABOUT_TEN_YEARS_NANOS = JSBI.multiply(DAY_NANOS, JSBI.BigInt(366 * 10));\nconst ABOUT_ONE_YEAR_NANOS = JSBI.multiply(DAY_NANOS, JSBI.BigInt(366 * 1));\nconst TWO_WEEKS_NANOS = JSBI.multiply(DAY_NANOS, JSBI.BigInt(2 * 7));\nconst BUILTIN_CALENDAR_IDS = [\n    'iso8601',\n    'hebrew',\n    'islamic',\n    'islamic-umalqura',\n    'islamic-tbla',\n    'islamic-civil',\n    'islamic-rgsa',\n    'islamicc',\n    'persian',\n    'ethiopic',\n    'ethioaa',\n    'coptic',\n    'chinese',\n    'dangi',\n    'roc',\n    'indian',\n    'buddhist',\n    'japanese',\n    'gregory'\n];\nfunction IsInteger(value) {\n    if (typeof value !== 'number' || !NumberIsFinite(value))\n        return false;\n    const abs = MathAbs(value);\n    return MathFloor(abs) === abs;\n}\nexport function IsObject(value) {\n    return (typeof value === 'object' && value !== null) || typeof value === 'function';\n}\nexport function ToNumber(value) {\n    if (typeof value === 'bigint')\n        throw new TypeError('Cannot convert BigInt to number');\n    return NumberCtor(value);\n}\nfunction ToInteger(value) {\n    const num = ToNumber(value);\n    if (NumberIsNaN(num))\n        return 0;\n    const integer = MathTrunc(num);\n    if (num === 0)\n        return 0;\n    return integer;\n}\nexport function ToString(value) {\n    if (typeof value === 'symbol') {\n        throw new TypeError('Cannot convert a Symbol value to a String');\n    }\n    return StringCtor(value);\n}\nexport function ToIntegerThrowOnInfinity(value) {\n    const integer = ToInteger(value);\n    if (!NumberIsFinite(integer)) {\n        throw new RangeError('infinity is out of range');\n    }\n    return integer;\n}\nfunction ToPositiveInteger(valueParam, property) {\n    const value = ToInteger(valueParam);\n    if (!NumberIsFinite(value)) {\n        throw new RangeError('infinity is out of range');\n    }\n    if (value < 1) {\n        if (property !== undefined) {\n            throw new RangeError(`property '${property}' cannot be a a number less than one`);\n        }\n        throw new RangeError('Cannot convert a number less than one to a positive integer');\n    }\n    return value;\n}\nexport function ToIntegerWithoutRounding(valueParam) {\n    const value = ToNumber(valueParam);\n    if (NumberIsNaN(value))\n        return 0;\n    if (!NumberIsFinite(value)) {\n        throw new RangeError('infinity is out of range');\n    }\n    if (!IsInteger(value)) {\n        throw new RangeError(`unsupported fractional value ${value}`);\n    }\n    return ToInteger(value); // ℝ(value) in spec text; converts -0 to 0\n}\nfunction divmod(x, y) {\n    const quotient = JSBI.divide(x, y);\n    const remainder = JSBI.remainder(x, y);\n    return { quotient, remainder };\n}\nfunction abs(x) {\n    if (JSBI.lessThan(x, ZERO))\n        return JSBI.multiply(x, NEGATIVE_ONE);\n    return x;\n}\nexport function ArrayPush(arr, ...newItem) {\n    ArrayPrototypePush.apply(arr, newItem);\n    return arr;\n}\nconst BUILTIN_CASTS = new Map([\n    ['year', ToIntegerThrowOnInfinity],\n    ['month', ToPositiveInteger],\n    ['monthCode', ToString],\n    ['day', ToPositiveInteger],\n    ['hour', ToIntegerThrowOnInfinity],\n    ['minute', ToIntegerThrowOnInfinity],\n    ['second', ToIntegerThrowOnInfinity],\n    ['millisecond', ToIntegerThrowOnInfinity],\n    ['microsecond', ToIntegerThrowOnInfinity],\n    ['nanosecond', ToIntegerThrowOnInfinity],\n    ['years', ToIntegerWithoutRounding],\n    ['months', ToIntegerWithoutRounding],\n    ['weeks', ToIntegerWithoutRounding],\n    ['days', ToIntegerWithoutRounding],\n    ['hours', ToIntegerWithoutRounding],\n    ['minutes', ToIntegerWithoutRounding],\n    ['seconds', ToIntegerWithoutRounding],\n    ['milliseconds', ToIntegerWithoutRounding],\n    ['microseconds', ToIntegerWithoutRounding],\n    ['nanoseconds', ToIntegerWithoutRounding],\n    ['era', ToString],\n    ['eraYear', ToInteger],\n    ['offset', ToString]\n]);\nconst BUILTIN_DEFAULTS = new Map([\n    ['hour', 0],\n    ['minute', 0],\n    ['second', 0],\n    ['millisecond', 0],\n    ['microsecond', 0],\n    ['nanosecond', 0]\n]);\n// each item is [plural, singular, category]\nconst SINGULAR_PLURAL_UNITS = [\n    ['years', 'year', 'date'],\n    ['months', 'month', 'date'],\n    ['weeks', 'week', 'date'],\n    ['days', 'day', 'date'],\n    ['hours', 'hour', 'time'],\n    ['minutes', 'minute', 'time'],\n    ['seconds', 'second', 'time'],\n    ['milliseconds', 'millisecond', 'time'],\n    ['microseconds', 'microsecond', 'time'],\n    ['nanoseconds', 'nanosecond', 'time']\n];\nconst SINGULAR_FOR = new Map(SINGULAR_PLURAL_UNITS.map((e) => [e[0], e[1]]));\nconst PLURAL_FOR = new Map(SINGULAR_PLURAL_UNITS.map(([p, s]) => [s, p]));\nconst UNITS_DESCENDING = SINGULAR_PLURAL_UNITS.map(([, s]) => s);\nconst DURATION_FIELDS = Array.from(SINGULAR_FOR.keys()).sort();\nimport * as PARSE from './regex';\nconst IntlDateTimeFormatEnUsCache = new Map();\nfunction getIntlDateTimeFormatEnUsForTimeZone(timeZoneIdentifier) {\n    let instance = IntlDateTimeFormatEnUsCache.get(timeZoneIdentifier);\n    if (instance === undefined) {\n        instance = new IntlDateTimeFormat('en-us', {\n            timeZone: StringCtor(timeZoneIdentifier),\n            hour12: false,\n            era: 'short',\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n        IntlDateTimeFormatEnUsCache.set(timeZoneIdentifier, instance);\n    }\n    return instance;\n}\nexport function IsTemporalInstant(item) {\n    return HasSlot(item, EPOCHNANOSECONDS) && !HasSlot(item, TIME_ZONE, CALENDAR);\n}\nexport function IsTemporalTimeZone(item) {\n    return HasSlot(item, TIMEZONE_ID);\n}\nexport function IsTemporalCalendar(item) {\n    return HasSlot(item, CALENDAR_ID);\n}\nexport function IsTemporalDuration(item) {\n    return HasSlot(item, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS);\n}\nexport function IsTemporalDate(item) {\n    return HasSlot(item, DATE_BRAND);\n}\nexport function IsTemporalTime(item) {\n    return (HasSlot(item, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND) &&\n        !HasSlot(item, ISO_YEAR, ISO_MONTH, ISO_DAY));\n}\nexport function IsTemporalDateTime(item) {\n    return HasSlot(item, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND);\n}\nexport function IsTemporalYearMonth(item) {\n    return HasSlot(item, YEAR_MONTH_BRAND);\n}\nexport function IsTemporalMonthDay(item) {\n    return HasSlot(item, MONTH_DAY_BRAND);\n}\nexport function IsTemporalZonedDateTime(item) {\n    return HasSlot(item, EPOCHNANOSECONDS, TIME_ZONE, CALENDAR);\n}\nexport function RejectObjectWithCalendarOrTimeZone(item) {\n    if (HasSlot(item, CALENDAR) || HasSlot(item, TIME_ZONE)) {\n        throw new TypeError('with() does not support a calendar or timeZone property');\n    }\n    if (item.calendar !== undefined) {\n        throw new TypeError('with() does not support a calendar property');\n    }\n    if (item.timeZone !== undefined) {\n        throw new TypeError('with() does not support a timeZone property');\n    }\n}\nfunction ParseTemporalTimeZone(stringIdent) {\n    let { ianaName, offset, z } = ParseTemporalTimeZoneString(stringIdent);\n    if (ianaName)\n        return ianaName;\n    if (z)\n        return 'UTC';\n    return offset; // if !ianaName && !z then offset must be present\n}\nfunction FormatCalendarAnnotation(id, showCalendar) {\n    if (showCalendar === 'never')\n        return '';\n    if (showCalendar === 'auto' && id === 'iso8601')\n        return '';\n    return `[u-ca=${id}]`;\n}\nfunction ParseISODateTime(isoString) {\n    // ZDT is the superset of fields for every other Temporal type\n    const match = PARSE.zoneddatetime.exec(isoString);\n    if (!match)\n        throw new RangeError(`invalid ISO 8601 string: ${isoString}`);\n    let yearString = match[1];\n    if (yearString[0] === '\\u2212')\n        yearString = `-${yearString.slice(1)}`;\n    if (yearString === '-000000')\n        throw new RangeError(`invalid ISO 8601 string: ${isoString}`);\n    const year = ToInteger(yearString);\n    const month = ToInteger(match[2] || match[4]);\n    const day = ToInteger(match[3] || match[5]);\n    const hour = ToInteger(match[6]);\n    const hasTime = match[6] !== undefined;\n    const minute = ToInteger(match[7] || match[10]);\n    let second = ToInteger(match[8] || match[11]);\n    if (second === 60)\n        second = 59;\n    const fraction = (match[9] || match[12]) + '000000000';\n    const millisecond = ToInteger(fraction.slice(0, 3));\n    const microsecond = ToInteger(fraction.slice(3, 6));\n    const nanosecond = ToInteger(fraction.slice(6, 9));\n    let offset;\n    let z = false;\n    if (match[13]) {\n        offset = undefined;\n        z = true;\n    }\n    else if (match[14] && match[15]) {\n        const offsetSign = match[14] === '-' || match[14] === '\\u2212' ? '-' : '+';\n        const offsetHours = match[15] || '00';\n        const offsetMinutes = match[16] || '00';\n        const offsetSeconds = match[17] || '00';\n        let offsetFraction = match[18] || '0';\n        offset = `${offsetSign}${offsetHours}:${offsetMinutes}`;\n        if (+offsetFraction) {\n            while (offsetFraction.endsWith('0'))\n                offsetFraction = offsetFraction.slice(0, -1);\n            offset += `:${offsetSeconds}.${offsetFraction}`;\n        }\n        else if (+offsetSeconds) {\n            offset += `:${offsetSeconds}`;\n        }\n        if (offset === '-00:00')\n            offset = '+00:00';\n    }\n    let ianaName = match[19];\n    if (ianaName) {\n        try {\n            // Canonicalize name if it is an IANA link name or is capitalized wrong\n            ianaName = GetCanonicalTimeZoneIdentifier(ianaName).toString();\n        }\n        catch {\n            // Not an IANA name, may be a custom ID, pass through unchanged\n        }\n    }\n    const calendar = match[20];\n    RejectDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    return {\n        year,\n        month,\n        day,\n        hasTime,\n        hour,\n        minute,\n        second,\n        millisecond,\n        microsecond,\n        nanosecond,\n        ianaName,\n        offset,\n        z,\n        calendar\n    };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalInstantString(isoString) {\n    const result = ParseISODateTime(isoString);\n    if (!result.z && !result.offset)\n        throw new RangeError('Temporal.Instant requires a time zone offset');\n    return result;\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalZonedDateTimeString(isoString) {\n    const result = ParseISODateTime(isoString);\n    if (!result.ianaName)\n        throw new RangeError('Temporal.ZonedDateTime requires a time zone ID in brackets');\n    return result;\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalDateTimeString(isoString) {\n    return ParseISODateTime(isoString);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalDateString(isoString) {\n    return ParseISODateTime(isoString);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalTimeString(isoString) {\n    const match = PARSE.time.exec(isoString);\n    let hour, minute, second, millisecond, microsecond, nanosecond, calendar;\n    if (match) {\n        hour = ToInteger(match[1]);\n        minute = ToInteger(match[2] || match[5]);\n        second = ToInteger(match[3] || match[6]);\n        if (second === 60)\n            second = 59;\n        const fraction = (match[4] || match[7]) + '000000000';\n        millisecond = ToInteger(fraction.slice(0, 3));\n        microsecond = ToInteger(fraction.slice(3, 6));\n        nanosecond = ToInteger(fraction.slice(6, 9));\n        calendar = match[15];\n    }\n    else {\n        let z, hasTime;\n        ({ hasTime, hour, minute, second, millisecond, microsecond, nanosecond, calendar, z } =\n            ParseISODateTime(isoString));\n        if (!hasTime)\n            throw new RangeError(`time is missing in string: ${isoString}`);\n        if (z)\n            throw new RangeError('Z designator not supported for PlainTime');\n    }\n    // if it's a date-time string, OK\n    if (/[tT ][0-9][0-9]/.test(isoString)) {\n        return { hour, minute, second, millisecond, microsecond, nanosecond, calendar };\n    }\n    // slow but non-grammar-dependent way to ensure that time-only strings that\n    // are also valid PlainMonthDay and PlainYearMonth throw. corresponds to\n    // assertion in spec text\n    try {\n        const { month, day } = ParseTemporalMonthDayString(isoString);\n        RejectISODate(1972, month, day);\n    }\n    catch {\n        try {\n            const { year, month } = ParseTemporalYearMonthString(isoString);\n            RejectISODate(year, month, 1);\n        }\n        catch {\n            return { hour, minute, second, millisecond, microsecond, nanosecond, calendar };\n        }\n    }\n    throw new RangeError(`invalid ISO 8601 time-only string ${isoString}; may need a T prefix`);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalYearMonthString(isoString) {\n    const match = PARSE.yearmonth.exec(isoString);\n    let year, month, calendar, referenceISODay;\n    if (match) {\n        let yearString = match[1];\n        if (yearString[0] === '\\u2212')\n            yearString = `-${yearString.slice(1)}`;\n        if (yearString === '-000000')\n            throw new RangeError(`invalid ISO 8601 string: ${isoString}`);\n        year = ToInteger(yearString);\n        month = ToInteger(match[2]);\n        calendar = match[3];\n    }\n    else {\n        let z;\n        ({ year, month, calendar, day: referenceISODay, z } = ParseISODateTime(isoString));\n        if (z)\n            throw new RangeError('Z designator not supported for PlainYearMonth');\n    }\n    return { year, month, calendar, referenceISODay };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalMonthDayString(isoString) {\n    const match = PARSE.monthday.exec(isoString);\n    let month, day, calendar, referenceISOYear;\n    if (match) {\n        month = ToInteger(match[1]);\n        day = ToInteger(match[2]);\n    }\n    else {\n        let z;\n        ({ month, day, calendar, year: referenceISOYear, z } = ParseISODateTime(isoString));\n        if (z)\n            throw new RangeError('Z designator not supported for PlainMonthDay');\n    }\n    return { month, day, calendar, referenceISOYear };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalTimeZoneString(stringIdent) {\n    try {\n        let canonicalIdent = GetCanonicalTimeZoneIdentifier(stringIdent);\n        if (canonicalIdent)\n            return { ianaName: canonicalIdent.toString() };\n    }\n    catch {\n        // fall through\n    }\n    try {\n        // Try parsing ISO string instead\n        const result = ParseISODateTime(stringIdent);\n        if (result.z || result.offset || result.ianaName) {\n            return result;\n        }\n    }\n    catch {\n        // fall through\n    }\n    throw new RangeError(`Invalid time zone: ${stringIdent}`);\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalDurationString(isoString) {\n    const match = PARSE.duration.exec(isoString);\n    if (!match)\n        throw new RangeError(`invalid duration: ${isoString}`);\n    if (match.slice(2).every((element) => element === undefined)) {\n        throw new RangeError(`invalid duration: ${isoString}`);\n    }\n    const sign = match[1] === '-' || match[1] === '\\u2212' ? -1 : 1;\n    const years = ToInteger(match[2]) * sign;\n    const months = ToInteger(match[3]) * sign;\n    const weeks = ToInteger(match[4]) * sign;\n    const days = ToInteger(match[5]) * sign;\n    const hours = ToInteger(match[6]) * sign;\n    let fHours = match[7];\n    let minutes = ToInteger(match[8]) * sign;\n    let fMinutes = match[9];\n    let seconds = ToInteger(match[10]) * sign;\n    const fSeconds = match[11] + '000000000';\n    let milliseconds = ToInteger(fSeconds.slice(0, 3)) * sign;\n    let microseconds = ToInteger(fSeconds.slice(3, 6)) * sign;\n    let nanoseconds = ToInteger(fSeconds.slice(6, 9)) * sign;\n    fHours = fHours ? (sign * ToInteger(fHours)) / 10 ** fHours.length : 0;\n    fMinutes = fMinutes ? (sign * ToInteger(fMinutes)) / 10 ** fMinutes.length : 0;\n    ({ minutes, seconds, milliseconds, microseconds, nanoseconds } = DurationHandleFractions(fHours, minutes, fMinutes, seconds, milliseconds, microseconds, nanoseconds));\n    RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\n// ts-prune-ignore-next TODO: remove if test/validStrings is converted to TS.\nexport function ParseTemporalInstant(isoString) {\n    let { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offset, z } = ParseTemporalInstantString(isoString);\n    if (!z && !offset)\n        throw new RangeError('Temporal.Instant requires a time zone offset');\n    // At least one of z or offset is defined, but TS doesn't seem to understand\n    // that we only use offset if z is not defined (and thus offset must be defined).\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const offsetNs = z ? 0 : ParseTimeZoneOffsetString(offset);\n    ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond - offsetNs));\n    const epochNs = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (epochNs === null)\n        throw new RangeError('DateTime outside of supported range');\n    return epochNs;\n}\nexport function RegulateISODate(yearParam, monthParam, dayParam, overflow) {\n    let year = yearParam;\n    let month = monthParam;\n    let day = dayParam;\n    switch (overflow) {\n        case 'reject':\n            RejectISODate(year, month, day);\n            break;\n        case 'constrain':\n            ({ year, month, day } = ConstrainISODate(year, month, day));\n            break;\n    }\n    return { year, month, day };\n}\nexport function RegulateTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, overflow) {\n    let hour = hourParam;\n    let minute = minuteParam;\n    let second = secondParam;\n    let millisecond = millisecondParam;\n    let microsecond = microsecondParam;\n    let nanosecond = nanosecondParam;\n    switch (overflow) {\n        case 'reject':\n            RejectTime(hour, minute, second, millisecond, microsecond, nanosecond);\n            break;\n        case 'constrain':\n            ({ hour, minute, second, millisecond, microsecond, nanosecond } = ConstrainTime(hour, minute, second, millisecond, microsecond, nanosecond));\n            break;\n    }\n    return { hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function RegulateISOYearMonth(yearParam, monthParam, overflow) {\n    let year = yearParam;\n    let month = monthParam;\n    const referenceISODay = 1;\n    switch (overflow) {\n        case 'reject':\n            RejectISODate(year, month, referenceISODay);\n            break;\n        case 'constrain':\n            ({ year, month } = ConstrainISODate(year, month));\n            break;\n    }\n    return { year, month };\n}\nfunction DurationHandleFractions(fHoursParam, minutesParam, fMinutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam) {\n    let fHours = fHoursParam;\n    let minutes = minutesParam;\n    let fMinutes = fMinutesParam;\n    let seconds = secondsParam;\n    let milliseconds = millisecondsParam;\n    let microseconds = microsecondsParam;\n    let nanoseconds = nanosecondsParam;\n    if (fHours !== 0) {\n        [minutes, fMinutes, seconds, milliseconds, microseconds, nanoseconds].forEach((val) => {\n            if (val !== 0)\n                throw new RangeError('only the smallest unit can be fractional');\n        });\n        const mins = fHours * 60;\n        minutes = MathTrunc(mins);\n        fMinutes = mins % 1;\n    }\n    if (fMinutes !== 0) {\n        [seconds, milliseconds, microseconds, nanoseconds].forEach((val) => {\n            if (val !== 0)\n                throw new RangeError('only the smallest unit can be fractional');\n        });\n        const secs = fMinutes * 60;\n        seconds = MathTrunc(secs);\n        const fSeconds = secs % 1;\n        if (fSeconds !== 0) {\n            const mils = fSeconds * 1000;\n            milliseconds = MathTrunc(mils);\n            const fMilliseconds = mils % 1;\n            if (fMilliseconds !== 0) {\n                const mics = fMilliseconds * 1000;\n                microseconds = MathTrunc(mics);\n                const fMicroseconds = mics % 1;\n                if (fMicroseconds !== 0) {\n                    const nans = fMicroseconds * 1000;\n                    nanoseconds = MathTrunc(nans);\n                }\n            }\n        }\n    }\n    return { minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction ToTemporalDurationRecord(item) {\n    if (!IsObject(item)) {\n        return ParseTemporalDurationString(ToString(item));\n    }\n    if (IsTemporalDuration(item)) {\n        return {\n            years: GetSlot(item, YEARS),\n            months: GetSlot(item, MONTHS),\n            weeks: GetSlot(item, WEEKS),\n            days: GetSlot(item, DAYS),\n            hours: GetSlot(item, HOURS),\n            minutes: GetSlot(item, MINUTES),\n            seconds: GetSlot(item, SECONDS),\n            milliseconds: GetSlot(item, MILLISECONDS),\n            microseconds: GetSlot(item, MICROSECONDS),\n            nanoseconds: GetSlot(item, NANOSECONDS)\n        };\n    }\n    const result = {\n        years: 0,\n        months: 0,\n        weeks: 0,\n        days: 0,\n        hours: 0,\n        minutes: 0,\n        seconds: 0,\n        milliseconds: 0,\n        microseconds: 0,\n        nanoseconds: 0\n    };\n    let partial = ToTemporalPartialDurationRecord(item);\n    for (const property of DURATION_FIELDS) {\n        const value = partial[property];\n        if (value !== undefined) {\n            result[property] = value;\n        }\n    }\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = result;\n    RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction ToTemporalPartialDurationRecord(temporalDurationLike) {\n    if (!IsObject(temporalDurationLike)) {\n        throw new TypeError('invalid duration-like');\n    }\n    const result = {\n        years: undefined,\n        months: undefined,\n        weeks: undefined,\n        days: undefined,\n        hours: undefined,\n        minutes: undefined,\n        seconds: undefined,\n        milliseconds: undefined,\n        microseconds: undefined,\n        nanoseconds: undefined\n    };\n    let any = false;\n    for (const property of DURATION_FIELDS) {\n        const value = temporalDurationLike[property];\n        if (value !== undefined) {\n            any = true;\n            result[property] = ToIntegerWithoutRounding(value);\n        }\n    }\n    if (!any) {\n        throw new TypeError('invalid duration-like');\n    }\n    return result;\n}\nfunction ToLimitedTemporalDuration(item, disallowedProperties) {\n    let record = ToTemporalDurationRecord(item);\n    for (const property of disallowedProperties) {\n        if (record[property] !== 0) {\n            throw new RangeError(`Duration field ${property} not supported by Temporal.Instant. Try Temporal.ZonedDateTime instead.`);\n        }\n    }\n    return record;\n}\nexport function ToTemporalOverflow(options) {\n    if (options === undefined)\n        return 'constrain';\n    return GetOption(options, 'overflow', ['constrain', 'reject'], 'constrain');\n}\nexport function ToTemporalDisambiguation(options) {\n    if (options === undefined)\n        return 'compatible';\n    return GetOption(options, 'disambiguation', ['compatible', 'earlier', 'later', 'reject'], 'compatible');\n}\nexport function ToTemporalRoundingMode(options, fallback) {\n    return GetOption(options, 'roundingMode', ['ceil', 'floor', 'trunc', 'halfExpand'], fallback);\n}\nfunction NegateTemporalRoundingMode(roundingMode) {\n    switch (roundingMode) {\n        case 'ceil':\n            return 'floor';\n        case 'floor':\n            return 'ceil';\n        default:\n            return roundingMode;\n    }\n}\nexport function ToTemporalOffset(options, fallback) {\n    if (options === undefined)\n        return fallback;\n    return GetOption(options, 'offset', ['prefer', 'use', 'ignore', 'reject'], fallback);\n}\nexport function ToShowCalendarOption(options) {\n    return GetOption(options, 'calendarName', ['auto', 'always', 'never'], 'auto');\n}\nexport function ToShowTimeZoneNameOption(options) {\n    return GetOption(options, 'timeZoneName', ['auto', 'never'], 'auto');\n}\nexport function ToShowOffsetOption(options) {\n    return GetOption(options, 'offset', ['auto', 'never'], 'auto');\n}\nexport function ToTemporalRoundingIncrement(options, dividend, inclusive) {\n    let maximum = Infinity;\n    if (dividend !== undefined)\n        maximum = dividend;\n    if (!inclusive && dividend !== undefined)\n        maximum = dividend > 1 ? dividend - 1 : 1;\n    const increment = GetNumberOption(options, 'roundingIncrement', 1, maximum, 1);\n    if (dividend !== undefined && dividend % increment !== 0) {\n        throw new RangeError(`Rounding increment must divide evenly into ${dividend}`);\n    }\n    return increment;\n}\nexport function ToTemporalDateTimeRoundingIncrement(options, smallestUnit) {\n    const maximumIncrements = {\n        year: undefined,\n        month: undefined,\n        week: undefined,\n        day: undefined,\n        hour: 24,\n        minute: 60,\n        second: 60,\n        millisecond: 1000,\n        microsecond: 1000,\n        nanosecond: 1000\n    };\n    return ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], false);\n}\nexport function ToSecondsStringPrecision(options) {\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'time', undefined);\n    if (smallestUnit === 'hour') {\n        const ALLOWED_UNITS = SINGULAR_PLURAL_UNITS.reduce((allowed, [p, s, c]) => {\n            // Weirdly, local type inference seems to understand the types of s and p, but tsc still complains.\n            // Maybe this is fixed in later TS versions?\n            if (c === 'time' && s !== 'hour') {\n                allowed.push(s, p);\n            }\n            return allowed;\n        }, []);\n        throw new RangeError(`smallestUnit must be one of ${ALLOWED_UNITS.join(', ')}, not ${smallestUnit}`);\n    }\n    switch (smallestUnit) {\n        case 'minute':\n            return { precision: 'minute', unit: 'minute', increment: 1 };\n        case 'second':\n            return { precision: 0, unit: 'second', increment: 1 };\n        case 'millisecond':\n            return { precision: 3, unit: 'millisecond', increment: 1 };\n        case 'microsecond':\n            return { precision: 6, unit: 'microsecond', increment: 1 };\n        case 'nanosecond':\n            return { precision: 9, unit: 'nanosecond', increment: 1 };\n        default: // fall through if option not given\n    }\n    let digits = options.fractionalSecondDigits;\n    if (digits === undefined)\n        digits = 'auto';\n    if (typeof digits !== 'number') {\n        const stringDigits = ToString(digits);\n        if (stringDigits === 'auto')\n            return { precision: 'auto', unit: 'nanosecond', increment: 1 };\n        throw new RangeError(`fractionalSecondDigits must be 'auto' or 0 through 9, not ${stringDigits}`);\n    }\n    if (NumberIsNaN(digits) || digits < 0 || digits > 9) {\n        throw new RangeError(`fractionalSecondDigits must be 'auto' or 0 through 9, not ${digits}`);\n    }\n    const precision = MathFloor(digits);\n    switch (precision) {\n        case 0:\n            return { precision, unit: 'second', increment: 1 };\n        case 1:\n        case 2:\n        case 3:\n            return { precision, unit: 'millisecond', increment: 10 ** (3 - precision) };\n        case 4:\n        case 5:\n        case 6:\n            return { precision, unit: 'microsecond', increment: 10 ** (6 - precision) };\n        case 7:\n        case 8:\n        case 9:\n            return { precision, unit: 'nanosecond', increment: 10 ** (9 - precision) };\n        default:\n            throw new RangeError(`fractionalSecondDigits must be 'auto' or 0 through 9, not ${digits}`);\n    }\n}\nexport const REQUIRED = Symbol('~required~');\n// This signature of the function is NOT used in type-checking, so restricting\n// the default value via generic binding like the other overloads isn't\n// necessary.\nexport function GetTemporalUnit(options, key, unitGroup, requiredOrDefault, extraValues = []) {\n    const allowedSingular = [];\n    for (const [, singular, category] of SINGULAR_PLURAL_UNITS) {\n        if (unitGroup === 'datetime' || unitGroup === category) {\n            allowedSingular.push(singular);\n        }\n    }\n    allowedSingular.push(...extraValues);\n    let defaultVal = requiredOrDefault;\n    if (defaultVal === REQUIRED) {\n        defaultVal = undefined;\n    }\n    else if (defaultVal !== undefined) {\n        allowedSingular.push(defaultVal);\n    }\n    const allowedValues = [\n        ...allowedSingular\n    ];\n    for (const singular of allowedSingular) {\n        const plural = PLURAL_FOR.get(singular);\n        if (plural !== undefined)\n            allowedValues.push(plural);\n    }\n    let retval = GetOption(options, key, allowedValues, defaultVal);\n    if (retval === undefined && requiredOrDefault === REQUIRED) {\n        throw new RangeError(`${key} is required`);\n    }\n    // Coerce any plural units into their singular form\n    if (SINGULAR_FOR.has(retval)) {\n        // We just has-checked this, but tsc doesn't understand that.\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return SINGULAR_FOR.get(retval);\n    }\n    return retval;\n}\nexport function ToRelativeTemporalObject(options) {\n    const relativeTo = options.relativeTo;\n    if (relativeTo === undefined)\n        return relativeTo;\n    let offsetBehaviour = 'option';\n    let matchMinutes = false;\n    let year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, timeZone, offset;\n    if (IsObject(relativeTo)) {\n        if (IsTemporalZonedDateTime(relativeTo) || IsTemporalDate(relativeTo))\n            return relativeTo;\n        if (IsTemporalDateTime(relativeTo))\n            return TemporalDateTimeToDate(relativeTo);\n        calendar = GetTemporalCalendarWithISODefault(relativeTo);\n        const fieldNames = CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fields = PrepareTemporalFields(relativeTo, fieldNames, []);\n        const dateOptions = ObjectCreate(null);\n        dateOptions.overflow = 'constrain';\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = InterpretTemporalDateTimeFields(calendar, fields, dateOptions));\n        // The `offset` and `timeZone` properties only exist on ZonedDateTime (or\n        // ZonedDateTimeLike-property bags). The assertions below are used to avoid\n        // TS errors while not diverging runtime code from proposal-temporal.\n        offset = relativeTo.offset;\n        if (offset === undefined)\n            offsetBehaviour = 'wall';\n        timeZone = relativeTo.timeZone;\n    }\n    else {\n        let ianaName, z;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, ianaName, offset, z } =\n            ParseISODateTime(ToString(relativeTo)));\n        if (ianaName)\n            timeZone = ianaName;\n        if (z) {\n            offsetBehaviour = 'exact';\n        }\n        else if (!offset) {\n            offsetBehaviour = 'wall';\n        }\n        if (!calendar)\n            calendar = GetISO8601Calendar();\n        calendar = ToTemporalCalendar(calendar);\n        matchMinutes = true;\n    }\n    if (timeZone !== undefined) {\n        timeZone = ToTemporalTimeZone(timeZone);\n        let offsetNs = 0;\n        if (offsetBehaviour === 'option')\n            offsetNs = ParseTimeZoneOffsetString(ToString(offset));\n        const epochNanoseconds = InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offsetBehaviour, offsetNs, timeZone, 'compatible', 'reject', matchMinutes);\n        return CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar);\n    }\n    return CreateTemporalDate(year, month, day, calendar);\n}\nexport function DefaultTemporalLargestUnit(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds) {\n    for (const [prop, v] of [\n        ['years', years],\n        ['months', months],\n        ['weeks', weeks],\n        ['days', days],\n        ['hours', hours],\n        ['minutes', minutes],\n        ['seconds', seconds],\n        ['milliseconds', milliseconds],\n        ['microseconds', microseconds],\n        ['nanoseconds', nanoseconds]\n    ]) {\n        if (v !== 0) {\n            // All the above keys are definitely in SINGULAR_FOR\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            return SINGULAR_FOR.get(prop);\n        }\n    }\n    return 'nanosecond';\n}\nexport function LargerOfTwoTemporalUnits(unit1, unit2) {\n    if (UNITS_DESCENDING.indexOf(unit1) > UNITS_DESCENDING.indexOf(unit2))\n        return unit2;\n    return unit1;\n}\nfunction MergeLargestUnitOption(optionsParam, largestUnit) {\n    let options = optionsParam;\n    if (options === undefined)\n        options = ObjectCreate(null);\n    return ObjectAssign(ObjectCreate(null), options, { largestUnit });\n}\nexport function PrepareTemporalFields(bag, fields, requiredFields, { emptySourceErrorMessage } = { emptySourceErrorMessage: 'no supported properties found' }) {\n    const result = ObjectCreate(null);\n    let any = false;\n    for (const property of fields) {\n        let value = bag[property];\n        if (value !== undefined) {\n            any = true;\n            if (BUILTIN_CASTS.has(property)) {\n                // We just has-checked this map access, so there will definitely be a\n                // value.\n                // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                value = BUILTIN_CASTS.get(property)(value);\n            }\n            result[property] = value;\n        }\n        else if (requiredFields !== 'partial') {\n            // TODO: using .call in this way is not correctly type-checked by tsc.\n            // We might need a type-safe Call wrapper?\n            if (ArrayIncludes.call(requiredFields, property)) {\n                throw new TypeError(`required property '${property}' missing or undefined`);\n            }\n            value = BUILTIN_DEFAULTS.get(property);\n            result[property] = value;\n        }\n    }\n    if (requiredFields === 'partial' && !any) {\n        throw new TypeError(emptySourceErrorMessage);\n    }\n    if ((result.era === undefined) !== (result.eraYear === undefined)) {\n        throw new RangeError(\"properties 'era' and 'eraYear' must be provided together\");\n    }\n    return result;\n}\nexport function ToTemporalTimeRecord(bag, completeness = 'complete') {\n    // NOTE: Field order here is important.\n    const fields = ['hour', 'microsecond', 'millisecond', 'minute', 'nanosecond', 'second'];\n    const partial = PrepareTemporalFields(bag, fields, 'partial', { emptySourceErrorMessage: 'invalid time-like' });\n    const result = {};\n    for (const field of fields) {\n        const valueDesc = ObjectGetOwnPropertyDescriptor(partial, field);\n        if (valueDesc !== undefined) {\n            result[field] = valueDesc.value;\n        }\n        else if (completeness === 'complete') {\n            result[field] = 0;\n        }\n    }\n    return result;\n}\nexport function ToTemporalDate(itemParam, options) {\n    let item = itemParam;\n    if (IsObject(item)) {\n        if (IsTemporalDate(item))\n            return item;\n        if (IsTemporalZonedDateTime(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            item = BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(item, TIME_ZONE), GetSlot(item, INSTANT), GetSlot(item, CALENDAR));\n        }\n        if (IsTemporalDateTime(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            return CreateTemporalDate(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, CALENDAR));\n        }\n        const calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        return CalendarDateFromFields(calendar, fields, options);\n    }\n    ToTemporalOverflow(options); // validate and ignore\n    const { year, month, day, calendar, z } = ParseTemporalDateString(ToString(item));\n    if (z)\n        throw new RangeError('Z designator not supported for PlainDate');\n    const TemporalPlainDate = GetIntrinsic('%Temporal.PlainDate%');\n    return new TemporalPlainDate(year, month, day, calendar); // include validation\n}\nexport function InterpretTemporalDateTimeFields(calendar, fields, options) {\n    let { hour, minute, second, millisecond, microsecond, nanosecond } = ToTemporalTimeRecord(fields);\n    const overflow = ToTemporalOverflow(options);\n    const date = CalendarDateFromFields(calendar, fields, options);\n    const year = GetSlot(date, ISO_YEAR);\n    const month = GetSlot(date, ISO_MONTH);\n    const day = GetSlot(date, ISO_DAY);\n    ({ hour, minute, second, millisecond, microsecond, nanosecond } = RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, overflow));\n    return { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function ToTemporalDateTime(item, options) {\n    let year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar;\n    if (IsObject(item)) {\n        if (IsTemporalDateTime(item))\n            return item;\n        if (IsTemporalZonedDateTime(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            return BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(item, TIME_ZONE), GetSlot(item, INSTANT), GetSlot(item, CALENDAR));\n        }\n        if (IsTemporalDate(item)) {\n            ToTemporalOverflow(options); // validate and ignore\n            return CreateTemporalDateTime(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), 0, 0, 0, 0, 0, 0, GetSlot(item, CALENDAR));\n        }\n        calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = InterpretTemporalDateTimeFields(calendar, fields, options));\n    }\n    else {\n        ToTemporalOverflow(options); // validate and ignore\n        let z;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, z } =\n            ParseTemporalDateTimeString(ToString(item)));\n        if (z)\n            throw new RangeError('Z designator not supported for PlainDateTime');\n        RejectDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n        if (calendar === undefined)\n            calendar = GetISO8601Calendar();\n        calendar = ToTemporalCalendar(calendar);\n    }\n    return CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n}\nexport function ToTemporalDuration(item) {\n    if (IsTemporalDuration(item))\n        return item;\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(item);\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    return new TemporalDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n}\nexport function ToTemporalInstant(item) {\n    if (IsTemporalInstant(item))\n        return item;\n    if (IsTemporalZonedDateTime(item)) {\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        return new TemporalInstant(GetSlot(item, EPOCHNANOSECONDS));\n    }\n    const ns = ParseTemporalInstant(ToString(item));\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    return new TemporalInstant(ns);\n}\nexport function ToTemporalMonthDay(itemParam, options) {\n    let item = itemParam;\n    if (IsObject(item)) {\n        if (IsTemporalMonthDay(item))\n            return item;\n        let calendar, calendarAbsent;\n        if (HasSlot(item, CALENDAR)) {\n            calendar = GetSlot(item, CALENDAR);\n            calendarAbsent = false;\n        }\n        else {\n            let maybeStringCalendar = item.calendar;\n            calendarAbsent = maybeStringCalendar === undefined;\n            if (maybeStringCalendar === undefined)\n                maybeStringCalendar = GetISO8601Calendar();\n            calendar = ToTemporalCalendar(maybeStringCalendar);\n        }\n        // HasSlot above adjusts the type of 'item' to include\n        // TypesWithCalendarUnits, which causes type-inference failures below.\n        // This is probably indicative of problems with HasSlot's typing.\n        item = item;\n        const fieldNames = CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        // Callers who omit the calendar are not writing calendar-independent\n        // code. In that case, `monthCode`/`year` can be omitted; `month` and\n        // `day` are sufficient. Add a `year` to satisfy calendar validation.\n        if (calendarAbsent && fields.month !== undefined && fields.monthCode === undefined && fields.year === undefined) {\n            fields.year = 1972;\n        }\n        return CalendarMonthDayFromFields(calendar, fields, options);\n    }\n    ToTemporalOverflow(options); // validate and ignore\n    let { month, day, referenceISOYear, calendar: maybeStringCalendar } = ParseTemporalMonthDayString(ToString(item));\n    let calendar = maybeStringCalendar;\n    if (calendar === undefined)\n        calendar = GetISO8601Calendar();\n    calendar = ToTemporalCalendar(calendar);\n    if (referenceISOYear === undefined) {\n        RejectISODate(1972, month, day);\n        return CreateTemporalMonthDay(month, day, calendar);\n    }\n    const result = CreateTemporalMonthDay(month, day, calendar, referenceISOYear);\n    return CalendarMonthDayFromFields(calendar, result);\n}\nexport function ToTemporalTime(itemParam, overflow = 'constrain') {\n    let item = itemParam;\n    let hour, minute, second, millisecond, microsecond, nanosecond, calendar;\n    if (IsObject(item)) {\n        if (IsTemporalTime(item))\n            return item;\n        if (IsTemporalZonedDateTime(item)) {\n            item = BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(item, TIME_ZONE), GetSlot(item, INSTANT), GetSlot(item, CALENDAR));\n        }\n        if (IsTemporalDateTime(item)) {\n            const TemporalPlainTime = GetIntrinsic('%Temporal.PlainTime%');\n            return new TemporalPlainTime(GetSlot(item, ISO_HOUR), GetSlot(item, ISO_MINUTE), GetSlot(item, ISO_SECOND), GetSlot(item, ISO_MILLISECOND), GetSlot(item, ISO_MICROSECOND), GetSlot(item, ISO_NANOSECOND));\n        }\n        calendar = GetTemporalCalendarWithISODefault(item);\n        if (ToString(calendar) !== 'iso8601') {\n            throw new RangeError('PlainTime can only have iso8601 calendar');\n        }\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ToTemporalTimeRecord(item));\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, overflow));\n    }\n    else {\n        ({ hour, minute, second, millisecond, microsecond, nanosecond, calendar } = ParseTemporalTimeString(ToString(item)));\n        RejectTime(hour, minute, second, millisecond, microsecond, nanosecond);\n        if (calendar !== undefined && calendar !== 'iso8601') {\n            throw new RangeError('PlainTime can only have iso8601 calendar');\n        }\n    }\n    const TemporalPlainTime = GetIntrinsic('%Temporal.PlainTime%');\n    return new TemporalPlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n}\nexport function ToTemporalYearMonth(item, options) {\n    if (IsObject(item)) {\n        if (IsTemporalYearMonth(item))\n            return item;\n        const calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, ['month', 'monthCode', 'year']);\n        const fields = PrepareTemporalFields(item, fieldNames, []);\n        return CalendarYearMonthFromFields(calendar, fields, options);\n    }\n    ToTemporalOverflow(options); // validate and ignore\n    let { year, month, referenceISODay, calendar: maybeStringCalendar } = ParseTemporalYearMonthString(ToString(item));\n    // TODO: replace with ternary?\n    let calendar = maybeStringCalendar;\n    if (calendar === undefined)\n        calendar = GetISO8601Calendar();\n    calendar = ToTemporalCalendar(calendar);\n    if (referenceISODay === undefined) {\n        RejectISODate(year, month, 1);\n        return CreateTemporalYearMonth(year, month, calendar);\n    }\n    const result = CreateTemporalYearMonth(year, month, calendar, referenceISODay);\n    return CalendarYearMonthFromFields(calendar, result);\n}\nexport function InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offsetBehaviour, offsetNs, timeZone, disambiguation, offsetOpt, matchMinute) {\n    const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n    const dt = new DateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (offsetBehaviour === 'wall' || offsetOpt === 'ignore') {\n        // Simple case: ISO string without a TZ offset (or caller wants to ignore\n        // the offset), so just convert DateTime to Instant in the given time zone\n        const instant = BuiltinTimeZoneGetInstantFor(timeZone, dt, disambiguation);\n        return GetSlot(instant, EPOCHNANOSECONDS);\n    }\n    // The caller wants the offset to always win ('use') OR the caller is OK\n    // with the offset winning ('prefer' or 'reject') as long as it's valid\n    // for this timezone and date/time.\n    if (offsetBehaviour === 'exact' || offsetOpt === 'use') {\n        // Calculate the instant for the input's date/time and offset\n        const epochNs = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n        if (epochNs === null)\n            throw new RangeError('ZonedDateTime outside of supported range');\n        return JSBI.subtract(epochNs, JSBI.BigInt(offsetNs));\n    }\n    // \"prefer\" or \"reject\"\n    const possibleInstants = GetPossibleInstantsFor(timeZone, dt);\n    for (const candidate of possibleInstants) {\n        const candidateOffset = GetOffsetNanosecondsFor(timeZone, candidate);\n        const roundedCandidateOffset = JSBI.toNumber(RoundNumberToIncrement(JSBI.BigInt(candidateOffset), 60e9, 'halfExpand'));\n        if (candidateOffset === offsetNs || (matchMinute && roundedCandidateOffset === offsetNs)) {\n            return GetSlot(candidate, EPOCHNANOSECONDS);\n        }\n    }\n    // the user-provided offset doesn't match any instants for this time\n    // zone and date/time.\n    if (offsetOpt === 'reject') {\n        const offsetStr = FormatTimeZoneOffsetString(offsetNs);\n        const timeZoneString = IsTemporalTimeZone(timeZone) ? GetSlot(timeZone, TIMEZONE_ID) : 'time zone';\n        // The tsc emit for this line rewrites to invoke the PlainDateTime's valueOf method, NOT\n        // toString (which is invoked by Node when using template literals directly).\n        // See https://github.com/microsoft/TypeScript/issues/39744 for the proposed fix in tsc emit\n        throw new RangeError(`Offset ${offsetStr} is invalid for ${dt.toString()} in ${timeZoneString}`);\n    }\n    // fall through: offsetOpt === 'prefer', but the offset doesn't match\n    // so fall back to use the time zone instead.\n    const instant = DisambiguatePossibleInstants(possibleInstants, timeZone, dt, disambiguation);\n    return GetSlot(instant, EPOCHNANOSECONDS);\n}\nexport function ToTemporalZonedDateTime(item, options) {\n    let year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, timeZone, offset, calendar;\n    let matchMinute = false;\n    let offsetBehaviour = 'option';\n    if (IsObject(item)) {\n        if (IsTemporalZonedDateTime(item))\n            return item;\n        calendar = GetTemporalCalendarWithISODefault(item);\n        const fieldNames = CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fieldNamesWithTzAndOffset = ArrayPush(fieldNames, 'timeZone', 'offset');\n        const fields = PrepareTemporalFields(item, fieldNamesWithTzAndOffset, ['timeZone']);\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = InterpretTemporalDateTimeFields(calendar, fields, options));\n        timeZone = ToTemporalTimeZone(fields.timeZone);\n        offset = fields.offset;\n        if (offset === undefined) {\n            offsetBehaviour = 'wall';\n        }\n        else {\n            offset = ToString(offset);\n        }\n    }\n    else {\n        ToTemporalOverflow(options); // validate and ignore\n        let ianaName, z;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, ianaName, offset, z, calendar } =\n            ParseTemporalZonedDateTimeString(ToString(item)));\n        if (!ianaName)\n            throw new RangeError('time zone ID required in brackets');\n        if (z) {\n            offsetBehaviour = 'exact';\n        }\n        else if (!offset) {\n            offsetBehaviour = 'wall';\n        }\n        const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n        timeZone = new TemporalTimeZone(ianaName);\n        if (!calendar)\n            calendar = GetISO8601Calendar();\n        calendar = ToTemporalCalendar(calendar);\n        matchMinute = true; // ISO strings may specify offset with less precision\n    }\n    let offsetNs = 0;\n    // The code above guarantees that if offsetBehaviour === 'option', then\n    // `offset` is not undefined.\n    if (offsetBehaviour === 'option')\n        offsetNs = ParseTimeZoneOffsetString(offset);\n    const disambiguation = ToTemporalDisambiguation(options);\n    const offsetOpt = ToTemporalOffset(options, 'reject');\n    const epochNanoseconds = InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, offsetBehaviour, offsetNs, timeZone, disambiguation, offsetOpt, matchMinute);\n    return CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar);\n}\nexport function CreateTemporalDateSlots(result, isoYear, isoMonth, isoDay, calendar) {\n    RejectISODate(isoYear, isoMonth, isoDay);\n    RejectDateRange(isoYear, isoMonth, isoDay);\n    CreateSlots(result);\n    SetSlot(result, ISO_YEAR, isoYear);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, isoDay);\n    SetSlot(result, CALENDAR, calendar);\n    SetSlot(result, DATE_BRAND, true);\n    if (DEBUG) {\n        ObjectDefineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalDateToString(result)}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalDate(isoYear, isoMonth, isoDay, calendar = GetISO8601Calendar()) {\n    const TemporalPlainDate = GetIntrinsic('%Temporal.PlainDate%');\n    const result = ObjectCreate(TemporalPlainDate.prototype);\n    CreateTemporalDateSlots(result, isoYear, isoMonth, isoDay, calendar);\n    return result;\n}\nexport function CreateTemporalDateTimeSlots(result, isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns, calendar) {\n    RejectDateTime(isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns);\n    RejectDateTimeRange(isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns);\n    CreateSlots(result);\n    SetSlot(result, ISO_YEAR, isoYear);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, isoDay);\n    SetSlot(result, ISO_HOUR, h);\n    SetSlot(result, ISO_MINUTE, min);\n    SetSlot(result, ISO_SECOND, s);\n    SetSlot(result, ISO_MILLISECOND, ms);\n    SetSlot(result, ISO_MICROSECOND, µs);\n    SetSlot(result, ISO_NANOSECOND, ns);\n    SetSlot(result, CALENDAR, calendar);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalDateTimeToString(result, 'auto')}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalDateTime(isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns, calendar = GetISO8601Calendar()) {\n    const TemporalPlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n    const result = ObjectCreate(TemporalPlainDateTime.prototype);\n    CreateTemporalDateTimeSlots(result, isoYear, isoMonth, isoDay, h, min, s, ms, µs, ns, calendar);\n    return result;\n}\nexport function CreateTemporalMonthDaySlots(result, isoMonth, isoDay, calendar, referenceISOYear) {\n    RejectISODate(referenceISOYear, isoMonth, isoDay);\n    RejectDateRange(referenceISOYear, isoMonth, isoDay);\n    CreateSlots(result);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, isoDay);\n    SetSlot(result, ISO_YEAR, referenceISOYear);\n    SetSlot(result, CALENDAR, calendar);\n    SetSlot(result, MONTH_DAY_BRAND, true);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalMonthDayToString(result)}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalMonthDay(isoMonth, isoDay, calendar = GetISO8601Calendar(), referenceISOYear = 1972) {\n    const TemporalPlainMonthDay = GetIntrinsic('%Temporal.PlainMonthDay%');\n    const result = ObjectCreate(TemporalPlainMonthDay.prototype);\n    CreateTemporalMonthDaySlots(result, isoMonth, isoDay, calendar, referenceISOYear);\n    return result;\n}\nexport function CreateTemporalYearMonthSlots(result, isoYear, isoMonth, calendar, referenceISODay) {\n    RejectISODate(isoYear, isoMonth, referenceISODay);\n    RejectYearMonthRange(isoYear, isoMonth);\n    CreateSlots(result);\n    SetSlot(result, ISO_YEAR, isoYear);\n    SetSlot(result, ISO_MONTH, isoMonth);\n    SetSlot(result, ISO_DAY, referenceISODay);\n    SetSlot(result, CALENDAR, calendar);\n    SetSlot(result, YEAR_MONTH_BRAND, true);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalYearMonthToString(result)}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalYearMonth(isoYear, isoMonth, calendar = GetISO8601Calendar(), referenceISODay = 1) {\n    const TemporalPlainYearMonth = GetIntrinsic('%Temporal.PlainYearMonth%');\n    const result = ObjectCreate(TemporalPlainYearMonth.prototype);\n    CreateTemporalYearMonthSlots(result, isoYear, isoMonth, calendar, referenceISODay);\n    return result;\n}\nexport function CreateTemporalZonedDateTimeSlots(result, epochNanoseconds, timeZone, calendar) {\n    ValidateEpochNanoseconds(epochNanoseconds);\n    CreateSlots(result);\n    SetSlot(result, EPOCHNANOSECONDS, epochNanoseconds);\n    SetSlot(result, TIME_ZONE, timeZone);\n    SetSlot(result, CALENDAR, calendar);\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const instant = new TemporalInstant(GetSlot(result, EPOCHNANOSECONDS));\n    SetSlot(result, INSTANT, instant);\n    if (DEBUG) {\n        Object.defineProperty(result, '_repr_', {\n            value: `${result[Symbol.toStringTag]} <${TemporalZonedDateTimeToString(result, 'auto')}>`,\n            writable: false,\n            enumerable: false,\n            configurable: false\n        });\n    }\n}\nexport function CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar = GetISO8601Calendar()) {\n    const TemporalZonedDateTime = GetIntrinsic('%Temporal.ZonedDateTime%');\n    const result = ObjectCreate(TemporalZonedDateTime.prototype);\n    CreateTemporalZonedDateTimeSlots(result, epochNanoseconds, timeZone, calendar);\n    return result;\n}\nexport function GetISO8601Calendar() {\n    const TemporalCalendar = GetIntrinsic('%Temporal.Calendar%');\n    return new TemporalCalendar('iso8601');\n}\n// TODO: should (can?) we make this generic so the field names are checked\n// against the type that the calendar is a property of?\nexport function CalendarFields(calendar, fieldNamesParam) {\n    let fieldNames = fieldNamesParam;\n    if (calendar.fields) {\n        fieldNames = calendar.fields(fieldNames);\n    }\n    const result = [];\n    for (const name of fieldNames) {\n        if (typeof name !== 'string')\n            throw new TypeError('bad return from calendar.fields()');\n        ArrayPrototypePush.call(result, name);\n    }\n    return result;\n}\nexport function CalendarMergeFields(calendar, fields, additionalFields) {\n    const calMergeFields = calendar.mergeFields;\n    if (!calMergeFields) {\n        return { ...fields, ...additionalFields };\n    }\n    const result = Reflect.apply(calMergeFields, calendar, [fields, additionalFields]);\n    if (!IsObject(result))\n        throw new TypeError('bad return from calendar.mergeFields()');\n    return result;\n}\nexport function CalendarDateAdd(calendar, date, duration, options, dateAddParam) {\n    let dateAdd = dateAddParam;\n    if (dateAdd === undefined) {\n        dateAdd = calendar.dateAdd;\n    }\n    const result = ReflectApply(dateAdd, calendar, [date, duration, options]);\n    if (!IsTemporalDate(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nfunction CalendarDateUntil(calendar, date, otherDate, options, dateUntilParam) {\n    let dateUntil = dateUntilParam;\n    if (dateUntil === undefined) {\n        dateUntil = calendar.dateUntil;\n    }\n    const result = ReflectApply(dateUntil, calendar, [date, otherDate, options]);\n    if (!IsTemporalDuration(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function CalendarYear(calendar, dateLike) {\n    const result = calendar.year(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar year result must be an integer');\n    }\n    return ToIntegerThrowOnInfinity(result);\n}\nexport function CalendarMonth(calendar, dateLike) {\n    const result = calendar.month(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar month result must be a positive integer');\n    }\n    return ToPositiveInteger(result);\n}\nexport function CalendarMonthCode(calendar, dateLike) {\n    const result = calendar.monthCode(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar monthCode result must be a string');\n    }\n    return ToString(result);\n}\nexport function CalendarDay(calendar, dateLike) {\n    const result = calendar.day(dateLike);\n    if (result === undefined) {\n        throw new RangeError('calendar day result must be a positive integer');\n    }\n    return ToPositiveInteger(result);\n}\nexport function CalendarEra(calendar, dateLike) {\n    let result = calendar.era(dateLike);\n    if (result !== undefined) {\n        result = ToString(result);\n    }\n    return result;\n}\nexport function CalendarEraYear(calendar, dateLike) {\n    let result = calendar.eraYear(dateLike);\n    if (result !== undefined) {\n        result = ToIntegerThrowOnInfinity(result);\n    }\n    return result;\n}\nexport function CalendarDayOfWeek(calendar, dateLike) {\n    return calendar.dayOfWeek(dateLike);\n}\nexport function CalendarDayOfYear(calendar, dateLike) {\n    return calendar.dayOfYear(dateLike);\n}\nexport function CalendarWeekOfYear(calendar, dateLike) {\n    return calendar.weekOfYear(dateLike);\n}\nexport function CalendarDaysInWeek(calendar, dateLike) {\n    return calendar.daysInWeek(dateLike);\n}\nexport function CalendarDaysInMonth(calendar, dateLike) {\n    return calendar.daysInMonth(dateLike);\n}\nexport function CalendarDaysInYear(calendar, dateLike) {\n    return calendar.daysInYear(dateLike);\n}\nexport function CalendarMonthsInYear(calendar, dateLike) {\n    return calendar.monthsInYear(dateLike);\n}\nexport function CalendarInLeapYear(calendar, dateLike) {\n    return calendar.inLeapYear(dateLike);\n}\nexport function ToTemporalCalendar(calendarLikeParam) {\n    let calendarLike = calendarLikeParam;\n    if (IsObject(calendarLike)) {\n        if (HasSlot(calendarLike, CALENDAR))\n            return GetSlot(calendarLike, CALENDAR);\n        if (!('calendar' in calendarLike))\n            return calendarLike;\n        calendarLike = calendarLike.calendar;\n        if (IsObject(calendarLike) && !('calendar' in calendarLike))\n            return calendarLike;\n    }\n    const identifier = ToString(calendarLike);\n    const TemporalCalendar = GetIntrinsic('%Temporal.Calendar%');\n    if (IsBuiltinCalendar(identifier))\n        return new TemporalCalendar(identifier);\n    let calendar;\n    try {\n        ({ calendar } = ParseISODateTime(identifier));\n    }\n    catch {\n        throw new RangeError(`Invalid calendar: ${identifier}`);\n    }\n    if (!calendar)\n        calendar = 'iso8601';\n    return new TemporalCalendar(calendar);\n}\nfunction GetTemporalCalendarWithISODefault(item) {\n    if (HasSlot(item, CALENDAR))\n        return GetSlot(item, CALENDAR);\n    const { calendar } = item;\n    if (calendar === undefined)\n        return GetISO8601Calendar();\n    return ToTemporalCalendar(calendar);\n}\nexport function CalendarEquals(one, two) {\n    if (one === two)\n        return true;\n    const cal1 = ToString(one);\n    const cal2 = ToString(two);\n    return cal1 === cal2;\n}\nexport function ConsolidateCalendars(one, two) {\n    if (one === two)\n        return two;\n    const sOne = ToString(one);\n    const sTwo = ToString(two);\n    if (sOne === sTwo || sOne === 'iso8601') {\n        return two;\n    }\n    else if (sTwo === 'iso8601') {\n        return one;\n    }\n    else {\n        throw new RangeError('irreconcilable calendars');\n    }\n}\nexport function CalendarDateFromFields(calendar, fields, options) {\n    const result = calendar.dateFromFields(fields, options);\n    if (!IsTemporalDate(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function CalendarYearMonthFromFields(calendar, fields, options) {\n    const result = calendar.yearMonthFromFields(fields, options);\n    if (!IsTemporalYearMonth(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function CalendarMonthDayFromFields(calendar, fields, options) {\n    const result = calendar.monthDayFromFields(fields, options);\n    if (!IsTemporalMonthDay(result))\n        throw new TypeError('invalid result');\n    return result;\n}\nexport function ToTemporalTimeZone(temporalTimeZoneLikeParam) {\n    let temporalTimeZoneLike = temporalTimeZoneLikeParam;\n    if (IsObject(temporalTimeZoneLike)) {\n        if (IsTemporalZonedDateTime(temporalTimeZoneLike))\n            return GetSlot(temporalTimeZoneLike, TIME_ZONE);\n        if (!('timeZone' in temporalTimeZoneLike))\n            return temporalTimeZoneLike;\n        temporalTimeZoneLike = temporalTimeZoneLike.timeZone;\n        if (IsObject(temporalTimeZoneLike) && !('timeZone' in temporalTimeZoneLike)) {\n            return temporalTimeZoneLike;\n        }\n    }\n    const identifier = ToString(temporalTimeZoneLike);\n    const timeZone = ParseTemporalTimeZone(identifier);\n    const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n    return new TemporalTimeZone(timeZone);\n}\nexport function TimeZoneEquals(one, two) {\n    if (one === two)\n        return true;\n    const tz1 = ToString(one);\n    const tz2 = ToString(two);\n    return tz1 === tz2;\n}\nexport function TemporalDateTimeToDate(dateTime) {\n    return CreateTemporalDate(GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, CALENDAR));\n}\nexport function TemporalDateTimeToTime(dateTime) {\n    const Time = GetIntrinsic('%Temporal.PlainTime%');\n    return new Time(GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND));\n}\nexport function GetOffsetNanosecondsFor(timeZone, instant) {\n    let getOffsetNanosecondsFor = timeZone.getOffsetNanosecondsFor;\n    if (typeof getOffsetNanosecondsFor !== 'function') {\n        throw new TypeError('getOffsetNanosecondsFor not callable');\n    }\n    const offsetNs = Reflect.apply(getOffsetNanosecondsFor, timeZone, [instant]);\n    if (typeof offsetNs !== 'number') {\n        throw new TypeError('bad return from getOffsetNanosecondsFor');\n    }\n    if (!IsInteger(offsetNs) || MathAbs(offsetNs) > 86400e9) {\n        throw new RangeError('out-of-range return from getOffsetNanosecondsFor');\n    }\n    return offsetNs;\n}\nexport function BuiltinTimeZoneGetOffsetStringFor(timeZone, instant) {\n    const offsetNs = GetOffsetNanosecondsFor(timeZone, instant);\n    return FormatTimeZoneOffsetString(offsetNs);\n}\nexport function BuiltinTimeZoneGetPlainDateTimeFor(timeZone, instant, calendar) {\n    const ns = GetSlot(instant, EPOCHNANOSECONDS);\n    const offsetNs = GetOffsetNanosecondsFor(timeZone, instant);\n    let { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = GetISOPartsFromEpoch(ns);\n    ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond + offsetNs));\n    return CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n}\nexport function BuiltinTimeZoneGetInstantFor(timeZone, dateTime, disambiguation) {\n    const possibleInstants = GetPossibleInstantsFor(timeZone, dateTime);\n    return DisambiguatePossibleInstants(possibleInstants, timeZone, dateTime, disambiguation);\n}\nfunction DisambiguatePossibleInstants(possibleInstants, timeZone, dateTime, disambiguation) {\n    const Instant = GetIntrinsic('%Temporal.Instant%');\n    const numInstants = possibleInstants.length;\n    if (numInstants === 1)\n        return possibleInstants[0];\n    if (numInstants) {\n        switch (disambiguation) {\n            case 'compatible':\n            // fall through because 'compatible' means 'earlier' for \"fall back\" transitions\n            case 'earlier':\n                return possibleInstants[0];\n            case 'later':\n                return possibleInstants[numInstants - 1];\n            case 'reject': {\n                throw new RangeError('multiple instants found');\n            }\n        }\n    }\n    const year = GetSlot(dateTime, ISO_YEAR);\n    const month = GetSlot(dateTime, ISO_MONTH);\n    const day = GetSlot(dateTime, ISO_DAY);\n    const hour = GetSlot(dateTime, ISO_HOUR);\n    const minute = GetSlot(dateTime, ISO_MINUTE);\n    const second = GetSlot(dateTime, ISO_SECOND);\n    const millisecond = GetSlot(dateTime, ISO_MILLISECOND);\n    const microsecond = GetSlot(dateTime, ISO_MICROSECOND);\n    const nanosecond = GetSlot(dateTime, ISO_NANOSECOND);\n    const utcns = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (utcns === null)\n        throw new RangeError('DateTime outside of supported range');\n    const dayBefore = new Instant(JSBI.subtract(utcns, DAY_NANOS));\n    const dayAfter = new Instant(JSBI.add(utcns, DAY_NANOS));\n    const offsetBefore = GetOffsetNanosecondsFor(timeZone, dayBefore);\n    const offsetAfter = GetOffsetNanosecondsFor(timeZone, dayAfter);\n    const nanoseconds = offsetAfter - offsetBefore;\n    switch (disambiguation) {\n        case 'earlier': {\n            const calendar = GetSlot(dateTime, CALENDAR);\n            const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n            const earlier = AddDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, 0, 0, 0, 0, 0, 0, 0, 0, 0, -nanoseconds, undefined);\n            const earlierPlainDateTime = new PlainDateTime(earlier.year, earlier.month, earlier.day, earlier.hour, earlier.minute, earlier.second, earlier.millisecond, earlier.microsecond, earlier.nanosecond, calendar);\n            return GetPossibleInstantsFor(timeZone, earlierPlainDateTime)[0];\n        }\n        case 'compatible':\n        // fall through because 'compatible' means 'later' for \"spring forward\" transitions\n        case 'later': {\n            const calendar = GetSlot(dateTime, CALENDAR);\n            const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n            const later = AddDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar, 0, 0, 0, 0, 0, 0, 0, 0, 0, nanoseconds, undefined);\n            const laterPlainDateTime = new PlainDateTime(later.year, later.month, later.day, later.hour, later.minute, later.second, later.millisecond, later.microsecond, later.nanosecond, calendar);\n            const possible = GetPossibleInstantsFor(timeZone, laterPlainDateTime);\n            return possible[possible.length - 1];\n        }\n        case 'reject': {\n            throw new RangeError('no such instant found');\n        }\n    }\n}\nfunction GetPossibleInstantsFor(timeZone, dateTime) {\n    const possibleInstants = timeZone.getPossibleInstantsFor(dateTime);\n    const result = [];\n    for (const instant of possibleInstants) {\n        if (!IsTemporalInstant(instant)) {\n            throw new TypeError('bad return from getPossibleInstantsFor');\n        }\n        ArrayPrototypePush.call(result, instant);\n    }\n    return result;\n}\nexport function ISOYearString(year) {\n    let yearString;\n    if (year < 0 || year > 9999) {\n        const sign = year < 0 ? '-' : '+';\n        const yearNumber = MathAbs(year);\n        yearString = sign + `000000${yearNumber}`.slice(-6);\n    }\n    else {\n        yearString = `0000${year}`.slice(-4);\n    }\n    return yearString;\n}\nexport function ISODateTimePartString(part) {\n    return `00${part}`.slice(-2);\n}\nexport function FormatSecondsStringPart(second, millisecond, microsecond, nanosecond, precision) {\n    if (precision === 'minute')\n        return '';\n    const secs = `:${ISODateTimePartString(second)}`;\n    let fractionNumber = millisecond * 1e6 + microsecond * 1e3 + nanosecond;\n    let fraction;\n    if (precision === 'auto') {\n        if (fractionNumber === 0)\n            return secs;\n        fraction = `${fractionNumber}`.padStart(9, '0');\n        while (fraction[fraction.length - 1] === '0')\n            fraction = fraction.slice(0, -1);\n    }\n    else {\n        if (precision === 0)\n            return secs;\n        fraction = `${fractionNumber}`.padStart(9, '0').slice(0, precision);\n    }\n    return `${secs}.${fraction}`;\n}\nexport function TemporalInstantToString(instant, timeZone, precision) {\n    let outputTimeZone = timeZone;\n    if (outputTimeZone === undefined) {\n        const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n        outputTimeZone = new TemporalTimeZone('UTC');\n    }\n    const iso = GetISO8601Calendar();\n    const dateTime = BuiltinTimeZoneGetPlainDateTimeFor(outputTimeZone, instant, iso);\n    const year = ISOYearString(GetSlot(dateTime, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(dateTime, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(dateTime, ISO_DAY));\n    const hour = ISODateTimePartString(GetSlot(dateTime, ISO_HOUR));\n    const minute = ISODateTimePartString(GetSlot(dateTime, ISO_MINUTE));\n    const seconds = FormatSecondsStringPart(GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND), precision);\n    let timeZoneString = 'Z';\n    if (timeZone !== undefined) {\n        const offsetNs = GetOffsetNanosecondsFor(outputTimeZone, instant);\n        timeZoneString = FormatISOTimeZoneOffsetString(offsetNs);\n    }\n    return `${year}-${month}-${day}T${hour}:${minute}${seconds}${timeZoneString}`;\n}\nexport function TemporalDurationToString(duration, precision = 'auto', options = undefined) {\n    function formatNumber(num) {\n        if (num <= NumberMaxSafeInteger)\n            return num.toString(10);\n        return JSBI.BigInt(num).toString(10);\n    }\n    const years = GetSlot(duration, YEARS);\n    const months = GetSlot(duration, MONTHS);\n    const weeks = GetSlot(duration, WEEKS);\n    const days = GetSlot(duration, DAYS);\n    const hours = GetSlot(duration, HOURS);\n    const minutes = GetSlot(duration, MINUTES);\n    let seconds = GetSlot(duration, SECONDS);\n    let ms = GetSlot(duration, MILLISECONDS);\n    let µs = GetSlot(duration, MICROSECONDS);\n    let ns = GetSlot(duration, NANOSECONDS);\n    const sign = DurationSign(years, months, weeks, days, hours, minutes, seconds, ms, µs, ns);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        ({\n            seconds,\n            milliseconds: ms,\n            microseconds: µs,\n            nanoseconds: ns\n        } = RoundDuration(0, 0, 0, 0, 0, 0, seconds, ms, µs, ns, increment, unit, roundingMode));\n    }\n    const dateParts = [];\n    if (years)\n        dateParts.push(`${formatNumber(MathAbs(years))}Y`);\n    if (months)\n        dateParts.push(`${formatNumber(MathAbs(months))}M`);\n    if (weeks)\n        dateParts.push(`${formatNumber(MathAbs(weeks))}W`);\n    if (days)\n        dateParts.push(`${formatNumber(MathAbs(days))}D`);\n    const timeParts = [];\n    if (hours)\n        timeParts.push(`${formatNumber(MathAbs(hours))}H`);\n    if (minutes)\n        timeParts.push(`${formatNumber(MathAbs(minutes))}M`);\n    const secondParts = [];\n    let total = TotalDurationNanoseconds(0, 0, 0, seconds, ms, µs, ns, 0);\n    let nsBigInt, µsBigInt, msBigInt, secondsBigInt;\n    ({ quotient: total, remainder: nsBigInt } = divmod(total, THOUSAND));\n    ({ quotient: total, remainder: µsBigInt } = divmod(total, THOUSAND));\n    ({ quotient: secondsBigInt, remainder: msBigInt } = divmod(total, THOUSAND));\n    const fraction = MathAbs(JSBI.toNumber(msBigInt)) * 1e6 + MathAbs(JSBI.toNumber(µsBigInt)) * 1e3 + MathAbs(JSBI.toNumber(nsBigInt));\n    let decimalPart;\n    if (precision === 'auto') {\n        if (fraction !== 0) {\n            decimalPart = `${fraction}`.padStart(9, '0');\n            while (decimalPart[decimalPart.length - 1] === '0') {\n                decimalPart = decimalPart.slice(0, -1);\n            }\n        }\n    }\n    else if (precision !== 0) {\n        decimalPart = `${fraction}`.padStart(9, '0').slice(0, precision);\n    }\n    if (decimalPart)\n        secondParts.unshift('.', decimalPart);\n    if (!JSBI.equal(secondsBigInt, ZERO) || secondParts.length || precision !== 'auto') {\n        secondParts.unshift(abs(secondsBigInt).toString());\n    }\n    if (secondParts.length)\n        timeParts.push(`${secondParts.join('')}S`);\n    if (timeParts.length)\n        timeParts.unshift('T');\n    if (!dateParts.length && !timeParts.length)\n        return 'PT0S';\n    return `${sign < 0 ? '-' : ''}P${dateParts.join('')}${timeParts.join('')}`;\n}\nexport function TemporalDateToString(date, showCalendar = 'auto') {\n    const year = ISOYearString(GetSlot(date, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(date, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(date, ISO_DAY));\n    const calendarID = ToString(GetSlot(date, CALENDAR));\n    const calendar = FormatCalendarAnnotation(calendarID, showCalendar);\n    return `${year}-${month}-${day}${calendar}`;\n}\nexport function TemporalDateTimeToString(dateTime, precision, showCalendar = 'auto', options = undefined) {\n    let year = GetSlot(dateTime, ISO_YEAR);\n    let month = GetSlot(dateTime, ISO_MONTH);\n    let day = GetSlot(dateTime, ISO_DAY);\n    let hour = GetSlot(dateTime, ISO_HOUR);\n    let minute = GetSlot(dateTime, ISO_MINUTE);\n    let second = GetSlot(dateTime, ISO_SECOND);\n    let millisecond = GetSlot(dateTime, ISO_MILLISECOND);\n    let microsecond = GetSlot(dateTime, ISO_MICROSECOND);\n    let nanosecond = GetSlot(dateTime, ISO_NANOSECOND);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = RoundISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, increment, unit, roundingMode));\n    }\n    const yearString = ISOYearString(year);\n    const monthString = ISODateTimePartString(month);\n    const dayString = ISODateTimePartString(day);\n    const hourString = ISODateTimePartString(hour);\n    const minuteString = ISODateTimePartString(minute);\n    const secondsString = FormatSecondsStringPart(second, millisecond, microsecond, nanosecond, precision);\n    const calendarID = ToString(GetSlot(dateTime, CALENDAR));\n    const calendar = FormatCalendarAnnotation(calendarID, showCalendar);\n    return `${yearString}-${monthString}-${dayString}T${hourString}:${minuteString}${secondsString}${calendar}`;\n}\nexport function TemporalMonthDayToString(monthDay, showCalendar = 'auto') {\n    const month = ISODateTimePartString(GetSlot(monthDay, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(monthDay, ISO_DAY));\n    let resultString = `${month}-${day}`;\n    const calendar = GetSlot(monthDay, CALENDAR);\n    const calendarID = ToString(calendar);\n    if (showCalendar === 'always' || calendarID !== 'iso8601') {\n        const year = ISOYearString(GetSlot(monthDay, ISO_YEAR));\n        resultString = `${year}-${resultString}`;\n    }\n    const calendarString = FormatCalendarAnnotation(calendarID, showCalendar);\n    if (calendarString)\n        resultString += calendarString;\n    return resultString;\n}\nexport function TemporalYearMonthToString(yearMonth, showCalendar = 'auto') {\n    const year = ISOYearString(GetSlot(yearMonth, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(yearMonth, ISO_MONTH));\n    let resultString = `${year}-${month}`;\n    const calendar = GetSlot(yearMonth, CALENDAR);\n    const calendarID = ToString(calendar);\n    if (showCalendar === 'always' || calendarID !== 'iso8601') {\n        const day = ISODateTimePartString(GetSlot(yearMonth, ISO_DAY));\n        resultString += `-${day}`;\n    }\n    const calendarString = FormatCalendarAnnotation(calendarID, showCalendar);\n    if (calendarString)\n        resultString += calendarString;\n    return resultString;\n}\nexport function TemporalZonedDateTimeToString(zdt, precision, showCalendar = 'auto', showTimeZone = 'auto', showOffset = 'auto', options = undefined) {\n    let instant = GetSlot(zdt, INSTANT);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        const ns = RoundInstant(GetSlot(zdt, EPOCHNANOSECONDS), increment, unit, roundingMode);\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        instant = new TemporalInstant(ns);\n    }\n    const tz = GetSlot(zdt, TIME_ZONE);\n    const iso = GetISO8601Calendar();\n    const dateTime = BuiltinTimeZoneGetPlainDateTimeFor(tz, instant, iso);\n    const year = ISOYearString(GetSlot(dateTime, ISO_YEAR));\n    const month = ISODateTimePartString(GetSlot(dateTime, ISO_MONTH));\n    const day = ISODateTimePartString(GetSlot(dateTime, ISO_DAY));\n    const hour = ISODateTimePartString(GetSlot(dateTime, ISO_HOUR));\n    const minute = ISODateTimePartString(GetSlot(dateTime, ISO_MINUTE));\n    const seconds = FormatSecondsStringPart(GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND), precision);\n    let result = `${year}-${month}-${day}T${hour}:${minute}${seconds}`;\n    if (showOffset !== 'never') {\n        const offsetNs = GetOffsetNanosecondsFor(tz, instant);\n        result += FormatISOTimeZoneOffsetString(offsetNs);\n    }\n    if (showTimeZone !== 'never')\n        result += `[${tz}]`;\n    const calendarID = ToString(GetSlot(zdt, CALENDAR));\n    result += FormatCalendarAnnotation(calendarID, showCalendar);\n    return result;\n}\nexport function TestTimeZoneOffsetString(string) {\n    return OFFSET.test(StringCtor(string));\n}\nexport function ParseTimeZoneOffsetString(string) {\n    const match = OFFSET.exec(StringCtor(string));\n    if (!match) {\n        throw new RangeError(`invalid time zone offset: ${string}`);\n    }\n    const sign = match[1] === '-' || match[1] === '\\u2212' ? -1 : +1;\n    const hours = +match[2];\n    const minutes = +(match[3] || 0);\n    const seconds = +(match[4] || 0);\n    const nanoseconds = +((match[5] || 0) + '000000000').slice(0, 9);\n    return sign * (((hours * 60 + minutes) * 60 + seconds) * 1e9 + nanoseconds);\n}\nexport function GetCanonicalTimeZoneIdentifier(timeZoneIdentifier) {\n    if (TestTimeZoneOffsetString(timeZoneIdentifier)) {\n        const offsetNs = ParseTimeZoneOffsetString(timeZoneIdentifier);\n        return FormatTimeZoneOffsetString(offsetNs);\n    }\n    const formatter = getIntlDateTimeFormatEnUsForTimeZone(StringCtor(timeZoneIdentifier));\n    return formatter.resolvedOptions().timeZone;\n}\nexport function GetIANATimeZoneOffsetNanoseconds(epochNanoseconds, id) {\n    const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = GetIANATimeZoneDateTimeParts(epochNanoseconds, id);\n    const utc = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (utc === null)\n        throw new RangeError('Date outside of supported range');\n    return JSBI.toNumber(JSBI.subtract(utc, epochNanoseconds));\n}\nfunction FormatTimeZoneOffsetString(offsetNanosecondsParam) {\n    const sign = offsetNanosecondsParam < 0 ? '-' : '+';\n    const offsetNanoseconds = MathAbs(offsetNanosecondsParam);\n    const nanoseconds = offsetNanoseconds % 1e9;\n    const seconds = MathFloor(offsetNanoseconds / 1e9) % 60;\n    const minutes = MathFloor(offsetNanoseconds / 60e9) % 60;\n    const hours = MathFloor(offsetNanoseconds / 3600e9);\n    const hourString = ISODateTimePartString(hours);\n    const minuteString = ISODateTimePartString(minutes);\n    const secondString = ISODateTimePartString(seconds);\n    let post = '';\n    if (nanoseconds) {\n        let fraction = `${nanoseconds}`.padStart(9, '0');\n        while (fraction[fraction.length - 1] === '0')\n            fraction = fraction.slice(0, -1);\n        post = `:${secondString}.${fraction}`;\n    }\n    else if (seconds) {\n        post = `:${secondString}`;\n    }\n    return `${sign}${hourString}:${minuteString}${post}`;\n}\nfunction FormatISOTimeZoneOffsetString(offsetNanosecondsParam) {\n    let offsetNanoseconds = JSBI.toNumber(RoundNumberToIncrement(JSBI.BigInt(offsetNanosecondsParam), 60e9, 'halfExpand'));\n    const sign = offsetNanoseconds < 0 ? '-' : '+';\n    offsetNanoseconds = MathAbs(offsetNanoseconds);\n    const minutes = (offsetNanoseconds / 60e9) % 60;\n    const hours = MathFloor(offsetNanoseconds / 3600e9);\n    const hourString = ISODateTimePartString(hours);\n    const minuteString = ISODateTimePartString(minutes);\n    return `${sign}${hourString}:${minuteString}`;\n}\nexport function GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    // Note: Date.UTC() interprets one and two-digit years as being in the\n    // 20th century, so don't use it\n    const legacyDate = new Date();\n    legacyDate.setUTCHours(hour, minute, second, millisecond);\n    legacyDate.setUTCFullYear(year, month - 1, day);\n    const ms = legacyDate.getTime();\n    if (NumberIsNaN(ms))\n        return null;\n    let ns = JSBI.multiply(JSBI.BigInt(ms), MILLION);\n    ns = JSBI.add(ns, JSBI.multiply(JSBI.BigInt(microsecond), THOUSAND));\n    ns = JSBI.add(ns, JSBI.BigInt(nanosecond));\n    if (JSBI.lessThan(ns, NS_MIN) || JSBI.greaterThan(ns, NS_MAX))\n        return null;\n    return ns;\n}\nfunction GetISOPartsFromEpoch(epochNanoseconds) {\n    const { quotient, remainder } = divmod(epochNanoseconds, MILLION);\n    let epochMilliseconds = JSBI.toNumber(quotient);\n    let nanos = JSBI.toNumber(remainder);\n    if (nanos < 0) {\n        nanos += 1e6;\n        epochMilliseconds -= 1;\n    }\n    const microsecond = MathFloor(nanos / 1e3) % 1e3;\n    const nanosecond = nanos % 1e3;\n    const item = new Date(epochMilliseconds);\n    const year = item.getUTCFullYear();\n    const month = item.getUTCMonth() + 1;\n    const day = item.getUTCDate();\n    const hour = item.getUTCHours();\n    const minute = item.getUTCMinutes();\n    const second = item.getUTCSeconds();\n    const millisecond = item.getUTCMilliseconds();\n    return { epochMilliseconds, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\n// ts-prune-ignore-next TODO: remove this after tests are converted to TS\nexport function GetIANATimeZoneDateTimeParts(epochNanoseconds, id) {\n    const { epochMilliseconds, millisecond, microsecond, nanosecond } = GetISOPartsFromEpoch(epochNanoseconds);\n    const { year, month, day, hour, minute, second } = GetFormatterParts(id, epochMilliseconds);\n    return BalanceISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n}\nfunction maxJSBI(one, two) {\n    return JSBI.lessThan(one, two) ? two : one;\n}\n/**\n * Our best guess at how far in advance new rules will be put into the TZDB for\n * future offset transitions. We'll pick 10 years but can always revise it if\n * we find that countries are being unusually proactive in their announcing\n * of offset changes.\n */\nfunction afterLatestPossibleTzdbRuleChange() {\n    return JSBI.add(SystemUTCEpochNanoSeconds(), ABOUT_TEN_YEARS_NANOS);\n}\nexport function GetIANATimeZoneNextTransition(epochNanoseconds, id) {\n    // Decide how far in the future after `epochNanoseconds` we'll look for an\n    // offset change. There are two cases:\n    // 1. If it's a past date (or a date in the near future) then it's possible\n    //    that the time zone may have newly added DST in the next few years. So\n    //    we'll have to look from the provided time until a few years after the\n    //    current system time. (Changes to DST policy are usually announced a few\n    //    years in the future.) Note that the first DST anywhere started in 1847,\n    //    so we'll start checks in 1847 instead of wasting cycles on years where\n    //    there will never be transitions.\n    // 2. If it's a future date beyond the next few years, then we'll just assume\n    //    that the latest DST policy in TZDB will still be in effect.  In this\n    //    case, we only need to look one year in the future to see if there are\n    //    any DST transitions.  We actually only need to look 9-10 months because\n    //    DST has two transitions per year, but we'll use a year just to be safe.\n    const oneYearLater = JSBI.add(epochNanoseconds, ABOUT_ONE_YEAR_NANOS);\n    const uppercap = maxJSBI(afterLatestPossibleTzdbRuleChange(), oneYearLater);\n    // The first transition (in any timezone) recorded in the TZDB was in 1847, so\n    // start there if an earlier date is supplied.\n    let leftNanos = maxJSBI(BEFORE_FIRST_OFFSET_TRANSITION, epochNanoseconds);\n    const leftOffsetNs = GetIANATimeZoneOffsetNanoseconds(leftNanos, id);\n    let rightNanos = leftNanos;\n    let rightOffsetNs = leftOffsetNs;\n    while (leftOffsetNs === rightOffsetNs && JSBI.lessThan(JSBI.BigInt(leftNanos), uppercap)) {\n        rightNanos = JSBI.add(leftNanos, TWO_WEEKS_NANOS);\n        rightOffsetNs = GetIANATimeZoneOffsetNanoseconds(rightNanos, id);\n        if (leftOffsetNs === rightOffsetNs) {\n            leftNanos = rightNanos;\n        }\n    }\n    if (leftOffsetNs === rightOffsetNs)\n        return null;\n    const result = bisect((epochNs) => GetIANATimeZoneOffsetNanoseconds(epochNs, id), leftNanos, rightNanos, leftOffsetNs, rightOffsetNs);\n    return result;\n}\nexport function GetIANATimeZonePreviousTransition(epochNanoseconds, id) {\n    // If a time zone uses DST (at the time of `epochNanoseconds`), then we only\n    // have to look back one year to find a transition. But if it doesn't use DST,\n    // then we need to look all the way back to 1847 (the earliest rule in the\n    // TZDB) to see if it had other offset transitions in the past. Looping back\n    // from a far-future date to 1847 is very slow (minutes of 100% CPU!), and is\n    // also unnecessary because DST rules aren't put into the TZDB more than a few\n    // years in the future because the political changes in time zones happen with\n    // only a few years' warning. Therefore, if a far-future date is provided,\n    // then we'll run the check in two parts:\n    // 1. First, we'll look back for up to one year to see if the latest TZDB\n    //    rules have DST.\n    // 2. If not, then we'll \"fast-reverse\" back to a few years later than the\n    //    current system time, and then look back to 1847. This reduces the\n    //    worst-case loop from 273K years to 175 years, for a ~1500x improvement\n    //    in worst-case perf.\n    const afterLatestRule = afterLatestPossibleTzdbRuleChange();\n    const isFarFuture = JSBI.greaterThan(epochNanoseconds, afterLatestRule);\n    const lowercap = isFarFuture ? JSBI.subtract(epochNanoseconds, ABOUT_ONE_YEAR_NANOS) : BEFORE_FIRST_OFFSET_TRANSITION;\n    let rightNanos = JSBI.subtract(epochNanoseconds, ONE);\n    const rightOffsetNs = GetIANATimeZoneOffsetNanoseconds(rightNanos, id);\n    let leftNanos = rightNanos;\n    let leftOffsetNs = rightOffsetNs;\n    while (rightOffsetNs === leftOffsetNs && JSBI.greaterThan(rightNanos, lowercap)) {\n        leftNanos = JSBI.subtract(rightNanos, TWO_WEEKS_NANOS);\n        leftOffsetNs = GetIANATimeZoneOffsetNanoseconds(leftNanos, id);\n        if (rightOffsetNs === leftOffsetNs) {\n            rightNanos = leftNanos;\n        }\n    }\n    if (rightOffsetNs === leftOffsetNs) {\n        if (isFarFuture) {\n            // There was no DST after looking back one year, which means that the most\n            // recent TZDB rules don't have any recurring transitions. To check for\n            // transitions in older rules, back up to a few years after the current\n            // date and then look all the way back to 1847. Note that we move back one\n            // day from the latest possible rule so that when the recursion runs it\n            // won't consider the new time to be \"far future\" because the system clock\n            // has advanced in the meantime.\n            const newTimeToCheck = JSBI.subtract(afterLatestRule, DAY_NANOS);\n            return GetIANATimeZonePreviousTransition(newTimeToCheck, id);\n        }\n        return null;\n    }\n    const result = bisect((epochNs) => GetIANATimeZoneOffsetNanoseconds(epochNs, id), leftNanos, rightNanos, leftOffsetNs, rightOffsetNs);\n    return result;\n}\n// ts-prune-ignore-next TODO: remove this after tests are converted to TS\nexport function parseFromEnUsFormat(datetime) {\n    const parts = datetime.split(/[^\\w]+/);\n    if (parts.length !== 7) {\n        throw new RangeError(`expected 7 parts in \"${datetime}`);\n    }\n    const month = +parts[0];\n    const day = +parts[1];\n    let year = +parts[2];\n    const era = parts[3].toUpperCase();\n    if (era === 'B' || era === 'BC') {\n        year = -year + 1;\n    }\n    else if (era !== 'A' && era !== 'AD') {\n        throw new RangeError(`Unknown era ${era} in \"${datetime}`);\n    }\n    let hour = +parts[4];\n    if (hour === 24) {\n        // bugs.chromium.org/p/chromium/issues/detail?id=1045791\n        hour = 0;\n    }\n    const minute = +parts[5];\n    const second = +parts[6];\n    if (!NumberIsFinite(year) ||\n        !NumberIsFinite(month) ||\n        !NumberIsFinite(day) ||\n        !NumberIsFinite(hour) ||\n        !NumberIsFinite(minute) ||\n        !NumberIsFinite(second)) {\n        throw new RangeError(`Invalid number in \"${datetime}`);\n    }\n    return { year, month, day, hour, minute, second };\n}\n// ts-prune-ignore-next TODO: remove this after tests are converted to TS\nexport function GetFormatterParts(timeZone, epochMilliseconds) {\n    const formatter = getIntlDateTimeFormatEnUsForTimeZone(timeZone);\n    // Using `format` instead of `formatToParts` for compatibility with older clients\n    const datetime = formatter.format(new Date(epochMilliseconds));\n    return parseFromEnUsFormat(datetime);\n}\nexport function GetIANATimeZoneEpochValue(id, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    const ns = GetEpochFromISOParts(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond);\n    if (ns === null)\n        throw new RangeError('DateTime outside of supported range');\n    let nsEarlier = JSBI.subtract(ns, DAY_NANOS);\n    if (JSBI.lessThan(nsEarlier, NS_MIN))\n        nsEarlier = ns;\n    let nsLater = JSBI.add(ns, DAY_NANOS);\n    if (JSBI.greaterThan(nsLater, NS_MAX))\n        nsLater = ns;\n    const earliest = GetIANATimeZoneOffsetNanoseconds(nsEarlier, id);\n    const latest = GetIANATimeZoneOffsetNanoseconds(nsLater, id);\n    const found = earliest === latest ? [earliest] : [earliest, latest];\n    return found\n        .map((offsetNanoseconds) => {\n        const epochNanoseconds = JSBI.subtract(ns, JSBI.BigInt(offsetNanoseconds));\n        const parts = GetIANATimeZoneDateTimeParts(epochNanoseconds, id);\n        if (year !== parts.year ||\n            month !== parts.month ||\n            day !== parts.day ||\n            hour !== parts.hour ||\n            minute !== parts.minute ||\n            second !== parts.second ||\n            millisecond !== parts.millisecond ||\n            microsecond !== parts.microsecond ||\n            nanosecond !== parts.nanosecond) {\n            return undefined;\n        }\n        return epochNanoseconds;\n    })\n        .filter((x) => x !== undefined);\n}\nexport function LeapYear(year) {\n    if (undefined === year)\n        return false;\n    const isDiv4 = year % 4 === 0;\n    const isDiv100 = year % 100 === 0;\n    const isDiv400 = year % 400 === 0;\n    return isDiv4 && (!isDiv100 || isDiv400);\n}\nexport function ISODaysInMonth(year, month) {\n    const DoM = {\n        standard: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n        leapyear: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n    };\n    return DoM[LeapYear(year) ? 'leapyear' : 'standard'][month - 1];\n}\nexport function DayOfWeek(year, month, day) {\n    const m = month + (month < 3 ? 10 : -2);\n    const Y = year - (month < 3 ? 1 : 0);\n    const c = MathFloor(Y / 100);\n    const y = Y - c * 100;\n    const d = day;\n    const pD = d;\n    const pM = MathFloor(2.6 * m - 0.2);\n    const pY = y + MathFloor(y / 4);\n    const pC = MathFloor(c / 4) - 2 * c;\n    const dow = (pD + pM + pY + pC) % 7;\n    return dow + (dow <= 0 ? 7 : 0);\n}\nexport function DayOfYear(year, month, day) {\n    let days = day;\n    for (let m = month - 1; m > 0; m--) {\n        days += ISODaysInMonth(year, m);\n    }\n    return days;\n}\nexport function WeekOfYear(year, month, day) {\n    const doy = DayOfYear(year, month, day);\n    const dow = DayOfWeek(year, month, day) || 7;\n    const doj = DayOfWeek(year, 1, 1);\n    const week = MathFloor((doy - dow + 10) / 7);\n    if (week < 1) {\n        if (doj === 5 || (doj === 6 && LeapYear(year - 1))) {\n            return 53;\n        }\n        else {\n            return 52;\n        }\n    }\n    if (week === 53) {\n        if ((LeapYear(year) ? 366 : 365) - doy < 4 - dow) {\n            return 1;\n        }\n    }\n    return week;\n}\nexport function DurationSign(y, mon, w, d, h, min, s, ms, µs, ns) {\n    for (const prop of [y, mon, w, d, h, min, s, ms, µs, ns]) {\n        if (prop !== 0)\n            return prop < 0 ? -1 : 1;\n    }\n    return 0;\n}\nfunction BalanceISOYearMonth(yearParam, monthParam) {\n    let year = yearParam;\n    let month = monthParam;\n    if (!NumberIsFinite(year) || !NumberIsFinite(month))\n        throw new RangeError('infinity is out of range');\n    month -= 1;\n    year += MathFloor(month / 12);\n    month %= 12;\n    if (month < 0)\n        month += 12;\n    month += 1;\n    return { year, month };\n}\nfunction BalanceISODate(yearParam, monthParam, dayParam) {\n    let year = yearParam;\n    let month = monthParam;\n    let day = dayParam;\n    if (!NumberIsFinite(day))\n        throw new RangeError('infinity is out of range');\n    ({ year, month } = BalanceISOYearMonth(year, month));\n    let daysInYear = 0;\n    let testYear = month > 2 ? year : year - 1;\n    while (((daysInYear = LeapYear(testYear) ? 366 : 365), day < -daysInYear)) {\n        year -= 1;\n        testYear -= 1;\n        day += daysInYear;\n    }\n    testYear += 1;\n    while (((daysInYear = LeapYear(testYear) ? 366 : 365), day > daysInYear)) {\n        year += 1;\n        testYear += 1;\n        day -= daysInYear;\n    }\n    while (day < 1) {\n        ({ year, month } = BalanceISOYearMonth(year, month - 1));\n        day += ISODaysInMonth(year, month);\n    }\n    while (day > ISODaysInMonth(year, month)) {\n        day -= ISODaysInMonth(year, month);\n        ({ year, month } = BalanceISOYearMonth(year, month + 1));\n    }\n    return { year, month, day };\n}\nfunction BalanceISODateTime(yearParam, monthParam, dayParam, hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam) {\n    const { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam);\n    const { year, month, day } = BalanceISODate(yearParam, monthParam, dayParam + deltaDays);\n    return { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nfunction BalanceTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam) {\n    let hour = hourParam;\n    let minute = minuteParam;\n    let second = secondParam;\n    let millisecond = millisecondParam;\n    let microsecond = microsecondParam;\n    let nanosecond = nanosecondParam;\n    if (!NumberIsFinite(hour) ||\n        !NumberIsFinite(minute) ||\n        !NumberIsFinite(second) ||\n        !NumberIsFinite(millisecond) ||\n        !NumberIsFinite(microsecond) ||\n        !NumberIsFinite(nanosecond)) {\n        throw new RangeError('infinity is out of range');\n    }\n    microsecond += MathFloor(nanosecond / 1000);\n    nanosecond = NonNegativeModulo(nanosecond, 1000);\n    millisecond += MathFloor(microsecond / 1000);\n    microsecond = NonNegativeModulo(microsecond, 1000);\n    second += MathFloor(millisecond / 1000);\n    millisecond = NonNegativeModulo(millisecond, 1000);\n    minute += MathFloor(second / 60);\n    second = NonNegativeModulo(second, 60);\n    hour += MathFloor(minute / 60);\n    minute = NonNegativeModulo(minute, 60);\n    const deltaDays = MathFloor(hour / 24);\n    hour = NonNegativeModulo(hour, 24);\n    return { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function TotalDurationNanoseconds(daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, offsetShift) {\n    const days = JSBI.BigInt(daysParam);\n    let nanoseconds = JSBI.BigInt(nanosecondsParam);\n    if (daysParam !== 0)\n        nanoseconds = JSBI.subtract(JSBI.BigInt(nanosecondsParam), JSBI.BigInt(offsetShift));\n    const hours = JSBI.add(JSBI.BigInt(hoursParam), JSBI.multiply(days, JSBI.BigInt(24)));\n    const minutes = JSBI.add(JSBI.BigInt(minutesParam), JSBI.multiply(hours, SIXTY));\n    const seconds = JSBI.add(JSBI.BigInt(secondsParam), JSBI.multiply(minutes, SIXTY));\n    const milliseconds = JSBI.add(JSBI.BigInt(millisecondsParam), JSBI.multiply(seconds, THOUSAND));\n    const microseconds = JSBI.add(JSBI.BigInt(microsecondsParam), JSBI.multiply(milliseconds, THOUSAND));\n    return JSBI.add(JSBI.BigInt(nanoseconds), JSBI.multiply(microseconds, THOUSAND));\n}\nfunction NanosecondsToDays(nanosecondsParam, relativeTo) {\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const sign = MathSign(JSBI.toNumber(nanosecondsParam));\n    let nanoseconds = JSBI.BigInt(nanosecondsParam);\n    let dayLengthNs = 86400e9;\n    if (sign === 0)\n        return { days: 0, nanoseconds: ZERO, dayLengthNs };\n    if (!IsTemporalZonedDateTime(relativeTo)) {\n        let days;\n        ({ quotient: days, remainder: nanoseconds } = divmod(nanoseconds, JSBI.BigInt(dayLengthNs)));\n        return { days: JSBI.toNumber(days), nanoseconds, dayLengthNs };\n    }\n    const startNs = GetSlot(relativeTo, EPOCHNANOSECONDS);\n    const start = GetSlot(relativeTo, INSTANT);\n    const endNs = JSBI.add(startNs, nanoseconds);\n    const end = new TemporalInstant(endNs);\n    const timeZone = GetSlot(relativeTo, TIME_ZONE);\n    const calendar = GetSlot(relativeTo, CALENDAR);\n    // Find the difference in days only.\n    const dtStart = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, start, calendar);\n    const dtEnd = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, end, calendar);\n    let { days } = DifferenceISODateTime(GetSlot(dtStart, ISO_YEAR), GetSlot(dtStart, ISO_MONTH), GetSlot(dtStart, ISO_DAY), GetSlot(dtStart, ISO_HOUR), GetSlot(dtStart, ISO_MINUTE), GetSlot(dtStart, ISO_SECOND), GetSlot(dtStart, ISO_MILLISECOND), GetSlot(dtStart, ISO_MICROSECOND), GetSlot(dtStart, ISO_NANOSECOND), GetSlot(dtEnd, ISO_YEAR), GetSlot(dtEnd, ISO_MONTH), GetSlot(dtEnd, ISO_DAY), GetSlot(dtEnd, ISO_HOUR), GetSlot(dtEnd, ISO_MINUTE), GetSlot(dtEnd, ISO_SECOND), GetSlot(dtEnd, ISO_MILLISECOND), GetSlot(dtEnd, ISO_MICROSECOND), GetSlot(dtEnd, ISO_NANOSECOND), calendar, 'day', ObjectCreate(null));\n    let intermediateNs = AddZonedDateTime(start, timeZone, calendar, 0, 0, 0, days, 0, 0, 0, 0, 0, 0);\n    // may disambiguate\n    // If clock time after addition was in the middle of a skipped period, the\n    // endpoint was disambiguated to a later clock time. So it's possible that\n    // the resulting disambiguated result is later than endNs. If so, then back\n    // up one day and try again. Repeat if necessary (some transitions are\n    // > 24 hours) until either there's zero days left or the date duration is\n    // back inside the period where it belongs. Note that this case only can\n    // happen for positive durations because the only direction that\n    // `disambiguation: 'compatible'` can change clock time is forwards.\n    if (sign === 1) {\n        while (days > 0 && JSBI.greaterThan(intermediateNs, endNs)) {\n            --days;\n            intermediateNs = AddZonedDateTime(start, timeZone, calendar, 0, 0, 0, days, 0, 0, 0, 0, 0, 0);\n            // may do disambiguation\n        }\n    }\n    nanoseconds = JSBI.subtract(endNs, intermediateNs);\n    let isOverflow = false;\n    let relativeInstant = new TemporalInstant(intermediateNs);\n    do {\n        // calculate length of the next day (day that contains the time remainder)\n        const oneDayFartherNs = AddZonedDateTime(relativeInstant, timeZone, calendar, 0, 0, 0, sign, 0, 0, 0, 0, 0, 0);\n        const relativeNs = GetSlot(relativeInstant, EPOCHNANOSECONDS);\n        dayLengthNs = JSBI.toNumber(JSBI.subtract(oneDayFartherNs, relativeNs));\n        isOverflow = JSBI.greaterThan(JSBI.multiply(JSBI.subtract(nanoseconds, JSBI.BigInt(dayLengthNs)), JSBI.BigInt(sign)), ZERO);\n        if (isOverflow) {\n            nanoseconds = JSBI.subtract(nanoseconds, JSBI.BigInt(dayLengthNs));\n            relativeInstant = new TemporalInstant(oneDayFartherNs);\n            days += sign;\n        }\n    } while (isOverflow);\n    return { days, nanoseconds, dayLengthNs: MathAbs(dayLengthNs) };\n}\nexport function BalanceDuration(daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, largestUnit, relativeTo = undefined) {\n    let days = daysParam;\n    let nanosecondsBigInt, microsecondsBigInt, millisecondsBigInt, secondsBigInt, minutesBigInt, hoursBigInt;\n    if (IsTemporalZonedDateTime(relativeTo)) {\n        const endNs = AddZonedDateTime(GetSlot(relativeTo, INSTANT), GetSlot(relativeTo, TIME_ZONE), GetSlot(relativeTo, CALENDAR), 0, 0, 0, days, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam);\n        const startNs = GetSlot(relativeTo, EPOCHNANOSECONDS);\n        nanosecondsBigInt = JSBI.subtract(endNs, startNs);\n    }\n    else {\n        nanosecondsBigInt = TotalDurationNanoseconds(days, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, 0);\n    }\n    if (largestUnit === 'year' || largestUnit === 'month' || largestUnit === 'week' || largestUnit === 'day') {\n        ({ days, nanoseconds: nanosecondsBigInt } = NanosecondsToDays(nanosecondsBigInt, relativeTo));\n    }\n    else {\n        days = 0;\n    }\n    const sign = JSBI.lessThan(nanosecondsBigInt, ZERO) ? -1 : 1;\n    nanosecondsBigInt = abs(nanosecondsBigInt);\n    microsecondsBigInt = millisecondsBigInt = secondsBigInt = minutesBigInt = hoursBigInt = ZERO;\n    switch (largestUnit) {\n        case 'year':\n        case 'month':\n        case 'week':\n        case 'day':\n        case 'hour':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            ({ quotient: secondsBigInt, remainder: millisecondsBigInt } = divmod(millisecondsBigInt, THOUSAND));\n            ({ quotient: minutesBigInt, remainder: secondsBigInt } = divmod(secondsBigInt, SIXTY));\n            ({ quotient: hoursBigInt, remainder: minutesBigInt } = divmod(minutesBigInt, SIXTY));\n            break;\n        case 'minute':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            ({ quotient: secondsBigInt, remainder: millisecondsBigInt } = divmod(millisecondsBigInt, THOUSAND));\n            ({ quotient: minutesBigInt, remainder: secondsBigInt } = divmod(secondsBigInt, SIXTY));\n            break;\n        case 'second':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            ({ quotient: secondsBigInt, remainder: millisecondsBigInt } = divmod(millisecondsBigInt, THOUSAND));\n            break;\n        case 'millisecond':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            ({ quotient: millisecondsBigInt, remainder: microsecondsBigInt } = divmod(microsecondsBigInt, THOUSAND));\n            break;\n        case 'microsecond':\n            ({ quotient: microsecondsBigInt, remainder: nanosecondsBigInt } = divmod(nanosecondsBigInt, THOUSAND));\n            break;\n        case 'nanosecond':\n            break;\n        default:\n            throw new Error('assert not reached');\n    }\n    const hours = JSBI.toNumber(hoursBigInt) * sign;\n    const minutes = JSBI.toNumber(minutesBigInt) * sign;\n    const seconds = JSBI.toNumber(secondsBigInt) * sign;\n    const milliseconds = JSBI.toNumber(millisecondsBigInt) * sign;\n    const microseconds = JSBI.toNumber(microsecondsBigInt) * sign;\n    const nanoseconds = JSBI.toNumber(nanosecondsBigInt) * sign;\n    return { days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nexport function UnbalanceDurationRelative(yearsParam, monthsParam, weeksParam, daysParam, largestUnit, relativeToParam) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    const sign = DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    let calendar;\n    let relativeTo;\n    if (relativeToParam) {\n        relativeTo = ToTemporalDate(relativeToParam);\n        calendar = GetSlot(relativeTo, CALENDAR);\n    }\n    const oneYear = new TemporalDuration(sign);\n    const oneMonth = new TemporalDuration(0, sign);\n    const oneWeek = new TemporalDuration(0, 0, sign);\n    switch (largestUnit) {\n        case 'year':\n            // no-op\n            break;\n        case 'month':\n            {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for months balancing');\n                // balance years down to months\n                const dateAdd = calendar.dateAdd;\n                const dateUntil = calendar.dateUntil;\n                let relativeToDateOnly = relativeTo;\n                while (MathAbs(years) > 0) {\n                    const newRelativeTo = CalendarDateAdd(calendar, relativeToDateOnly, oneYear, undefined, dateAdd);\n                    const untilOptions = ObjectCreate(null);\n                    untilOptions.largestUnit = 'month';\n                    const untilResult = CalendarDateUntil(calendar, relativeToDateOnly, newRelativeTo, untilOptions, dateUntil);\n                    const oneYearMonths = GetSlot(untilResult, MONTHS);\n                    relativeToDateOnly = newRelativeTo;\n                    months += oneYearMonths;\n                    years -= sign;\n                }\n            }\n            break;\n        case 'week':\n            if (!calendar)\n                throw new RangeError('a starting point is required for weeks balancing');\n            // balance years down to days\n            while (MathAbs(years) > 0) {\n                let oneYearDays;\n                ({ relativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n                days += oneYearDays;\n                years -= sign;\n            }\n            // balance months down to days\n            while (MathAbs(months) > 0) {\n                let oneMonthDays;\n                ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n                days += oneMonthDays;\n                months -= sign;\n            }\n            break;\n        default:\n            // balance years down to days\n            while (MathAbs(years) > 0) {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for balancing calendar units');\n                let oneYearDays;\n                ({ relativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n                days += oneYearDays;\n                years -= sign;\n            }\n            // balance months down to days\n            while (MathAbs(months) > 0) {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for balancing calendar units');\n                let oneMonthDays;\n                ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n                days += oneMonthDays;\n                months -= sign;\n            }\n            // balance weeks down to days\n            while (MathAbs(weeks) > 0) {\n                if (!calendar)\n                    throw new RangeError('a starting point is required for balancing calendar units');\n                let oneWeekDays;\n                ({ relativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n                days += oneWeekDays;\n                weeks -= sign;\n            }\n            break;\n    }\n    return { years, months, weeks, days };\n}\nexport function BalanceDurationRelative(yearsParam, monthsParam, weeksParam, daysParam, largestUnit, relativeToParam) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    const sign = DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    if (sign === 0)\n        return { years, months, weeks, days };\n    let calendar;\n    let relativeTo;\n    if (relativeToParam) {\n        relativeTo = ToTemporalDate(relativeToParam);\n        calendar = GetSlot(relativeTo, CALENDAR);\n    }\n    const oneYear = new TemporalDuration(sign);\n    const oneMonth = new TemporalDuration(0, sign);\n    const oneWeek = new TemporalDuration(0, 0, sign);\n    switch (largestUnit) {\n        case 'year': {\n            if (!calendar)\n                throw new RangeError('a starting point is required for years balancing');\n            // balance days up to years\n            let newRelativeTo, oneYearDays;\n            ({ relativeTo: newRelativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n            while (MathAbs(days) >= MathAbs(oneYearDays)) {\n                days -= oneYearDays;\n                years += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear));\n            }\n            // balance days up to months\n            let oneMonthDays;\n            ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            while (MathAbs(days) >= MathAbs(oneMonthDays)) {\n                days -= oneMonthDays;\n                months += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            }\n            // balance months up to years\n            const dateAdd = calendar.dateAdd;\n            newRelativeTo = CalendarDateAdd(calendar, relativeTo, oneYear, undefined, dateAdd);\n            const dateUntil = calendar.dateUntil;\n            const untilOptions = ObjectCreate(null);\n            untilOptions.largestUnit = 'month';\n            let untilResult = CalendarDateUntil(calendar, relativeTo, newRelativeTo, untilOptions, dateUntil);\n            let oneYearMonths = GetSlot(untilResult, MONTHS);\n            while (MathAbs(months) >= MathAbs(oneYearMonths)) {\n                months -= oneYearMonths;\n                years += sign;\n                relativeTo = newRelativeTo;\n                newRelativeTo = CalendarDateAdd(calendar, relativeTo, oneYear, undefined, dateAdd);\n                const untilOptions = ObjectCreate(null);\n                untilOptions.largestUnit = 'month';\n                untilResult = CalendarDateUntil(calendar, relativeTo, newRelativeTo, untilOptions, dateUntil);\n                oneYearMonths = GetSlot(untilResult, MONTHS);\n            }\n            break;\n        }\n        case 'month': {\n            if (!calendar)\n                throw new RangeError('a starting point is required for months balancing');\n            // balance days up to months\n            let newRelativeTo, oneMonthDays;\n            ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            while (MathAbs(days) >= MathAbs(oneMonthDays)) {\n                days -= oneMonthDays;\n                months += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            }\n            break;\n        }\n        case 'week': {\n            if (!calendar)\n                throw new RangeError('a starting point is required for weeks balancing');\n            // balance days up to weeks\n            let newRelativeTo, oneWeekDays;\n            ({ relativeTo: newRelativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            while (MathAbs(days) >= MathAbs(oneWeekDays)) {\n                days -= oneWeekDays;\n                weeks += sign;\n                relativeTo = newRelativeTo;\n                ({ relativeTo: newRelativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            }\n            break;\n        }\n        default:\n            // no-op\n            break;\n    }\n    return { years, months, weeks, days };\n}\nexport function CalculateOffsetShift(relativeTo, y, mon, w, d) {\n    if (IsTemporalZonedDateTime(relativeTo)) {\n        const instant = GetSlot(relativeTo, INSTANT);\n        const timeZone = GetSlot(relativeTo, TIME_ZONE);\n        const calendar = GetSlot(relativeTo, CALENDAR);\n        const offsetBefore = GetOffsetNanosecondsFor(timeZone, instant);\n        const after = AddZonedDateTime(instant, timeZone, calendar, y, mon, w, d, 0, 0, 0, 0, 0, 0);\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        const instantAfter = new TemporalInstant(after);\n        const offsetAfter = GetOffsetNanosecondsFor(timeZone, instantAfter);\n        return offsetAfter - offsetBefore;\n    }\n    return 0;\n}\nexport function CreateNegatedTemporalDuration(duration) {\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    return new TemporalDuration(-GetSlot(duration, YEARS), -GetSlot(duration, MONTHS), -GetSlot(duration, WEEKS), -GetSlot(duration, DAYS), -GetSlot(duration, HOURS), -GetSlot(duration, MINUTES), -GetSlot(duration, SECONDS), -GetSlot(duration, MILLISECONDS), -GetSlot(duration, MICROSECONDS), -GetSlot(duration, NANOSECONDS));\n}\nexport function ConstrainToRange(value, min, max) {\n    // Math.Max accepts undefined values and returns NaN. Undefined values are\n    // used for optional params in the method below.\n    return MathMin(max, MathMax(min, value));\n}\nfunction ConstrainISODate(year, monthParam, dayParam) {\n    const month = ConstrainToRange(monthParam, 1, 12);\n    const day = ConstrainToRange(dayParam, 1, ISODaysInMonth(year, month));\n    return { year, month, day };\n}\nfunction ConstrainTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam) {\n    const hour = ConstrainToRange(hourParam, 0, 23);\n    const minute = ConstrainToRange(minuteParam, 0, 59);\n    const second = ConstrainToRange(secondParam, 0, 59);\n    const millisecond = ConstrainToRange(millisecondParam, 0, 999);\n    const microsecond = ConstrainToRange(microsecondParam, 0, 999);\n    const nanosecond = ConstrainToRange(nanosecondParam, 0, 999);\n    return { hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function RejectToRange(value, min, max) {\n    if (value < min || value > max)\n        throw new RangeError(`value out of range: ${min} <= ${value} <= ${max}`);\n}\nfunction RejectISODate(year, month, day) {\n    RejectToRange(month, 1, 12);\n    RejectToRange(day, 1, ISODaysInMonth(year, month));\n}\nfunction RejectDateRange(year, month, day) {\n    // Noon avoids trouble at edges of DateTime range (excludes midnight)\n    RejectDateTimeRange(year, month, day, 12, 0, 0, 0, 0, 0);\n}\nexport function RejectTime(hour, minute, second, millisecond, microsecond, nanosecond) {\n    RejectToRange(hour, 0, 23);\n    RejectToRange(minute, 0, 59);\n    RejectToRange(second, 0, 59);\n    RejectToRange(millisecond, 0, 999);\n    RejectToRange(microsecond, 0, 999);\n    RejectToRange(nanosecond, 0, 999);\n}\nfunction RejectDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    RejectISODate(year, month, day);\n    RejectTime(hour, minute, second, millisecond, microsecond, nanosecond);\n}\nfunction RejectDateTimeRange(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond) {\n    RejectToRange(year, YEAR_MIN, YEAR_MAX);\n    // Reject any DateTime 24 hours or more outside the Instant range\n    if ((year === YEAR_MIN &&\n        null ==\n            GetEpochFromISOParts(year, month, day + 1, hour, minute, second, millisecond, microsecond, nanosecond - 1)) ||\n        (year === YEAR_MAX &&\n            null ==\n                GetEpochFromISOParts(year, month, day - 1, hour, minute, second, millisecond, microsecond, nanosecond + 1))) {\n        throw new RangeError('DateTime outside of supported range');\n    }\n}\nexport function ValidateEpochNanoseconds(epochNanoseconds) {\n    if (JSBI.lessThan(epochNanoseconds, NS_MIN) || JSBI.greaterThan(epochNanoseconds, NS_MAX)) {\n        throw new RangeError('Instant outside of supported range');\n    }\n}\nfunction RejectYearMonthRange(year, month) {\n    RejectToRange(year, YEAR_MIN, YEAR_MAX);\n    if (year === YEAR_MIN) {\n        RejectToRange(month, 4, 12);\n    }\n    else if (year === YEAR_MAX) {\n        RejectToRange(month, 1, 9);\n    }\n}\nexport function RejectDuration(y, mon, w, d, h, min, s, ms, µs, ns) {\n    const sign = DurationSign(y, mon, w, d, h, min, s, ms, µs, ns);\n    for (const prop of [y, mon, w, d, h, min, s, ms, µs, ns]) {\n        if (!NumberIsFinite(prop))\n            throw new RangeError('infinite values not allowed as duration fields');\n        const propSign = MathSign(prop);\n        if (propSign !== 0 && propSign !== sign)\n            throw new RangeError('mixed-sign values not allowed as duration fields');\n    }\n}\nexport function DifferenceISODate(y1, m1, d1, y2, m2, d2, largestUnit) {\n    switch (largestUnit) {\n        case 'year':\n        case 'month': {\n            const sign = -CompareISODate(y1, m1, d1, y2, m2, d2);\n            if (sign === 0)\n                return { years: 0, months: 0, weeks: 0, days: 0 };\n            const start = { year: y1, month: m1, day: d1 };\n            const end = { year: y2, month: m2, day: d2 };\n            let years = end.year - start.year;\n            let mid = AddISODate(y1, m1, d1, years, 0, 0, 0, 'constrain');\n            let midSign = -CompareISODate(mid.year, mid.month, mid.day, y2, m2, d2);\n            if (midSign === 0) {\n                return largestUnit === 'year'\n                    ? { years, months: 0, weeks: 0, days: 0 }\n                    : { years: 0, months: years * 12, weeks: 0, days: 0 };\n            }\n            let months = end.month - start.month;\n            if (midSign !== sign) {\n                years -= sign;\n                months += sign * 12;\n            }\n            mid = AddISODate(y1, m1, d1, years, months, 0, 0, 'constrain');\n            midSign = -CompareISODate(mid.year, mid.month, mid.day, y2, m2, d2);\n            if (midSign === 0) {\n                return largestUnit === 'year'\n                    ? { years, months, weeks: 0, days: 0 }\n                    : { years: 0, months: months + years * 12, weeks: 0, days: 0 };\n            }\n            if (midSign !== sign) {\n                // The end date is later in the month than mid date (or earlier for\n                // negative durations). Back up one month.\n                months -= sign;\n                if (months === -sign) {\n                    years -= sign;\n                    months = 11 * sign;\n                }\n                mid = AddISODate(y1, m1, d1, years, months, 0, 0, 'constrain');\n            }\n            let days = 0;\n            // If we get here, months and years are correct (no overflow), and `mid`\n            // is within the range from `start` to `end`. To count the days between\n            // `mid` and `end`, there are 3 cases:\n            // 1) same month: use simple subtraction\n            // 2) end is previous month from intermediate (negative duration)\n            // 3) end is next month from intermediate (positive duration)\n            if (mid.month === end.month) {\n                // 1) same month: use simple subtraction\n                days = end.day - mid.day;\n            }\n            else if (sign < 0) {\n                // 2) end is previous month from intermediate (negative duration)\n                // Example: intermediate: Feb 1, end: Jan 30, DaysInMonth = 31, days = -2\n                days = -mid.day - (ISODaysInMonth(end.year, end.month) - end.day);\n            }\n            else {\n                // 3) end is next month from intermediate (positive duration)\n                // Example: intermediate: Jan 29, end: Feb 1, DaysInMonth = 31, days = 3\n                days = end.day + (ISODaysInMonth(mid.year, mid.month) - mid.day);\n            }\n            if (largestUnit === 'month') {\n                months += years * 12;\n                years = 0;\n            }\n            return { years, months, weeks: 0, days };\n        }\n        case 'week':\n        case 'day': {\n            let larger, smaller, sign;\n            if (CompareISODate(y1, m1, d1, y2, m2, d2) < 0) {\n                smaller = { year: y1, month: m1, day: d1 };\n                larger = { year: y2, month: m2, day: d2 };\n                sign = 1;\n            }\n            else {\n                smaller = { year: y2, month: m2, day: d2 };\n                larger = { year: y1, month: m1, day: d1 };\n                sign = -1;\n            }\n            let days = DayOfYear(larger.year, larger.month, larger.day) - DayOfYear(smaller.year, smaller.month, smaller.day);\n            for (let year = smaller.year; year < larger.year; ++year) {\n                days += LeapYear(year) ? 366 : 365;\n            }\n            let weeks = 0;\n            if (largestUnit === 'week') {\n                weeks = MathFloor(days / 7);\n                days %= 7;\n            }\n            weeks *= sign;\n            days *= sign;\n            return { years: 0, months: 0, weeks, days };\n        }\n        default:\n            throw new Error('assert not reached');\n    }\n}\nfunction DifferenceTime(h1, min1, s1, ms1, µs1, ns1, h2, min2, s2, ms2, µs2, ns2) {\n    let hours = h2 - h1;\n    let minutes = min2 - min1;\n    let seconds = s2 - s1;\n    let milliseconds = ms2 - ms1;\n    let microseconds = µs2 - µs1;\n    let nanoseconds = ns2 - ns1;\n    const sign = DurationSign(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    hours *= sign;\n    minutes *= sign;\n    seconds *= sign;\n    milliseconds *= sign;\n    microseconds *= sign;\n    nanoseconds *= sign;\n    let deltaDays = 0;\n    ({\n        deltaDays,\n        hour: hours,\n        minute: minutes,\n        second: seconds,\n        millisecond: milliseconds,\n        microsecond: microseconds,\n        nanosecond: nanoseconds\n    } = BalanceTime(hours, minutes, seconds, milliseconds, microseconds, nanoseconds));\n    if (deltaDays != 0)\n        throw new Error('assertion failure in DifferenceTime: _bt_.[[Days]] should be 0');\n    hours *= sign;\n    minutes *= sign;\n    seconds *= sign;\n    milliseconds *= sign;\n    microseconds *= sign;\n    nanoseconds *= sign;\n    return { hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction DifferenceInstant(ns1, ns2, increment, unit, roundingMode) {\n    const diff = JSBI.subtract(ns2, ns1);\n    const remainder = JSBI.remainder(diff, JSBI.BigInt(86400e9));\n    const wholeDays = JSBI.subtract(diff, remainder);\n    const roundedRemainder = RoundNumberToIncrement(remainder, nsPerTimeUnit[unit] * increment, roundingMode);\n    const roundedDiff = JSBI.add(wholeDays, roundedRemainder);\n    const nanoseconds = JSBI.toNumber(JSBI.remainder(roundedDiff, THOUSAND));\n    const microseconds = JSBI.toNumber(JSBI.remainder(JSBI.divide(roundedDiff, THOUSAND), THOUSAND));\n    const milliseconds = JSBI.toNumber(JSBI.remainder(JSBI.divide(roundedDiff, MILLION), THOUSAND));\n    const seconds = JSBI.toNumber(JSBI.divide(roundedDiff, BILLION));\n    return { seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction DifferenceISODateTime(y1Param, mon1Param, d1Param, h1, min1, s1, ms1, µs1, ns1, y2, mon2, d2, h2, min2, s2, ms2, µs2, ns2, calendar, largestUnit, options) {\n    let y1 = y1Param;\n    let mon1 = mon1Param;\n    let d1 = d1Param;\n    let { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = DifferenceTime(h1, min1, s1, ms1, µs1, ns1, h2, min2, s2, ms2, µs2, ns2);\n    const timeSign = DurationSign(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    const dateSign = CompareISODate(y2, mon2, d2, y1, mon1, d1);\n    if (dateSign === -timeSign) {\n        ({ year: y1, month: mon1, day: d1 } = BalanceISODate(y1, mon1, d1 - timeSign));\n        ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(-timeSign, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    }\n    const date1 = CreateTemporalDate(y1, mon1, d1, calendar);\n    const date2 = CreateTemporalDate(y2, mon2, d2, calendar);\n    const dateLargestUnit = LargerOfTwoTemporalUnits('day', largestUnit);\n    const untilOptions = MergeLargestUnitOption(options, dateLargestUnit);\n    // TODO untilOptions doesn't want to compile as it seems that smallestUnit is not clamped?\n    // Type 'SmallestUnit<DateTimeUnit> | undefined' is not assignable to type\n    //      'SmallestUnit<\"year\" | \"month\" | \"day\" | \"week\"> | undefined'.\n    // Type '\"hour\"' is not assignable to type\n    //      'SmallestUnit<\"year\" | \"month\" | \"day\" | \"week\"> | undefined'.ts(2345)\n    let { years, months, weeks, days } = CalendarDateUntil(calendar, date1, date2, untilOptions);\n    // Signs of date part and time part may not agree; balance them together\n    ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction DifferenceZonedDateTime(ns1, ns2, timeZone, calendar, largestUnit, options) {\n    const nsDiff = JSBI.subtract(ns2, ns1);\n    if (JSBI.equal(nsDiff, ZERO)) {\n        return {\n            years: 0,\n            months: 0,\n            weeks: 0,\n            days: 0,\n            hours: 0,\n            minutes: 0,\n            seconds: 0,\n            milliseconds: 0,\n            microseconds: 0,\n            nanoseconds: 0\n        };\n    }\n    // Find the difference in dates only.\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const start = new TemporalInstant(ns1);\n    const end = new TemporalInstant(ns2);\n    const dtStart = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, start, calendar);\n    const dtEnd = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, end, calendar);\n    let { years, months, weeks, days } = DifferenceISODateTime(GetSlot(dtStart, ISO_YEAR), GetSlot(dtStart, ISO_MONTH), GetSlot(dtStart, ISO_DAY), GetSlot(dtStart, ISO_HOUR), GetSlot(dtStart, ISO_MINUTE), GetSlot(dtStart, ISO_SECOND), GetSlot(dtStart, ISO_MILLISECOND), GetSlot(dtStart, ISO_MICROSECOND), GetSlot(dtStart, ISO_NANOSECOND), GetSlot(dtEnd, ISO_YEAR), GetSlot(dtEnd, ISO_MONTH), GetSlot(dtEnd, ISO_DAY), GetSlot(dtEnd, ISO_HOUR), GetSlot(dtEnd, ISO_MINUTE), GetSlot(dtEnd, ISO_SECOND), GetSlot(dtEnd, ISO_MILLISECOND), GetSlot(dtEnd, ISO_MICROSECOND), GetSlot(dtEnd, ISO_NANOSECOND), calendar, largestUnit, options);\n    const intermediateNs = AddZonedDateTime(start, timeZone, calendar, years, months, weeks, 0, 0, 0, 0, 0, 0, 0);\n    // may disambiguate\n    let timeRemainderNs = JSBI.subtract(ns2, intermediateNs);\n    const intermediate = CreateTemporalZonedDateTime(intermediateNs, timeZone, calendar);\n    ({ nanoseconds: timeRemainderNs, days } = NanosecondsToDays(timeRemainderNs, intermediate));\n    // Finally, merge the date and time durations and return the merged result.\n    const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, 0, 0, 0, JSBI.toNumber(timeRemainderNs), 'hour');\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\n// TODO: does it make sense to explicitly union the other and options types for each operation?\nexport function DifferenceTemporalInstant(operation, instant, otherParam, optionsParam) {\n    const other = ToTemporalInstant(otherParam);\n    let first, second;\n    if (operation === 'until') {\n        [first, second] = [instant, other];\n    }\n    else {\n        [first, second] = [other, instant];\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'time', 'nanosecond');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('second', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'time', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    const roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    const MAX_DIFFERENCE_INCREMENTS = {\n        hour: 24,\n        minute: 60,\n        second: 60,\n        millisecond: 1000,\n        microsecond: 1000,\n        nanosecond: 1000\n    };\n    const roundingIncrement = ToTemporalRoundingIncrement(options, MAX_DIFFERENCE_INCREMENTS[smallestUnit], false);\n    const onens = GetSlot(first, EPOCHNANOSECONDS);\n    const twons = GetSlot(second, EPOCHNANOSECONDS);\n    let { seconds, milliseconds, microseconds, nanoseconds } = DifferenceInstant(onens, twons, roundingIncrement, smallestUnit, roundingMode);\n    let hours, minutes;\n    ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n}\nexport function DifferenceTemporalPlainDate(operation, plainDate, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalDate(otherParam);\n    const calendar = GetSlot(plainDate, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarId = ToString(calendar);\n    const otherCalendarId = ToString(otherCalendar);\n    if (calendarId !== otherCalendarId) {\n        throw new RangeError(`cannot compute difference between dates of ${calendarId} and ${otherCalendarId} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'date', 'day');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('day', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'date', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalRoundingIncrement(options, undefined, false);\n    const untilOptions = MergeLargestUnitOption(options, largestUnit);\n    let { years, months, weeks, days } = CalendarDateUntil(calendar, plainDate, other, untilOptions);\n    if (smallestUnit !== 'day' || roundingIncrement !== 1) {\n        ({ years, months, weeks, days } = RoundDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0, roundingIncrement, smallestUnit, roundingMode, plainDate));\n    }\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, sign * weeks, sign * days, 0, 0, 0, 0, 0, 0);\n}\nexport function DifferenceTemporalPlainDateTime(operation, plainDateTime, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalDateTime(otherParam);\n    const calendar = GetSlot(plainDateTime, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarId = ToString(calendar);\n    const otherCalendarId = ToString(otherCalendar);\n    if (calendarId !== otherCalendarId) {\n        throw new RangeError(`cannot compute difference between dates of ${calendarId} and ${otherCalendarId} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'datetime', 'nanosecond');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('day', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'datetime', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalDateTimeRoundingIncrement(options, smallestUnit);\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = DifferenceISODateTime(GetSlot(plainDateTime, ISO_YEAR), GetSlot(plainDateTime, ISO_MONTH), GetSlot(plainDateTime, ISO_DAY), GetSlot(plainDateTime, ISO_HOUR), GetSlot(plainDateTime, ISO_MINUTE), GetSlot(plainDateTime, ISO_SECOND), GetSlot(plainDateTime, ISO_MILLISECOND), GetSlot(plainDateTime, ISO_MICROSECOND), GetSlot(plainDateTime, ISO_NANOSECOND), GetSlot(other, ISO_YEAR), GetSlot(other, ISO_MONTH), GetSlot(other, ISO_DAY), GetSlot(other, ISO_HOUR), GetSlot(other, ISO_MINUTE), GetSlot(other, ISO_SECOND), GetSlot(other, ISO_MILLISECOND), GetSlot(other, ISO_MICROSECOND), GetSlot(other, ISO_NANOSECOND), calendar, largestUnit, options);\n    const relativeTo = TemporalDateTimeToDate(plainDateTime);\n    ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, relativeTo));\n    ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n}\nexport function DifferenceTemporalPlainTime(operation, plainTime, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalTime(otherParam);\n    const options = GetOptionsObject(optionsParam);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'time', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = 'hour';\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'time', 'nanosecond');\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const MAX_INCREMENTS = {\n        hour: 24,\n        minute: 60,\n        second: 60,\n        millisecond: 1000,\n        microsecond: 1000,\n        nanosecond: 1000\n    };\n    const roundingIncrement = ToTemporalRoundingIncrement(options, MAX_INCREMENTS[smallestUnit], false);\n    let { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = DifferenceTime(GetSlot(plainTime, ISO_HOUR), GetSlot(plainTime, ISO_MINUTE), GetSlot(plainTime, ISO_SECOND), GetSlot(plainTime, ISO_MILLISECOND), GetSlot(plainTime, ISO_MICROSECOND), GetSlot(plainTime, ISO_NANOSECOND), GetSlot(other, ISO_HOUR), GetSlot(other, ISO_MINUTE), GetSlot(other, ISO_SECOND), GetSlot(other, ISO_MILLISECOND), GetSlot(other, ISO_MICROSECOND), GetSlot(other, ISO_NANOSECOND));\n    ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = RoundDuration(0, 0, 0, 0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode));\n    ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(0, 0, 0, 0, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n}\nexport function DifferenceTemporalPlainYearMonth(operation, yearMonth, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalYearMonth(otherParam);\n    const calendar = GetSlot(yearMonth, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarID = ToString(calendar);\n    const otherCalendarID = ToString(otherCalendar);\n    if (calendarID !== otherCalendarID) {\n        throw new RangeError(`cannot compute difference between months of ${calendarID} and ${otherCalendarID} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const ALLOWED_UNITS = SINGULAR_PLURAL_UNITS.reduce((allowed, [p, s, c]) => {\n        if (c === 'date' && s !== 'week' && s !== 'day')\n            allowed.push(s, p);\n        return allowed;\n    }, []);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'date', 'month');\n    if (smallestUnit === 'week' || smallestUnit === 'day') {\n        throw new RangeError(`smallestUnit must be one of ${ALLOWED_UNITS.join(', ')}, not ${smallestUnit}`);\n    }\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'date', 'auto');\n    if (largestUnit === 'week' || largestUnit === 'day') {\n        throw new RangeError(`largestUnit must be one of ${ALLOWED_UNITS.join(', ')}, not ${largestUnit}`);\n    }\n    if (largestUnit === 'auto')\n        largestUnit = 'year';\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalRoundingIncrement(options, undefined, false);\n    const fieldNames = CalendarFields(calendar, ['monthCode', 'year']);\n    const otherFields = PrepareTemporalFields(other, fieldNames, []);\n    otherFields.day = 1;\n    const thisFields = PrepareTemporalFields(yearMonth, fieldNames, []);\n    thisFields.day = 1;\n    // The calls to PrepareTemporalFields don't mark day as a required property,\n    // and TS doesn't automatically narrow the type of the object because of the\n    // assignments above, so we must \"cast\" the inputs.\n    const otherDate = CalendarDateFromFields(calendar, otherFields);\n    const thisDate = CalendarDateFromFields(calendar, thisFields);\n    const untilOptions = MergeLargestUnitOption(options, largestUnit);\n    let { years, months } = CalendarDateUntil(calendar, thisDate, otherDate, untilOptions);\n    if (smallestUnit !== 'month' || roundingIncrement !== 1) {\n        ({ years, months } = RoundDuration(years, months, 0, 0, 0, 0, 0, 0, 0, 0, roundingIncrement, smallestUnit, roundingMode, thisDate));\n    }\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, 0, 0, 0, 0, 0, 0, 0, 0);\n}\nexport function DifferenceTemporalZonedDateTime(operation, zonedDateTime, otherParam, optionsParam) {\n    const sign = operation === 'since' ? -1 : 1;\n    const other = ToTemporalZonedDateTime(otherParam);\n    const calendar = GetSlot(zonedDateTime, CALENDAR);\n    const otherCalendar = GetSlot(other, CALENDAR);\n    const calendarId = ToString(calendar);\n    const otherCalendarId = ToString(otherCalendar);\n    if (calendarId !== otherCalendarId) {\n        throw new RangeError(`cannot compute difference between dates of ${calendarId} and ${otherCalendarId} calendars`);\n    }\n    const options = GetOptionsObject(optionsParam);\n    const smallestUnit = GetTemporalUnit(options, 'smallestUnit', 'datetime', 'nanosecond');\n    const defaultLargestUnit = LargerOfTwoTemporalUnits('hour', smallestUnit);\n    let largestUnit = GetTemporalUnit(options, 'largestUnit', 'datetime', 'auto');\n    if (largestUnit === 'auto')\n        largestUnit = defaultLargestUnit;\n    if (LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n        throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n    }\n    let roundingMode = ToTemporalRoundingMode(options, 'trunc');\n    if (operation === 'since')\n        roundingMode = NegateTemporalRoundingMode(roundingMode);\n    const roundingIncrement = ToTemporalDateTimeRoundingIncrement(options, smallestUnit);\n    const ns1 = GetSlot(zonedDateTime, EPOCHNANOSECONDS);\n    const ns2 = GetSlot(other, EPOCHNANOSECONDS);\n    let years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds;\n    if (largestUnit !== 'year' && largestUnit !== 'month' && largestUnit !== 'week' && largestUnit !== 'day') {\n        // The user is only asking for a time difference, so return difference of instants.\n        years = 0;\n        months = 0;\n        weeks = 0;\n        days = 0;\n        ({ seconds, milliseconds, microseconds, nanoseconds } = DifferenceInstant(ns1, ns2, roundingIncrement, \n        // TODO this doesn't type-check as it includes >= day-size units\n        // This is probably safe as the typing for ToSmallestTemporalUnit isn't\n        // very good.\n        smallestUnit, roundingMode));\n        ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n    }\n    else {\n        const timeZone = GetSlot(zonedDateTime, TIME_ZONE);\n        if (!TimeZoneEquals(timeZone, GetSlot(other, TIME_ZONE))) {\n            throw new RangeError(\"When calculating difference between time zones, largestUnit must be 'hours' \" +\n                'or smaller because day lengths can vary between time zones due to DST or time zone offset changes.');\n        }\n        const untilOptions = MergeLargestUnitOption(options, largestUnit);\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            DifferenceZonedDateTime(ns1, ns2, timeZone, calendar, largestUnit, untilOptions));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, zonedDateTime));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            AdjustRoundedDurationDays(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, zonedDateTime));\n    }\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n}\nexport function AddISODate(yearParam, monthParam, dayParam, yearsParam, monthsParam, weeksParam, daysParam, overflow) {\n    let year = yearParam;\n    let month = monthParam;\n    let day = dayParam;\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    year += years;\n    month += months;\n    ({ year, month } = BalanceISOYearMonth(year, month));\n    ({ year, month, day } = RegulateISODate(year, month, day, overflow));\n    days += 7 * weeks;\n    day += days;\n    ({ year, month, day } = BalanceISODate(year, month, day));\n    return { year, month, day };\n}\nfunction AddTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, hours, minutes, seconds, milliseconds, microseconds, nanoseconds) {\n    let hour = hourParam;\n    let minute = minuteParam;\n    let second = secondParam;\n    let millisecond = millisecondParam;\n    let microsecond = microsecondParam;\n    let nanosecond = nanosecondParam;\n    hour += hours;\n    minute += minutes;\n    second += seconds;\n    millisecond += milliseconds;\n    microsecond += microseconds;\n    nanosecond += nanoseconds;\n    let deltaDays = 0;\n    ({ deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = BalanceTime(hour, minute, second, millisecond, microsecond, nanosecond));\n    return { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nfunction AddDuration(y1, mon1, w1, d1, h1, min1, s1, ms1, µs1, ns1, y2, mon2, w2, d2, h2, min2, s2, ms2, µs2, ns2, relativeTo) {\n    const largestUnit1 = DefaultTemporalLargestUnit(y1, mon1, w1, d1, h1, min1, s1, ms1, µs1, ns1);\n    const largestUnit2 = DefaultTemporalLargestUnit(y2, mon2, w2, d2, h2, min2, s2, ms2, µs2, ns2);\n    const largestUnit = LargerOfTwoTemporalUnits(largestUnit1, largestUnit2);\n    let years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds;\n    if (!relativeTo) {\n        if (largestUnit === 'year' || largestUnit === 'month' || largestUnit === 'week') {\n            throw new RangeError('relativeTo is required for years, months, or weeks arithmetic');\n        }\n        years = months = weeks = 0;\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(d1 + d2, h1 + h2, min1 + min2, s1 + s2, ms1 + ms2, µs1 + µs2, ns1 + ns2, largestUnit));\n    }\n    else if (IsTemporalDate(relativeTo)) {\n        const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n        const calendar = GetSlot(relativeTo, CALENDAR);\n        const dateDuration1 = new TemporalDuration(y1, mon1, w1, d1, 0, 0, 0, 0, 0, 0);\n        const dateDuration2 = new TemporalDuration(y2, mon2, w2, d2, 0, 0, 0, 0, 0, 0);\n        const dateAdd = calendar.dateAdd;\n        const intermediate = CalendarDateAdd(calendar, relativeTo, dateDuration1, undefined, dateAdd);\n        const end = CalendarDateAdd(calendar, intermediate, dateDuration2, undefined, dateAdd);\n        const dateLargestUnit = LargerOfTwoTemporalUnits('day', largestUnit);\n        const differenceOptions = ObjectCreate(null);\n        differenceOptions.largestUnit = dateLargestUnit;\n        ({ years, months, weeks, days } = CalendarDateUntil(calendar, relativeTo, end, differenceOptions));\n        // Signs of date part and time part may not agree; balance them together\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(days, h1 + h2, min1 + min2, s1 + s2, ms1 + ms2, µs1 + µs2, ns1 + ns2, largestUnit));\n    }\n    else {\n        // relativeTo is a ZonedDateTime\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        const timeZone = GetSlot(relativeTo, TIME_ZONE);\n        const calendar = GetSlot(relativeTo, CALENDAR);\n        const intermediateNs = AddZonedDateTime(GetSlot(relativeTo, INSTANT), timeZone, calendar, y1, mon1, w1, d1, h1, min1, s1, ms1, µs1, ns1);\n        const endNs = AddZonedDateTime(new TemporalInstant(intermediateNs), timeZone, calendar, y2, mon2, w2, d2, h2, min2, s2, ms2, µs2, ns2);\n        if (largestUnit !== 'year' && largestUnit !== 'month' && largestUnit !== 'week' && largestUnit !== 'day') {\n            // The user is only asking for a time difference, so return difference of instants.\n            years = 0;\n            months = 0;\n            weeks = 0;\n            days = 0;\n            ({ seconds, milliseconds, microseconds, nanoseconds } = DifferenceInstant(GetSlot(relativeTo, EPOCHNANOSECONDS), endNs, 1, 'nanosecond', 'halfExpand'));\n            ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, seconds, milliseconds, microseconds, nanoseconds, largestUnit));\n        }\n        else {\n            ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n                DifferenceZonedDateTime(GetSlot(relativeTo, EPOCHNANOSECONDS), endNs, timeZone, calendar, largestUnit, ObjectCreate(null)));\n        }\n    }\n    RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nfunction AddInstant(epochNanoseconds, h, min, s, ms, µs, ns) {\n    let sum = ZERO;\n    sum = JSBI.add(sum, JSBI.BigInt(ns));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(µs), THOUSAND));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(ms), MILLION));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(s), BILLION));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(min), JSBI.BigInt(60 * 1e9)));\n    sum = JSBI.add(sum, JSBI.multiply(JSBI.BigInt(h), JSBI.BigInt(60 * 60 * 1e9)));\n    const result = JSBI.add(epochNanoseconds, sum);\n    ValidateEpochNanoseconds(result);\n    return result;\n}\nfunction AddDateTime(year, month, day, hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, calendar, years, months, weeks, daysParam, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, options) {\n    let days = daysParam;\n    // Add the time part\n    let { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = AddTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    days += deltaDays;\n    // Delegate the date part addition to the calendar\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    const datePart = CreateTemporalDate(year, month, day, calendar);\n    const dateDuration = new TemporalDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const addedDate = CalendarDateAdd(calendar, datePart, dateDuration, options);\n    return {\n        year: GetSlot(addedDate, ISO_YEAR),\n        month: GetSlot(addedDate, ISO_MONTH),\n        day: GetSlot(addedDate, ISO_DAY),\n        hour,\n        minute,\n        second,\n        millisecond,\n        microsecond,\n        nanosecond\n    };\n}\nexport function AddZonedDateTime(instant, timeZone, calendar, years, months, weeks, days, h, min, s, ms, µs, ns, options) {\n    // If only time is to be added, then use Instant math. It's not OK to fall\n    // through to the date/time code below because compatible disambiguation in\n    // the PlainDateTime=>Instant conversion will change the offset of any\n    // ZonedDateTime in the repeated clock time after a backwards transition.\n    // When adding/subtracting time units and not dates, this disambiguation is\n    // not expected and so is avoided below via a fast path for time-only\n    // arithmetic.\n    // BTW, this behavior is similar in spirit to offset: 'prefer' in `with`.\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    if (DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0) === 0) {\n        return AddInstant(GetSlot(instant, EPOCHNANOSECONDS), h, min, s, ms, µs, ns);\n    }\n    // RFC 5545 requires the date portion to be added in calendar days and the\n    // time portion to be added in exact time.\n    const dt = BuiltinTimeZoneGetPlainDateTimeFor(timeZone, instant, calendar);\n    const datePart = CreateTemporalDate(GetSlot(dt, ISO_YEAR), GetSlot(dt, ISO_MONTH), GetSlot(dt, ISO_DAY), calendar);\n    const dateDuration = new TemporalDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const addedDate = CalendarDateAdd(calendar, datePart, dateDuration, options);\n    const dtIntermediate = CreateTemporalDateTime(GetSlot(addedDate, ISO_YEAR), GetSlot(addedDate, ISO_MONTH), GetSlot(addedDate, ISO_DAY), GetSlot(dt, ISO_HOUR), GetSlot(dt, ISO_MINUTE), GetSlot(dt, ISO_SECOND), GetSlot(dt, ISO_MILLISECOND), GetSlot(dt, ISO_MICROSECOND), GetSlot(dt, ISO_NANOSECOND), calendar);\n    // Note that 'compatible' is used below because this disambiguation behavior\n    // is required by RFC 5545.\n    const instantIntermediate = BuiltinTimeZoneGetInstantFor(timeZone, dtIntermediate, 'compatible');\n    return AddInstant(GetSlot(instantIntermediate, EPOCHNANOSECONDS), h, min, s, ms, µs, ns);\n}\nexport function AddDurationToOrSubtractDurationFromDuration(operation, duration, other, optionsParam) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(other);\n    const options = GetOptionsObject(optionsParam);\n    const relativeTo = ToRelativeTemporalObject(options);\n    ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = AddDuration(GetSlot(duration, YEARS), GetSlot(duration, MONTHS), GetSlot(duration, WEEKS), GetSlot(duration, DAYS), GetSlot(duration, HOURS), GetSlot(duration, MINUTES), GetSlot(duration, SECONDS), GetSlot(duration, MILLISECONDS), GetSlot(duration, MICROSECONDS), GetSlot(duration, NANOSECONDS), sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds, relativeTo));\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n}\nexport function AddDurationToOrSubtractDurationFromInstant(operation, instant, durationLike) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToLimitedTemporalDuration(durationLike, [\n        'years',\n        'months',\n        'weeks',\n        'days'\n    ]);\n    const ns = AddInstant(GetSlot(instant, EPOCHNANOSECONDS), sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n    const Instant = GetIntrinsic('%Temporal.Instant%');\n    return new Instant(ns);\n}\nexport function AddDurationToOrSubtractDurationFromPlainDateTime(operation, dateTime, durationLike, optionsParam) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(durationLike);\n    const options = GetOptionsObject(optionsParam);\n    const calendar = GetSlot(dateTime, CALENDAR);\n    const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = AddDateTime(GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND), calendar, sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds, options);\n    return CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n}\nexport function AddDurationToOrSubtractDurationFromPlainTime(operation, temporalTime, durationLike) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(durationLike);\n    let { hour, minute, second, millisecond, microsecond, nanosecond } = AddTime(GetSlot(temporalTime, ISO_HOUR), GetSlot(temporalTime, ISO_MINUTE), GetSlot(temporalTime, ISO_SECOND), GetSlot(temporalTime, ISO_MILLISECOND), GetSlot(temporalTime, ISO_MICROSECOND), GetSlot(temporalTime, ISO_NANOSECOND), sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds);\n    ({ hour, minute, second, millisecond, microsecond, nanosecond } = RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, 'reject'));\n    const PlainTime = GetIntrinsic('%Temporal.PlainTime%');\n    return new PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n}\nexport function AddDurationToOrSubtractDurationFromPlainYearMonth(operation, yearMonth, durationLike, optionsParam) {\n    let duration = ToTemporalDurationRecord(durationLike);\n    if (operation === 'subtract') {\n        duration = {\n            years: -duration.years,\n            months: -duration.months,\n            weeks: -duration.weeks,\n            days: -duration.days,\n            hours: -duration.hours,\n            minutes: -duration.minutes,\n            seconds: -duration.seconds,\n            milliseconds: -duration.milliseconds,\n            microseconds: -duration.microseconds,\n            nanoseconds: -duration.nanoseconds\n        };\n    }\n    let { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = duration;\n    ({ days } = BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 'day'));\n    const options = GetOptionsObject(optionsParam);\n    const calendar = GetSlot(yearMonth, CALENDAR);\n    const fieldNames = CalendarFields(calendar, ['monthCode', 'year']);\n    const fields = PrepareTemporalFields(yearMonth, fieldNames, []);\n    const sign = DurationSign(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    fields.day = sign < 0 ? ToPositiveInteger(CalendarDaysInMonth(calendar, yearMonth)) : 1;\n    // PrepareTemporalFields returns a type where 'day' is potentially undefined,\n    // and TS doesn't narrow the type as a result of the assignment above, so we\n    // cast the fields input to the new type.\n    const startDate = CalendarDateFromFields(calendar, fields);\n    const Duration = GetIntrinsic('%Temporal.Duration%');\n    const durationToAdd = new Duration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const optionsCopy = ObjectAssign(ObjectCreate(null), options);\n    const addedDate = CalendarDateAdd(calendar, startDate, durationToAdd, options);\n    const addedDateFields = PrepareTemporalFields(addedDate, fieldNames, []);\n    return CalendarYearMonthFromFields(calendar, addedDateFields, optionsCopy);\n}\nexport function AddDurationToOrSubtractDurationFromZonedDateTime(operation, zonedDateTime, durationLike, optionsParam) {\n    const sign = operation === 'subtract' ? -1 : 1;\n    const { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ToTemporalDurationRecord(durationLike);\n    const options = GetOptionsObject(optionsParam);\n    const timeZone = GetSlot(zonedDateTime, TIME_ZONE);\n    const calendar = GetSlot(zonedDateTime, CALENDAR);\n    const epochNanoseconds = AddZonedDateTime(GetSlot(zonedDateTime, INSTANT), timeZone, calendar, sign * years, sign * months, sign * weeks, sign * days, sign * hours, sign * minutes, sign * seconds, sign * milliseconds, sign * microseconds, sign * nanoseconds, options);\n    return CreateTemporalZonedDateTime(epochNanoseconds, timeZone, calendar);\n}\nfunction RoundNumberToIncrement(quantity, increment, mode) {\n    if (increment === 1)\n        return quantity;\n    let { quotient, remainder } = divmod(quantity, JSBI.BigInt(increment));\n    if (JSBI.equal(remainder, ZERO))\n        return quantity;\n    const sign = JSBI.lessThan(remainder, ZERO) ? -1 : 1;\n    switch (mode) {\n        case 'ceil':\n            if (sign > 0)\n                quotient = JSBI.add(quotient, JSBI.BigInt(sign));\n            break;\n        case 'floor':\n            if (sign < 0)\n                quotient = JSBI.add(quotient, JSBI.BigInt(sign));\n            break;\n        case 'trunc':\n            // no change needed, because divmod is a truncation\n            break;\n        case 'halfExpand':\n            // \"half up away from zero\"\n            if (JSBI.toNumber(abs(JSBI.multiply(remainder, JSBI.BigInt(2)))) >= increment) {\n                quotient = JSBI.add(quotient, JSBI.BigInt(sign));\n            }\n            break;\n    }\n    return JSBI.multiply(quotient, JSBI.BigInt(increment));\n}\nexport function RoundInstant(epochNs, increment, unit, roundingMode) {\n    // Note: NonNegativeModulo, but with BigInt\n    let remainder = JSBI.remainder(epochNs, JSBI.BigInt(86400e9));\n    if (JSBI.lessThan(remainder, ZERO))\n        remainder = JSBI.add(remainder, JSBI.BigInt(86400e9));\n    const wholeDays = JSBI.subtract(epochNs, remainder);\n    const roundedRemainder = RoundNumberToIncrement(remainder, nsPerTimeUnit[unit] * increment, roundingMode);\n    return JSBI.add(wholeDays, roundedRemainder);\n}\nexport function RoundISODateTime(yearParam, monthParam, dayParam, hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, increment, unit, roundingMode, dayLengthNs = 86400e9) {\n    const { deltaDays, hour, minute, second, millisecond, microsecond, nanosecond } = RoundTime(hourParam, minuteParam, secondParam, millisecondParam, microsecondParam, nanosecondParam, increment, unit, roundingMode, dayLengthNs);\n    const { year, month, day } = BalanceISODate(yearParam, monthParam, dayParam + deltaDays);\n    return { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond };\n}\nexport function RoundTime(hour, minute, second, millisecond, microsecond, nanosecond, increment, unit, roundingMode, dayLengthNs = 86400e9) {\n    let quantity = ZERO;\n    switch (unit) {\n        case 'day':\n        case 'hour':\n            quantity = JSBI.BigInt(hour);\n        // fall through\n        case 'minute':\n            quantity = JSBI.add(JSBI.multiply(quantity, SIXTY), JSBI.BigInt(minute));\n        // fall through\n        case 'second':\n            quantity = JSBI.add(JSBI.multiply(quantity, SIXTY), JSBI.BigInt(second));\n        // fall through\n        case 'millisecond':\n            quantity = JSBI.add(JSBI.multiply(quantity, THOUSAND), JSBI.BigInt(millisecond));\n        // fall through\n        case 'microsecond':\n            quantity = JSBI.add(JSBI.multiply(quantity, THOUSAND), JSBI.BigInt(microsecond));\n        // fall through\n        case 'nanosecond':\n            quantity = JSBI.add(JSBI.multiply(quantity, THOUSAND), JSBI.BigInt(nanosecond));\n    }\n    const nsPerUnit = unit === 'day' ? dayLengthNs : nsPerTimeUnit[unit];\n    const rounded = RoundNumberToIncrement(quantity, nsPerUnit * increment, roundingMode);\n    const result = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(nsPerUnit)));\n    switch (unit) {\n        case 'day':\n            return { deltaDays: result, hour: 0, minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0 };\n        case 'hour':\n            return BalanceTime(result, 0, 0, 0, 0, 0);\n        case 'minute':\n            return BalanceTime(hour, result, 0, 0, 0, 0);\n        case 'second':\n            return BalanceTime(hour, minute, result, 0, 0, 0);\n        case 'millisecond':\n            return BalanceTime(hour, minute, second, result, 0, 0);\n        case 'microsecond':\n            return BalanceTime(hour, minute, second, millisecond, result, 0);\n        case 'nanosecond':\n            return BalanceTime(hour, minute, second, millisecond, microsecond, result);\n        default:\n            throw new Error(`Invalid unit ${unit}`);\n    }\n}\nfunction DaysUntil(earlier, later) {\n    return DifferenceISODate(GetSlot(earlier, ISO_YEAR), GetSlot(earlier, ISO_MONTH), GetSlot(earlier, ISO_DAY), GetSlot(later, ISO_YEAR), GetSlot(later, ISO_MONTH), GetSlot(later, ISO_DAY), 'day').days;\n}\nfunction MoveRelativeDate(calendar, relativeToParam, duration) {\n    const later = CalendarDateAdd(calendar, relativeToParam, duration, undefined);\n    const days = DaysUntil(relativeToParam, later);\n    return { relativeTo: later, days };\n}\nexport function MoveRelativeZonedDateTime(relativeTo, years, months, weeks, days) {\n    const timeZone = GetSlot(relativeTo, TIME_ZONE);\n    const calendar = GetSlot(relativeTo, CALENDAR);\n    const intermediateNs = AddZonedDateTime(GetSlot(relativeTo, INSTANT), timeZone, calendar, years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    return CreateTemporalZonedDateTime(intermediateNs, timeZone, calendar);\n}\nexport function AdjustRoundedDurationDays(yearsParam, monthsParam, weeksParam, daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, increment, unit, roundingMode, relativeTo) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    let hours = hoursParam;\n    let minutes = minutesParam;\n    let seconds = secondsParam;\n    let milliseconds = millisecondsParam;\n    let microseconds = microsecondsParam;\n    let nanoseconds = nanosecondsParam;\n    if (!IsTemporalZonedDateTime(relativeTo) ||\n        unit === 'year' ||\n        unit === 'month' ||\n        unit === 'week' ||\n        unit === 'day' ||\n        (unit === 'nanosecond' && increment === 1)) {\n        return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n    }\n    // There's one more round of rounding possible: if relativeTo is a\n    // ZonedDateTime, the time units could have rounded up into enough hours\n    // to exceed the day length. If this happens, grow the date part by a\n    // single day and re-run exact time rounding on the smaller remainder. DO\n    // NOT RECURSE, because once the extra hours are sucked up into the date\n    // duration, there's no way for another full day to come from the next\n    // round of rounding. And if it were possible (e.g. contrived calendar\n    // with 30-minute-long \"days\") then it'd risk an infinite loop.\n    let timeRemainderNs = TotalDurationNanoseconds(0, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 0);\n    const direction = MathSign(JSBI.toNumber(timeRemainderNs));\n    const timeZone = GetSlot(relativeTo, TIME_ZONE);\n    const calendar = GetSlot(relativeTo, CALENDAR);\n    const dayStart = AddZonedDateTime(GetSlot(relativeTo, INSTANT), timeZone, calendar, years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n    const dayEnd = AddZonedDateTime(new TemporalInstant(dayStart), timeZone, calendar, 0, 0, 0, direction, 0, 0, 0, 0, 0, 0);\n    const dayLengthNs = JSBI.subtract(dayEnd, dayStart);\n    if (JSBI.greaterThanOrEqual(JSBI.multiply(JSBI.subtract(timeRemainderNs, dayLengthNs), JSBI.BigInt(direction)), ZERO)) {\n        ({ years, months, weeks, days } = AddDuration(years, months, weeks, days, 0, 0, 0, 0, 0, 0, 0, 0, 0, direction, 0, 0, 0, 0, 0, 0, relativeTo));\n        timeRemainderNs = RoundInstant(JSBI.subtract(timeRemainderNs, dayLengthNs), increment, unit, roundingMode);\n        ({ hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = BalanceDuration(0, 0, 0, 0, 0, 0, JSBI.toNumber(timeRemainderNs), 'hour'));\n    }\n    return { years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds };\n}\nexport function RoundDuration(yearsParam, monthsParam, weeksParam, daysParam, hoursParam, minutesParam, secondsParam, millisecondsParam, microsecondsParam, nanosecondsParam, increment, unit, roundingMode, relativeToParam = undefined) {\n    let years = yearsParam;\n    let months = monthsParam;\n    let weeks = weeksParam;\n    let days = daysParam;\n    let hours = hoursParam;\n    let minutes = minutesParam;\n    let seconds = secondsParam;\n    let milliseconds = millisecondsParam;\n    let microseconds = microsecondsParam;\n    let nanoseconds = JSBI.BigInt(nanosecondsParam);\n    const TemporalDuration = GetIntrinsic('%Temporal.Duration%');\n    let calendar, zdtRelative;\n    // A cast is used below because relativeTo will be either PlainDate or\n    // undefined for the rest of this long method (after any ZDT=>PlainDate\n    // conversion below), and TS isn't smart enough to know that the type has\n    // changed. See https://github.com/microsoft/TypeScript/issues/27706.\n    let relativeTo = relativeToParam;\n    if (relativeTo) {\n        if (IsTemporalZonedDateTime(relativeTo)) {\n            zdtRelative = relativeTo;\n            relativeTo = ToTemporalDate(relativeTo);\n        }\n        else if (!IsTemporalDate(relativeTo)) {\n            throw new TypeError('starting point must be PlainDate or ZonedDateTime');\n        }\n        calendar = GetSlot(relativeTo, CALENDAR);\n    }\n    // First convert time units up to days, if rounding to days or higher units.\n    // If rounding relative to a ZonedDateTime, then some days may not be 24h.\n    // TS doesn't know that `dayLengthNs` is only used if the unit is day or\n    // larger. We'll cast away `undefined` when it's used lower down below.\n    let dayLengthNs;\n    if (unit === 'year' || unit === 'month' || unit === 'week' || unit === 'day') {\n        nanoseconds = TotalDurationNanoseconds(0, hours, minutes, seconds, milliseconds, microseconds, nanosecondsParam, 0);\n        let intermediate;\n        if (zdtRelative) {\n            intermediate = MoveRelativeZonedDateTime(zdtRelative, years, months, weeks, days);\n        }\n        let deltaDays;\n        let dayLength;\n        ({ days: deltaDays, nanoseconds, dayLengthNs: dayLength } = NanosecondsToDays(nanoseconds, intermediate));\n        dayLengthNs = JSBI.BigInt(dayLength);\n        days += deltaDays;\n        hours = minutes = seconds = milliseconds = microseconds = 0;\n    }\n    let total;\n    switch (unit) {\n        case 'year': {\n            if (!calendar)\n                throw new RangeError('A starting point is required for years rounding');\n            // convert months and weeks to days by calculating difference(\n            // relativeTo + years, relativeTo + { years, months, weeks })\n            const yearsDuration = new TemporalDuration(years);\n            const dateAdd = calendar.dateAdd;\n            const yearsLater = CalendarDateAdd(calendar, relativeTo, yearsDuration, undefined, dateAdd);\n            const yearsMonthsWeeks = new TemporalDuration(years, months, weeks);\n            const yearsMonthsWeeksLater = CalendarDateAdd(calendar, relativeTo, yearsMonthsWeeks, undefined, dateAdd);\n            const monthsWeeksInDays = DaysUntil(yearsLater, yearsMonthsWeeksLater);\n            relativeTo = yearsLater;\n            days += monthsWeeksInDays;\n            const daysLater = CalendarDateAdd(calendar, relativeTo, { days }, undefined, dateAdd);\n            const untilOptions = ObjectCreate(null);\n            untilOptions.largestUnit = 'year';\n            const yearsPassed = CalendarDateUntil(calendar, relativeTo, daysLater, untilOptions).years;\n            years += yearsPassed;\n            const oldRelativeTo = relativeTo;\n            relativeTo = CalendarDateAdd(calendar, relativeTo, { years: yearsPassed }, undefined, dateAdd);\n            const daysPassed = DaysUntil(oldRelativeTo, relativeTo);\n            days -= daysPassed;\n            const oneYear = new TemporalDuration(days < 0 ? -1 : 1);\n            let { days: oneYearDays } = MoveRelativeDate(calendar, relativeTo, oneYear);\n            // Note that `nanoseconds` below (here and in similar code for months,\n            // weeks, and days further below) isn't actually nanoseconds for the\n            // full date range.  Instead, it's a BigInt representation of total\n            // days multiplied by the number of nanoseconds in the last day of\n            // the duration. This lets us do days-or-larger rounding using BigInt\n            // math which reduces precision loss.\n            oneYearDays = MathAbs(oneYearDays);\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = JSBI.multiply(JSBI.BigInt(oneYearDays), dayLengthNs);\n            nanoseconds = JSBI.add(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(years)), JSBI.multiply(JSBI.BigInt(days), dayLengthNs)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            years = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            months = weeks = days = 0;\n            break;\n        }\n        case 'month': {\n            if (!calendar)\n                throw new RangeError('A starting point is required for months rounding');\n            // convert weeks to days by calculating difference(relativeTo +\n            //   { years, months }, relativeTo + { years, months, weeks })\n            const yearsMonths = new TemporalDuration(years, months);\n            const dateAdd = calendar.dateAdd;\n            const yearsMonthsLater = CalendarDateAdd(calendar, relativeTo, yearsMonths, undefined, dateAdd);\n            const yearsMonthsWeeks = new TemporalDuration(years, months, weeks);\n            const yearsMonthsWeeksLater = CalendarDateAdd(calendar, relativeTo, yearsMonthsWeeks, undefined, dateAdd);\n            const weeksInDays = DaysUntil(yearsMonthsLater, yearsMonthsWeeksLater);\n            relativeTo = yearsMonthsLater;\n            days += weeksInDays;\n            // Months may be different lengths of days depending on the calendar,\n            // convert days to months in a loop as described above under 'years'.\n            const sign = MathSign(days);\n            const oneMonth = new TemporalDuration(0, days < 0 ? -1 : 1);\n            let oneMonthDays;\n            ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            while (MathAbs(days) >= MathAbs(oneMonthDays)) {\n                months += sign;\n                days -= oneMonthDays;\n                ({ relativeTo, days: oneMonthDays } = MoveRelativeDate(calendar, relativeTo, oneMonth));\n            }\n            oneMonthDays = MathAbs(oneMonthDays);\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = JSBI.multiply(JSBI.BigInt(oneMonthDays), dayLengthNs);\n            nanoseconds = JSBI.add(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(months)), JSBI.multiply(JSBI.BigInt(days), dayLengthNs)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            months = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            weeks = days = 0;\n            break;\n        }\n        case 'week': {\n            if (!calendar)\n                throw new RangeError('A starting point is required for weeks rounding');\n            // Weeks may be different lengths of days depending on the calendar,\n            // convert days to weeks in a loop as described above under 'years'.\n            const sign = MathSign(days);\n            const oneWeek = new TemporalDuration(0, 0, days < 0 ? -1 : 1);\n            let oneWeekDays;\n            ({ relativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            while (MathAbs(days) >= MathAbs(oneWeekDays)) {\n                weeks += sign;\n                days -= oneWeekDays;\n                ({ relativeTo, days: oneWeekDays } = MoveRelativeDate(calendar, relativeTo, oneWeek));\n            }\n            oneWeekDays = MathAbs(oneWeekDays);\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = JSBI.multiply(JSBI.BigInt(oneWeekDays), dayLengthNs);\n            nanoseconds = JSBI.add(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(weeks)), JSBI.multiply(JSBI.BigInt(days), dayLengthNs)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            weeks = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            days = 0;\n            break;\n        }\n        case 'day': {\n            // dayLengthNs is never undefined if unit is `day` or larger.\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const divisor = dayLengthNs;\n            nanoseconds = JSBI.add(JSBI.multiply(divisor, JSBI.BigInt(days)), nanoseconds);\n            const rounded = RoundNumberToIncrement(nanoseconds, JSBI.toNumber(JSBI.multiply(divisor, JSBI.BigInt(increment))), roundingMode);\n            total = JSBI.toNumber(nanoseconds) / JSBI.toNumber(divisor);\n            days = JSBI.toNumber(JSBI.divide(rounded, divisor));\n            nanoseconds = ZERO;\n            break;\n        }\n        case 'hour': {\n            const divisor = 3600e9;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(hours), JSBI.BigInt(3600e9));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(minutes), JSBI.BigInt(60e9)));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(seconds), BILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(milliseconds), MILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            hours = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            minutes = seconds = milliseconds = microseconds = 0;\n            break;\n        }\n        case 'minute': {\n            const divisor = 60e9;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(minutes), JSBI.BigInt(60e9));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(seconds), BILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(milliseconds), MILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            minutes = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            seconds = milliseconds = microseconds = 0;\n            break;\n        }\n        case 'second': {\n            const divisor = 1e9;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(seconds), BILLION);\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(milliseconds), MILLION));\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            seconds = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            milliseconds = microseconds = 0;\n            break;\n        }\n        case 'millisecond': {\n            const divisor = 1e6;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(milliseconds), MILLION);\n            allNanoseconds = JSBI.add(allNanoseconds, JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND));\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            milliseconds = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            microseconds = 0;\n            break;\n        }\n        case 'microsecond': {\n            const divisor = 1e3;\n            let allNanoseconds = JSBI.multiply(JSBI.BigInt(microseconds), THOUSAND);\n            allNanoseconds = JSBI.add(allNanoseconds, nanoseconds);\n            total = JSBI.toNumber(allNanoseconds) / divisor;\n            const rounded = RoundNumberToIncrement(allNanoseconds, divisor * increment, roundingMode);\n            microseconds = JSBI.toNumber(JSBI.divide(rounded, JSBI.BigInt(divisor)));\n            nanoseconds = ZERO;\n            break;\n        }\n        case 'nanosecond': {\n            total = JSBI.toNumber(nanoseconds);\n            nanoseconds = RoundNumberToIncrement(nanoseconds, increment, roundingMode);\n            break;\n        }\n    }\n    return {\n        years,\n        months,\n        weeks,\n        days,\n        hours,\n        minutes,\n        seconds,\n        milliseconds,\n        microseconds,\n        nanoseconds: JSBI.toNumber(nanoseconds),\n        total\n    };\n}\nexport function CompareISODate(y1, m1, d1, y2, m2, d2) {\n    for (const [x, y] of [\n        [y1, y2],\n        [m1, m2],\n        [d1, d2]\n    ]) {\n        if (x !== y)\n            return ComparisonResult(x - y);\n    }\n    return 0;\n}\nfunction NonNegativeModulo(x, y) {\n    let result = x % y;\n    if (ObjectIs(result, -0))\n        return 0;\n    if (result < 0)\n        result += y;\n    return result;\n}\nexport function ToBigIntExternal(arg) {\n    const jsbiBI = ToBigInt(arg);\n    if (typeof globalThis.BigInt !== 'undefined')\n        return globalThis.BigInt(jsbiBI.toString(10));\n    return jsbiBI;\n}\nexport function ToBigInt(arg) {\n    if (arg instanceof JSBI) {\n        return arg;\n    }\n    let prim = arg;\n    if (typeof arg === 'object') {\n        const toPrimFn = arg[Symbol.toPrimitive];\n        if (toPrimFn && typeof toPrimFn === 'function') {\n            prim = ReflectApply(toPrimFn, arg, ['number']);\n        }\n    }\n    switch (typeof prim) {\n        case 'undefined':\n        case 'object':\n        case 'number':\n        case 'symbol':\n        default:\n            throw new TypeError(`cannot convert ${typeof arg} to bigint`);\n        case 'string':\n            if (!prim.match(/^\\s*(?:[+-]?\\d+\\s*)?$/)) {\n                throw new SyntaxError('invalid BigInt syntax');\n            }\n        // eslint: no-fallthrough: false\n        case 'bigint':\n            try {\n                return JSBI.BigInt(prim.toString());\n            }\n            catch (e) {\n                if (e instanceof Error && e.message.startsWith('Invalid integer'))\n                    throw new SyntaxError(e.message);\n                throw e;\n            }\n        case 'boolean':\n            if (prim) {\n                return ONE;\n            }\n            else {\n                return ZERO;\n            }\n    }\n}\n// Note: This method returns values with bogus nanoseconds based on the previous iteration's\n// milliseconds. That way there is a guarantee that the full nanoseconds are always going to be\n// increasing at least and that the microsecond and nanosecond fields are likely to be non-zero.\nexport const SystemUTCEpochNanoSeconds = (() => {\n    let ns = JSBI.BigInt(Date.now() % 1e6);\n    return () => {\n        const ms = JSBI.BigInt(Date.now());\n        const result = JSBI.add(JSBI.multiply(ms, MILLION), ns);\n        ns = JSBI.remainder(ms, MILLION);\n        if (JSBI.greaterThan(result, NS_MAX))\n            return NS_MAX;\n        if (JSBI.lessThan(result, NS_MIN))\n            return NS_MIN;\n        return result;\n    };\n})();\nexport function SystemTimeZone() {\n    const fmt = new IntlDateTimeFormat('en-us');\n    const TemporalTimeZone = GetIntrinsic('%Temporal.TimeZone%');\n    return new TemporalTimeZone(ParseTemporalTimeZone(fmt.resolvedOptions().timeZone));\n}\nexport function ComparisonResult(value) {\n    return value < 0 ? -1 : value > 0 ? 1 : value;\n}\nexport function GetOptionsObject(options) {\n    if (options === undefined)\n        return ObjectCreate(null);\n    if (IsObject(options) && options !== null)\n        return options;\n    throw new TypeError(`Options parameter must be an object, not ${options === null ? 'null' : `${typeof options}`}`);\n}\nexport function CreateOnePropObject(propName, propValue) {\n    const o = ObjectCreate(null);\n    o[propName] = propValue;\n    return o;\n}\nfunction GetOption(options, property, allowedValues, fallback) {\n    let value = options[property];\n    if (value !== undefined) {\n        value = ToString(value);\n        if (!allowedValues.includes(value)) {\n            throw new RangeError(`${property} must be one of ${allowedValues.join(', ')}, not ${value}`);\n        }\n        return value;\n    }\n    return fallback;\n}\nfunction GetNumberOption(options, property, minimum, maximum, fallback) {\n    let valueRaw = options[property];\n    if (valueRaw === undefined)\n        return fallback;\n    const value = ToNumber(valueRaw);\n    if (NumberIsNaN(value) || value < minimum || value > maximum) {\n        throw new RangeError(`${String(property)} must be between ${minimum} and ${maximum}, not ${value}`);\n    }\n    return MathFloor(value);\n}\nexport function IsBuiltinCalendar(id) {\n    return ArrayIncludes.call(BUILTIN_CALENDAR_IDS, id);\n}\nconst OFFSET = new RegExp(`^${PARSE.offset.source}$`);\nfunction bisect(getState, leftParam, rightParam, lstateParam = getState(leftParam), rstateParam = getState(rightParam)) {\n    // This doesn't make much sense - why do these get converted unnecessarily?\n    let left = JSBI.BigInt(leftParam);\n    let right = JSBI.BigInt(rightParam);\n    let lstate = lstateParam;\n    let rstate = rstateParam;\n    while (JSBI.greaterThan(JSBI.subtract(right, left), ONE)) {\n        const middle = JSBI.divide(JSBI.add(left, right), JSBI.BigInt(2));\n        const mstate = getState(middle);\n        if (mstate === lstate) {\n            left = middle;\n            lstate = mstate;\n        }\n        else if (mstate === rstate) {\n            right = middle;\n            rstate = mstate;\n        }\n        else {\n            throw new Error(`invalid state in bisection ${lstate} - ${mstate} - ${rstate}`);\n        }\n    }\n    return right;\n}\nconst nsPerTimeUnit = {\n    hour: 3600e9,\n    minute: 60e9,\n    second: 1e9,\n    millisecond: 1e6,\n    microsecond: 1e3,\n    nanosecond: 1\n};\n//# sourceMappingURL=ecmascript.js.map", "import * as ES from './ecmascript';\nimport { GetIntrinsic } from './intrinsicclass';\nimport { GetSlot, INSTANT, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, TIME_ZONE } from './slots';\nconst DATE = Symbol('date');\nconst YM = Symbol('ym');\nconst MD = Symbol('md');\nconst TIME = Symbol('time');\nconst DATETIME = Symbol('datetime');\nconst ZONED = Symbol('zoneddatetime');\nconst INST = Symbol('instant');\nconst ORIGINAL = Symbol('original');\nconst TZ_RESOLVED = Symbol('timezone');\nconst TZ_GIVEN = Symbol('timezone-id-given');\nconst CAL_ID = Symbol('calendar-id');\nconst LOCALE = Symbol('locale');\nconst OPTIONS = Symbol('options');\nconst descriptor = (value) => {\n    return {\n        value,\n        enumerable: true,\n        writable: false,\n        configurable: true\n    };\n};\nconst IntlDateTimeFormat = globalThis.Intl.DateTimeFormat;\nconst ObjectAssign = Object.assign;\nconst ObjectHasOwnProperty = Object.prototype.hasOwnProperty;\nconst ReflectApply = Reflect.apply;\n// Construction of built-in Intl.DateTimeFormat objects is sloooooow,\n// so we'll only create those instances when we need them.\n// See https://bugs.chromium.org/p/v8/issues/detail?id=6528\nfunction getPropLazy(obj, prop) {\n    let val = obj[prop];\n    if (typeof val === 'function') {\n        // If we get here, `val` is an \"amender function\". It will take the user's\n        // options and transform them into suitable options to be passed into the\n        // built-in (non-polyfill) Intl.DateTimeFormat constructor. These options\n        // will vary depending on the Temporal type, so that's why we store separate\n        // formatters in separate props on the polyfill's DateTimeFormat instances.\n        // The efficiency happens because we don't create an (expensive) formatter\n        // until the user calls toLocaleString for that Temporal type.\n        val = new IntlDateTimeFormat(obj[LOCALE], val(obj[OPTIONS]));\n        // TODO: can this be typed more cleanly?\n        obj[prop] = val;\n    }\n    return val;\n}\n// Similarly, lazy-init TimeZone instances.\nfunction getResolvedTimeZoneLazy(obj) {\n    let val = obj[TZ_RESOLVED];\n    if (typeof val === 'string') {\n        val = ES.ToTemporalTimeZone(val);\n        obj[TZ_RESOLVED] = val;\n    }\n    return val;\n}\nfunction DateTimeFormatImpl(locale = undefined, optionsParam = {}) {\n    if (!(this instanceof DateTimeFormatImpl)) {\n        return new DateTimeFormatImpl(locale, optionsParam);\n    }\n    const hasOptions = typeof optionsParam !== 'undefined';\n    const options = hasOptions ? ObjectAssign({}, optionsParam) : {};\n    // TODO: remove type assertion after Temporal types land in TS lib types\n    const original = new IntlDateTimeFormat(locale, options);\n    const ro = original.resolvedOptions();\n    // DateTimeFormat instances are very expensive to create. Therefore, they will\n    // be lazily created only when needed, using the locale and options provided.\n    // But it's possible for callers to mutate those inputs before lazy creation\n    // happens. For this reason, we clone the inputs instead of caching the\n    // original objects. To avoid the complexity of deep cloning any inputs that\n    // are themselves objects (e.g. the locales array, or options property values\n    // that will be coerced to strings), we rely on `resolvedOptions()` to do the\n    // coercion and cloning for us. Unfortunately, we can't just use the resolved\n    // options as-is because our options-amending logic adds additional fields if\n    // the user doesn't supply any unit fields like year, month, day, hour, etc.\n    // Therefore, we limit the properties in the clone to properties that were\n    // present in the original input.\n    if (hasOptions) {\n        const clonedResolved = ObjectAssign({}, ro);\n        for (const prop in clonedResolved) {\n            if (!ReflectApply(ObjectHasOwnProperty, options, [prop])) {\n                delete clonedResolved[prop];\n            }\n        }\n        this[OPTIONS] = clonedResolved;\n    }\n    else {\n        this[OPTIONS] = options;\n    }\n    this[TZ_GIVEN] = options.timeZone ? options.timeZone : null;\n    this[LOCALE] = ro.locale;\n    this[ORIGINAL] = original;\n    this[TZ_RESOLVED] = ro.timeZone;\n    this[CAL_ID] = ro.calendar;\n    this[DATE] = dateAmend;\n    this[YM] = yearMonthAmend;\n    this[MD] = monthDayAmend;\n    this[TIME] = timeAmend;\n    this[DATETIME] = datetimeAmend;\n    this[ZONED] = zonedDateTimeAmend;\n    this[INST] = instantAmend;\n    return undefined; // TODO: I couldn't satisfy TS without adding this. Is there another way?\n}\nObject.defineProperty(DateTimeFormatImpl, 'name', {\n    writable: true,\n    value: 'DateTimeFormat'\n});\nDateTimeFormatImpl.supportedLocalesOf = function (locales, options) {\n    return IntlDateTimeFormat.supportedLocalesOf(locales, options);\n};\nconst propertyDescriptors = {\n    resolvedOptions: descriptor(resolvedOptions),\n    format: descriptor(format),\n    formatRange: descriptor(formatRange)\n};\nif ('formatToParts' in IntlDateTimeFormat.prototype) {\n    propertyDescriptors.formatToParts = descriptor(formatToParts);\n}\nif ('formatRangeToParts' in IntlDateTimeFormat.prototype) {\n    propertyDescriptors.formatRangeToParts = descriptor(formatRangeToParts);\n}\nDateTimeFormatImpl.prototype = Object.create(IntlDateTimeFormat.prototype, propertyDescriptors);\n// Ensure that the prototype isn't writeable.\nObject.defineProperty(DateTimeFormatImpl, 'prototype', {\n    writable: false,\n    enumerable: false,\n    configurable: false\n});\nexport const DateTimeFormat = DateTimeFormatImpl;\nfunction resolvedOptions() {\n    return this[ORIGINAL].resolvedOptions();\n}\nfunction adjustFormatterTimeZone(formatter, timeZone) {\n    if (!timeZone)\n        return formatter;\n    const options = formatter.resolvedOptions();\n    if (options.timeZone === timeZone)\n        return formatter;\n    // Existing Intl isn't typed to accept Temporal-specific options and the lib\n    // types for resolved options are less restrictive than the types for options.\n    // For example, `weekday` is\n    // `'long' | 'short' | 'narrow'` in options but `string` in resolved options.\n    // TODO: investigate why, and file an issue against TS if it's a bug.\n    if (options['dateStyle'] || options['timeStyle']) {\n        // Unfortunately, Safari's resolvedOptions include parameters that will\n        // cause errors at runtime if passed along with\n        // dateStyle or timeStyle options as per\n        // https://tc39.es/proposal-intl-datetime-style/#table-datetimeformat-components.\n        // This has been fixed in newer versions of Safari:\n        // https://bugs.webkit.org/show_bug.cgi?id=231041\n        delete options['weekday'];\n        delete options['era'];\n        delete options['year'];\n        delete options['month'];\n        delete options['day'];\n        delete options['hour'];\n        delete options['minute'];\n        delete options['second'];\n        delete options['timeZoneName'];\n        delete options['hourCycle'];\n        delete options['hour12'];\n        delete options['dayPeriod'];\n    }\n    return new IntlDateTimeFormat(options.locale, { ...options, timeZone });\n}\n// TODO: investigate why there's a rest parameter here. Does this function really need to accept extra params?\n// And if so, why doesn't formatRange also accept extra params?\nfunction format(datetime, ...rest) {\n    let { instant, formatter, timeZone } = extractOverrides(datetime, this);\n    if (instant && formatter) {\n        formatter = adjustFormatterTimeZone(formatter, timeZone);\n        return formatter.format(instant.epochMilliseconds);\n    }\n    return this[ORIGINAL].format(datetime, ...rest);\n}\nfunction formatToParts(datetime, ...rest) {\n    let { instant, formatter, timeZone } = extractOverrides(datetime, this);\n    if (instant && formatter) {\n        formatter = adjustFormatterTimeZone(formatter, timeZone);\n        return formatter.formatToParts(instant.epochMilliseconds);\n    }\n    return this[ORIGINAL].formatToParts(datetime, ...rest);\n}\nfunction formatRange(a, b) {\n    if (isTemporalObject(a) || isTemporalObject(b)) {\n        if (!sameTemporalType(a, b)) {\n            throw new TypeError('Intl.DateTimeFormat.formatRange accepts two values of the same type');\n        }\n        const { instant: aa, formatter: aformatter, timeZone: atz } = extractOverrides(a, this);\n        const { instant: bb, formatter: bformatter, timeZone: btz } = extractOverrides(b, this);\n        if (atz && btz && atz !== btz) {\n            throw new RangeError('cannot format range between different time zones');\n        }\n        if (aa && bb && aformatter && bformatter && aformatter === bformatter) {\n            const formatter = adjustFormatterTimeZone(aformatter, atz);\n            // TODO: Remove type assertion after this method lands in TS lib types\n            return formatter.formatRange(aa.epochMilliseconds, bb.epochMilliseconds);\n        }\n    }\n    // TODO: Remove type assertion after this method lands in TS lib types\n    return this[ORIGINAL].formatRange(a, b);\n}\nfunction formatRangeToParts(a, b) {\n    if (isTemporalObject(a) || isTemporalObject(b)) {\n        if (!sameTemporalType(a, b)) {\n            throw new TypeError('Intl.DateTimeFormat.formatRangeToParts accepts two values of the same type');\n        }\n        const { instant: aa, formatter: aformatter, timeZone: atz } = extractOverrides(a, this);\n        const { instant: bb, formatter: bformatter, timeZone: btz } = extractOverrides(b, this);\n        if (atz && btz && atz !== btz) {\n            throw new RangeError('cannot format range between different time zones');\n        }\n        if (aa && bb && aformatter && bformatter && aformatter === bformatter) {\n            const formatter = adjustFormatterTimeZone(aformatter, atz);\n            // TODO: Remove type assertion after this method lands in TS lib types\n            return formatter.formatRangeToParts(aa.epochMilliseconds, bb.epochMilliseconds);\n        }\n    }\n    // TODO: Remove type assertion after this method lands in TS lib types\n    return this[ORIGINAL].formatRangeToParts(a, b);\n}\nfunction amend(optionsParam = {}, amended = {}) {\n    const options = ObjectAssign({}, optionsParam);\n    for (const opt of [\n        'year',\n        'month',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'weekday',\n        'dayPeriod',\n        'timeZoneName',\n        'dateStyle',\n        'timeStyle'\n    ]) {\n        options[opt] = opt in amended ? amended[opt] : options[opt];\n        if (options[opt] === false || options[opt] === undefined)\n            delete options[opt];\n    }\n    return options;\n}\nfunction timeAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        year: false,\n        month: false,\n        day: false,\n        weekday: false,\n        timeZoneName: false,\n        dateStyle: false\n    });\n    if (!hasTimeOptions(options)) {\n        options = ObjectAssign({}, options, {\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n    }\n    return options;\n}\nfunction yearMonthAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        day: false,\n        hour: false,\n        minute: false,\n        second: false,\n        weekday: false,\n        dayPeriod: false,\n        timeZoneName: false,\n        dateStyle: false,\n        timeStyle: false\n    });\n    if (!('year' in options || 'month' in options)) {\n        options = ObjectAssign(options, { year: 'numeric', month: 'numeric' });\n    }\n    return options;\n}\nfunction monthDayAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        year: false,\n        hour: false,\n        minute: false,\n        second: false,\n        weekday: false,\n        dayPeriod: false,\n        timeZoneName: false,\n        dateStyle: false,\n        timeStyle: false\n    });\n    if (!('month' in options || 'day' in options)) {\n        options = ObjectAssign({}, options, { month: 'numeric', day: 'numeric' });\n    }\n    return options;\n}\nfunction dateAmend(optionsParam) {\n    let options = amend(optionsParam, {\n        hour: false,\n        minute: false,\n        second: false,\n        dayPeriod: false,\n        timeZoneName: false,\n        timeStyle: false\n    });\n    if (!hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric'\n        });\n    }\n    return options;\n}\nfunction datetimeAmend(optionsParam) {\n    let options = amend(optionsParam, { timeZoneName: false });\n    if (!hasTimeOptions(options) && !hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n    }\n    return options;\n}\nfunction zonedDateTimeAmend(optionsParam) {\n    let options = optionsParam;\n    if (!hasTimeOptions(options) && !hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n        if (options.timeZoneName === undefined)\n            options.timeZoneName = 'short';\n    }\n    return options;\n}\nfunction instantAmend(optionsParam) {\n    let options = optionsParam;\n    if (!hasTimeOptions(options) && !hasDateOptions(options)) {\n        options = ObjectAssign({}, options, {\n            year: 'numeric',\n            month: 'numeric',\n            day: 'numeric',\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric'\n        });\n    }\n    return options;\n}\nfunction hasDateOptions(options) {\n    return 'year' in options || 'month' in options || 'day' in options || 'weekday' in options || 'dateStyle' in options;\n}\nfunction hasTimeOptions(options) {\n    return ('hour' in options || 'minute' in options || 'second' in options || 'timeStyle' in options || 'dayPeriod' in options);\n}\nfunction isTemporalObject(obj) {\n    return (ES.IsTemporalDate(obj) ||\n        ES.IsTemporalTime(obj) ||\n        ES.IsTemporalDateTime(obj) ||\n        ES.IsTemporalZonedDateTime(obj) ||\n        ES.IsTemporalYearMonth(obj) ||\n        ES.IsTemporalMonthDay(obj) ||\n        ES.IsTemporalInstant(obj));\n}\nfunction sameTemporalType(x, y) {\n    if (!isTemporalObject(x) || !isTemporalObject(y))\n        return false;\n    if (ES.IsTemporalTime(x) && !ES.IsTemporalTime(y))\n        return false;\n    if (ES.IsTemporalDate(x) && !ES.IsTemporalDate(y))\n        return false;\n    if (ES.IsTemporalDateTime(x) && !ES.IsTemporalDateTime(y))\n        return false;\n    if (ES.IsTemporalZonedDateTime(x) && !ES.IsTemporalZonedDateTime(y))\n        return false;\n    if (ES.IsTemporalYearMonth(x) && !ES.IsTemporalYearMonth(y))\n        return false;\n    if (ES.IsTemporalMonthDay(x) && !ES.IsTemporalMonthDay(y))\n        return false;\n    if (ES.IsTemporalInstant(x) && !ES.IsTemporalInstant(y))\n        return false;\n    return true;\n}\nfunction extractOverrides(temporalObj, main) {\n    const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n    if (ES.IsTemporalTime(temporalObj)) {\n        const hour = GetSlot(temporalObj, ISO_HOUR);\n        const minute = GetSlot(temporalObj, ISO_MINUTE);\n        const second = GetSlot(temporalObj, ISO_SECOND);\n        const millisecond = GetSlot(temporalObj, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalObj, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalObj, ISO_NANOSECOND);\n        const datetime = new DateTime(1970, 1, 1, hour, minute, second, millisecond, microsecond, nanosecond, main[CAL_ID]);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, TIME)\n        };\n    }\n    if (ES.IsTemporalYearMonth(temporalObj)) {\n        const isoYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const referenceISODay = GetSlot(temporalObj, ISO_DAY);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainYearMonth with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const datetime = new DateTime(isoYear, isoMonth, referenceISODay, 12, 0, 0, 0, 0, 0, calendar);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, YM)\n        };\n    }\n    if (ES.IsTemporalMonthDay(temporalObj)) {\n        const referenceISOYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const isoDay = GetSlot(temporalObj, ISO_DAY);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainMonthDay with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const datetime = new DateTime(referenceISOYear, isoMonth, isoDay, 12, 0, 0, 0, 0, 0, calendar);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, MD)\n        };\n    }\n    if (ES.IsTemporalDate(temporalObj)) {\n        const isoYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const isoDay = GetSlot(temporalObj, ISO_DAY);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== 'iso8601' && calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainDate with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const datetime = new DateTime(isoYear, isoMonth, isoDay, 12, 0, 0, 0, 0, 0, main[CAL_ID]);\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, DATE)\n        };\n    }\n    if (ES.IsTemporalDateTime(temporalObj)) {\n        const isoYear = GetSlot(temporalObj, ISO_YEAR);\n        const isoMonth = GetSlot(temporalObj, ISO_MONTH);\n        const isoDay = GetSlot(temporalObj, ISO_DAY);\n        const hour = GetSlot(temporalObj, ISO_HOUR);\n        const minute = GetSlot(temporalObj, ISO_MINUTE);\n        const second = GetSlot(temporalObj, ISO_SECOND);\n        const millisecond = GetSlot(temporalObj, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalObj, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalObj, ISO_NANOSECOND);\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== 'iso8601' && calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format PlainDateTime with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        let datetime = temporalObj;\n        if (calendar === 'iso8601') {\n            datetime = new DateTime(isoYear, isoMonth, isoDay, hour, minute, second, millisecond, microsecond, nanosecond, main[CAL_ID]);\n        }\n        return {\n            instant: ES.BuiltinTimeZoneGetInstantFor(getResolvedTimeZoneLazy(main), datetime, 'compatible'),\n            formatter: getPropLazy(main, DATETIME)\n        };\n    }\n    if (ES.IsTemporalZonedDateTime(temporalObj)) {\n        const calendar = ES.ToString(GetSlot(temporalObj, CALENDAR));\n        if (calendar !== 'iso8601' && calendar !== main[CAL_ID]) {\n            throw new RangeError(`cannot format ZonedDateTime with calendar ${calendar} in locale with calendar ${main[CAL_ID]}`);\n        }\n        const timeZone = GetSlot(temporalObj, TIME_ZONE);\n        const objTimeZone = ES.ToString(timeZone);\n        if (main[TZ_GIVEN] && main[TZ_GIVEN] !== objTimeZone) {\n            throw new RangeError(`timeZone option ${main[TZ_GIVEN]} doesn't match actual time zone ${objTimeZone}`);\n        }\n        return {\n            instant: GetSlot(temporalObj, INSTANT),\n            formatter: getPropLazy(main, ZONED),\n            timeZone: objTimeZone\n        };\n    }\n    if (ES.IsTemporalInstant(temporalObj)) {\n        return {\n            instant: temporalObj,\n            formatter: getPropLazy(main, INST)\n        };\n    }\n    return {};\n}\n//# sourceMappingURL=intl.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { EPOCHNANOSECONDS, CreateSlots, GetSlot, SetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nimport JSBI from 'jsbi';\nimport { BILLION, MILLION, THOUSAND } from './ecmascript';\nexport class Instant {\n    constructor(epochNanoseconds) {\n        // Note: if the argument is not passed, ToBigInt(undefined) will throw. This check exists only\n        //       to improve the error message.\n        if (arguments.length < 1) {\n            throw new TypeError('missing argument: epochNanoseconds is required');\n        }\n        const ns = ES.ToBigInt(epochNanoseconds);\n        ES.ValidateEpochNanoseconds(ns);\n        CreateSlots(this);\n        SetSlot(this, EPOCHNANOSECONDS, ns);\n        if (DEBUG) {\n            const repr = ES.TemporalInstantToString(this, undefined, 'auto');\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${repr}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get epochSeconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.divide(value, BILLION));\n    }\n    get epochMilliseconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const value = JSBI.BigInt(GetSlot(this, EPOCHNANOSECONDS));\n        return JSBI.toNumber(JSBI.divide(value, MILLION));\n    }\n    get epochMicroseconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const value = JSBI.BigInt(GetSlot(this, EPOCHNANOSECONDS));\n        return ES.ToBigIntExternal(JSBI.divide(value, THOUSAND));\n    }\n    get epochNanoseconds() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToBigIntExternal(JSBI.BigInt(GetSlot(this, EPOCHNANOSECONDS)));\n    }\n    add(temporalDurationLike) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromInstant('add', this, temporalDurationLike);\n    }\n    subtract(temporalDurationLike) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromInstant('subtract', this, temporalDurationLike);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalInstant('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalInstant('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const maximumIncrements = {\n            hour: 24,\n            minute: 1440,\n            second: 86400,\n            millisecond: 86400e3,\n            microsecond: 86400e6,\n            nanosecond: 86400e9\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], true);\n        const ns = GetSlot(this, EPOCHNANOSECONDS);\n        const roundedNs = ES.RoundInstant(ns, roundingIncrement, smallestUnit, roundingMode);\n        return new Instant(roundedNs);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalInstant(otherParam);\n        const one = GetSlot(this, EPOCHNANOSECONDS);\n        const two = GetSlot(other, EPOCHNANOSECONDS);\n        return JSBI.equal(JSBI.BigInt(one), JSBI.BigInt(two));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        let timeZone = options.timeZone;\n        if (timeZone !== undefined)\n            timeZone = ES.ToTemporalTimeZone(timeZone);\n        // Although TS doesn't acknowledge it, below here `timeZone` is a Temporal.TimeZoneProtocol\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        const ns = GetSlot(this, EPOCHNANOSECONDS);\n        const roundedNs = ES.RoundInstant(ns, increment, unit, roundingMode);\n        const roundedInstant = new Instant(roundedNs);\n        return ES.TemporalInstantToString(roundedInstant, timeZone, precision);\n    }\n    toJSON() {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalInstantToString(this, undefined, 'auto');\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.Instant');\n    }\n    toZonedDateTime(item) {\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item)) {\n            throw new TypeError('invalid argument in toZonedDateTime');\n        }\n        const calendarLike = item.calendar;\n        if (calendarLike === undefined) {\n            throw new TypeError('missing calendar property in toZonedDateTime');\n        }\n        const calendar = ES.ToTemporalCalendar(calendarLike);\n        const temporalTimeZoneLike = item.timeZone;\n        if (temporalTimeZoneLike === undefined) {\n            throw new TypeError('missing timeZone property in toZonedDateTime');\n        }\n        const timeZone = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    toZonedDateTimeISO(itemParam) {\n        let item = itemParam;\n        if (!ES.IsTemporalInstant(this))\n            throw new TypeError('invalid receiver');\n        if (ES.IsObject(item)) {\n            const timeZoneProperty = item.timeZone;\n            if (timeZoneProperty !== undefined) {\n                item = timeZoneProperty;\n            }\n        }\n        const timeZone = ES.ToTemporalTimeZone(item);\n        const calendar = ES.GetISO8601Calendar();\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    static fromEpochSeconds(epochSecondsParam) {\n        const epochSeconds = ES.ToNumber(epochSecondsParam);\n        const epochNanoseconds = JSBI.multiply(JSBI.BigInt(epochSeconds), BILLION);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static fromEpochMilliseconds(epochMillisecondsParam) {\n        const epochMilliseconds = ES.ToNumber(epochMillisecondsParam);\n        const epochNanoseconds = JSBI.multiply(JSBI.BigInt(epochMilliseconds), MILLION);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static fromEpochMicroseconds(epochMicrosecondsParam) {\n        const epochMicroseconds = ES.ToBigInt(epochMicrosecondsParam);\n        const epochNanoseconds = JSBI.multiply(epochMicroseconds, THOUSAND);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static fromEpochNanoseconds(epochNanosecondsParam) {\n        const epochNanoseconds = ES.ToBigInt(epochNanosecondsParam);\n        ES.ValidateEpochNanoseconds(epochNanoseconds);\n        return new Instant(epochNanoseconds);\n    }\n    static from(item) {\n        if (ES.IsTemporalInstant(item)) {\n            return new Instant(GetSlot(item, EPOCHNANOSECONDS));\n        }\n        return ES.ToTemporalInstant(item);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalInstant(oneParam);\n        const two = ES.ToTemporalInstant(twoParam);\n        const oneNs = GetSlot(one, EPOCHNANOSECONDS);\n        const twoNs = GetSlot(two, EPOCHNANOSECONDS);\n        if (JSBI.lessThan(oneNs, twoNs))\n            return -1;\n        if (JSBI.greaterThan(oneNs, twoNs))\n            return 1;\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(Instant, 'Temporal.Instant');\n//# sourceMappingURL=instant.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass, DefineIntrinsic } from './intrinsicclass';\nimport { CALENDAR_ID, ISO_YEAR, ISO_MONTH, ISO_DAY, YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS, CreateSlots, GetSlot, HasSlot, SetSlot } from './slots';\nconst ArrayIncludes = Array.prototype.includes;\nconst ArrayPrototypePush = Array.prototype.push;\nconst IntlDateTimeFormat = globalThis.Intl.DateTimeFormat;\nconst ArraySort = Array.prototype.sort;\nconst MathAbs = Math.abs;\nconst MathFloor = Math.floor;\nconst ObjectEntries = Object.entries;\nconst ObjectKeys = Object.keys;\n/**\n * Implementations for each calendar. Non-ISO calendars have an extra `helper`\n * property that provides additional per-calendar logic.\n */\nconst impl = {};\n/**\n * Thin wrapper around the implementation of each built-in calendar. This\n * class's methods follow a similar pattern:\n * 1. Validate parameters\n * 2. Fill in default options (for methods where options are present)\n * 3. Simplify and/or normalize parameters. For example, some methods accept\n *    PlainDate, PlainDateTime, ZonedDateTime, etc. and these are normalized to\n *    PlainDate.\n * 4. Look up the ID of the built-in calendar\n * 5. Fetch the implementation object for that ID.\n * 6. Call the corresponding method in the implementation object.\n */\nexport class Calendar {\n    constructor(idParam) {\n        // Note: if the argument is not passed, IsBuiltinCalendar(\"undefined\") will fail. This check\n        //       exists only to improve the error message.\n        if (arguments.length < 1) {\n            throw new RangeError('missing argument: id is required');\n        }\n        const id = ES.ToString(idParam);\n        if (!ES.IsBuiltinCalendar(id))\n            throw new RangeError(`invalid calendar identifier ${id}`);\n        CreateSlots(this);\n        SetSlot(this, CALENDAR_ID, id);\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${id}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get id() {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    dateFromFields(fields, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(fields))\n            throw new TypeError('invalid fields');\n        const options = ES.GetOptionsObject(optionsParam);\n        return impl[GetSlot(this, CALENDAR_ID)].dateFromFields(fields, options, this);\n    }\n    yearMonthFromFields(fields, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(fields))\n            throw new TypeError('invalid fields');\n        const options = ES.GetOptionsObject(optionsParam);\n        return impl[GetSlot(this, CALENDAR_ID)].yearMonthFromFields(fields, options, this);\n    }\n    monthDayFromFields(fields, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(fields))\n            throw new TypeError('invalid fields');\n        const options = ES.GetOptionsObject(optionsParam);\n        return impl[GetSlot(this, CALENDAR_ID)].monthDayFromFields(fields, options, this);\n    }\n    fields(fields) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const fieldsArray = [];\n        const allowed = new Set([\n            'year',\n            'month',\n            'monthCode',\n            'day',\n            'hour',\n            'minute',\n            'second',\n            'millisecond',\n            'microsecond',\n            'nanosecond'\n        ]);\n        for (const name of fields) {\n            if (typeof name !== 'string')\n                throw new TypeError('invalid fields');\n            if (!allowed.has(name))\n                throw new RangeError(`invalid field name ${name}`);\n            allowed.delete(name);\n            ArrayPrototypePush.call(fieldsArray, name);\n        }\n        return impl[GetSlot(this, CALENDAR_ID)].fields(fieldsArray);\n    }\n    mergeFields(fields, additionalFields) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return impl[GetSlot(this, CALENDAR_ID)].mergeFields(fields, additionalFields);\n    }\n    dateAdd(dateParam, durationParam, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        const duration = ES.ToTemporalDuration(durationParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        const overflow = ES.ToTemporalOverflow(options);\n        const { days } = ES.BalanceDuration(GetSlot(duration, DAYS), GetSlot(duration, HOURS), GetSlot(duration, MINUTES), GetSlot(duration, SECONDS), GetSlot(duration, MILLISECONDS), GetSlot(duration, MICROSECONDS), GetSlot(duration, NANOSECONDS), 'day');\n        return impl[GetSlot(this, CALENDAR_ID)].dateAdd(date, GetSlot(duration, YEARS), GetSlot(duration, MONTHS), GetSlot(duration, WEEKS), days, overflow, this);\n    }\n    dateUntil(oneParam, twoParam, optionsParam = undefined) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const one = ES.ToTemporalDate(oneParam);\n        const two = ES.ToTemporalDate(twoParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        let largestUnit = ES.GetTemporalUnit(options, 'largestUnit', 'date', 'auto');\n        if (largestUnit === 'auto')\n            largestUnit = 'day';\n        const { years, months, weeks, days } = impl[GetSlot(this, CALENDAR_ID)].dateUntil(one, two, largestUnit);\n        const Duration = GetIntrinsic('%Temporal.Duration%');\n        return new Duration(years, months, weeks, days, 0, 0, 0, 0, 0, 0);\n    }\n    year(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].year(date);\n    }\n    month(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (ES.IsTemporalMonthDay(date))\n            throw new TypeError('use monthCode on PlainMonthDay instead');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].month(date);\n    }\n    monthCode(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date) && !ES.IsTemporalMonthDay(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].monthCode(date);\n    }\n    day(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalMonthDay(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].day(date);\n    }\n    era(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].era(date);\n    }\n    eraYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].eraYear(date);\n    }\n    dayOfWeek(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].dayOfWeek(date);\n    }\n    dayOfYear(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].dayOfYear(date);\n    }\n    weekOfYear(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].weekOfYear(date);\n    }\n    daysInWeek(dateParam) {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        const date = ES.ToTemporalDate(dateParam);\n        return impl[GetSlot(this, CALENDAR_ID)].daysInWeek(date);\n    }\n    daysInMonth(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].daysInMonth(date);\n    }\n    daysInYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].daysInYear(date);\n    }\n    monthsInYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].monthsInYear(date);\n    }\n    inLeapYear(dateParam) {\n        let date = dateParam;\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsTemporalYearMonth(date))\n            date = ES.ToTemporalDate(date);\n        return impl[GetSlot(this, CALENDAR_ID)].inLeapYear(date);\n    }\n    toString() {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR_ID);\n    }\n    toJSON() {\n        if (!ES.IsTemporalCalendar(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    static from(item) {\n        return ES.ToTemporalCalendar(item);\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(Calendar, 'Temporal.Calendar');\nDefineIntrinsic('Temporal.Calendar.from', Calendar.from);\n/**\n * Implementation for the ISO 8601 calendar. This is the only calendar that's\n * guaranteed to be supported by all ECMAScript implementations, including those\n * without Intl (ECMA-402) support.\n */\nimpl['iso8601'] = {\n    dateFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        let fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'month', 'monthCode', 'year'], ['year', 'day']);\n        fields = resolveNonLunisolarMonth(fields);\n        let { year, month, day } = fields;\n        ({ year, month, day } = ES.RegulateISODate(year, month, day, overflow));\n        return ES.CreateTemporalDate(year, month, day, calendar);\n    },\n    yearMonthFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        let fields = ES.PrepareTemporalFields(fieldsParam, ['month', 'monthCode', 'year'], ['year']);\n        fields = resolveNonLunisolarMonth(fields);\n        let { year, month } = fields;\n        ({ year, month } = ES.RegulateISOYearMonth(year, month, overflow));\n        return ES.CreateTemporalYearMonth(year, month, calendar, /* referenceISODay = */ 1);\n    },\n    monthDayFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        let fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'month', 'monthCode', 'year'], ['day']);\n        if (fields.month !== undefined && fields.year === undefined && fields.monthCode === undefined) {\n            throw new TypeError('either year or monthCode required with month');\n        }\n        const useYear = fields.monthCode === undefined;\n        const referenceISOYear = 1972;\n        fields = resolveNonLunisolarMonth(fields);\n        let { month, day, year } = fields;\n        ({ month, day } = ES.RegulateISODate(useYear ? year : referenceISOYear, month, day, overflow));\n        return ES.CreateTemporalMonthDay(month, day, calendar, referenceISOYear);\n    },\n    fields(fields) {\n        return fields;\n    },\n    mergeFields(fields, additionalFields) {\n        const merged = {};\n        for (const nextKey of ObjectKeys(fields)) {\n            if (nextKey === 'month' || nextKey === 'monthCode')\n                continue;\n            merged[nextKey] = fields[nextKey];\n        }\n        const newKeys = ObjectKeys(additionalFields);\n        for (const nextKey of newKeys) {\n            merged[nextKey] = additionalFields[nextKey];\n        }\n        if (!ArrayIncludes.call(newKeys, 'month') && !ArrayIncludes.call(newKeys, 'monthCode')) {\n            const { month, monthCode } = fields;\n            if (month !== undefined)\n                merged.month = month;\n            if (monthCode !== undefined)\n                merged.monthCode = monthCode;\n        }\n        return merged;\n    },\n    dateAdd(date, years, months, weeks, days, overflow, calendar) {\n        let year = GetSlot(date, ISO_YEAR);\n        let month = GetSlot(date, ISO_MONTH);\n        let day = GetSlot(date, ISO_DAY);\n        ({ year, month, day } = ES.AddISODate(year, month, day, years, months, weeks, days, overflow));\n        return ES.CreateTemporalDate(year, month, day, calendar);\n    },\n    dateUntil(one, two, largestUnit) {\n        return ES.DifferenceISODate(GetSlot(one, ISO_YEAR), GetSlot(one, ISO_MONTH), GetSlot(one, ISO_DAY), GetSlot(two, ISO_YEAR), GetSlot(two, ISO_MONTH), GetSlot(two, ISO_DAY), largestUnit);\n    },\n    year(date) {\n        return GetSlot(date, ISO_YEAR);\n    },\n    era() {\n        return undefined;\n    },\n    eraYear() {\n        return undefined;\n    },\n    month(date) {\n        return GetSlot(date, ISO_MONTH);\n    },\n    monthCode(date) {\n        return buildMonthCode(GetSlot(date, ISO_MONTH));\n    },\n    day(date) {\n        return GetSlot(date, ISO_DAY);\n    },\n    dayOfWeek(date) {\n        return ES.DayOfWeek(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH), GetSlot(date, ISO_DAY));\n    },\n    dayOfYear(date) {\n        return ES.DayOfYear(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH), GetSlot(date, ISO_DAY));\n    },\n    weekOfYear(date) {\n        return ES.WeekOfYear(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH), GetSlot(date, ISO_DAY));\n    },\n    daysInWeek() {\n        return 7;\n    },\n    daysInMonth(date) {\n        return ES.ISODaysInMonth(GetSlot(date, ISO_YEAR), GetSlot(date, ISO_MONTH));\n    },\n    daysInYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        return ES.LeapYear(GetSlot(date, ISO_YEAR)) ? 366 : 365;\n    },\n    monthsInYear() {\n        return 12;\n    },\n    inLeapYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        return ES.LeapYear(GetSlot(date, ISO_YEAR));\n    }\n};\nfunction monthCodeNumberPart(monthCode) {\n    if (!monthCode.startsWith('M')) {\n        throw new RangeError(`Invalid month code: ${monthCode}.  Month codes must start with M.`);\n    }\n    const month = +monthCode.slice(1);\n    if (isNaN(month))\n        throw new RangeError(`Invalid month code: ${monthCode}`);\n    return month;\n}\nfunction buildMonthCode(month, leap = false) {\n    return `M${month.toString().padStart(2, '0')}${leap ? 'L' : ''}`;\n}\n/**\n * Safely merge a month, monthCode pair into an integer month.\n * If both are present, make sure they match.\n * This logic doesn't work for lunisolar calendars!\n * */\nfunction resolveNonLunisolarMonth(calendarDate, overflow = undefined, monthsPerYear = 12) {\n    let { month, monthCode } = calendarDate;\n    if (monthCode === undefined) {\n        if (month === undefined)\n            throw new TypeError('Either month or monthCode are required');\n        // The ISO calendar uses the default (undefined) value because it does\n        // constrain/reject after this method returns. Non-ISO calendars, however,\n        // rely on this function to constrain/reject out-of-range `month` values.\n        if (overflow === 'reject')\n            ES.RejectToRange(month, 1, monthsPerYear);\n        if (overflow === 'constrain')\n            month = ES.ConstrainToRange(month, 1, monthsPerYear);\n        monthCode = buildMonthCode(month);\n    }\n    else {\n        const numberPart = monthCodeNumberPart(monthCode);\n        if (month !== undefined && month !== numberPart) {\n            throw new RangeError(`monthCode ${monthCode} and month ${month} must match if both are present`);\n        }\n        if (monthCode !== buildMonthCode(numberPart)) {\n            throw new RangeError(`Invalid month code: ${monthCode}`);\n        }\n        month = numberPart;\n        if (month < 1 || month > monthsPerYear)\n            throw new RangeError(`Invalid monthCode: ${monthCode}`);\n    }\n    return { ...calendarDate, month, monthCode };\n}\n/**\n * This prototype implementation of non-ISO calendars makes many repeated calls\n * to Intl APIs which may be slow (e.g. >0.2ms). This trivial cache will speed\n * up these repeat accesses. Each cache instance is associated (via a WeakMap)\n * to a specific Temporal object, which speeds up multiple calendar calls on the\n * same Temporal object instance.  No invalidation or pruning is necessary\n * because each object's cache is thrown away when the object is GC-ed.\n */\nclass OneObjectCache {\n    constructor(cacheToClone) {\n        this.map = new Map();\n        this.calls = 0;\n        this.hits = 0;\n        this.misses = 0;\n        this.now = globalThis.performance ? globalThis.performance.now() : Date.now();\n        if (cacheToClone !== undefined) {\n            let i = 0;\n            for (const entry of cacheToClone.map.entries()) {\n                if (++i > OneObjectCache.MAX_CACHE_ENTRIES)\n                    break;\n                this.map.set(...entry);\n            }\n        }\n    }\n    get(key) {\n        const result = this.map.get(key);\n        if (result) {\n            this.hits++;\n            this.report();\n        }\n        this.calls++;\n        return result;\n    }\n    set(key, value) {\n        this.map.set(key, value);\n        this.misses++;\n        this.report();\n    }\n    report() {\n        /*\n        if (this.calls === 0) return;\n        const ms = (globalThis.performance ? globalThis.performance.now() : Date.now()) - this.now;\n        const hitRate = ((100 * this.hits) / this.calls).toFixed(0);\n        console.log(`${this.calls} calls in ${ms.toFixed(2)}ms. Hits: ${this.hits} (${hitRate}%). Misses: ${this.misses}.`);\n        */\n    }\n    setObject(obj) {\n        if (OneObjectCache.objectMap.get(obj))\n            throw new RangeError('object already cached');\n        OneObjectCache.objectMap.set(obj, this);\n        this.report();\n    }\n    /**\n     * Returns a WeakMap-backed cache that's used to store expensive results\n     * that are associated with a particular Temporal object instance.\n     *\n     * @param obj - object to associate with the cache\n     */\n    static getCacheForObject(obj) {\n        let cache = OneObjectCache.objectMap.get(obj);\n        if (!cache) {\n            cache = new OneObjectCache();\n            OneObjectCache.objectMap.set(obj, cache);\n        }\n        return cache;\n    }\n}\nOneObjectCache.objectMap = new WeakMap();\nOneObjectCache.MAX_CACHE_ENTRIES = 1000;\nfunction toUtcIsoDateString({ isoYear, isoMonth, isoDay }) {\n    const yearString = ES.ISOYearString(isoYear);\n    const monthString = ES.ISODateTimePartString(isoMonth);\n    const dayString = ES.ISODateTimePartString(isoDay);\n    return `${yearString}-${monthString}-${dayString}T00:00Z`;\n}\nfunction simpleDateDiff(one, two) {\n    return {\n        years: one.year - two.year,\n        months: one.month - two.month,\n        days: one.day - two.day\n    };\n}\n/**\n * Implementation helper that's common to all non-ISO calendars\n */\nclass HelperBase {\n    constructor() {\n        // The short era format works for all calendars except Japanese, which will\n        // override.\n        this.eraLength = 'short';\n        // All built-in calendars except Chinese/Dangi and Hebrew use an era\n        this.hasEra = true;\n    }\n    getFormatter() {\n        // `new Intl.DateTimeFormat()` is amazingly slow and chews up RAM. Per\n        // https://bugs.chromium.org/p/v8/issues/detail?id=6528#c4, we cache one\n        // DateTimeFormat instance per calendar. Caching is lazy so we only pay for\n        // calendars that are used. Note that the nonIsoHelperBase object is spread\n        // into each each calendar's implementation before any cache is created, so\n        // each calendar gets its own separate cached formatter.\n        if (typeof this.formatter === 'undefined') {\n            this.formatter = new IntlDateTimeFormat(`en-US-u-ca-${this.id}`, {\n                day: 'numeric',\n                month: 'numeric',\n                year: 'numeric',\n                era: this.eraLength,\n                timeZone: 'UTC'\n            });\n        }\n        return this.formatter;\n    }\n    isoToCalendarDate(isoDate, cache) {\n        const { year: isoYear, month: isoMonth, day: isoDay } = isoDate;\n        const key = JSON.stringify({ func: 'isoToCalendarDate', isoYear, isoMonth, isoDay, id: this.id });\n        const cached = cache.get(key);\n        if (cached)\n            return cached;\n        const dateTimeFormat = this.getFormatter();\n        let parts, isoString;\n        try {\n            isoString = toUtcIsoDateString({ isoYear, isoMonth, isoDay });\n            parts = dateTimeFormat.formatToParts(new Date(isoString));\n        }\n        catch (e) {\n            throw new RangeError(`Invalid ISO date: ${JSON.stringify({ isoYear, isoMonth, isoDay })}`);\n        }\n        const result = {};\n        for (let { type, value } of parts) {\n            if (type === 'year')\n                result.eraYear = +value;\n            // TODO: remove this type annotation when `relatedYear` gets into TS lib types\n            if (type === 'relatedYear')\n                result.eraYear = +value;\n            if (type === 'month') {\n                const matches = /^([0-9]*)(.*?)$/.exec(value);\n                if (!matches || matches.length != 3 || (!matches[1] && !matches[2])) {\n                    throw new RangeError(`Unexpected month: ${value}`);\n                }\n                // If the month has no numeric part (should only see this for the Hebrew\n                // calendar with newer FF / Chromium versions; see\n                // https://bugzilla.mozilla.org/show_bug.cgi?id=1751833) then set a\n                // placeholder month index of `1` and rely on the derived class to\n                // calculate the correct month index from the month name stored in\n                // `monthExtra`.\n                result.month = matches[1] ? +matches[1] : 1;\n                if (result.month < 1) {\n                    throw new RangeError(`Invalid month ${value} from ${isoString}[u-ca-${this.id}]` +\n                        ' (probably due to https://bugs.chromium.org/p/v8/issues/detail?id=10527)');\n                }\n                if (result.month > 13) {\n                    throw new RangeError(`Invalid month ${value} from ${isoString}[u-ca-${this.id}]` +\n                        ' (probably due to https://bugs.chromium.org/p/v8/issues/detail?id=10529)');\n                }\n                // The ICU formats for the Hebrew calendar no longer support a numeric\n                // month format. So we'll rely on the derived class to interpret it.\n                // `monthExtra` is also used on the Chinese calendar to handle a suffix\n                // \"bis\" indicating a leap month.\n                if (matches[2])\n                    result.monthExtra = matches[2];\n            }\n            if (type === 'day')\n                result.day = +value;\n            if (this.hasEra && type === 'era' && value != null && value !== '') {\n                // The convention for Temporal era values is lowercase, so following\n                // that convention in this prototype. Punctuation is removed, accented\n                // letters are normalized, and spaces are replaced with dashes.\n                // E.g.: \"ERA0\" => \"era0\", \"Before R.O.C.\" => \"before-roc\", \"En’ō\" => \"eno\"\n                // The call to normalize() and the replacement regex deals with era\n                // names that contain non-ASCII characters like Japanese eras. Also\n                // ignore extra content in parentheses like JPN era date ranges.\n                value = value.split(' (')[0];\n                result.era = value\n                    .normalize('NFD')\n                    .replace(/[^-0-9 \\p{L}]/gu, '')\n                    .replace(' ', '-')\n                    .toLowerCase();\n            }\n        }\n        if (result.eraYear === undefined) {\n            // Node 12 has outdated ICU data that lacks the `relatedYear` field in the\n            // output of Intl.DateTimeFormat.formatToParts.\n            throw new RangeError(`Intl.DateTimeFormat.formatToParts lacks relatedYear in ${this.id} calendar. Try Node 14+ or modern browsers.`);\n        }\n        // Translate eras that may be handled differently by Temporal vs. by Intl\n        // (e.g. Japanese pre-Meiji eras). See https://github.com/tc39/proposal-temporal/issues/526.\n        if (this.reviseIntlEra) {\n            const { era, eraYear } = this.reviseIntlEra(result, isoDate);\n            result.era = era;\n            result.eraYear = eraYear;\n        }\n        if (this.checkIcuBugs)\n            this.checkIcuBugs(isoDate);\n        const calendarDate = this.adjustCalendarDate(result, cache, 'constrain', true);\n        if (calendarDate.year === undefined)\n            throw new RangeError(`Missing year converting ${JSON.stringify(isoDate)}`);\n        if (calendarDate.month === undefined)\n            throw new RangeError(`Missing month converting ${JSON.stringify(isoDate)}`);\n        if (calendarDate.day === undefined)\n            throw new RangeError(`Missing day converting ${JSON.stringify(isoDate)}`);\n        cache.set(key, calendarDate);\n        // Also cache the reverse mapping\n        ['constrain', 'reject'].forEach((overflow) => {\n            const keyReverse = JSON.stringify({\n                func: 'calendarToIsoDate',\n                year: calendarDate.year,\n                month: calendarDate.month,\n                day: calendarDate.day,\n                overflow,\n                id: this.id\n            });\n            cache.set(keyReverse, isoDate);\n        });\n        return calendarDate;\n    }\n    validateCalendarDate(calendarDate) {\n        const { era, month, year, day, eraYear, monthCode, monthExtra } = calendarDate;\n        // When there's a suffix (e.g. \"5bis\" for a leap month in Chinese calendar)\n        // the derived class must deal with it.\n        if (monthExtra !== undefined)\n            throw new RangeError('Unexpected `monthExtra` value');\n        if (year === undefined && eraYear === undefined)\n            throw new TypeError('year or eraYear is required');\n        if (month === undefined && monthCode === undefined)\n            throw new TypeError('month or monthCode is required');\n        if (day === undefined)\n            throw new RangeError('Missing day');\n        if (monthCode !== undefined) {\n            if (typeof monthCode !== 'string') {\n                throw new RangeError(`monthCode must be a string, not ${typeof monthCode}`);\n            }\n            if (!/^M([01]?\\d)(L?)$/.test(monthCode))\n                throw new RangeError(`Invalid monthCode: ${monthCode}`);\n        }\n        if (this.constantEra) {\n            if (era !== undefined && era !== this.constantEra) {\n                throw new RangeError(`era must be ${this.constantEra}, not ${era}`);\n            }\n            if (eraYear !== undefined && year !== undefined && eraYear !== year) {\n                throw new RangeError(`eraYear ${eraYear} does not match year ${year}`);\n            }\n        }\n    }\n    /**\n     * Allows derived calendars to add additional fields and/or to make\n     * adjustments e.g. to set the era based on the date or to revise the month\n     * number in lunisolar calendars per\n     * https://github.com/tc39/proposal-temporal/issues/1203.\n     *\n     * The base implementation fills in missing values by assuming the simplest\n     * possible calendar:\n     * - no eras or a constant era defined in `.constantEra`\n     * - non-lunisolar calendar (no leap months)\n     * */\n    adjustCalendarDate(calendarDateParam, cache = undefined, overflow = 'constrain', \n    // This param is only used by derived classes\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    fromLegacyDate = false) {\n        if (this.calendarType === 'lunisolar')\n            throw new RangeError('Override required for lunisolar calendars');\n        let calendarDate = calendarDateParam;\n        this.validateCalendarDate(calendarDate);\n        // For calendars that always use the same era, set it here so that derived\n        // calendars won't need to implement this method simply to set the era.\n        if (this.constantEra) {\n            // year and eraYear always match when there's only one possible era\n            const { year, eraYear } = calendarDate;\n            calendarDate = {\n                ...calendarDate,\n                era: this.constantEra,\n                year: year !== undefined ? year : eraYear,\n                eraYear: eraYear !== undefined ? eraYear : year\n            };\n        }\n        const largestMonth = this.monthsInYear(calendarDate, cache);\n        let { month, monthCode } = calendarDate;\n        ({ month, monthCode } = resolveNonLunisolarMonth(calendarDate, overflow, largestMonth));\n        return { ...calendarDate, month, monthCode };\n    }\n    regulateMonthDayNaive(calendarDate, overflow, cache) {\n        const largestMonth = this.monthsInYear(calendarDate, cache);\n        let { month, day } = calendarDate;\n        if (overflow === 'reject') {\n            ES.RejectToRange(month, 1, largestMonth);\n            ES.RejectToRange(day, 1, this.maximumMonthLength(calendarDate));\n        }\n        else {\n            month = ES.ConstrainToRange(month, 1, largestMonth);\n            day = ES.ConstrainToRange(day, 1, this.maximumMonthLength({ ...calendarDate, month }));\n        }\n        return { ...calendarDate, month, day };\n    }\n    calendarToIsoDate(dateParam, overflow = 'constrain', cache) {\n        const originalDate = dateParam;\n        // First, normalize the calendar date to ensure that (year, month, day)\n        // are all present, converting monthCode and eraYear if needed.\n        let date = this.adjustCalendarDate(dateParam, cache, overflow, false);\n        // Fix obviously out-of-bounds values. Values that are valid generally, but\n        // not in this particular year, may not be caught here for some calendars.\n        // If so, these will be handled lower below.\n        date = this.regulateMonthDayNaive(date, overflow, cache);\n        const { year, month, day } = date;\n        const key = JSON.stringify({ func: 'calendarToIsoDate', year, month, day, overflow, id: this.id });\n        let cached = cache.get(key);\n        if (cached)\n            return cached;\n        // If YMD are present in the input but the input has been constrained\n        // already, then cache both the original value and the constrained value.\n        let keyOriginal;\n        if (originalDate.year !== undefined &&\n            originalDate.month !== undefined &&\n            originalDate.day !== undefined &&\n            (originalDate.year !== date.year || originalDate.month !== date.month || originalDate.day !== date.day)) {\n            keyOriginal = JSON.stringify({\n                func: 'calendarToIsoDate',\n                year: originalDate.year,\n                month: originalDate.month,\n                day: originalDate.day,\n                overflow,\n                id: this.id\n            });\n            cached = cache.get(keyOriginal);\n            if (cached)\n                return cached;\n        }\n        // First, try to roughly guess the result\n        let isoEstimate = this.estimateIsoDate({ year, month, day });\n        const calculateSameMonthResult = (diffDays) => {\n            // If the estimate is in the same year & month as the target, then we can\n            // calculate the result exactly and short-circuit any additional logic.\n            // This optimization assumes that months are continuous. It would break if\n            // a calendar skipped days, like the Julian->Gregorian switchover. But the\n            // only ICU calendars that currently skip days (japanese/roc/buddhist) is\n            // a bug (https://bugs.chromium.org/p/chromium/issues/detail?id=1173158)\n            // that's currently detected by `checkIcuBugs()` which will throw. So\n            // this optimization should be safe for all ICU calendars.\n            let testIsoEstimate = this.addDaysIso(isoEstimate, diffDays);\n            if (date.day > this.minimumMonthLength(date)) {\n                // There's a chance that the calendar date is out of range. Throw or\n                // constrain if so.\n                let testCalendarDate = this.isoToCalendarDate(testIsoEstimate, cache);\n                while (testCalendarDate.month !== month || testCalendarDate.year !== year) {\n                    if (overflow === 'reject') {\n                        throw new RangeError(`day ${day} does not exist in month ${month} of year ${year}`);\n                    }\n                    // Back up a day at a time until we're not hanging over the month end\n                    testIsoEstimate = this.addDaysIso(testIsoEstimate, -1);\n                    testCalendarDate = this.isoToCalendarDate(testIsoEstimate, cache);\n                }\n            }\n            return testIsoEstimate;\n        };\n        let sign = 0;\n        let roundtripEstimate = this.isoToCalendarDate(isoEstimate, cache);\n        let diff = simpleDateDiff(date, roundtripEstimate);\n        if (diff.years !== 0 || diff.months !== 0 || diff.days !== 0) {\n            const diffTotalDaysEstimate = diff.years * 365 + diff.months * 30 + diff.days;\n            isoEstimate = this.addDaysIso(isoEstimate, diffTotalDaysEstimate);\n            roundtripEstimate = this.isoToCalendarDate(isoEstimate, cache);\n            diff = simpleDateDiff(date, roundtripEstimate);\n            if (diff.years === 0 && diff.months === 0) {\n                isoEstimate = calculateSameMonthResult(diff.days);\n            }\n            else {\n                sign = this.compareCalendarDates(date, roundtripEstimate);\n            }\n        }\n        // If the initial guess is not in the same month, then then bisect the\n        // distance to the target, starting with 8 days per step.\n        let increment = 8;\n        let maybeConstrained = false;\n        while (sign) {\n            isoEstimate = this.addDaysIso(isoEstimate, sign * increment);\n            const oldRoundtripEstimate = roundtripEstimate;\n            roundtripEstimate = this.isoToCalendarDate(isoEstimate, cache);\n            const oldSign = sign;\n            sign = this.compareCalendarDates(date, roundtripEstimate);\n            if (sign) {\n                diff = simpleDateDiff(date, roundtripEstimate);\n                if (diff.years === 0 && diff.months === 0) {\n                    isoEstimate = calculateSameMonthResult(diff.days);\n                    // Signal the loop condition that there's a match.\n                    sign = 0;\n                    // If the calendar day is larger than the minimal length for this\n                    // month, then it might be larger than the actual length of the month.\n                    // So we won't cache it as the correct calendar date for this ISO\n                    // date.\n                    maybeConstrained = date.day > this.minimumMonthLength(date);\n                }\n                else if (oldSign && sign !== oldSign) {\n                    if (increment > 1) {\n                        // If the estimate overshot the target, try again with a smaller increment\n                        // in the reverse direction.\n                        increment /= 2;\n                    }\n                    else {\n                        // Increment is 1, and neither the previous estimate nor the new\n                        // estimate is correct. The only way that can happen is if the\n                        // original date was an invalid value that will be constrained or\n                        // rejected here.\n                        if (overflow === 'reject') {\n                            throw new RangeError(`Can't find ISO date from calendar date: ${JSON.stringify({ ...originalDate })}`);\n                        }\n                        else {\n                            // To constrain, pick the earliest value\n                            const order = this.compareCalendarDates(roundtripEstimate, oldRoundtripEstimate);\n                            // If current value is larger, then back up to the previous value.\n                            if (order > 0)\n                                isoEstimate = this.addDaysIso(isoEstimate, -1);\n                            maybeConstrained = true;\n                            sign = 0;\n                        }\n                    }\n                }\n            }\n        }\n        cache.set(key, isoEstimate);\n        if (keyOriginal)\n            cache.set(keyOriginal, isoEstimate);\n        if (date.year === undefined ||\n            date.month === undefined ||\n            date.day === undefined ||\n            date.monthCode === undefined ||\n            (this.hasEra && (date.era === undefined || date.eraYear === undefined))) {\n            throw new RangeError('Unexpected missing property');\n        }\n        if (!maybeConstrained) {\n            // Also cache the reverse mapping\n            const keyReverse = JSON.stringify({\n                func: 'isoToCalendarDate',\n                isoYear: isoEstimate.year,\n                isoMonth: isoEstimate.month,\n                isoDay: isoEstimate.day,\n                id: this.id\n            });\n            cache.set(keyReverse, date);\n        }\n        return isoEstimate;\n    }\n    temporalToCalendarDate(date, cache) {\n        const isoDate = { year: GetSlot(date, ISO_YEAR), month: GetSlot(date, ISO_MONTH), day: GetSlot(date, ISO_DAY) };\n        const result = this.isoToCalendarDate(isoDate, cache);\n        return result;\n    }\n    compareCalendarDates(date1Param, date2Param) {\n        // `date1` and `date2` are already records. The calls below simply validate\n        // that all three required fields are present.\n        const date1 = ES.PrepareTemporalFields(date1Param, ['day', 'month', 'year'], ['day', 'month', 'year']);\n        const date2 = ES.PrepareTemporalFields(date2Param, ['day', 'month', 'year'], ['day', 'month', 'year']);\n        if (date1.year !== date2.year)\n            return ES.ComparisonResult(date1.year - date2.year);\n        if (date1.month !== date2.month)\n            return ES.ComparisonResult(date1.month - date2.month);\n        if (date1.day !== date2.day)\n            return ES.ComparisonResult(date1.day - date2.day);\n        return 0;\n    }\n    /** Ensure that a calendar date actually exists. If not, return the closest earlier date. */\n    regulateDate(calendarDate, overflow = 'constrain', cache) {\n        const isoDate = this.calendarToIsoDate(calendarDate, overflow, cache);\n        return this.isoToCalendarDate(isoDate, cache);\n    }\n    addDaysIso(isoDate, days) {\n        const added = ES.AddISODate(isoDate.year, isoDate.month, isoDate.day, 0, 0, 0, days, 'constrain');\n        return added;\n    }\n    addDaysCalendar(calendarDate, days, cache) {\n        const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n        const addedIso = this.addDaysIso(isoDate, days);\n        const addedCalendar = this.isoToCalendarDate(addedIso, cache);\n        return addedCalendar;\n    }\n    addMonthsCalendar(calendarDateParam, months, overflow, cache) {\n        let calendarDate = calendarDateParam;\n        const { day } = calendarDate;\n        for (let i = 0, absMonths = MathAbs(months); i < absMonths; i++) {\n            const { month } = calendarDate;\n            const oldCalendarDate = calendarDate;\n            const days = months < 0\n                ? -Math.max(day, this.daysInPreviousMonth(calendarDate, cache))\n                : this.daysInMonth(calendarDate, cache);\n            const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n            let addedIso = this.addDaysIso(isoDate, days);\n            calendarDate = this.isoToCalendarDate(addedIso, cache);\n            // Normally, we can advance one month by adding the number of days in the\n            // current month. However, if we're at the end of the current month and\n            // the next month has fewer days, then we rolled over to the after-next\n            // month. Below we detect this condition and back up until we're back in\n            // the desired month.\n            if (months > 0) {\n                const monthsInOldYear = this.monthsInYear(oldCalendarDate, cache);\n                while (calendarDate.month - 1 !== month % monthsInOldYear) {\n                    addedIso = this.addDaysIso(addedIso, -1);\n                    calendarDate = this.isoToCalendarDate(addedIso, cache);\n                }\n            }\n            if (calendarDate.day !== day) {\n                // try to retain the original day-of-month, if possible\n                calendarDate = this.regulateDate({ ...calendarDate, day }, 'constrain', cache);\n            }\n        }\n        if (overflow === 'reject' && calendarDate.day !== day) {\n            throw new RangeError(`Day ${day} does not exist in resulting calendar month`);\n        }\n        return calendarDate;\n    }\n    addCalendar(calendarDate, { years = 0, months = 0, weeks = 0, days = 0 }, overflow, cache) {\n        const { year, day, monthCode } = calendarDate;\n        const addedYears = this.adjustCalendarDate({ year: year + years, monthCode, day }, cache);\n        const addedMonths = this.addMonthsCalendar(addedYears, months, overflow, cache);\n        const initialDays = days + weeks * 7;\n        const addedDays = this.addDaysCalendar(addedMonths, initialDays, cache);\n        return addedDays;\n    }\n    untilCalendar(calendarOne, calendarTwo, largestUnit, cache) {\n        let days = 0;\n        let weeks = 0;\n        let months = 0;\n        let years = 0;\n        switch (largestUnit) {\n            case 'day':\n                days = this.calendarDaysUntil(calendarOne, calendarTwo, cache);\n                break;\n            case 'week': {\n                const totalDays = this.calendarDaysUntil(calendarOne, calendarTwo, cache);\n                days = totalDays % 7;\n                weeks = (totalDays - days) / 7;\n                break;\n            }\n            case 'month':\n            case 'year': {\n                const diffYears = calendarTwo.year - calendarOne.year;\n                const diffMonths = calendarTwo.month - calendarOne.month;\n                const diffDays = calendarTwo.day - calendarOne.day;\n                const sign = this.compareCalendarDates(calendarTwo, calendarOne);\n                if (!sign) {\n                    return { years: 0, months: 0, weeks: 0, days: 0 };\n                }\n                if (largestUnit === 'year' && diffYears) {\n                    const isOneFurtherInYear = diffMonths * sign < 0 || (diffMonths === 0 && diffDays * sign < 0);\n                    years = isOneFurtherInYear ? diffYears - sign : diffYears;\n                }\n                const yearsAdded = years ? this.addCalendar(calendarOne, { years }, 'constrain', cache) : calendarOne;\n                // Now we have less than one year remaining. Add one month at a time\n                // until we go over the target, then back up one month and calculate\n                // remaining days and weeks.\n                let current;\n                let next = yearsAdded;\n                do {\n                    months += sign;\n                    current = next;\n                    next = this.addMonthsCalendar(current, sign, 'constrain', cache);\n                    if (next.day !== calendarOne.day) {\n                        // In case the day was constrained down, try to un-constrain it\n                        next = this.regulateDate({ ...next, day: calendarOne.day }, 'constrain', cache);\n                    }\n                } while (this.compareCalendarDates(calendarTwo, next) * sign >= 0);\n                months -= sign; // correct for loop above which overshoots by 1\n                const remainingDays = this.calendarDaysUntil(current, calendarTwo, cache);\n                days = remainingDays;\n                break;\n            }\n        }\n        return { years, months, weeks, days };\n    }\n    daysInMonth(calendarDate, cache) {\n        // Add enough days to roll over to the next month. One we're in the next\n        // month, we can calculate the length of the current month. NOTE: This\n        // algorithm assumes that months are continuous. It would break if a\n        // calendar skipped days, like the Julian->Gregorian switchover. But the\n        // only ICU calendars that currently skip days (japanese/roc/buddhist) is a\n        // bug (https://bugs.chromium.org/p/chromium/issues/detail?id=1173158)\n        // that's currently detected by `checkIcuBugs()` which will throw. So this\n        // code should be safe for all ICU calendars.\n        const { day } = calendarDate;\n        const max = this.maximumMonthLength(calendarDate);\n        const min = this.minimumMonthLength(calendarDate);\n        // easiest case: we already know the month length if min and max are the same.\n        if (min === max)\n            return min;\n        // Add enough days to get into the next month, without skipping it\n        const increment = day <= max - min ? max : min;\n        const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n        const addedIsoDate = this.addDaysIso(isoDate, increment);\n        const addedCalendarDate = this.isoToCalendarDate(addedIsoDate, cache);\n        // Now back up to the last day of the original month\n        const endOfMonthIso = this.addDaysIso(addedIsoDate, -addedCalendarDate.day);\n        const endOfMonthCalendar = this.isoToCalendarDate(endOfMonthIso, cache);\n        return endOfMonthCalendar.day;\n    }\n    daysInPreviousMonth(calendarDate, cache) {\n        const { day, month, year } = calendarDate;\n        // Check to see if we already know the month length, and return it if so\n        const previousMonthYear = month > 1 ? year : year - 1;\n        let previousMonthDate = { year: previousMonthYear, month, day: 1 };\n        const previousMonth = month > 1 ? month - 1 : this.monthsInYear(previousMonthDate, cache);\n        previousMonthDate = { ...previousMonthDate, month: previousMonth };\n        const min = this.minimumMonthLength(previousMonthDate);\n        const max = this.maximumMonthLength(previousMonthDate);\n        if (min === max)\n            return max;\n        const isoDate = this.calendarToIsoDate(calendarDate, 'constrain', cache);\n        const lastDayOfPreviousMonthIso = this.addDaysIso(isoDate, -day);\n        const lastDayOfPreviousMonthCalendar = this.isoToCalendarDate(lastDayOfPreviousMonthIso, cache);\n        return lastDayOfPreviousMonthCalendar.day;\n    }\n    startOfCalendarYear(calendarDate) {\n        return { year: calendarDate.year, month: 1, monthCode: 'M01', day: 1 };\n    }\n    startOfCalendarMonth(calendarDate) {\n        return { year: calendarDate.year, month: calendarDate.month, day: 1 };\n    }\n    calendarDaysUntil(calendarOne, calendarTwo, cache) {\n        const oneIso = this.calendarToIsoDate(calendarOne, 'constrain', cache);\n        const twoIso = this.calendarToIsoDate(calendarTwo, 'constrain', cache);\n        return this.isoDaysUntil(oneIso, twoIso);\n    }\n    isoDaysUntil(oneIso, twoIso) {\n        const duration = ES.DifferenceISODate(oneIso.year, oneIso.month, oneIso.day, twoIso.year, twoIso.month, twoIso.day, 'day');\n        return duration.days;\n    }\n    monthDayFromFields(fields, overflow, cache) {\n        let { year, month, monthCode, day, era, eraYear } = fields;\n        if (monthCode === undefined) {\n            if (year === undefined && (era === undefined || eraYear === undefined)) {\n                throw new TypeError('`monthCode`, `year`, or `era` and `eraYear` is required');\n            }\n            ({ monthCode, year } = this.adjustCalendarDate({ year, month, monthCode, day, era, eraYear }, cache, overflow));\n        }\n        let isoYear, isoMonth, isoDay;\n        let closestCalendar, closestIso;\n        // Look backwards starting from the calendar year of 1972-01-01 up to 100\n        // calendar years to find a year that has this month and day. Normal months\n        // and days will match immediately, but for leap days and leap months we may\n        // have to look for a while.\n        const startDateIso = { year: 1972, month: 1, day: 1 };\n        const { year: calendarYear } = this.isoToCalendarDate(startDateIso, cache);\n        for (let i = 0; i < 100; i++) {\n            const testCalendarDate = this.adjustCalendarDate({ day, monthCode, year: calendarYear - i }, cache);\n            const isoDate = this.calendarToIsoDate(testCalendarDate, 'constrain', cache);\n            const roundTripCalendarDate = this.isoToCalendarDate(isoDate, cache);\n            ({ year: isoYear, month: isoMonth, day: isoDay } = isoDate);\n            if (roundTripCalendarDate.monthCode === monthCode && roundTripCalendarDate.day === day) {\n                return { month: isoMonth, day: isoDay, year: isoYear };\n            }\n            else if (overflow === 'constrain') {\n                // non-ISO constrain algorithm tries to find the closest date in a matching month\n                if (closestCalendar === undefined ||\n                    (roundTripCalendarDate.monthCode === closestCalendar.monthCode &&\n                        roundTripCalendarDate.day > closestCalendar.day)) {\n                    closestCalendar = roundTripCalendarDate;\n                    closestIso = isoDate;\n                }\n            }\n        }\n        if (overflow === 'constrain' && closestIso !== undefined)\n            return closestIso;\n        throw new RangeError(`No recent ${this.id} year with monthCode ${monthCode} and day ${day}`);\n    }\n}\nclass HebrewHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.id = 'hebrew';\n        this.calendarType = 'lunisolar';\n        this.months = {\n            Tishri: { leap: 1, regular: 1, monthCode: 'M01', days: 30 },\n            Heshvan: { leap: 2, regular: 2, monthCode: 'M02', days: { min: 29, max: 30 } },\n            Kislev: { leap: 3, regular: 3, monthCode: 'M03', days: { min: 29, max: 30 } },\n            Tevet: { leap: 4, regular: 4, monthCode: 'M04', days: 29 },\n            Shevat: { leap: 5, regular: 5, monthCode: 'M05', days: 30 },\n            Adar: { leap: undefined, regular: 6, monthCode: 'M06', days: 29 },\n            'Adar I': { leap: 6, regular: undefined, monthCode: 'M05L', days: 30 },\n            'Adar II': { leap: 7, regular: undefined, monthCode: 'M06', days: 29 },\n            Nisan: { leap: 8, regular: 7, monthCode: 'M07', days: 30 },\n            Iyar: { leap: 9, regular: 8, monthCode: 'M08', days: 29 },\n            Sivan: { leap: 10, regular: 9, monthCode: 'M09', days: 30 },\n            Tamuz: { leap: 11, regular: 10, monthCode: 'M10', days: 29 },\n            Av: { leap: 12, regular: 11, monthCode: 'M11', days: 30 },\n            Elul: { leap: 13, regular: 12, monthCode: 'M12', days: 29 }\n        };\n        // All built-in calendars except Chinese/Dangi and Hebrew use an era\n        this.hasEra = false;\n    }\n    inLeapYear(calendarDate) {\n        const { year } = calendarDate;\n        // FYI: In addition to adding a month in leap years, the Hebrew calendar\n        // also has per-year changes to the number of days of Heshvan and Kislev.\n        // Given that these can be calculated by counting the number of days in\n        // those months, I assume that these DO NOT need to be exposed as\n        // Hebrew-only prototype fields or methods.\n        return (7 * year + 1) % 19 < 7;\n    }\n    monthsInYear(calendarDate) {\n        return this.inLeapYear(calendarDate) ? 13 : 12;\n    }\n    minimumMonthLength(calendarDate) {\n        return this.minMaxMonthLength(calendarDate, 'min');\n    }\n    maximumMonthLength(calendarDate) {\n        return this.minMaxMonthLength(calendarDate, 'max');\n    }\n    minMaxMonthLength(calendarDate, minOrMax) {\n        const { month, year } = calendarDate;\n        const monthCode = this.getMonthCode(year, month);\n        const monthInfo = ObjectEntries(this.months).find((m) => m[1].monthCode === monthCode);\n        if (monthInfo === undefined)\n            throw new RangeError(`unmatched Hebrew month: ${month}`);\n        const daysInMonth = monthInfo[1].days;\n        return typeof daysInMonth === 'number' ? daysInMonth : daysInMonth[minOrMax];\n    }\n    /** Take a guess at what ISO date a particular calendar date corresponds to */\n    estimateIsoDate(calendarDate) {\n        const { year } = calendarDate;\n        return { year: year - 3760, month: 1, day: 1 };\n    }\n    getMonthCode(year, month) {\n        if (this.inLeapYear({ year })) {\n            return month === 6 ? buildMonthCode(5, true) : buildMonthCode(month < 6 ? month : month - 1);\n        }\n        else {\n            return buildMonthCode(month);\n        }\n    }\n    adjustCalendarDate(calendarDate, cache, overflow = 'constrain', fromLegacyDate = false) {\n        // The incoming type is actually CalendarDate (same as args to\n        // Calendar.dateFromParams) but TS isn't smart enough to follow all the\n        // reassignments below, so as an alternative to 10+ type casts, we'll lie\n        // here and claim that the type has `day` and `year` filled in already.\n        let { year, eraYear, month, monthCode, day, monthExtra } = calendarDate;\n        if (year === undefined && eraYear !== undefined)\n            year = eraYear;\n        if (eraYear === undefined && year !== undefined)\n            eraYear = year;\n        if (fromLegacyDate) {\n            // In Pre Node-14 V8, DateTimeFormat.formatToParts `month: 'numeric'`\n            // output returns the numeric equivalent of `month` as a string, meaning\n            // that `'6'` in a leap year is Adar I, while `'6'` in a non-leap year\n            // means Adar. In this case, `month` will already be correct and no action\n            // is needed. However, in Node 14 and later formatToParts returns the name\n            // of the Hebrew month (e.g. \"Tevet\"), so we'll need to look up the\n            // correct `month` using the string name as a key.\n            if (monthExtra) {\n                const monthInfo = this.months[monthExtra];\n                if (!monthInfo)\n                    throw new RangeError(`Unrecognized month from formatToParts: ${monthExtra}`);\n                month = this.inLeapYear({ year }) ? monthInfo.leap : monthInfo.regular;\n            }\n            // Because we're getting data from legacy Date, then `month` will always be present\n            monthCode = this.getMonthCode(year, month);\n            const result = { year, month: month, day, era: undefined, eraYear, monthCode };\n            return result;\n        }\n        else {\n            // When called without input coming from legacy Date output, simply ensure\n            // that all fields are present.\n            this.validateCalendarDate(calendarDate);\n            if (month === undefined) {\n                if (monthCode.endsWith('L')) {\n                    if (monthCode !== 'M05L') {\n                        throw new RangeError(`Hebrew leap month must have monthCode M05L, not ${monthCode}`);\n                    }\n                    month = 6;\n                    if (!this.inLeapYear({ year })) {\n                        if (overflow === 'reject') {\n                            throw new RangeError(`Hebrew monthCode M05L is invalid in year ${year} which is not a leap year`);\n                        }\n                        else {\n                            // constrain to last day of previous month (Av)\n                            month = 5;\n                            day = 30;\n                            monthCode = 'M05';\n                        }\n                    }\n                }\n                else {\n                    month = monthCodeNumberPart(monthCode);\n                    // if leap month is before this one, the month index is one more than the month code\n                    if (this.inLeapYear({ year }) && month >= 6)\n                        month++;\n                    const largestMonth = this.monthsInYear({ year });\n                    if (month < 1 || month > largestMonth)\n                        throw new RangeError(`Invalid monthCode: ${monthCode}`);\n                }\n            }\n            else {\n                if (overflow === 'reject') {\n                    ES.RejectToRange(month, 1, this.monthsInYear({ year }));\n                    ES.RejectToRange(day, 1, this.maximumMonthLength({ year, month }));\n                }\n                else {\n                    month = ES.ConstrainToRange(month, 1, this.monthsInYear({ year }));\n                    day = ES.ConstrainToRange(day, 1, this.maximumMonthLength({ year, month }));\n                }\n                if (monthCode === undefined) {\n                    monthCode = this.getMonthCode(year, month);\n                }\n                else {\n                    const calculatedMonthCode = this.getMonthCode(year, month);\n                    if (calculatedMonthCode !== monthCode) {\n                        throw new RangeError(`monthCode ${monthCode} doesn't correspond to month ${month} in Hebrew year ${year}`);\n                    }\n                }\n            }\n            return { ...calendarDate, day, month, monthCode: monthCode, year, eraYear };\n        }\n    }\n}\n/**\n * For Temporal purposes, the Islamic calendar is simple because it's always the\n * same 12 months in the same order.\n */\nclass IslamicBaseHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.calendarType = 'lunar';\n        this.DAYS_PER_ISLAMIC_YEAR = 354 + 11 / 30;\n        this.DAYS_PER_ISO_YEAR = 365.2425;\n        this.constantEra = 'ah';\n    }\n    inLeapYear(calendarDate, cache) {\n        // In leap years, the 12th month has 30 days. In non-leap years: 29.\n        const days = this.daysInMonth({ year: calendarDate.year, month: 12, day: 1 }, cache);\n        return days === 30;\n    }\n    monthsInYear( /* calendarYear, cache */) {\n        return 12;\n    }\n    minimumMonthLength( /* calendarDate */) {\n        return 29;\n    }\n    maximumMonthLength( /* calendarDate */) {\n        return 30;\n    }\n    estimateIsoDate(calendarDate) {\n        const { year } = this.adjustCalendarDate(calendarDate);\n        return { year: MathFloor((year * this.DAYS_PER_ISLAMIC_YEAR) / this.DAYS_PER_ISO_YEAR) + 622, month: 1, day: 1 };\n    }\n}\n// There are 6 Islamic calendars with the same implementation in this polyfill.\n// They vary only in their ID. They do emit different output from the underlying\n// Intl implementation, but our code for each of them is identical.\nclass IslamicHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic';\n    }\n}\nclass IslamicUmalquraHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-umalqura';\n    }\n}\nclass IslamicTblaHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-tbla';\n    }\n}\nclass IslamicCivilHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-civil';\n    }\n}\nclass IslamicRgsaHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamic-rgsa';\n    }\n}\nclass IslamicCcHelper extends IslamicBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'islamicc';\n    }\n}\nclass PersianHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.id = 'persian';\n        this.calendarType = 'solar';\n        this.constantEra = 'ap';\n    }\n    inLeapYear(calendarDate, cache) {\n        // Same logic (count days in the last month) for Persian as for Islamic,\n        // even though Persian is solar and Islamic is lunar.\n        return IslamicHelper.prototype.inLeapYear.call(this, calendarDate, cache);\n    }\n    monthsInYear( /* calendarYear, cache */) {\n        return 12;\n    }\n    minimumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        if (month === 12)\n            return 29;\n        return month <= 6 ? 31 : 30;\n    }\n    maximumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        if (month === 12)\n            return 30;\n        return month <= 6 ? 31 : 30;\n    }\n    estimateIsoDate(calendarDate) {\n        const { year } = this.adjustCalendarDate(calendarDate);\n        return { year: year + 621, month: 1, day: 1 };\n    }\n}\nclass IndianHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.id = 'indian';\n        this.calendarType = 'solar';\n        this.constantEra = 'saka';\n        // Indian months always start at the same well-known Gregorian month and\n        // day. So this conversion is easy and fast. See\n        // https://en.wikipedia.org/wiki/Indian_national_calendar\n        this.months = {\n            1: { length: 30, month: 3, day: 22, leap: { length: 31, month: 3, day: 21 } },\n            2: { length: 31, month: 4, day: 21 },\n            3: { length: 31, month: 5, day: 22 },\n            4: { length: 31, month: 6, day: 22 },\n            5: { length: 31, month: 7, day: 23 },\n            6: { length: 31, month: 8, day: 23 },\n            7: { length: 30, month: 9, day: 23 },\n            8: { length: 30, month: 10, day: 23 },\n            9: { length: 30, month: 11, day: 22 },\n            10: { length: 30, month: 12, day: 22 },\n            11: { length: 30, month: 1, nextYear: true, day: 21 },\n            12: { length: 30, month: 2, nextYear: true, day: 20 }\n        };\n        // https://bugs.chromium.org/p/v8/issues/detail?id=10529 causes Intl's Indian\n        // calendar output to fail for all dates before 0001-01-01 ISO.  For example,\n        // in Node 12 0000-01-01 is calculated as 6146/12/-583 instead of 10/11/-79 as\n        // expected.\n        this.vulnerableToBceBug = new Date('0000-01-01T00:00Z').toLocaleDateString('en-US-u-ca-indian', { timeZone: 'UTC' }) !== '10/11/-79 Saka';\n    }\n    inLeapYear(calendarDate) {\n        // From https://en.wikipedia.org/wiki/Indian_national_calendar:\n        // Years are counted in the Saka era, which starts its year 0 in the year 78\n        // of the Common Era. To determine leap years, add 78 to the Saka year – if\n        // the result is a leap year in the Gregorian calendar, then the Saka year\n        // is a leap year as well.\n        return isGregorianLeapYear(calendarDate.year + 78);\n    }\n    monthsInYear( /* calendarYear, cache */) {\n        return 12;\n    }\n    minimumMonthLength(calendarDate) {\n        return this.getMonthInfo(calendarDate).length;\n    }\n    maximumMonthLength(calendarDate) {\n        return this.getMonthInfo(calendarDate).length;\n    }\n    getMonthInfo(calendarDate) {\n        const { month } = calendarDate;\n        let monthInfo = this.months[month];\n        if (monthInfo === undefined)\n            throw new RangeError(`Invalid month: ${month}`);\n        if (this.inLeapYear(calendarDate) && monthInfo.leap)\n            monthInfo = monthInfo.leap;\n        return monthInfo;\n    }\n    estimateIsoDate(calendarDateParam) {\n        // FYI, this \"estimate\" is always the exact ISO date, which makes the Indian\n        // calendar fast!\n        const calendarDate = this.adjustCalendarDate(calendarDateParam);\n        const monthInfo = this.getMonthInfo(calendarDate);\n        const isoYear = calendarDate.year + 78 + (monthInfo.nextYear ? 1 : 0);\n        const isoMonth = monthInfo.month;\n        const isoDay = monthInfo.day;\n        const isoDate = ES.AddISODate(isoYear, isoMonth, isoDay, 0, 0, 0, calendarDate.day - 1, 'constrain');\n        return isoDate;\n    }\n    checkIcuBugs(isoDate) {\n        if (this.vulnerableToBceBug && isoDate.year < 1) {\n            throw new RangeError(`calendar '${this.id}' is broken for ISO dates before 0001-01-01` +\n                ' (see https://bugs.chromium.org/p/v8/issues/detail?id=10529)');\n        }\n    }\n}\n/**\n * This function adds additional metadata that makes it easier to work with\n * eras. Note that it mutates and normalizes the original era objects, which is\n * OK because this is non-observable, internal-only metadata.\n *\n * The result is an array of eras with the shape defined above.\n * */\nfunction adjustEras(erasParam) {\n    let eras = erasParam;\n    if (eras.length === 0) {\n        throw new RangeError('Invalid era data: eras are required');\n    }\n    if (eras.length === 1 && eras[0].reverseOf) {\n        throw new RangeError('Invalid era data: anchor era cannot count years backwards');\n    }\n    if (eras.length === 1 && !eras[0].name) {\n        throw new RangeError('Invalid era data: at least one named era is required');\n    }\n    if (eras.filter((e) => e.reverseOf != null).length > 1) {\n        throw new RangeError('Invalid era data: only one era can count years backwards');\n    }\n    // Find the \"anchor era\" which is the era used for (era-less) `year`. Reversed\n    // eras can never be anchors. The era without an `anchorEpoch` property is the\n    // anchor.\n    let anchorEra;\n    eras.forEach((e) => {\n        if (e.isAnchor || (!e.anchorEpoch && !e.reverseOf)) {\n            if (anchorEra)\n                throw new RangeError('Invalid era data: cannot have multiple anchor eras');\n            anchorEra = e;\n            e.anchorEpoch = { year: e.hasYearZero ? 0 : 1 };\n        }\n        else if (!e.name) {\n            throw new RangeError('If era name is blank, it must be the anchor era');\n        }\n    });\n    // If the era name is undefined, then it's an anchor that doesn't interact\n    // with eras at all. For example, Japanese `year` is always the same as ISO\n    // `year`.  So this \"era\" is the anchor era but isn't used for era matching.\n    // Strip it from the list that's returned.\n    eras = eras.filter((e) => e.name);\n    eras.forEach((e) => {\n        // Some eras are mirror images of another era e.g. B.C. is the reverse of A.D.\n        // Replace the string-valued \"reverseOf\" property with the actual era object\n        // that's reversed.\n        const { reverseOf } = e;\n        if (reverseOf) {\n            const reversedEra = eras.find((era) => era.name === reverseOf);\n            if (reversedEra === undefined)\n                throw new RangeError(`Invalid era data: unmatched reverseOf era: ${reverseOf}`);\n            e.reverseOf = reversedEra;\n            e.anchorEpoch = reversedEra.anchorEpoch;\n            e.isoEpoch = reversedEra.isoEpoch;\n        }\n        if (e.anchorEpoch.month === undefined)\n            e.anchorEpoch.month = 1;\n        if (e.anchorEpoch.day === undefined)\n            e.anchorEpoch.day = 1;\n    });\n    // Ensure that the latest epoch is first in the array. This lets us try to\n    // match eras in index order, with the last era getting the remaining older\n    // years. Any reverse-signed era must be at the end.\n    ArraySort.call(eras, (e1, e2) => {\n        if (e1.reverseOf)\n            return 1;\n        if (e2.reverseOf)\n            return -1;\n        if (!e1.isoEpoch || !e2.isoEpoch)\n            throw new RangeError('Invalid era data: missing ISO epoch');\n        return e2.isoEpoch.year - e1.isoEpoch.year;\n    });\n    // If there's a reversed era, then the one before it must be the era that's\n    // being reversed.\n    const lastEraReversed = eras[eras.length - 1].reverseOf;\n    if (lastEraReversed) {\n        if (lastEraReversed !== eras[eras.length - 2])\n            throw new RangeError('Invalid era data: invalid reverse-sign era');\n    }\n    // Finally, add a \"genericName\" property in the format \"era{n} where `n` is\n    // zero-based index, with the oldest era being zero. This format is used by\n    // older versions of ICU data.\n    eras.forEach((e, i) => {\n        e.genericName = `era${eras.length - 1 - i}`;\n    });\n    return { eras: eras, anchorEra: (anchorEra || eras[0]) };\n}\nfunction isGregorianLeapYear(year) {\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n/** Base for all Gregorian-like calendars. */\nclass GregorianBaseHelper extends HelperBase {\n    constructor(id, originalEras) {\n        super();\n        this.calendarType = 'solar';\n        // Several calendars based on the Gregorian calendar use Julian dates (not\n        // proleptic Gregorian dates) before the Julian switchover in Oct 1582. See\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=1173158.\n        this.v8IsVulnerableToJulianBug = new Date('+001001-01-01T00:00Z')\n            .toLocaleDateString('en-US-u-ca-japanese', { timeZone: 'UTC' })\n            .startsWith('12');\n        this.calendarIsVulnerableToJulianBug = false;\n        this.id = id;\n        const { eras, anchorEra } = adjustEras(originalEras);\n        this.anchorEra = anchorEra;\n        this.eras = eras;\n    }\n    inLeapYear(calendarDate) {\n        // Calendars that don't override this method use the same months and leap\n        // years as Gregorian. Once we know the ISO year corresponding to the\n        // calendar year, we'll know if it's a leap year or not.\n        const { year } = this.estimateIsoDate({ month: 1, day: 1, year: calendarDate.year });\n        return isGregorianLeapYear(year);\n    }\n    monthsInYear( /* calendarDate */) {\n        return 12;\n    }\n    minimumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        if (month === 2)\n            return this.inLeapYear(calendarDate) ? 29 : 28;\n        return [4, 6, 9, 11].indexOf(month) >= 0 ? 30 : 31;\n    }\n    maximumMonthLength(calendarDate) {\n        return this.minimumMonthLength(calendarDate);\n    }\n    /** Fill in missing parts of the (year, era, eraYear) tuple */\n    completeEraYear(calendarDate) {\n        const checkField = (name, value) => {\n            const currentValue = calendarDate[name];\n            if (currentValue != null && currentValue != value) {\n                throw new RangeError(`Input ${name} ${currentValue} doesn't match calculated value ${value}`);\n            }\n        };\n        const eraFromYear = (year) => {\n            let eraYear;\n            const adjustedCalendarDate = { ...calendarDate, year };\n            const matchingEra = this.eras.find((e, i) => {\n                if (i === this.eras.length - 1) {\n                    if (e.reverseOf) {\n                        // This is a reverse-sign era (like BCE) which must be the oldest\n                        // era. Count years backwards.\n                        if (year > 0)\n                            throw new RangeError(`Signed year ${year} is invalid for era ${e.name}`);\n                        eraYear = e.anchorEpoch.year - year;\n                        return true;\n                    }\n                    // last era always gets all \"leftover\" (older than epoch) years,\n                    // so no need for a comparison like below.\n                    eraYear = year - e.anchorEpoch.year + (e.hasYearZero ? 0 : 1);\n                    return true;\n                }\n                const comparison = this.compareCalendarDates(adjustedCalendarDate, e.anchorEpoch);\n                if (comparison >= 0) {\n                    eraYear = year - e.anchorEpoch.year + (e.hasYearZero ? 0 : 1);\n                    return true;\n                }\n                return false;\n            });\n            if (!matchingEra)\n                throw new RangeError(`Year ${year} was not matched by any era`);\n            return { eraYear: eraYear, era: matchingEra.name };\n        };\n        let { year, eraYear, era } = calendarDate;\n        if (year != null) {\n            ({ eraYear, era } = eraFromYear(year));\n            checkField('era', era);\n            checkField('eraYear', eraYear);\n        }\n        else if (eraYear != null) {\n            const matchingEra = era === undefined ? undefined : this.eras.find((e) => e.name === era || e.genericName === era);\n            if (!matchingEra)\n                throw new RangeError(`Era ${era} (ISO year ${eraYear}) was not matched by any era`);\n            if (eraYear < 1 && matchingEra.reverseOf) {\n                throw new RangeError(`Years in ${era} era must be positive, not ${year}`);\n            }\n            if (matchingEra.reverseOf) {\n                year = matchingEra.anchorEpoch.year - eraYear;\n            }\n            else {\n                year = eraYear + matchingEra.anchorEpoch.year - (matchingEra.hasYearZero ? 0 : 1);\n            }\n            checkField('year', year);\n            // We'll accept dates where the month/day is earlier than the start of\n            // the era or after its end as long as it's in the same year. If that\n            // happens, we'll adjust the era/eraYear pair to be the correct era for\n            // the `year`.\n            ({ eraYear, era } = eraFromYear(year));\n        }\n        else {\n            throw new RangeError('Either `year` or `eraYear` and `era` are required');\n        }\n        return { ...calendarDate, year, eraYear, era };\n    }\n    adjustCalendarDate(calendarDateParam, cache, overflow = 'constrain') {\n        let calendarDate = calendarDateParam;\n        // Because this is not a lunisolar calendar, it's safe to convert monthCode to a number\n        const { month, monthCode } = calendarDate;\n        if (month === undefined)\n            calendarDate = { ...calendarDate, month: monthCodeNumberPart(monthCode) };\n        this.validateCalendarDate(calendarDate);\n        calendarDate = this.completeEraYear(calendarDate);\n        return super.adjustCalendarDate(calendarDate, cache, overflow);\n    }\n    estimateIsoDate(calendarDateParam) {\n        const calendarDate = this.adjustCalendarDate(calendarDateParam);\n        const { year, month, day } = calendarDate;\n        const { anchorEra } = this;\n        const isoYearEstimate = year + anchorEra.isoEpoch.year - (anchorEra.hasYearZero ? 0 : 1);\n        return ES.RegulateISODate(isoYearEstimate, month, day, 'constrain');\n    }\n    checkIcuBugs(isoDate) {\n        if (this.calendarIsVulnerableToJulianBug && this.v8IsVulnerableToJulianBug) {\n            const beforeJulianSwitch = ES.CompareISODate(isoDate.year, isoDate.month, isoDate.day, 1582, 10, 15) < 0;\n            if (beforeJulianSwitch) {\n                throw new RangeError(`calendar '${this.id}' is broken for ISO dates before 1582-10-15` +\n                    ' (see https://bugs.chromium.org/p/chromium/issues/detail?id=1173158)');\n            }\n        }\n    }\n}\nclass OrthodoxBaseHelper extends GregorianBaseHelper {\n    constructor(id, originalEras) {\n        super(id, originalEras);\n    }\n    inLeapYear(calendarDate) {\n        // Leap years happen one year before the Julian leap year. Note that this\n        // calendar is based on the Julian calendar which has a leap year every 4\n        // years, unlike the Gregorian calendar which doesn't have leap years on\n        // years divisible by 100 except years divisible by 400.\n        //\n        // Note that we're assuming that leap years in before-epoch times match\n        // how leap years are defined now. This is probably not accurate but I'm\n        // not sure how better to do it.\n        const { year } = calendarDate;\n        return (year + 1) % 4 === 0;\n    }\n    monthsInYear( /* calendarDate */) {\n        return 13;\n    }\n    minimumMonthLength(calendarDate) {\n        const { month } = calendarDate;\n        // Ethiopian/Coptic calendars have 12 30-day months and an extra 5-6 day 13th month.\n        if (month === 13)\n            return this.inLeapYear(calendarDate) ? 6 : 5;\n        return 30;\n    }\n    maximumMonthLength(calendarDate) {\n        return this.minimumMonthLength(calendarDate);\n    }\n}\n// `coptic` and `ethiopic` calendars are very similar to `ethioaa` calendar,\n// with the following differences:\n// - Coptic uses BCE-like positive numbers for years before its epoch (the other\n//   two use negative year numbers before epoch)\n// - Coptic has a different epoch date\n// - Ethiopic has an additional second era that starts at the same date as the\n//   zero era of ethioaa.\nclass EthioaaHelper extends OrthodoxBaseHelper {\n    constructor() {\n        super('ethioaa', [{ name: 'era0', isoEpoch: { year: -5492, month: 7, day: 17 } }]);\n    }\n}\nclass CopticHelper extends OrthodoxBaseHelper {\n    constructor() {\n        super('coptic', [\n            { name: 'era1', isoEpoch: { year: 284, month: 8, day: 29 } },\n            { name: 'era0', reverseOf: 'era1' }\n        ]);\n    }\n}\n// Anchor is currently the older era to match ethioaa, but should it be the newer era?\n// See https://github.com/tc39/ecma402/issues/534 for discussion.\nclass EthiopicHelper extends OrthodoxBaseHelper {\n    constructor() {\n        super('ethiopic', [\n            { name: 'era0', isoEpoch: { year: -5492, month: 7, day: 17 } },\n            { name: 'era1', isoEpoch: { year: 8, month: 8, day: 27 }, anchorEpoch: { year: 5501 } }\n        ]);\n    }\n}\nclass RocHelper extends GregorianBaseHelper {\n    constructor() {\n        super('roc', [\n            { name: 'minguo', isoEpoch: { year: 1912, month: 1, day: 1 } },\n            { name: 'before-roc', reverseOf: 'minguo' }\n        ]);\n        this.calendarIsVulnerableToJulianBug = true;\n    }\n}\nclass BuddhistHelper extends GregorianBaseHelper {\n    constructor() {\n        super('buddhist', [{ name: 'be', hasYearZero: true, isoEpoch: { year: -543, month: 1, day: 1 } }]);\n        this.calendarIsVulnerableToJulianBug = true;\n    }\n}\nclass GregoryHelper extends GregorianBaseHelper {\n    constructor() {\n        super('gregory', [\n            { name: 'ce', isoEpoch: { year: 1, month: 1, day: 1 } },\n            { name: 'bce', reverseOf: 'ce' }\n        ]);\n    }\n    reviseIntlEra(calendarDate /*, isoDate: IsoDate*/) {\n        let { era, eraYear } = calendarDate;\n        // Firefox 96 introduced a bug where the `'short'` format of the era\n        // option mistakenly returns the one-letter (narrow) format instead. The\n        // code below handles either the correct or Firefox-buggy format. See\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=1752253\n        if (era === 'bc' || era === 'b')\n            era = 'bce';\n        if (era === 'ad' || era === 'a')\n            era = 'ce';\n        return { era, eraYear };\n    }\n}\n// NOTE: Only the 5 modern eras (Meiji and later) are included. For dates\n// before Meiji 1, the `ce` and `bce` eras are used. Challenges with pre-Meiji\n// eras include:\n// - Start/end dates of older eras are not precisely defined, which is\n//   challenging given Temporal's need for precision\n// - Some era dates and/or names are disputed by historians\n// - As historical research proceeds, new eras are discovered and existing era\n//   dates are modified, leading to considerable churn which is not good for\n//   Temporal use.\n//  - The earliest era (in 645 CE) may not end up being the earliest depending\n//    on future historical scholarship\n//  - Before Meiji, Japan used a lunar (or lunisolar?) calendar but AFAIK\n//    that's not reflected in the ICU implementation.\n//\n// For more discussion: https://github.com/tc39/proposal-temporal/issues/526.\n//\n// Here's a full list of CLDR/ICU eras:\n// https://github.com/unicode-org/icu/blob/master/icu4c/source/data/locales/root.txt#L1582-L1818\n// https://github.com/unicode-org/cldr/blob/master/common/supplemental/supplementalData.xml#L4310-L4546\n//\n// NOTE: Japan started using the Gregorian calendar in 6 Meiji, replacing a\n// lunisolar calendar. So the day before January 1 of 6 Meiji (1873) was not\n// December 31, but December 2, of 5 Meiji (1872). The existing Ecma-402\n// Japanese calendar doesn't seem to take this into account, so neither do we:\n// > args = ['en-ca-u-ca-japanese', { era: 'short' }]\n// > new Date('1873-01-01T12:00').toLocaleString(...args)\n// '1 1, 6 Meiji, 12:00:00 PM'\n// > new Date('1872-12-31T12:00').toLocaleString(...args)\n// '12 31, 5 Meiji, 12:00:00 PM'\nclass JapaneseHelper extends GregorianBaseHelper {\n    constructor() {\n        super('japanese', [\n            // The Japanese calendar `year` is just the ISO year, because (unlike other\n            // ICU calendars) there's no obvious \"default era\", we use the ISO year.\n            { name: 'reiwa', isoEpoch: { year: 2019, month: 5, day: 1 }, anchorEpoch: { year: 2019, month: 5, day: 1 } },\n            { name: 'heisei', isoEpoch: { year: 1989, month: 1, day: 8 }, anchorEpoch: { year: 1989, month: 1, day: 8 } },\n            { name: 'showa', isoEpoch: { year: 1926, month: 12, day: 25 }, anchorEpoch: { year: 1926, month: 12, day: 25 } },\n            { name: 'taisho', isoEpoch: { year: 1912, month: 7, day: 30 }, anchorEpoch: { year: 1912, month: 7, day: 30 } },\n            { name: 'meiji', isoEpoch: { year: 1868, month: 9, day: 8 }, anchorEpoch: { year: 1868, month: 9, day: 8 } },\n            { name: 'ce', isoEpoch: { year: 1, month: 1, day: 1 } },\n            { name: 'bce', reverseOf: 'ce' }\n        ]);\n        this.calendarIsVulnerableToJulianBug = true;\n        // The last 3 Japanese eras confusingly return only one character in the\n        // default \"short\" era, so need to use the long format.\n        this.eraLength = 'long';\n    }\n    reviseIntlEra(calendarDate, isoDate) {\n        const { era, eraYear } = calendarDate;\n        const { year: isoYear } = isoDate;\n        if (this.eras.find((e) => e.name === era))\n            return { era, eraYear };\n        return (isoYear < 1 ? { era: 'bce', eraYear: 1 - isoYear } : { era: 'ce', eraYear: isoYear });\n    }\n}\nclass ChineseBaseHelper extends HelperBase {\n    constructor() {\n        super(...arguments);\n        this.calendarType = 'lunisolar';\n        // All built-in calendars except Chinese/Dangi and Hebrew use an era\n        this.hasEra = false;\n    }\n    inLeapYear(calendarDate, cache) {\n        const months = this.getMonthList(calendarDate.year, cache);\n        return ObjectEntries(months).length === 13;\n    }\n    monthsInYear(calendarDate, cache) {\n        return this.inLeapYear(calendarDate, cache) ? 13 : 12;\n    }\n    minimumMonthLength( /* calendarDate */) {\n        return 29;\n    }\n    maximumMonthLength( /* calendarDate */) {\n        return 30;\n    }\n    getMonthList(calendarYear, cache) {\n        if (calendarYear === undefined) {\n            throw new TypeError('Missing year');\n        }\n        const key = JSON.stringify({ func: 'getMonthList', calendarYear, id: this.id });\n        const cached = cache.get(key);\n        if (cached)\n            return cached;\n        const dateTimeFormat = this.getFormatter();\n        const getCalendarDate = (isoYear, daysPastFeb1) => {\n            const isoStringFeb1 = toUtcIsoDateString({ isoYear, isoMonth: 2, isoDay: 1 });\n            const legacyDate = new Date(isoStringFeb1);\n            // Now add the requested number of days, which may wrap to the next month.\n            legacyDate.setUTCDate(daysPastFeb1 + 1);\n            const newYearGuess = dateTimeFormat.formatToParts(legacyDate);\n            const calendarMonthString = newYearGuess.find((tv) => tv.type === 'month').value;\n            const calendarDay = +newYearGuess.find((tv) => tv.type === 'day').value;\n            let calendarYearToVerify = newYearGuess.find((tv) => tv.type === 'relatedYear');\n            if (calendarYearToVerify !== undefined) {\n                calendarYearToVerify = +calendarYearToVerify.value;\n            }\n            else {\n                // Node 12 has outdated ICU data that lacks the `relatedYear` field in the\n                // output of Intl.DateTimeFormat.formatToParts.\n                throw new RangeError(`Intl.DateTimeFormat.formatToParts lacks relatedYear in ${this.id} calendar. Try Node 14+ or modern browsers.`);\n            }\n            return { calendarMonthString, calendarDay, calendarYearToVerify };\n        };\n        // First, find a date close to Chinese New Year. Feb 17 will either be in\n        // the first month or near the end of the last month of the previous year.\n        let isoDaysDelta = 17;\n        let { calendarMonthString, calendarDay, calendarYearToVerify } = getCalendarDate(calendarYear, isoDaysDelta);\n        // If we didn't guess the first month correctly, add (almost in some months)\n        // a lunar month\n        if (calendarMonthString !== '1') {\n            isoDaysDelta += 29;\n            ({ calendarMonthString, calendarDay } = getCalendarDate(calendarYear, isoDaysDelta));\n        }\n        // Now back up to near the start of the first month, but not too near that\n        // off-by-one issues matter.\n        isoDaysDelta -= calendarDay - 5;\n        const result = {};\n        let monthIndex = 1;\n        let oldCalendarDay;\n        let oldMonthString;\n        let done = false;\n        do {\n            ({ calendarMonthString, calendarDay, calendarYearToVerify } = getCalendarDate(calendarYear, isoDaysDelta));\n            if (oldCalendarDay) {\n                result[oldMonthString].daysInMonth = oldCalendarDay + 30 - calendarDay;\n            }\n            if (calendarYearToVerify !== calendarYear) {\n                done = true;\n            }\n            else {\n                result[calendarMonthString] = { monthIndex: monthIndex++ };\n                // Move to the next month. Because months are sometimes 29 days, the day of the\n                // calendar month will move forward slowly but not enough to flip over to a new\n                // month before the loop ends at 12-13 months.\n                isoDaysDelta += 30;\n            }\n            oldCalendarDay = calendarDay;\n            oldMonthString = calendarMonthString;\n        } while (!done);\n        result[oldMonthString].daysInMonth = oldCalendarDay + 30 - calendarDay;\n        cache.set(key, result);\n        return result;\n    }\n    estimateIsoDate(calendarDate) {\n        const { year, month } = calendarDate;\n        return { year, month: month >= 12 ? 12 : month + 1, day: 1 };\n    }\n    adjustCalendarDate(calendarDate, cache, overflow = 'constrain', fromLegacyDate = false) {\n        let { year, month, monthExtra, day, monthCode, eraYear } = calendarDate;\n        if (fromLegacyDate) {\n            // Legacy Date output returns a string that's an integer with an optional\n            // \"bis\" suffix used only by the Chinese/Dangi calendar to indicate a leap\n            // month. Below we'll normalize the output.\n            year = eraYear;\n            if (monthExtra && monthExtra !== 'bis')\n                throw new RangeError(`Unexpected leap month suffix: ${monthExtra}`);\n            const monthCode = buildMonthCode(month, monthExtra !== undefined);\n            const monthString = `${month}${monthExtra || ''}`;\n            const months = this.getMonthList(year, cache);\n            const monthInfo = months[monthString];\n            if (monthInfo === undefined)\n                throw new RangeError(`Unmatched month ${monthString} in Chinese year ${year}`);\n            month = monthInfo.monthIndex;\n            return { year: year, month, day: day, era: undefined, eraYear, monthCode };\n        }\n        else {\n            // When called without input coming from legacy Date output,\n            // simply ensure that all fields are present.\n            this.validateCalendarDate(calendarDate);\n            if (year === undefined)\n                year = eraYear;\n            if (eraYear === undefined)\n                eraYear = year;\n            if (month === undefined) {\n                const months = this.getMonthList(year, cache);\n                let numberPart = monthCode.replace('L', 'bis').slice(1);\n                if (numberPart[0] === '0')\n                    numberPart = numberPart.slice(1);\n                let monthInfo = months[numberPart];\n                month = monthInfo && monthInfo.monthIndex;\n                // If this leap month isn't present in this year, constrain down to the last day of the previous month.\n                if (month === undefined &&\n                    monthCode.endsWith('L') &&\n                    !ArrayIncludes.call(['M01L', 'M12L', 'M13L'], monthCode) &&\n                    overflow === 'constrain') {\n                    let withoutML = monthCode.slice(1, -1);\n                    if (withoutML[0] === '0')\n                        withoutML = withoutML.slice(1);\n                    monthInfo = months[withoutML];\n                    if (monthInfo) {\n                        ({ daysInMonth: day, monthIndex: month } = monthInfo);\n                        monthCode = buildMonthCode(withoutML);\n                    }\n                }\n                if (month === undefined) {\n                    throw new RangeError(`Unmatched month ${monthCode} in Chinese year ${year}`);\n                }\n            }\n            else if (monthCode === undefined) {\n                const months = this.getMonthList(year, cache);\n                const monthEntries = ObjectEntries(months);\n                const largestMonth = monthEntries.length;\n                if (overflow === 'reject') {\n                    ES.RejectToRange(month, 1, largestMonth);\n                    ES.RejectToRange(day, 1, this.maximumMonthLength());\n                }\n                else {\n                    month = ES.ConstrainToRange(month, 1, largestMonth);\n                    day = ES.ConstrainToRange(day, 1, this.maximumMonthLength());\n                }\n                const matchingMonthEntry = monthEntries.find(([, v]) => v.monthIndex === month);\n                if (matchingMonthEntry === undefined) {\n                    throw new RangeError(`Invalid month ${month} in Chinese year ${year}`);\n                }\n                monthCode = buildMonthCode(matchingMonthEntry[0].replace('bis', ''), matchingMonthEntry[0].indexOf('bis') !== -1);\n            }\n            else {\n                // Both month and monthCode are present. Make sure they don't conflict.\n                const months = this.getMonthList(year, cache);\n                let numberPart = monthCode.replace('L', 'bis').slice(1);\n                if (numberPart[0] === '0')\n                    numberPart = numberPart.slice(1);\n                const monthInfo = months[numberPart];\n                if (!monthInfo)\n                    throw new RangeError(`Unmatched monthCode ${monthCode} in Chinese year ${year}`);\n                if (month !== monthInfo.monthIndex) {\n                    throw new RangeError(`monthCode ${monthCode} doesn't correspond to month ${month} in Chinese year ${year}`);\n                }\n            }\n            return {\n                ...calendarDate,\n                year: year,\n                eraYear,\n                month,\n                monthCode: monthCode,\n                day: day\n            };\n        }\n    }\n}\nclass ChineseHelper extends ChineseBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'chinese';\n    }\n}\n// Dangi (Korean) calendar has same implementation as Chinese\nclass DangiHelper extends ChineseBaseHelper {\n    constructor() {\n        super(...arguments);\n        this.id = 'dangi';\n    }\n}\n/**\n * Common implementation of all non-ISO calendars.\n * Per-calendar id and logic live in `id` and `helper` properties attached later.\n * This split allowed an easy separation between code that was similar between\n * ISO and non-ISO implementations vs. code that was very different.\n */\nconst nonIsoImpl = {\n    // `helper` is added when this object is spread into each calendar's\n    // implementation\n    helper: undefined,\n    dateFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        const cache = new OneObjectCache();\n        // Intentionally alphabetical\n        const fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'era', 'eraYear', 'month', 'monthCode', 'year'], ['day']);\n        const { year, month, day } = this.helper.calendarToIsoDate(fields, overflow, cache);\n        const result = ES.CreateTemporalDate(year, month, day, calendar);\n        cache.setObject(result);\n        return result;\n    },\n    yearMonthFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        const cache = new OneObjectCache();\n        // Intentionally alphabetical\n        const fields = ES.PrepareTemporalFields(fieldsParam, ['era', 'eraYear', 'month', 'monthCode', 'year'], []);\n        const { year, month, day } = this.helper.calendarToIsoDate({ ...fields, day: 1 }, overflow, cache);\n        const result = ES.CreateTemporalYearMonth(year, month, calendar, /* referenceISODay = */ day);\n        cache.setObject(result);\n        return result;\n    },\n    monthDayFromFields(fieldsParam, options, calendar) {\n        const overflow = ES.ToTemporalOverflow(options);\n        // All built-in calendars require `day`, but some allow other fields to be\n        // substituted for `month`. And for lunisolar calendars, either `monthCode`\n        // or `year` must be provided because `month` is ambiguous without a year or\n        // a code.\n        const cache = new OneObjectCache();\n        const fields = ES.PrepareTemporalFields(fieldsParam, ['day', 'era', 'eraYear', 'month', 'monthCode', 'year'], ['day']);\n        const { year, month, day } = this.helper.monthDayFromFields(fields, overflow, cache);\n        // `year` is a reference year where this month/day exists in this calendar\n        const result = ES.CreateTemporalMonthDay(month, day, calendar, /* referenceISOYear = */ year);\n        cache.setObject(result);\n        return result;\n    },\n    fields(fieldsParam) {\n        let fields = fieldsParam;\n        if (ArrayIncludes.call(fields, 'year'))\n            fields = [...fields, 'era', 'eraYear'];\n        return fields;\n    },\n    mergeFields(fields, additionalFields) {\n        const fieldsCopy = { ...fields };\n        const additionalFieldsCopy = { ...additionalFields };\n        // era and eraYear are intentionally unused\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { month, monthCode, year, era, eraYear, ...original } = fieldsCopy;\n        const { month: newMonth, monthCode: newMonthCode, year: newYear, era: newEra, eraYear: newEraYear } = additionalFieldsCopy;\n        if (newMonth === undefined && newMonthCode === undefined) {\n            original.month = month;\n            original.monthCode = monthCode;\n        }\n        if (newYear === undefined && newEra === undefined && newEraYear === undefined) {\n            // Only `year` is needed. We don't set era and eraYear because it's\n            // possible to create a conflict for eras that start or end mid-year. See\n            // https://github.com/tc39/proposal-temporal/issues/1784.\n            original.year = year;\n        }\n        return { ...original, ...additionalFieldsCopy };\n    },\n    dateAdd(date, years, months, weeks, days, overflow, calendar) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const added = this.helper.addCalendar(calendarDate, { years, months, weeks, days }, overflow, cache);\n        const isoAdded = this.helper.calendarToIsoDate(added, 'constrain', cache);\n        const { year, month, day } = isoAdded;\n        const newTemporalObject = ES.CreateTemporalDate(year, month, day, calendar);\n        // The new object's cache starts with the cache of the old object\n        const newCache = new OneObjectCache(cache);\n        newCache.setObject(newTemporalObject);\n        return newTemporalObject;\n    },\n    dateUntil(one, two, largestUnit) {\n        const cacheOne = OneObjectCache.getCacheForObject(one);\n        const cacheTwo = OneObjectCache.getCacheForObject(two);\n        const calendarOne = this.helper.temporalToCalendarDate(one, cacheOne);\n        const calendarTwo = this.helper.temporalToCalendarDate(two, cacheTwo);\n        const result = this.helper.untilCalendar(calendarOne, calendarTwo, largestUnit, cacheOne);\n        return result;\n    },\n    year(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.year;\n    },\n    month(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.month;\n    },\n    day(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.day;\n    },\n    era(date) {\n        if (!this.helper.hasEra)\n            return undefined;\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.era;\n    },\n    eraYear(date) {\n        if (!this.helper.hasEra)\n            return undefined;\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.eraYear;\n    },\n    monthCode(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        return calendarDate.monthCode;\n    },\n    dayOfWeek(date) {\n        return impl['iso8601'].dayOfWeek(date);\n    },\n    dayOfYear(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.isoToCalendarDate(date, cache);\n        const startOfYear = this.helper.startOfCalendarYear(calendarDate);\n        const diffDays = this.helper.calendarDaysUntil(startOfYear, calendarDate, cache);\n        return diffDays + 1;\n    },\n    weekOfYear(date) {\n        return impl['iso8601'].weekOfYear(date);\n    },\n    daysInWeek(date) {\n        return impl['iso8601'].daysInWeek(date);\n    },\n    daysInMonth(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        // Easy case: if the helper knows the length without any heavy calculation.\n        const max = this.helper.maximumMonthLength(calendarDate);\n        const min = this.helper.minimumMonthLength(calendarDate);\n        if (max === min)\n            return max;\n        // The harder case is where months vary every year, e.g. islamic calendars.\n        // Find the answer by calculating the difference in days between the first\n        // day of the current month and the first day of the next month.\n        const startOfMonthCalendar = this.helper.startOfCalendarMonth(calendarDate);\n        const startOfNextMonthCalendar = this.helper.addMonthsCalendar(startOfMonthCalendar, 1, 'constrain', cache);\n        const result = this.helper.calendarDaysUntil(startOfMonthCalendar, startOfNextMonthCalendar, cache);\n        return result;\n    },\n    daysInYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const startOfYearCalendar = this.helper.startOfCalendarYear(calendarDate);\n        const startOfNextYearCalendar = this.helper.addCalendar(startOfYearCalendar, { years: 1 }, 'constrain', cache);\n        const result = this.helper.calendarDaysUntil(startOfYearCalendar, startOfNextYearCalendar, cache);\n        return result;\n    },\n    monthsInYear(date) {\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const result = this.helper.monthsInYear(calendarDate, cache);\n        return result;\n    },\n    inLeapYear(dateParam) {\n        let date = dateParam;\n        if (!HasSlot(date, ISO_YEAR))\n            date = ES.ToTemporalDate(date);\n        const cache = OneObjectCache.getCacheForObject(date);\n        const calendarDate = this.helper.temporalToCalendarDate(date, cache);\n        const result = this.helper.inLeapYear(calendarDate, cache);\n        return result;\n    }\n};\nfor (const Helper of [\n    HebrewHelper,\n    PersianHelper,\n    EthiopicHelper,\n    EthioaaHelper,\n    CopticHelper,\n    ChineseHelper,\n    DangiHelper,\n    RocHelper,\n    IndianHelper,\n    BuddhistHelper,\n    GregoryHelper,\n    JapaneseHelper,\n    IslamicHelper,\n    IslamicUmalquraHelper,\n    IslamicTblaHelper,\n    IslamicCivilHelper,\n    IslamicRgsaHelper,\n    IslamicCcHelper\n]) {\n    const helper = new Helper();\n    // Clone the singleton non-ISO implementation that's the same for all\n    // calendars. The `helper` property contains per-calendar logic.\n    impl[helper.id] = { ...nonIsoImpl, helper };\n}\n//# sourceMappingURL=calendar.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, EPOCHNANOSECONDS, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nexport class PlainDate {\n    constructor(isoYearParam, isoMonthParam, isoDayParam, calendarParam = ES.GetISO8601Calendar()) {\n        const isoYear = ES.ToIntegerThrowOnInfinity(isoYearParam);\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const isoDay = ES.ToIntegerThrowOnInfinity(isoDayParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectISODate in CreateTemporalDateSlots. This check\n        //       exists only to improve the error message.\n        if (arguments.length < 3) {\n            throw new RangeError('missing argument: isoYear, isoMonth and isoDay are required');\n        }\n        ES.CreateTemporalDateSlots(this, isoYear, isoMonth, isoDay, calendar);\n    }\n    get calendar() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get era() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), this);\n    }\n    get eraYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), this);\n    }\n    get year() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), this);\n    }\n    get month() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get day() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfWeek() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get weekOfYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInWeek() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), this);\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), this);\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), this);\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), this);\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), this);\n    }\n    with(temporalDateLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalDateLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalDateLike);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const props = ES.PrepareTemporalFields(temporalDateLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid date-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarDateFromFields(calendar, fields, options);\n    }\n    withCalendar(calendarParam) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return new PlainDate(GetSlot(this, ISO_YEAR), GetSlot(this, ISO_MONTH), GetSlot(this, ISO_DAY), calendar);\n    }\n    add(temporalDurationLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const duration = ES.ToTemporalDuration(temporalDurationLike);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarDateAdd(GetSlot(this, CALENDAR), this, duration, options);\n    }\n    subtract(temporalDurationLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const duration = ES.CreateNegatedTemporalDuration(ES.ToTemporalDuration(temporalDurationLike));\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarDateAdd(GetSlot(this, CALENDAR), this, duration, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDate('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDate('since', this, other, options);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalDate(otherParam);\n        for (const slot of [ISO_YEAR, ISO_MONTH, ISO_DAY]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        return ES.TemporalDateToString(this, showCalendar);\n    }\n    toJSON() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainDate');\n    }\n    toPlainDateTime(temporalTimeParam = undefined) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const year = GetSlot(this, ISO_YEAR);\n        const month = GetSlot(this, ISO_MONTH);\n        const day = GetSlot(this, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        if (temporalTimeParam === undefined)\n            return ES.CreateTemporalDateTime(year, month, day, 0, 0, 0, 0, 0, 0, calendar);\n        const temporalTime = ES.ToTemporalTime(temporalTimeParam);\n        const hour = GetSlot(temporalTime, ISO_HOUR);\n        const minute = GetSlot(temporalTime, ISO_MINUTE);\n        const second = GetSlot(temporalTime, ISO_SECOND);\n        const millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    toZonedDateTime(item) {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        let timeZone, temporalTime;\n        if (ES.IsObject(item)) {\n            const timeZoneLike = item.timeZone;\n            if (timeZoneLike === undefined) {\n                // The cast below is needed because it's possible here for\n                // `timeZoneLike` here to be `{ plainTime: Temporal.PlainTimeLike }`,\n                // not a TimeZoneProtocol.\n                // TODO: should we check for that shape to improve on the (bad) error\n                // message that the caller will get from ToTemporalTimeZone?\n                timeZone = ES.ToTemporalTimeZone(item);\n            }\n            else {\n                timeZone = ES.ToTemporalTimeZone(timeZoneLike);\n                temporalTime = item.plainTime;\n            }\n        }\n        else {\n            timeZone = ES.ToTemporalTimeZone(item);\n        }\n        const year = GetSlot(this, ISO_YEAR);\n        const month = GetSlot(this, ISO_MONTH);\n        const day = GetSlot(this, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        let hour = 0, minute = 0, second = 0, millisecond = 0, microsecond = 0, nanosecond = 0;\n        if (temporalTime !== undefined) {\n            temporalTime = ES.ToTemporalTime(temporalTime);\n            hour = GetSlot(temporalTime, ISO_HOUR);\n            minute = GetSlot(temporalTime, ISO_MINUTE);\n            second = GetSlot(temporalTime, ISO_SECOND);\n            millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n            microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n            nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        }\n        const dt = ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    toPlainYearMonth() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarYearMonthFromFields(calendar, fields);\n    }\n    toPlainMonthDay() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarMonthDayFromFields(calendar, fields);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalDate(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalDate(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalDate(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, CALENDAR));\n        }\n        return ES.ToTemporalDate(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalDate(oneParam);\n        const two = ES.ToTemporalDate(twoParam);\n        return ES.CompareISODate(GetSlot(one, ISO_YEAR), GetSlot(one, ISO_MONTH), GetSlot(one, ISO_DAY), GetSlot(two, ISO_YEAR), GetSlot(two, ISO_MONTH), GetSlot(two, ISO_DAY));\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainDate, 'Temporal.PlainDate');\n//# sourceMappingURL=plaindate.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, EPOCHNANOSECONDS, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nexport class PlainDateTime {\n    constructor(isoYearParam, isoMonthParam, isoDayParam, hourParam = 0, minuteParam = 0, secondParam = 0, millisecondParam = 0, microsecondParam = 0, nanosecondParam = 0, calendarParam = ES.GetISO8601Calendar()) {\n        const isoYear = ES.ToIntegerThrowOnInfinity(isoYearParam);\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const isoDay = ES.ToIntegerThrowOnInfinity(isoDayParam);\n        const hour = ES.ToIntegerThrowOnInfinity(hourParam);\n        const minute = ES.ToIntegerThrowOnInfinity(minuteParam);\n        const second = ES.ToIntegerThrowOnInfinity(secondParam);\n        const millisecond = ES.ToIntegerThrowOnInfinity(millisecondParam);\n        const microsecond = ES.ToIntegerThrowOnInfinity(microsecondParam);\n        const nanosecond = ES.ToIntegerThrowOnInfinity(nanosecondParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectDateTime in CreateTemporalDateTimeSlots. This\n        //       check exists only to improve the error message.\n        if (arguments.length < 3) {\n            throw new RangeError('missing argument: isoYear, isoMonth and isoDay are required');\n        }\n        ES.CreateTemporalDateTimeSlots(this, isoYear, isoMonth, isoDay, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    get calendar() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get year() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), this);\n    }\n    get month() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get day() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), this);\n    }\n    get hour() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_HOUR);\n    }\n    get minute() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MINUTE);\n    }\n    get second() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_SECOND);\n    }\n    get millisecond() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MILLISECOND);\n    }\n    get microsecond() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MICROSECOND);\n    }\n    get nanosecond() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_NANOSECOND);\n    }\n    get era() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), this);\n    }\n    get eraYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfWeek() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), this);\n    }\n    get dayOfYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get weekOfYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInWeek() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), this);\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), this);\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), this);\n    }\n    with(temporalDateTimeLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalDateTimeLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalDateTimeLike);\n        const options = ES.GetOptionsObject(optionsParam);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const props = ES.PrepareTemporalFields(temporalDateTimeLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid date-time-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.InterpretTemporalDateTimeFields(calendar, fields, options);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    withPlainTime(temporalTimeParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const year = GetSlot(this, ISO_YEAR);\n        const month = GetSlot(this, ISO_MONTH);\n        const day = GetSlot(this, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        if (temporalTimeParam === undefined)\n            return ES.CreateTemporalDateTime(year, month, day, 0, 0, 0, 0, 0, 0, calendar);\n        const temporalTime = ES.ToTemporalTime(temporalTimeParam);\n        const hour = GetSlot(temporalTime, ISO_HOUR);\n        const minute = GetSlot(temporalTime, ISO_MINUTE);\n        const second = GetSlot(temporalTime, ISO_SECOND);\n        const millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    withPlainDate(temporalDateParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const temporalDate = ES.ToTemporalDate(temporalDateParam);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        let calendar = GetSlot(temporalDate, CALENDAR);\n        const hour = GetSlot(this, ISO_HOUR);\n        const minute = GetSlot(this, ISO_MINUTE);\n        const second = GetSlot(this, ISO_SECOND);\n        const millisecond = GetSlot(this, ISO_MILLISECOND);\n        const microsecond = GetSlot(this, ISO_MICROSECOND);\n        const nanosecond = GetSlot(this, ISO_NANOSECOND);\n        calendar = ES.ConsolidateCalendars(GetSlot(this, CALENDAR), calendar);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    withCalendar(calendarParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return new PlainDateTime(GetSlot(this, ISO_YEAR), GetSlot(this, ISO_MONTH), GetSlot(this, ISO_DAY), GetSlot(this, ISO_HOUR), GetSlot(this, ISO_MINUTE), GetSlot(this, ISO_SECOND), GetSlot(this, ISO_MILLISECOND), GetSlot(this, ISO_MICROSECOND), GetSlot(this, ISO_NANOSECOND), calendar);\n    }\n    add(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainDateTime('add', this, temporalDurationLike, options);\n    }\n    subtract(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainDateTime('subtract', this, temporalDurationLike, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDateTime('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainDateTime('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED, ['day']);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const maximumIncrements = {\n            day: 1,\n            hour: 24,\n            minute: 60,\n            second: 60,\n            millisecond: 1000,\n            microsecond: 1000,\n            nanosecond: 1000\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], false);\n        let year = GetSlot(this, ISO_YEAR);\n        let month = GetSlot(this, ISO_MONTH);\n        let day = GetSlot(this, ISO_DAY);\n        let hour = GetSlot(this, ISO_HOUR);\n        let minute = GetSlot(this, ISO_MINUTE);\n        let second = GetSlot(this, ISO_SECOND);\n        let millisecond = GetSlot(this, ISO_MILLISECOND);\n        let microsecond = GetSlot(this, ISO_MICROSECOND);\n        let nanosecond = GetSlot(this, ISO_NANOSECOND);\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, roundingIncrement, smallestUnit, roundingMode));\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, GetSlot(this, CALENDAR));\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalDateTime(otherParam);\n        for (const slot of [\n            ISO_YEAR,\n            ISO_MONTH,\n            ISO_DAY,\n            ISO_HOUR,\n            ISO_MINUTE,\n            ISO_SECOND,\n            ISO_MILLISECOND,\n            ISO_MICROSECOND,\n            ISO_NANOSECOND\n        ]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        return ES.TemporalDateTimeToString(this, precision, showCalendar, { unit, increment, roundingMode });\n    }\n    toJSON() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToString(this, 'auto');\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainDateTime');\n    }\n    toZonedDateTime(temporalTimeZoneLike, optionsParam = undefined) {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const timeZone = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n        const options = ES.GetOptionsObject(optionsParam);\n        const disambiguation = ES.ToTemporalDisambiguation(options);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, this, disambiguation);\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, GetSlot(this, CALENDAR));\n    }\n    toPlainDate() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToDate(this);\n    }\n    toPlainYearMonth() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarYearMonthFromFields(calendar, fields);\n    }\n    toPlainMonthDay() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarMonthDayFromFields(calendar, fields);\n    }\n    toPlainTime() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToTime(this);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalDateTime(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoHour: GetSlot(this, ISO_HOUR),\n            isoMicrosecond: GetSlot(this, ISO_MICROSECOND),\n            isoMillisecond: GetSlot(this, ISO_MILLISECOND),\n            isoMinute: GetSlot(this, ISO_MINUTE),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoNanosecond: GetSlot(this, ISO_NANOSECOND),\n            isoSecond: GetSlot(this, ISO_SECOND),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalDateTime(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalDateTime(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, ISO_HOUR), GetSlot(item, ISO_MINUTE), GetSlot(item, ISO_SECOND), GetSlot(item, ISO_MILLISECOND), GetSlot(item, ISO_MICROSECOND), GetSlot(item, ISO_NANOSECOND), GetSlot(item, CALENDAR));\n        }\n        return ES.ToTemporalDateTime(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalDateTime(oneParam);\n        const two = ES.ToTemporalDateTime(twoParam);\n        for (const slot of [\n            ISO_YEAR,\n            ISO_MONTH,\n            ISO_DAY,\n            ISO_HOUR,\n            ISO_MINUTE,\n            ISO_SECOND,\n            ISO_MILLISECOND,\n            ISO_MICROSECOND,\n            ISO_NANOSECOND\n        ]) {\n            const val1 = GetSlot(one, slot);\n            const val2 = GetSlot(two, slot);\n            if (val1 !== val2)\n                return ES.ComparisonResult(val1 - val2);\n        }\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainDateTime, 'Temporal.PlainDateTime');\n//# sourceMappingURL=plaindatetime.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS, NANOSECONDS, CreateSlots, GetSlot, SetSlot } from './slots';\nimport JSBI from 'jsbi';\nexport class Duration {\n    constructor(yearsParam = 0, monthsParam = 0, weeksParam = 0, daysParam = 0, hoursParam = 0, minutesParam = 0, secondsParam = 0, millisecondsParam = 0, microsecondsParam = 0, nanosecondsParam = 0) {\n        const years = ES.ToIntegerWithoutRounding(yearsParam);\n        const months = ES.ToIntegerWithoutRounding(monthsParam);\n        const weeks = ES.ToIntegerWithoutRounding(weeksParam);\n        const days = ES.ToIntegerWithoutRounding(daysParam);\n        const hours = ES.ToIntegerWithoutRounding(hoursParam);\n        const minutes = ES.ToIntegerWithoutRounding(minutesParam);\n        const seconds = ES.ToIntegerWithoutRounding(secondsParam);\n        const milliseconds = ES.ToIntegerWithoutRounding(millisecondsParam);\n        const microseconds = ES.ToIntegerWithoutRounding(microsecondsParam);\n        const nanoseconds = ES.ToIntegerWithoutRounding(nanosecondsParam);\n        ES.RejectDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n        CreateSlots(this);\n        SetSlot(this, YEARS, years);\n        SetSlot(this, MONTHS, months);\n        SetSlot(this, WEEKS, weeks);\n        SetSlot(this, DAYS, days);\n        SetSlot(this, HOURS, hours);\n        SetSlot(this, MINUTES, minutes);\n        SetSlot(this, SECONDS, seconds);\n        SetSlot(this, MILLISECONDS, milliseconds);\n        SetSlot(this, MICROSECONDS, microseconds);\n        SetSlot(this, NANOSECONDS, nanoseconds);\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${ES.TemporalDurationToString(this)}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get years() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, YEARS);\n    }\n    get months() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MONTHS);\n    }\n    get weeks() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, WEEKS);\n    }\n    get days() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, DAYS);\n    }\n    get hours() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, HOURS);\n    }\n    get minutes() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MINUTES);\n    }\n    get seconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, SECONDS);\n    }\n    get milliseconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MILLISECONDS);\n    }\n    get microseconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, MICROSECONDS);\n    }\n    get nanoseconds() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, NANOSECONDS);\n    }\n    get sign() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.DurationSign(GetSlot(this, YEARS), GetSlot(this, MONTHS), GetSlot(this, WEEKS), GetSlot(this, DAYS), GetSlot(this, HOURS), GetSlot(this, MINUTES), GetSlot(this, SECONDS), GetSlot(this, MILLISECONDS), GetSlot(this, MICROSECONDS), GetSlot(this, NANOSECONDS));\n    }\n    get blank() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return (ES.DurationSign(GetSlot(this, YEARS), GetSlot(this, MONTHS), GetSlot(this, WEEKS), GetSlot(this, DAYS), GetSlot(this, HOURS), GetSlot(this, MINUTES), GetSlot(this, SECONDS), GetSlot(this, MILLISECONDS), GetSlot(this, MICROSECONDS), GetSlot(this, NANOSECONDS)) === 0);\n    }\n    with(durationLike) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        const props = ES.PrepareTemporalFields(durationLike, \n        // NOTE: Field order here is important.\n        [\n            'days',\n            'hours',\n            'microseconds',\n            'milliseconds',\n            'minutes',\n            'months',\n            'nanoseconds',\n            'seconds',\n            'weeks',\n            'years'\n        ], 'partial');\n        if (!props) {\n            throw new TypeError('invalid duration-like');\n        }\n        const { years = GetSlot(this, YEARS), months = GetSlot(this, MONTHS), weeks = GetSlot(this, WEEKS), days = GetSlot(this, DAYS), hours = GetSlot(this, HOURS), minutes = GetSlot(this, MINUTES), seconds = GetSlot(this, SECONDS), milliseconds = GetSlot(this, MILLISECONDS), microseconds = GetSlot(this, MICROSECONDS), nanoseconds = GetSlot(this, NANOSECONDS) } = props;\n        return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    }\n    negated() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.CreateNegatedTemporalDuration(this);\n    }\n    abs() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return new Duration(Math.abs(GetSlot(this, YEARS)), Math.abs(GetSlot(this, MONTHS)), Math.abs(GetSlot(this, WEEKS)), Math.abs(GetSlot(this, DAYS)), Math.abs(GetSlot(this, HOURS)), Math.abs(GetSlot(this, MINUTES)), Math.abs(GetSlot(this, SECONDS)), Math.abs(GetSlot(this, MILLISECONDS)), Math.abs(GetSlot(this, MICROSECONDS)), Math.abs(GetSlot(this, NANOSECONDS)));\n    }\n    add(other, options = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromDuration('add', this, other, options);\n    }\n    subtract(other, options = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromDuration('subtract', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        let years = GetSlot(this, YEARS);\n        let months = GetSlot(this, MONTHS);\n        let weeks = GetSlot(this, WEEKS);\n        let days = GetSlot(this, DAYS);\n        let hours = GetSlot(this, HOURS);\n        let minutes = GetSlot(this, MINUTES);\n        let seconds = GetSlot(this, SECONDS);\n        let milliseconds = GetSlot(this, MILLISECONDS);\n        let microseconds = GetSlot(this, MICROSECONDS);\n        let nanoseconds = GetSlot(this, NANOSECONDS);\n        let defaultLargestUnit = ES.DefaultTemporalLargestUnit(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        let smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'datetime', undefined);\n        let smallestUnitPresent = true;\n        if (!smallestUnit) {\n            smallestUnitPresent = false;\n            smallestUnit = 'nanosecond';\n        }\n        defaultLargestUnit = ES.LargerOfTwoTemporalUnits(defaultLargestUnit, smallestUnit);\n        let largestUnit = ES.GetTemporalUnit(options, 'largestUnit', 'datetime', undefined, ['auto']);\n        let largestUnitPresent = true;\n        if (!largestUnit) {\n            largestUnitPresent = false;\n            largestUnit = defaultLargestUnit;\n        }\n        if (largestUnit === 'auto')\n            largestUnit = defaultLargestUnit;\n        if (!smallestUnitPresent && !largestUnitPresent) {\n            throw new RangeError('at least one of smallestUnit or largestUnit is required');\n        }\n        if (ES.LargerOfTwoTemporalUnits(largestUnit, smallestUnit) !== largestUnit) {\n            throw new RangeError(`largestUnit ${largestUnit} cannot be smaller than smallestUnit ${smallestUnit}`);\n        }\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const roundingIncrement = ES.ToTemporalDateTimeRoundingIncrement(options, smallestUnit);\n        let relativeTo = ES.ToRelativeTemporalObject(options);\n        ({ years, months, weeks, days } = ES.UnbalanceDurationRelative(years, months, weeks, days, largestUnit, relativeTo));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            ES.RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, relativeTo));\n        ({ years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } =\n            ES.AdjustRoundedDurationDays(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, roundingIncrement, smallestUnit, roundingMode, relativeTo));\n        ({ years, months, weeks, days } = ES.BalanceDurationRelative(years, months, weeks, days, largestUnit, relativeTo));\n        if (ES.IsTemporalZonedDateTime(relativeTo)) {\n            relativeTo = ES.MoveRelativeZonedDateTime(relativeTo, years, months, weeks, 0);\n        }\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit, relativeTo));\n        return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds);\n    }\n    total(optionsParam) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        let years = GetSlot(this, YEARS);\n        let months = GetSlot(this, MONTHS);\n        let weeks = GetSlot(this, WEEKS);\n        let days = GetSlot(this, DAYS);\n        let hours = GetSlot(this, HOURS);\n        let minutes = GetSlot(this, MINUTES);\n        let seconds = GetSlot(this, SECONDS);\n        let milliseconds = GetSlot(this, MILLISECONDS);\n        let microseconds = GetSlot(this, MICROSECONDS);\n        let nanoseconds = GetSlot(this, NANOSECONDS);\n        if (optionsParam === undefined)\n            throw new TypeError('options argument is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('unit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const unit = ES.GetTemporalUnit(options, 'unit', 'datetime', ES.REQUIRED);\n        const relativeTo = ES.ToRelativeTemporalObject(options);\n        // Convert larger units down to days\n        ({ years, months, weeks, days } = ES.UnbalanceDurationRelative(years, months, weeks, days, unit, relativeTo));\n        // If the unit we're totalling is smaller than `days`, convert days down to that unit.\n        let intermediate;\n        if (ES.IsTemporalZonedDateTime(relativeTo)) {\n            intermediate = ES.MoveRelativeZonedDateTime(relativeTo, years, months, weeks, 0);\n        }\n        ({ days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds } = ES.BalanceDuration(days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, unit, intermediate));\n        // Finally, truncate to the correct unit and calculate remainder\n        const { total } = ES.RoundDuration(years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, 1, unit, 'trunc', relativeTo);\n        return total;\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        if (precision === 'minute')\n            throw new RangeError('smallestUnit must not be \"minute\"');\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        return ES.TemporalDurationToString(this, precision, { unit, increment, roundingMode });\n    }\n    toJSON() {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDurationToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalDuration(this))\n            throw new TypeError('invalid receiver');\n        if (typeof Intl !== 'undefined' && typeof Intl.DurationFormat !== 'undefined') {\n            return new Intl.DurationFormat(locales, options).format(this);\n        }\n        console.warn('Temporal.Duration.prototype.toLocaleString() requires Intl.DurationFormat.');\n        return ES.TemporalDurationToString(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() to compare Temporal.Duration');\n    }\n    static from(item) {\n        if (ES.IsTemporalDuration(item)) {\n            return new Duration(GetSlot(item, YEARS), GetSlot(item, MONTHS), GetSlot(item, WEEKS), GetSlot(item, DAYS), GetSlot(item, HOURS), GetSlot(item, MINUTES), GetSlot(item, SECONDS), GetSlot(item, MILLISECONDS), GetSlot(item, MICROSECONDS), GetSlot(item, NANOSECONDS));\n        }\n        return ES.ToTemporalDuration(item);\n    }\n    static compare(oneParam, twoParam, optionsParam = undefined) {\n        const one = ES.ToTemporalDuration(oneParam);\n        const two = ES.ToTemporalDuration(twoParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        const relativeTo = ES.ToRelativeTemporalObject(options);\n        const y1 = GetSlot(one, YEARS);\n        const mon1 = GetSlot(one, MONTHS);\n        const w1 = GetSlot(one, WEEKS);\n        let d1 = GetSlot(one, DAYS);\n        const h1 = GetSlot(one, HOURS);\n        const min1 = GetSlot(one, MINUTES);\n        const s1 = GetSlot(one, SECONDS);\n        const ms1 = GetSlot(one, MILLISECONDS);\n        const µs1 = GetSlot(one, MICROSECONDS);\n        let ns1 = GetSlot(one, NANOSECONDS);\n        const y2 = GetSlot(two, YEARS);\n        const mon2 = GetSlot(two, MONTHS);\n        const w2 = GetSlot(two, WEEKS);\n        let d2 = GetSlot(two, DAYS);\n        const h2 = GetSlot(two, HOURS);\n        const min2 = GetSlot(two, MINUTES);\n        const s2 = GetSlot(two, SECONDS);\n        const ms2 = GetSlot(two, MILLISECONDS);\n        const µs2 = GetSlot(two, MICROSECONDS);\n        let ns2 = GetSlot(two, NANOSECONDS);\n        const shift1 = ES.CalculateOffsetShift(relativeTo, y1, mon1, w1, d1);\n        const shift2 = ES.CalculateOffsetShift(relativeTo, y2, mon2, w2, d2);\n        if (y1 !== 0 || y2 !== 0 || mon1 !== 0 || mon2 !== 0 || w1 !== 0 || w2 !== 0) {\n            ({ days: d1 } = ES.UnbalanceDurationRelative(y1, mon1, w1, d1, 'day', relativeTo));\n            ({ days: d2 } = ES.UnbalanceDurationRelative(y2, mon2, w2, d2, 'day', relativeTo));\n        }\n        const totalNs1 = ES.TotalDurationNanoseconds(d1, h1, min1, s1, ms1, µs1, ns1, shift1);\n        const totalNs2 = ES.TotalDurationNanoseconds(d2, h2, min2, s2, ms2, µs2, ns2, shift2);\n        return ES.ComparisonResult(JSBI.toNumber(JSBI.subtract(totalNs1, totalNs2)));\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(Duration, 'Temporal.Duration');\n//# sourceMappingURL=duration.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_MONTH, ISO_DAY, ISO_YEAR, CALENDAR, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nconst ObjectCreate = Object.create;\nexport class PlainMonthDay {\n    constructor(isoMonthParam, isoDayParam, calendarParam = ES.GetISO8601Calendar(), referenceISOYearParam = 1972) {\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const isoDay = ES.ToIntegerThrowOnInfinity(isoDayParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        const referenceISOYear = ES.ToIntegerThrowOnInfinity(referenceISOYearParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectISODate in CreateTemporalMonthDaySlots. This\n        //       check exists only to improve the error message.\n        if (arguments.length < 2) {\n            throw new RangeError('missing argument: isoMonth and isoDay are required');\n        }\n        ES.CreateTemporalMonthDaySlots(this, isoMonth, isoDay, calendar, referenceISOYear);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get day() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), this);\n    }\n    get calendar() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    with(temporalMonthDayLike, optionsParam = undefined) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalMonthDayLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalMonthDayLike);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'month', 'monthCode', 'year']);\n        const props = ES.PrepareTemporalFields(temporalMonthDayLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid month-day-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarMonthDayFromFields(calendar, fields, options);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalMonthDay(otherParam);\n        for (const slot of [ISO_MONTH, ISO_DAY, ISO_YEAR]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        return ES.TemporalMonthDayToString(this, showCalendar);\n    }\n    toJSON() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalMonthDayToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use equals() to compare Temporal.PlainMonthDay');\n    }\n    toPlainDate(item) {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item))\n            throw new TypeError('argument should be an object');\n        const calendar = GetSlot(this, CALENDAR);\n        const receiverFieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, receiverFieldNames, []);\n        const inputFieldNames = ES.CalendarFields(calendar, ['year']);\n        const inputFields = ES.PrepareTemporalFields(item, inputFieldNames, []);\n        let mergedFields = ES.CalendarMergeFields(calendar, fields, inputFields);\n        // TODO: Use MergeLists abstract operation.\n        const mergedFieldNames = [...new Set([...receiverFieldNames, ...inputFieldNames])];\n        mergedFields = ES.PrepareTemporalFields(mergedFields, mergedFieldNames, []);\n        const options = ObjectCreate(null);\n        options.overflow = 'reject';\n        return ES.CalendarDateFromFields(calendar, mergedFields, options);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalMonthDay(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalMonthDay(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalMonthDay(GetSlot(item, ISO_MONTH), GetSlot(item, ISO_DAY), GetSlot(item, CALENDAR), GetSlot(item, ISO_YEAR));\n        }\n        return ES.ToTemporalMonthDay(item, options);\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainMonthDay, 'Temporal.PlainMonthDay');\n//# sourceMappingURL=plainmonthday.js.map", "import * as ES from './ecmascript';\nimport { GetIntrinsic } from './intrinsicclass';\nconst instant = () => {\n    const Instant = GetIntrinsic('%Temporal.Instant%');\n    return new Instant(ES.SystemUTCEpochNanoSeconds());\n};\nconst plainDateTime = (calendarLike, temporalTimeZoneLike = timeZone()) => {\n    const tZ = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n    const calendar = ES.ToTemporalCalendar(calendarLike);\n    const inst = instant();\n    return ES.BuiltinTimeZoneGetPlainDateTimeFor(tZ, inst, calendar);\n};\nconst plainDateTimeISO = (temporalTimeZoneLike = timeZone()) => {\n    const tZ = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n    const calendar = ES.GetISO8601Calendar();\n    const inst = instant();\n    return ES.BuiltinTimeZoneGetPlainDateTimeFor(tZ, inst, calendar);\n};\nconst zonedDateTime = (calendarLike, temporalTimeZoneLike = timeZone()) => {\n    const tZ = ES.ToTemporalTimeZone(temporalTimeZoneLike);\n    const calendar = ES.ToTemporalCalendar(calendarLike);\n    return ES.CreateTemporalZonedDateTime(ES.SystemUTCEpochNanoSeconds(), tZ, calendar);\n};\nconst zonedDateTimeISO = (temporalTimeZoneLike = timeZone()) => {\n    return zonedDateTime(ES.GetISO8601Calendar(), temporalTimeZoneLike);\n};\nconst plainDate = (calendarLike, temporalTimeZoneLike = timeZone()) => {\n    return ES.TemporalDateTimeToDate(plainDateTime(calendarLike, temporalTimeZoneLike));\n};\nconst plainDateISO = (temporalTimeZoneLike = timeZone()) => {\n    return ES.TemporalDateTimeToDate(plainDateTimeISO(temporalTimeZoneLike));\n};\nconst plainTimeISO = (temporalTimeZoneLike = timeZone()) => {\n    return ES.TemporalDateTimeToTime(plainDateTimeISO(temporalTimeZoneLike));\n};\nconst timeZone = () => {\n    return ES.SystemTimeZone();\n};\nexport const Now = {\n    instant,\n    plainDateTime,\n    plainDateTimeISO,\n    plainDate,\n    plainDateISO,\n    plainTimeISO,\n    timeZone,\n    zonedDateTime,\n    zonedDateTimeISO,\n    [Symbol.toStringTag]: 'Temporal.Now'\n};\nObject.defineProperty(Now, Symbol.toStringTag, {\n    value: 'Temporal.Now',\n    writable: false,\n    enumerable: false,\n    configurable: true\n});\n//# sourceMappingURL=now.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CALENDAR, EPOCHNANOSECONDS, CreateSlots, GetSlot, SetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nconst ObjectAssign = Object.assign;\nfunction TemporalTimeToString(time, precision, options = undefined) {\n    let hour = GetSlot(time, ISO_HOUR);\n    let minute = GetSlot(time, ISO_MINUTE);\n    let second = GetSlot(time, ISO_SECOND);\n    let millisecond = GetSlot(time, ISO_MILLISECOND);\n    let microsecond = GetSlot(time, ISO_MICROSECOND);\n    let nanosecond = GetSlot(time, ISO_NANOSECOND);\n    if (options) {\n        const { unit, increment, roundingMode } = options;\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundTime(hour, minute, second, millisecond, microsecond, nanosecond, increment, unit, roundingMode));\n    }\n    const hourString = ES.ISODateTimePartString(hour);\n    const minuteString = ES.ISODateTimePartString(minute);\n    const seconds = ES.FormatSecondsStringPart(second, millisecond, microsecond, nanosecond, precision);\n    return `${hourString}:${minuteString}${seconds}`;\n}\nexport class PlainTime {\n    constructor(isoHourParam = 0, isoMinuteParam = 0, isoSecondParam = 0, isoMillisecondParam = 0, isoMicrosecondParam = 0, isoNanosecondParam = 0) {\n        const isoHour = ES.ToIntegerThrowOnInfinity(isoHourParam);\n        const isoMinute = ES.ToIntegerThrowOnInfinity(isoMinuteParam);\n        const isoSecond = ES.ToIntegerThrowOnInfinity(isoSecondParam);\n        const isoMillisecond = ES.ToIntegerThrowOnInfinity(isoMillisecondParam);\n        const isoMicrosecond = ES.ToIntegerThrowOnInfinity(isoMicrosecondParam);\n        const isoNanosecond = ES.ToIntegerThrowOnInfinity(isoNanosecondParam);\n        ES.RejectTime(isoHour, isoMinute, isoSecond, isoMillisecond, isoMicrosecond, isoNanosecond);\n        CreateSlots(this);\n        SetSlot(this, ISO_HOUR, isoHour);\n        SetSlot(this, ISO_MINUTE, isoMinute);\n        SetSlot(this, ISO_SECOND, isoSecond);\n        SetSlot(this, ISO_MILLISECOND, isoMillisecond);\n        SetSlot(this, ISO_MICROSECOND, isoMicrosecond);\n        SetSlot(this, ISO_NANOSECOND, isoNanosecond);\n        SetSlot(this, CALENDAR, ES.GetISO8601Calendar());\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${TemporalTimeToString(this, 'auto')}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get calendar() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        // PlainTime's calendar isn't settable, so can't be a userland calendar\n        return GetSlot(this, CALENDAR);\n    }\n    get hour() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_HOUR);\n    }\n    get minute() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MINUTE);\n    }\n    get second() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_SECOND);\n    }\n    get millisecond() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MILLISECOND);\n    }\n    get microsecond() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_MICROSECOND);\n    }\n    get nanosecond() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, ISO_NANOSECOND);\n    }\n    with(temporalTimeLike, optionsParam = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalTimeLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalTimeLike);\n        const partialTime = ES.ToTemporalTimeRecord(temporalTimeLike, 'partial');\n        const options = ES.GetOptionsObject(optionsParam);\n        const overflow = ES.ToTemporalOverflow(options);\n        const fields = ES.ToTemporalTimeRecord(this);\n        let { hour, minute, second, millisecond, microsecond, nanosecond } = ObjectAssign(fields, partialTime);\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ES.RegulateTime(hour, minute, second, millisecond, microsecond, nanosecond, overflow));\n        return new PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n    }\n    add(temporalDurationLike) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainTime('add', this, temporalDurationLike);\n    }\n    subtract(temporalDurationLike) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainTime('subtract', this, temporalDurationLike);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainTime('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainTime('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const MAX_INCREMENTS = {\n            hour: 24,\n            minute: 60,\n            second: 60,\n            millisecond: 1000,\n            microsecond: 1000,\n            nanosecond: 1000\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, MAX_INCREMENTS[smallestUnit], false);\n        let hour = GetSlot(this, ISO_HOUR);\n        let minute = GetSlot(this, ISO_MINUTE);\n        let second = GetSlot(this, ISO_SECOND);\n        let millisecond = GetSlot(this, ISO_MILLISECOND);\n        let microsecond = GetSlot(this, ISO_MICROSECOND);\n        let nanosecond = GetSlot(this, ISO_NANOSECOND);\n        ({ hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundTime(hour, minute, second, millisecond, microsecond, nanosecond, roundingIncrement, smallestUnit, roundingMode));\n        return new PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalTime(otherParam);\n        for (const slot of [ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return true;\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        return TemporalTimeToString(this, precision, { unit, increment, roundingMode });\n    }\n    toJSON() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return TemporalTimeToString(this, 'auto');\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainTime');\n    }\n    toPlainDateTime(temporalDateParam) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        const temporalDate = ES.ToTemporalDate(temporalDateParam);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        const calendar = GetSlot(temporalDate, CALENDAR);\n        const hour = GetSlot(this, ISO_HOUR);\n        const minute = GetSlot(this, ISO_MINUTE);\n        const second = GetSlot(this, ISO_SECOND);\n        const millisecond = GetSlot(this, ISO_MILLISECOND);\n        const microsecond = GetSlot(this, ISO_MICROSECOND);\n        const nanosecond = GetSlot(this, ISO_NANOSECOND);\n        return ES.CreateTemporalDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n    }\n    toZonedDateTime(item) {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item)) {\n            throw new TypeError('invalid argument');\n        }\n        const dateLike = item.plainDate;\n        if (dateLike === undefined) {\n            throw new TypeError('missing date property');\n        }\n        const temporalDate = ES.ToTemporalDate(dateLike);\n        const timeZoneLike = item.timeZone;\n        if (timeZoneLike === undefined) {\n            throw new TypeError('missing timeZone property');\n        }\n        const timeZone = ES.ToTemporalTimeZone(timeZoneLike);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        const calendar = GetSlot(temporalDate, CALENDAR);\n        const hour = GetSlot(this, ISO_HOUR);\n        const minute = GetSlot(this, ISO_MINUTE);\n        const second = GetSlot(this, ISO_SECOND);\n        const millisecond = GetSlot(this, ISO_MILLISECOND);\n        const microsecond = GetSlot(this, ISO_MICROSECOND);\n        const nanosecond = GetSlot(this, ISO_NANOSECOND);\n        const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const dt = new PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalTime(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoHour: GetSlot(this, ISO_HOUR),\n            isoMicrosecond: GetSlot(this, ISO_MICROSECOND),\n            isoMillisecond: GetSlot(this, ISO_MILLISECOND),\n            isoMinute: GetSlot(this, ISO_MINUTE),\n            isoNanosecond: GetSlot(this, ISO_NANOSECOND),\n            isoSecond: GetSlot(this, ISO_SECOND)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        const overflow = ES.ToTemporalOverflow(options);\n        if (ES.IsTemporalTime(item)) {\n            return new PlainTime(GetSlot(item, ISO_HOUR), GetSlot(item, ISO_MINUTE), GetSlot(item, ISO_SECOND), GetSlot(item, ISO_MILLISECOND), GetSlot(item, ISO_MICROSECOND), GetSlot(item, ISO_NANOSECOND));\n        }\n        return ES.ToTemporalTime(item, overflow);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalTime(oneParam);\n        const two = ES.ToTemporalTime(twoParam);\n        for (const slot of [ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND]) {\n            const val1 = GetSlot(one, slot);\n            const val2 = GetSlot(two, slot);\n            if (val1 !== val2)\n                return ES.ComparisonResult(val1 - val2);\n        }\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainTime, 'Temporal.PlainTime');\n//# sourceMappingURL=plaintime.js.map", "import { DEBUG } from './debug';\nimport * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass } from './intrinsicclass';\nimport { TIMEZONE_ID, EPOCHNANOSECONDS, ISO_YEAR, ISO_MONTH, ISO_DAY, ISO_HOUR, ISO_MINUTE, ISO_SECOND, ISO_MILLISECOND, ISO_MICROSECOND, ISO_NANOSECOND, CreateSlots, GetSlot, SetSlot } from './slots';\nimport JSBI from 'jsbi';\nexport class TimeZone {\n    constructor(timeZoneIdentifierParam) {\n        // Note: if the argument is not passed, GetCanonicalTimeZoneIdentifier(undefined) will throw.\n        //       This check exists only to improve the error message.\n        if (arguments.length < 1) {\n            throw new RangeError('missing argument: identifier is required');\n        }\n        const timeZoneIdentifier = ES.GetCanonicalTimeZoneIdentifier(timeZoneIdentifierParam);\n        CreateSlots(this);\n        SetSlot(this, TIMEZONE_ID, timeZoneIdentifier);\n        if (DEBUG) {\n            Object.defineProperty(this, '_repr_', {\n                value: `${this[Symbol.toStringTag]} <${timeZoneIdentifier}>`,\n                writable: false,\n                enumerable: false,\n                configurable: false\n            });\n        }\n    }\n    get id() {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    getOffsetNanosecondsFor(instantParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const instant = ES.ToTemporalInstant(instantParam);\n        const id = GetSlot(this, TIMEZONE_ID);\n        if (ES.TestTimeZoneOffsetString(id)) {\n            return ES.ParseTimeZoneOffsetString(id);\n        }\n        return ES.GetIANATimeZoneOffsetNanoseconds(GetSlot(instant, EPOCHNANOSECONDS), id);\n    }\n    getOffsetStringFor(instantParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const instant = ES.ToTemporalInstant(instantParam);\n        return ES.BuiltinTimeZoneGetOffsetStringFor(this, instant);\n    }\n    getPlainDateTimeFor(instantParam, calendarParam = ES.GetISO8601Calendar()) {\n        const instant = ES.ToTemporalInstant(instantParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return ES.BuiltinTimeZoneGetPlainDateTimeFor(this, instant, calendar);\n    }\n    getInstantFor(dateTimeParam, optionsParam = undefined) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const dateTime = ES.ToTemporalDateTime(dateTimeParam);\n        const options = ES.GetOptionsObject(optionsParam);\n        const disambiguation = ES.ToTemporalDisambiguation(options);\n        return ES.BuiltinTimeZoneGetInstantFor(this, dateTime, disambiguation);\n    }\n    getPossibleInstantsFor(dateTimeParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const dateTime = ES.ToTemporalDateTime(dateTimeParam);\n        const Instant = GetIntrinsic('%Temporal.Instant%');\n        const id = GetSlot(this, TIMEZONE_ID);\n        if (ES.TestTimeZoneOffsetString(id)) {\n            const epochNs = ES.GetEpochFromISOParts(GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND));\n            if (epochNs === null)\n                throw new RangeError('DateTime outside of supported range');\n            const offsetNs = ES.ParseTimeZoneOffsetString(id);\n            return [new Instant(JSBI.subtract(epochNs, JSBI.BigInt(offsetNs)))];\n        }\n        const possibleEpochNs = ES.GetIANATimeZoneEpochValue(id, GetSlot(dateTime, ISO_YEAR), GetSlot(dateTime, ISO_MONTH), GetSlot(dateTime, ISO_DAY), GetSlot(dateTime, ISO_HOUR), GetSlot(dateTime, ISO_MINUTE), GetSlot(dateTime, ISO_SECOND), GetSlot(dateTime, ISO_MILLISECOND), GetSlot(dateTime, ISO_MICROSECOND), GetSlot(dateTime, ISO_NANOSECOND));\n        return possibleEpochNs.map((ns) => new Instant(ns));\n    }\n    getNextTransition(startingPointParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const startingPoint = ES.ToTemporalInstant(startingPointParam);\n        const id = GetSlot(this, TIMEZONE_ID);\n        // Offset time zones or UTC have no transitions\n        if (ES.TestTimeZoneOffsetString(id) || id === 'UTC') {\n            return null;\n        }\n        let epochNanoseconds = GetSlot(startingPoint, EPOCHNANOSECONDS);\n        const Instant = GetIntrinsic('%Temporal.Instant%');\n        epochNanoseconds = ES.GetIANATimeZoneNextTransition(epochNanoseconds, id);\n        return epochNanoseconds === null ? null : new Instant(epochNanoseconds);\n    }\n    getPreviousTransition(startingPointParam) {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        const startingPoint = ES.ToTemporalInstant(startingPointParam);\n        const id = GetSlot(this, TIMEZONE_ID);\n        // Offset time zones or UTC have no transitions\n        if (ES.TestTimeZoneOffsetString(id) || id === 'UTC') {\n            return null;\n        }\n        let epochNanoseconds = GetSlot(startingPoint, EPOCHNANOSECONDS);\n        const Instant = GetIntrinsic('%Temporal.Instant%');\n        epochNanoseconds = ES.GetIANATimeZonePreviousTransition(epochNanoseconds, id);\n        return epochNanoseconds === null ? null : new Instant(epochNanoseconds);\n    }\n    toString() {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(GetSlot(this, TIMEZONE_ID));\n    }\n    toJSON() {\n        if (!ES.IsTemporalTimeZone(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToString(this);\n    }\n    static from(item) {\n        return ES.ToTemporalTimeZone(item);\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(TimeZone, 'Temporal.TimeZone');\n//# sourceMappingURL=timezone.js.map", "import * as ES from './ecmascript';\nimport { MakeIntrinsicClass } from './intrinsicclass';\nimport { ISO_YEAR, ISO_MONTH, ISO_DAY, CALENDAR, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nconst ObjectCreate = Object.create;\nexport class PlainYearMonth {\n    constructor(isoYearParam, isoMonthParam, calendarParam = ES.GetISO8601Calendar(), referenceISODayParam = 1) {\n        const isoYear = ES.ToIntegerThrowOnInfinity(isoYearParam);\n        const isoMonth = ES.ToIntegerThrowOnInfinity(isoMonthParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        const referenceISODay = ES.ToIntegerThrowOnInfinity(referenceISODayParam);\n        // Note: if the arguments are not passed,\n        //       ToIntegerThrowOnInfinity(undefined) will have returned 0, which will\n        //       be rejected by RejectISODate in CreateTemporalYearMonthSlots. This\n        //       check exists only to improve the error message.\n        if (arguments.length < 2) {\n            throw new RangeError('missing argument: isoYear and isoMonth are required');\n        }\n        ES.CreateTemporalYearMonthSlots(this, isoYear, isoMonth, calendar, referenceISODay);\n    }\n    get year() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), this);\n    }\n    get month() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), this);\n    }\n    get monthCode() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), this);\n    }\n    get calendar() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get era() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), this);\n    }\n    get eraYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), this);\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), this);\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), this);\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), this);\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), this);\n    }\n    with(temporalYearMonthLike, optionsParam = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalYearMonthLike)) {\n            throw new TypeError('invalid argument');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalYearMonthLike);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['month', 'monthCode', 'year']);\n        const props = ES.PrepareTemporalFields(temporalYearMonthLike, fieldNames, 'partial');\n        if (!props) {\n            throw new TypeError('invalid year-month-like');\n        }\n        let fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldNames, []);\n        const options = ES.GetOptionsObject(optionsParam);\n        return ES.CalendarYearMonthFromFields(calendar, fields, options);\n    }\n    add(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainYearMonth('add', this, temporalDurationLike, options);\n    }\n    subtract(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromPlainYearMonth('subtract', this, temporalDurationLike, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainYearMonth('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalPlainYearMonth('since', this, other, options);\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalYearMonth(otherParam);\n        for (const slot of [ISO_YEAR, ISO_MONTH, ISO_DAY]) {\n            const val1 = GetSlot(this, slot);\n            const val2 = GetSlot(other, slot);\n            if (val1 !== val2)\n                return false;\n        }\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const showCalendar = ES.ToShowCalendarOption(options);\n        return ES.TemporalYearMonthToString(this, showCalendar);\n    }\n    toJSON() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalYearMonthToString(this);\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.PlainYearMonth');\n    }\n    toPlainDate(item) {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(item))\n            throw new TypeError('argument should be an object');\n        const calendar = GetSlot(this, CALENDAR);\n        const receiverFieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, receiverFieldNames, []);\n        const inputFieldNames = ES.CalendarFields(calendar, ['day']);\n        const inputFields = ES.PrepareTemporalFields(item, inputFieldNames, []);\n        let mergedFields = ES.CalendarMergeFields(calendar, fields, inputFields);\n        // TODO: Use MergeLists abstract operation.\n        const mergedFieldNames = [...new Set([...receiverFieldNames, ...inputFieldNames])];\n        mergedFields = ES.PrepareTemporalFields(mergedFields, mergedFieldNames, []);\n        const options = ObjectCreate(null);\n        options.overflow = 'reject';\n        return ES.CalendarDateFromFields(calendar, mergedFields, options);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalYearMonth(this))\n            throw new TypeError('invalid receiver');\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(this, ISO_DAY),\n            isoMonth: GetSlot(this, ISO_MONTH),\n            isoYear: GetSlot(this, ISO_YEAR)\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalYearMonth(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            return ES.CreateTemporalYearMonth(GetSlot(item, ISO_YEAR), GetSlot(item, ISO_MONTH), GetSlot(item, CALENDAR), GetSlot(item, ISO_DAY));\n        }\n        return ES.ToTemporalYearMonth(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalYearMonth(oneParam);\n        const two = ES.ToTemporalYearMonth(twoParam);\n        return ES.CompareISODate(GetSlot(one, ISO_YEAR), GetSlot(one, ISO_MONTH), GetSlot(one, ISO_DAY), GetSlot(two, ISO_YEAR), GetSlot(two, ISO_MONTH), GetSlot(two, ISO_DAY));\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(PlainYearMonth, 'Temporal.PlainYearMonth');\n//# sourceMappingURL=plainyearmonth.js.map", "import * as ES from './ecmascript';\nimport { GetIntrinsic, MakeIntrinsicClass } from './intrinsicclass';\nimport { CALENDAR, EPOCHNANOSECONDS, ISO_HOUR, INSTANT, ISO_DAY, ISO_MONTH, ISO_YEAR, ISO_MICROSECOND, ISO_MILLISECOND, ISO_MINUTE, ISO_NANOSECOND, ISO_SECOND, TIME_ZONE, GetSlot } from './slots';\nimport { DateTimeFormat } from './intl';\nimport JSBI from 'jsbi';\nimport { BILLION, MILLION, THOUSAND, ZERO } from './ecmascript';\nexport class ZonedDateTime {\n    constructor(epochNanosecondsParam, timeZoneParam, calendarParam = ES.GetISO8601Calendar()) {\n        // Note: if the argument is not passed, ToBigInt(undefined) will throw. This check exists only\n        //       to improve the error message.\n        //       ToTemporalTimeZone(undefined) will end up calling TimeZone.from(\"undefined\"), which\n        //       could succeed.\n        if (arguments.length < 1) {\n            throw new TypeError('missing argument: epochNanoseconds is required');\n        }\n        const epochNanoseconds = ES.ToBigInt(epochNanosecondsParam);\n        const timeZone = ES.ToTemporalTimeZone(timeZoneParam);\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        ES.CreateTemporalZonedDateTimeSlots(this, epochNanoseconds, timeZone, calendar);\n    }\n    get calendar() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, CALENDAR);\n    }\n    get timeZone() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(this, TIME_ZONE);\n    }\n    get year() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get month() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonth(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get monthCode() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthCode(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get day() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDay(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get hour() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_HOUR);\n    }\n    get minute() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_MINUTE);\n    }\n    get second() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_SECOND);\n    }\n    get millisecond() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_MILLISECOND);\n    }\n    get microsecond() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_MICROSECOND);\n    }\n    get nanosecond() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return GetSlot(dateTime(this), ISO_NANOSECOND);\n    }\n    get era() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEra(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get eraYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarEraYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get epochSeconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.divide(value, BILLION));\n    }\n    get epochMilliseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.divide(value, MILLION));\n    }\n    get epochMicroseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const value = GetSlot(this, EPOCHNANOSECONDS);\n        return ES.ToBigIntExternal(JSBI.divide(value, THOUSAND));\n    }\n    get epochNanoseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.ToBigIntExternal(GetSlot(this, EPOCHNANOSECONDS));\n    }\n    get dayOfWeek() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfWeek(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get dayOfYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDayOfYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get weekOfYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarWeekOfYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get hoursInDay() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const dt = dateTime(this);\n        const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const year = GetSlot(dt, ISO_YEAR);\n        const month = GetSlot(dt, ISO_MONTH);\n        const day = GetSlot(dt, ISO_DAY);\n        const today = new DateTime(year, month, day, 0, 0, 0, 0, 0, 0);\n        const tomorrowFields = ES.AddISODate(year, month, day, 0, 0, 0, 1, 'reject');\n        const tomorrow = new DateTime(tomorrowFields.year, tomorrowFields.month, tomorrowFields.day, 0, 0, 0, 0, 0, 0);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const todayNs = GetSlot(ES.BuiltinTimeZoneGetInstantFor(timeZone, today, 'compatible'), EPOCHNANOSECONDS);\n        const tomorrowNs = GetSlot(ES.BuiltinTimeZoneGetInstantFor(timeZone, tomorrow, 'compatible'), EPOCHNANOSECONDS);\n        return JSBI.toNumber(JSBI.subtract(tomorrowNs, todayNs)) / 3.6e12;\n    }\n    get daysInWeek() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInWeek(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get daysInMonth() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInMonth(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get daysInYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarDaysInYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get monthsInYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarMonthsInYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get inLeapYear() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.CalendarInLeapYear(GetSlot(this, CALENDAR), dateTime(this));\n    }\n    get offset() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.BuiltinTimeZoneGetOffsetStringFor(GetSlot(this, TIME_ZONE), GetSlot(this, INSTANT));\n    }\n    get offsetNanoseconds() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.GetOffsetNanosecondsFor(GetSlot(this, TIME_ZONE), GetSlot(this, INSTANT));\n    }\n    with(temporalZonedDateTimeLike, optionsParam = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (!ES.IsObject(temporalZonedDateTimeLike)) {\n            throw new TypeError('invalid zoned-date-time-like');\n        }\n        ES.RejectObjectWithCalendarOrTimeZone(temporalZonedDateTimeLike);\n        // TODO: Reorder according to spec.\n        const options = ES.GetOptionsObject(optionsParam);\n        const disambiguation = ES.ToTemporalDisambiguation(options);\n        const offset = ES.ToTemporalOffset(options, 'prefer');\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, [\n            'day',\n            'hour',\n            'microsecond',\n            'millisecond',\n            'minute',\n            'month',\n            'monthCode',\n            'nanosecond',\n            'second',\n            'year'\n        ]);\n        const fieldsWithOffset = ES.ArrayPush(fieldNames, 'offset');\n        const props = ES.PrepareTemporalFields(temporalZonedDateTimeLike, fieldsWithOffset, 'partial');\n        const fieldsWithTimeZoneAndOffset = ES.ArrayPush(fieldsWithOffset, 'timeZone');\n        let fields = ES.PrepareTemporalFields(this, fieldsWithTimeZoneAndOffset, ['timeZone', 'offset']);\n        fields = ES.CalendarMergeFields(calendar, fields, props);\n        fields = ES.PrepareTemporalFields(fields, fieldsWithTimeZoneAndOffset, ['timeZone', 'offset']);\n        let { year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.InterpretTemporalDateTimeFields(calendar, fields, options);\n        const offsetNs = ES.ParseTimeZoneOffsetString(fields.offset);\n        const epochNanoseconds = ES.InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, 'option', offsetNs, timeZone, disambiguation, offset, \n        /* matchMinute = */ false);\n        return ES.CreateTemporalZonedDateTime(epochNanoseconds, GetSlot(this, TIME_ZONE), calendar);\n    }\n    withPlainDate(temporalDateParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const temporalDate = ES.ToTemporalDate(temporalDateParam);\n        const year = GetSlot(temporalDate, ISO_YEAR);\n        const month = GetSlot(temporalDate, ISO_MONTH);\n        const day = GetSlot(temporalDate, ISO_DAY);\n        let calendar = GetSlot(temporalDate, CALENDAR);\n        const thisDt = dateTime(this);\n        const hour = GetSlot(thisDt, ISO_HOUR);\n        const minute = GetSlot(thisDt, ISO_MINUTE);\n        const second = GetSlot(thisDt, ISO_SECOND);\n        const millisecond = GetSlot(thisDt, ISO_MILLISECOND);\n        const microsecond = GetSlot(thisDt, ISO_MICROSECOND);\n        const nanosecond = GetSlot(thisDt, ISO_NANOSECOND);\n        calendar = ES.ConsolidateCalendars(GetSlot(this, CALENDAR), calendar);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const dt = new PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    withPlainTime(temporalTimeParam = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const PlainTime = GetIntrinsic('%Temporal.PlainTime%');\n        const temporalTime = temporalTimeParam === undefined ? new PlainTime() : ES.ToTemporalTime(temporalTimeParam);\n        const thisDt = dateTime(this);\n        const year = GetSlot(thisDt, ISO_YEAR);\n        const month = GetSlot(thisDt, ISO_MONTH);\n        const day = GetSlot(thisDt, ISO_DAY);\n        const calendar = GetSlot(this, CALENDAR);\n        const hour = GetSlot(temporalTime, ISO_HOUR);\n        const minute = GetSlot(temporalTime, ISO_MINUTE);\n        const second = GetSlot(temporalTime, ISO_SECOND);\n        const millisecond = GetSlot(temporalTime, ISO_MILLISECOND);\n        const microsecond = GetSlot(temporalTime, ISO_MICROSECOND);\n        const nanosecond = GetSlot(temporalTime, ISO_NANOSECOND);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const PlainDateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const dt = new PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dt, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    withTimeZone(timeZoneParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const timeZone = ES.ToTemporalTimeZone(timeZoneParam);\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), timeZone, GetSlot(this, CALENDAR));\n    }\n    withCalendar(calendarParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = ES.ToTemporalCalendar(calendarParam);\n        return ES.CreateTemporalZonedDateTime(GetSlot(this, EPOCHNANOSECONDS), GetSlot(this, TIME_ZONE), calendar);\n    }\n    add(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromZonedDateTime('add', this, temporalDurationLike, options);\n    }\n    subtract(temporalDurationLike, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.AddDurationToOrSubtractDurationFromZonedDateTime('subtract', this, temporalDurationLike, options);\n    }\n    until(other, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalZonedDateTime('until', this, other, options);\n    }\n    since(other, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.DifferenceTemporalZonedDateTime('since', this, other, options);\n    }\n    round(optionsParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        if (optionsParam === undefined)\n            throw new TypeError('options parameter is required');\n        const options = typeof optionsParam === 'string'\n            ? ES.CreateOnePropObject('smallestUnit', optionsParam)\n            : ES.GetOptionsObject(optionsParam);\n        const smallestUnit = ES.GetTemporalUnit(options, 'smallestUnit', 'time', ES.REQUIRED, ['day']);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'halfExpand');\n        const maximumIncrements = {\n            day: 1,\n            hour: 24,\n            minute: 60,\n            second: 60,\n            millisecond: 1000,\n            microsecond: 1000,\n            nanosecond: 1000\n        };\n        const roundingIncrement = ES.ToTemporalRoundingIncrement(options, maximumIncrements[smallestUnit], false);\n        // first, round the underlying DateTime fields\n        const dt = dateTime(this);\n        let year = GetSlot(dt, ISO_YEAR);\n        let month = GetSlot(dt, ISO_MONTH);\n        let day = GetSlot(dt, ISO_DAY);\n        let hour = GetSlot(dt, ISO_HOUR);\n        let minute = GetSlot(dt, ISO_MINUTE);\n        let second = GetSlot(dt, ISO_SECOND);\n        let millisecond = GetSlot(dt, ISO_MILLISECOND);\n        let microsecond = GetSlot(dt, ISO_MICROSECOND);\n        let nanosecond = GetSlot(dt, ISO_NANOSECOND);\n        const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const calendar = GetSlot(this, CALENDAR);\n        const dtStart = new DateTime(GetSlot(dt, ISO_YEAR), GetSlot(dt, ISO_MONTH), GetSlot(dt, ISO_DAY), 0, 0, 0, 0, 0, 0);\n        const instantStart = ES.BuiltinTimeZoneGetInstantFor(timeZone, dtStart, 'compatible');\n        const endNs = ES.AddZonedDateTime(instantStart, timeZone, calendar, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);\n        const dayLengthNs = JSBI.subtract(endNs, JSBI.BigInt(GetSlot(instantStart, EPOCHNANOSECONDS)));\n        if (JSBI.equal(dayLengthNs, ZERO)) {\n            throw new RangeError('cannot round a ZonedDateTime in a calendar with zero-length days');\n        }\n        ({ year, month, day, hour, minute, second, millisecond, microsecond, nanosecond } = ES.RoundISODateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, roundingIncrement, smallestUnit, roundingMode, \n        // Days are guaranteed to be shorter than Number.MAX_SAFE_INTEGER\n        // (which can hold up to 104 days in nanoseconds)\n        JSBI.toNumber(dayLengthNs)));\n        // Now reset all DateTime fields but leave the TimeZone. The offset will\n        // also be retained if the new date/time values are still OK with the old\n        // offset. Otherwise the offset will be changed to be compatible with the\n        // new date/time values. If DST disambiguation is required, the `compatible`\n        // disambiguation algorithm will be used.\n        const offsetNs = ES.GetOffsetNanosecondsFor(timeZone, GetSlot(this, INSTANT));\n        const epochNanoseconds = ES.InterpretISODateTimeOffset(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, 'option', offsetNs, timeZone, 'compatible', 'prefer', \n        /* matchMinute = */ false);\n        return ES.CreateTemporalZonedDateTime(epochNanoseconds, timeZone, GetSlot(this, CALENDAR));\n    }\n    equals(otherParam) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const other = ES.ToTemporalZonedDateTime(otherParam);\n        const one = GetSlot(this, EPOCHNANOSECONDS);\n        const two = GetSlot(other, EPOCHNANOSECONDS);\n        if (!JSBI.equal(JSBI.BigInt(one), JSBI.BigInt(two)))\n            return false;\n        if (!ES.TimeZoneEquals(GetSlot(this, TIME_ZONE), GetSlot(other, TIME_ZONE)))\n            return false;\n        return ES.CalendarEquals(GetSlot(this, CALENDAR), GetSlot(other, CALENDAR));\n    }\n    toString(optionsParam = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const options = ES.GetOptionsObject(optionsParam);\n        const { precision, unit, increment } = ES.ToSecondsStringPrecision(options);\n        const roundingMode = ES.ToTemporalRoundingMode(options, 'trunc');\n        const showCalendar = ES.ToShowCalendarOption(options);\n        const showTimeZone = ES.ToShowTimeZoneNameOption(options);\n        const showOffset = ES.ToShowOffsetOption(options);\n        return ES.TemporalZonedDateTimeToString(this, precision, showCalendar, showTimeZone, showOffset, {\n            unit,\n            increment,\n            roundingMode\n        });\n    }\n    toLocaleString(locales = undefined, options = undefined) {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return new DateTimeFormat(locales, options).format(this);\n    }\n    toJSON() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalZonedDateTimeToString(this, 'auto');\n    }\n    valueOf() {\n        throw new TypeError('use compare() or equals() to compare Temporal.ZonedDateTime');\n    }\n    startOfDay() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const dt = dateTime(this);\n        const DateTime = GetIntrinsic('%Temporal.PlainDateTime%');\n        const calendar = GetSlot(this, CALENDAR);\n        const dtStart = new DateTime(GetSlot(dt, ISO_YEAR), GetSlot(dt, ISO_MONTH), GetSlot(dt, ISO_DAY), 0, 0, 0, 0, 0, 0, calendar);\n        const timeZone = GetSlot(this, TIME_ZONE);\n        const instant = ES.BuiltinTimeZoneGetInstantFor(timeZone, dtStart, 'compatible');\n        return ES.CreateTemporalZonedDateTime(GetSlot(instant, EPOCHNANOSECONDS), timeZone, calendar);\n    }\n    toInstant() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const TemporalInstant = GetIntrinsic('%Temporal.Instant%');\n        return new TemporalInstant(GetSlot(this, EPOCHNANOSECONDS));\n    }\n    toPlainDate() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToDate(dateTime(this));\n    }\n    toPlainTime() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return ES.TemporalDateTimeToTime(dateTime(this));\n    }\n    toPlainDateTime() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        return dateTime(this);\n    }\n    toPlainYearMonth() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['monthCode', 'year']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarYearMonthFromFields(calendar, fields);\n    }\n    toPlainMonthDay() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const calendar = GetSlot(this, CALENDAR);\n        const fieldNames = ES.CalendarFields(calendar, ['day', 'monthCode']);\n        const fields = ES.PrepareTemporalFields(this, fieldNames, []);\n        return ES.CalendarMonthDayFromFields(calendar, fields);\n    }\n    getISOFields() {\n        if (!ES.IsTemporalZonedDateTime(this))\n            throw new TypeError('invalid receiver');\n        const dt = dateTime(this);\n        const tz = GetSlot(this, TIME_ZONE);\n        return {\n            calendar: GetSlot(this, CALENDAR),\n            isoDay: GetSlot(dt, ISO_DAY),\n            isoHour: GetSlot(dt, ISO_HOUR),\n            isoMicrosecond: GetSlot(dt, ISO_MICROSECOND),\n            isoMillisecond: GetSlot(dt, ISO_MILLISECOND),\n            isoMinute: GetSlot(dt, ISO_MINUTE),\n            isoMonth: GetSlot(dt, ISO_MONTH),\n            isoNanosecond: GetSlot(dt, ISO_NANOSECOND),\n            isoSecond: GetSlot(dt, ISO_SECOND),\n            isoYear: GetSlot(dt, ISO_YEAR),\n            offset: ES.BuiltinTimeZoneGetOffsetStringFor(tz, GetSlot(this, INSTANT)),\n            timeZone: tz\n        };\n    }\n    static from(item, optionsParam = undefined) {\n        const options = ES.GetOptionsObject(optionsParam);\n        if (ES.IsTemporalZonedDateTime(item)) {\n            ES.ToTemporalOverflow(options); // validate and ignore\n            ES.ToTemporalDisambiguation(options);\n            ES.ToTemporalOffset(options, 'reject');\n            return ES.CreateTemporalZonedDateTime(GetSlot(item, EPOCHNANOSECONDS), GetSlot(item, TIME_ZONE), GetSlot(item, CALENDAR));\n        }\n        return ES.ToTemporalZonedDateTime(item, options);\n    }\n    static compare(oneParam, twoParam) {\n        const one = ES.ToTemporalZonedDateTime(oneParam);\n        const two = ES.ToTemporalZonedDateTime(twoParam);\n        const ns1 = GetSlot(one, EPOCHNANOSECONDS);\n        const ns2 = GetSlot(two, EPOCHNANOSECONDS);\n        if (JSBI.lessThan(JSBI.BigInt(ns1), JSBI.BigInt(ns2)))\n            return -1;\n        if (JSBI.greaterThan(JSBI.BigInt(ns1), JSBI.BigInt(ns2)))\n            return 1;\n        return 0;\n    }\n}\nSymbol.toStringTag;\nMakeIntrinsicClass(ZonedDateTime, 'Temporal.ZonedDateTime');\nfunction dateTime(zdt) {\n    return ES.BuiltinTimeZoneGetPlainDateTimeFor(GetSlot(zdt, TIME_ZONE), GetSlot(zdt, INSTANT), GetSlot(zdt, CALENDAR));\n}\n//# sourceMappingURL=zoneddatetime.js.map", "import { Instant } from './instant';\nimport JSBI from 'jsbi';\nimport * as ES from './ecmascript';\nimport { MILLION } from './ecmascript';\nexport function toTemporalInstant() {\n    // Observable access to valueOf is not correct here, but unavoidable\n    const epochNanoseconds = JSBI.multiply(JSBI.BigInt(+this), MILLION);\n    return new Instant(ES.ToBigInt(epochNanoseconds));\n}\n//# sourceMappingURL=legacydate.js.map", "// This entry point treats Temporal as a library, and does not polyfill it onto\n// the global object.\n// This is in order to avoid breaking the web in the future, if the polyfill\n// gains wide adoption before the API is finalized. We do not want checks such\n// as `if (typeof Temporal === 'undefined')` in the wild, until browsers start\n// shipping the finalized API.\nimport * as Temporal from './temporal';\nimport * as Intl from './intl';\nimport { toTemporalInstant } from './legacydate';\n// Work around https://github.com/babel/babel/issues/2025.\nconst types = [\n    Temporal.Instant,\n    Temporal.Calendar,\n    Temporal.PlainDate,\n    Temporal.PlainDateTime,\n    Temporal.Duration,\n    Temporal.PlainMonthDay,\n    // Temporal.Now, // plain object (not a constructor), so no `prototype`\n    Temporal.PlainTime,\n    Temporal.TimeZone,\n    Temporal.PlainYearMonth,\n    Temporal.ZonedDateTime\n];\nfor (const type of types) {\n    const descriptor = Object.getOwnPropertyDescriptor(type, 'prototype');\n    if (descriptor.configurable || descriptor.enumerable || descriptor.writable) {\n        descriptor.configurable = false;\n        descriptor.enumerable = false;\n        descriptor.writable = false;\n        Object.defineProperty(type, 'prototype', descriptor);\n    }\n}\nexport { Temporal, Intl, toTemporalInstant };\n//# sourceMappingURL=index.js.map", "import errCode from 'err-code'\nimport { CID } from 'multiformats/cid'\nimport resolve from './resolvers/index.js'\nimport last from 'it-last'\nimport type { UnixFS } from 'ipfs-unixfs'\nimport type { PBNode } from '@ipld/dag-pb'\nimport type { Blockstore } from 'interface-blockstore'\nimport type { Bucket } from 'hamt-sharding'\nimport type { ProgressOptions, ProgressEvent } from 'progress-events'\n\nexport interface ExportProgress {\n  /**\n   * How many bytes of the file have been read\n   */\n  bytesRead: bigint\n\n  /**\n   * How many bytes of the file will be read - n.b. this may be\n   * smaller than `fileSize` if `offset`/`length` have been\n   * specified\n   */\n  totalBytes: bigint\n\n  /**\n   * The size of the file being read - n.b. this may be\n   * larger than `total` if `offset`/`length` has been\n   * specified\n   */\n  fileSize: bigint\n}\n\nexport interface ExportWalk {\n  cid: CID\n}\n\n/**\n * Progress events emitted by the exporter\n */\nexport type ExporterProgressEvents =\n  ProgressEvent<'unixfs:exporter:progress:unixfs:file', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:progress:unixfs:raw', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:progress:raw', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:progress:identity', ExportProgress> |\n  ProgressEvent<'unixfs:exporter:walk:file', ExportWalk> |\n  ProgressEvent<'unixfs:exporter:walk:directory', ExportWalk> |\n  ProgressEvent<'unixfs:exporter:walk:hamt-sharded-directory', ExportWalk> |\n  ProgressEvent<'unixfs:exporter:walk:raw', ExportWalk>\n\nexport interface ExporterOptions extends ProgressOptions<ExporterProgressEvents> {\n  offset?: number\n  length?: number\n  signal?: AbortSignal\n}\n\nexport interface Exportable<T> {\n  type: 'file' | 'directory' | 'object' | 'raw' | 'identity'\n  name: string\n  path: string\n  cid: CID\n  depth: number\n  size: bigint\n  content: (options?: ExporterOptions) => AsyncGenerator<T, void, unknown>\n}\n\nexport interface UnixFSFile extends Exportable<Uint8Array> {\n  type: 'file'\n  unixfs: UnixFS\n  node: PBNode\n}\n\nexport interface UnixFSDirectory extends Exportable<UnixFSEntry> {\n  type: 'directory'\n  unixfs: UnixFS\n  node: PBNode\n}\n\nexport interface ObjectNode extends Exportable<any> {\n  type: 'object'\n  node: Uint8Array\n}\n\nexport interface RawNode extends Exportable<Uint8Array> {\n  type: 'raw'\n  node: Uint8Array\n}\n\nexport interface IdentityNode extends Exportable<Uint8Array> {\n  type: 'identity'\n  node: Uint8Array\n}\n\nexport type UnixFSEntry = UnixFSFile | UnixFSDirectory | ObjectNode | RawNode | IdentityNode\n\nexport interface NextResult {\n  cid: CID\n  name: string\n  path: string\n  toResolve: string[]\n}\n\nexport interface ResolveResult {\n  entry: UnixFSEntry\n  next?: NextResult\n}\n\nexport interface Resolve { (cid: CID, name: string, path: string, toResolve: string[], depth: number, blockstore: ReadableStorage, options: ExporterOptions): Promise<ResolveResult> }\nexport interface Resolver { (cid: CID, name: string, path: string, toResolve: string[], resolve: Resolve, depth: number, blockstore: ReadableStorage, options: ExporterOptions): Promise<ResolveResult> }\n\nexport type UnixfsV1FileContent = AsyncIterable<Uint8Array> | Iterable<Uint8Array>\nexport type UnixfsV1DirectoryContent = AsyncIterable<UnixFSEntry> | Iterable<UnixFSEntry>\nexport type UnixfsV1Content = UnixfsV1FileContent | UnixfsV1DirectoryContent\nexport interface UnixfsV1Resolver { (cid: CID, node: PBNode, unixfs: UnixFS, path: string, resolve: Resolve, depth: number, blockstore: ReadableStorage): (options: ExporterOptions) => UnixfsV1Content }\n\nexport interface ShardTraversalContext {\n  hamtDepth: number\n  rootBucket: Bucket<boolean>\n  lastBucket: Bucket<boolean>\n}\n\nexport type ReadableStorage = Pick<Blockstore, 'get'>\n\nconst toPathComponents = (path: string = ''): string[] => {\n  // split on / unless escaped with \\\n  return (path\n    .trim()\n    .match(/([^\\\\^/]|\\\\\\/)+/g) ?? [])\n    .filter(Boolean)\n}\n\nconst cidAndRest = (path: string | Uint8Array | CID): { cid: CID, toResolve: string[] } => {\n  if (path instanceof Uint8Array) {\n    return {\n      cid: CID.decode(path),\n      toResolve: []\n    }\n  }\n\n  const cid = CID.asCID(path)\n  if (cid != null) {\n    return {\n      cid,\n      toResolve: []\n    }\n  }\n\n  if (typeof path === 'string') {\n    if (path.indexOf('/ipfs/') === 0) {\n      path = path.substring(6)\n    }\n\n    const output = toPathComponents(path)\n\n    return {\n      cid: CID.parse(output[0]),\n      toResolve: output.slice(1)\n    }\n  }\n\n  throw errCode(new Error(`Unknown path type ${path}`), 'ERR_BAD_PATH')\n}\n\nexport async function * walkPath (path: string | CID, blockstore: ReadableStorage, options: ExporterOptions = {}): AsyncGenerator<UnixFSEntry, void, any> {\n  let {\n    cid,\n    toResolve\n  } = cidAndRest(path)\n  let name = cid.toString()\n  let entryPath = name\n  const startingDepth = toResolve.length\n\n  while (true) {\n    const result = await resolve(cid, name, entryPath, toResolve, startingDepth, blockstore, options)\n\n    if (result.entry == null && result.next == null) {\n      throw errCode(new Error(`Could not resolve ${path}`), 'ERR_NOT_FOUND')\n    }\n\n    if (result.entry != null) {\n      yield result.entry\n    }\n\n    if (result.next == null) {\n      return\n    }\n\n    // resolve further parts\n    toResolve = result.next.toResolve\n    cid = result.next.cid\n    name = result.next.name\n    entryPath = result.next.path\n  }\n}\n\nexport async function exporter (path: string | CID, blockstore: ReadableStorage, options: ExporterOptions = {}): Promise<UnixFSEntry> {\n  const result = await last(walkPath(path, blockstore, options))\n\n  if (result == null) {\n    throw errCode(new Error(`Could not resolve ${path}`), 'ERR_NOT_FOUND')\n  }\n\n  return result\n}\n\nexport async function * recursive (path: string | CID, blockstore: ReadableStorage, options: ExporterOptions = {}): AsyncGenerator<UnixFSEntry, void, any> {\n  const node = await exporter(path, blockstore, options)\n\n  if (node == null) {\n    return\n  }\n\n  yield node\n\n  if (node.type === 'directory') {\n    for await (const child of recurse(node, options)) {\n      yield child\n    }\n  }\n\n  async function * recurse (node: UnixFSDirectory, options: ExporterOptions): AsyncGenerator<UnixFSEntry, void, any> {\n    for await (const file of node.content(options)) {\n      yield file\n\n      if (file instanceof Uint8Array) {\n        continue\n      }\n\n      if (file.type === 'directory') {\n        yield * recurse(file, options)\n      }\n    }\n  }\n}\n", "import errCode from 'err-code'\n\nimport * as dagPb from '@ipld/dag-pb'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport * as raw from 'multiformats/codecs/raw'\nimport { identity } from 'multiformats/hashes/identity'\n\nimport dagPbResolver from './unixfs-v1/index.js'\nimport rawResolver from './raw.js'\nimport dagCborResolver from './dag-cbor.js'\nimport identifyResolver from './identity.js'\nimport type { Resolve, Resolver } from '../index.js'\n\nconst resolvers: Record<number, Resolver> = {\n  [dagPb.code]: dagPbResolver,\n  [raw.code]: rawResolver,\n  [dagCbor.code]: dagCborResolver,\n  [identity.code]: identifyResolver\n}\n\nconst resolve: Resolve = async (cid, name, path, toResolve, depth, blockstore, options) => {\n  const resolver = resolvers[cid.code]\n\n  if (resolver == null) {\n    throw errCode(new Error(`No resolver for code ${cid.code}`), 'ERR_NO_RESOLVER')\n  }\n\n  return await resolver(cid, name, path, toResolve, resolve, depth, blockstore, options)\n}\n\nexport default resolve\n", "import errCode from 'err-code'\nimport { UnixFS } from 'ipfs-unixfs'\nimport findShardCid from '../../utils/find-cid-in-shard.js'\nimport { decode, PBNode } from '@ipld/dag-pb'\nimport contentFile from './content/file.js'\nimport contentDirectory from './content/directory.js'\nimport contentHamtShardedDirectory from './content/hamt-sharded-directory.js'\nimport type { CID } from 'multiformats/cid'\nimport type { Resolver, UnixfsV1Resolver } from '../../index.js'\n\nconst findLinkCid = (node: PBNode, name: string): CID | undefined => {\n  const link = node.Links.find(link => link.Name === name)\n\n  return link?.Hash\n}\n\nconst contentExporters: Record<string, UnixfsV1Resolver> = {\n  raw: contentFile,\n  file: contentFile,\n  directory: contentDirectory,\n  'hamt-sharded-directory': contentHamtShardedDirectory,\n  metadata: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n    return () => []\n  },\n  symlink: (cid, node, unixfs, path, resolve, depth, blockstore) => {\n    return () => []\n  }\n}\n\n// @ts-expect-error types are wrong\nconst unixFsResolver: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  const block = await blockstore.get(cid, options)\n  const node = decode(block)\n  let unixfs\n  let next\n\n  if (name == null) {\n    name = cid.toString()\n  }\n\n  if (node.Data == null) {\n    throw errCode(new Error('no data in PBNode'), 'ERR_NOT_UNIXFS')\n  }\n\n  try {\n    unixfs = UnixFS.unmarshal(node.Data)\n  } catch (err: any) {\n    // non-UnixFS dag-pb node? It could happen.\n    throw errCode(err, 'ERR_NOT_UNIXFS')\n  }\n\n  if (path == null) {\n    path = name\n  }\n\n  if (toResolve.length > 0) {\n    let linkCid\n\n    if (unixfs?.type === 'hamt-sharded-directory') {\n      // special case - unixfs v1 hamt shards\n      linkCid = await findShardCid(node, toResolve[0], blockstore)\n    } else {\n      linkCid = findLinkCid(node, toResolve[0])\n    }\n\n    if (linkCid == null) {\n      throw errCode(new Error('file does not exist'), 'ERR_NOT_FOUND')\n    }\n\n    // remove the path component we have resolved\n    const nextName = toResolve.shift()\n    const nextPath = `${path}/${nextName}`\n\n    next = {\n      cid: linkCid,\n      toResolve,\n      name: nextName ?? '',\n      path: nextPath\n    }\n  }\n\n  const content = contentExporters[unixfs.type](cid, node, unixfs, path, resolve, depth, blockstore)\n\n  if (content == null) {\n    throw errCode(new Error('could not find content exporter'), 'ERR_NOT_FOUND')\n  }\n\n  if (unixfs.isDirectory()) {\n    return {\n      entry: {\n        type: 'directory',\n        name,\n        path,\n        cid,\n        content,\n        unixfs,\n        depth,\n        node,\n        size: unixfs.fileSize()\n      },\n      next\n    }\n  }\n\n  return {\n    entry: {\n      type: 'file',\n      name,\n      path,\n      cid,\n      content,\n      unixfs,\n      depth,\n      node,\n      size: unixfs.fileSize()\n    },\n    next\n  }\n}\n\nexport default unixFsResolver\n", "\nimport { Bucket, BucketPosition, createHAMT } from 'hamt-sharding'\nimport { decode, PBLink, PBNode } from '@ipld/dag-pb'\nimport { murmur3128 } from '@multiformats/murmur3'\nimport type { ExporterOptions, ShardTraversalContext, ReadableStorage } from '../index.js'\nimport type { CID } from 'multiformats/cid'\n\n// FIXME: this is copy/pasted from ipfs-unixfs-importer/src/options.js\nconst hashFn = async function (buf: Uint8Array): Promise<Uint8Array> {\n  return (await murmur3128.encode(buf))\n    // Murmur3 outputs 128 bit but, accidentally, IPFS Go's\n    // implementation only uses the first 64, so we must do the same\n    // for parity..\n    .slice(0, 8)\n    // Invert buffer because that's how Go impl does it\n    .reverse()\n}\n\nconst addLinksToHamtBucket = async (links: PBLink[], bucket: Bucket<boolean>, rootBucket: Bucket<boolean>): Promise<void> => {\n  await Promise.all(\n    links.map(async link => {\n      if (link.Name == null) {\n        // TODO(@rvagg): what do? this is technically possible\n        throw new Error('Unexpected Link without a Name')\n      }\n      if (link.Name.length === 2) {\n        const pos = parseInt(link.Name, 16)\n\n        bucket._putObjectAt(pos, new Bucket({\n          hash: rootBucket._options.hash,\n          bits: rootBucket._options.bits\n        }, bucket, pos))\n        return\n      }\n\n      await rootBucket.put(link.Name.substring(2), true)\n    })\n  )\n}\n\nconst toPrefix = (position: number): string => {\n  return position\n    .toString(16)\n    .toUpperCase()\n    .padStart(2, '0')\n    .substring(0, 2)\n}\n\nconst toBucketPath = (position: BucketPosition<boolean>): Array<Bucket<boolean>> => {\n  let bucket = position.bucket\n  const path = []\n\n  while (bucket._parent != null) {\n    path.push(bucket)\n\n    bucket = bucket._parent\n  }\n\n  path.push(bucket)\n\n  return path.reverse()\n}\n\nconst findShardCid = async (node: PBNode, name: string, blockstore: ReadableStorage, context?: ShardTraversalContext, options?: ExporterOptions): Promise<CID | undefined> => {\n  if (context == null) {\n    const rootBucket = createHAMT<boolean>({\n      hashFn\n    })\n\n    context = {\n      rootBucket,\n      hamtDepth: 1,\n      lastBucket: rootBucket\n    }\n  }\n\n  await addLinksToHamtBucket(node.Links, context.lastBucket, context.rootBucket)\n\n  const position = await context.rootBucket._findNewBucketAndPos(name)\n  let prefix = toPrefix(position.pos)\n  const bucketPath = toBucketPath(position)\n\n  if (bucketPath.length > context.hamtDepth) {\n    context.lastBucket = bucketPath[context.hamtDepth]\n\n    prefix = toPrefix(context.lastBucket._posAtParent)\n  }\n\n  const link = node.Links.find(link => {\n    if (link.Name == null) {\n      return false\n    }\n\n    const entryPrefix = link.Name.substring(0, 2)\n    const entryName = link.Name.substring(2)\n\n    if (entryPrefix !== prefix) {\n      // not the entry or subshard we're looking for\n      return false\n    }\n\n    if (entryName !== '' && entryName !== name) {\n      // not the entry we're looking for\n      return false\n    }\n\n    return true\n  })\n\n  if (link == null) {\n    return\n  }\n\n  if (link.Name != null && link.Name.substring(2) === name) {\n    return link.Hash\n  }\n\n  context.hamtDepth++\n\n  const block = await blockstore.get(link.Hash, options)\n  node = decode(block)\n\n  return await findShardCid(node, name, blockstore, context, options)\n}\n\nexport default findShardCid\n", "import extractDataFromBlock from '../../../utils/extract-data-from-block.js'\nimport validateOffsetAndLength from '../../../utils/validate-offset-and-length.js'\nimport { UnixFS } from 'ipfs-unixfs'\nimport errCode from 'err-code'\nimport * as dagPb from '@ipld/dag-pb'\nimport * as raw from 'multiformats/codecs/raw'\nimport { Pushable, pushable } from 'it-pushable'\nimport parallel from 'it-parallel'\nimport { pipe } from 'it-pipe'\nimport map from 'it-map'\nimport PQueue from 'p-queue'\nimport type { ExporterOptions, UnixfsV1FileContent, UnixfsV1Resolver, ReadableStorage, ExportProgress, ExportWalk } from '../../../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nasync function walkDAG (blockstore: ReadableStorage, node: dagPb.PBNode | Uint8Array, queue: Pushable<Uint8Array>, streamPosition: bigint, start: bigint, end: bigint, options: ExporterOptions): Promise<void> {\n  // a `raw` node\n  if (node instanceof Uint8Array) {\n    const buf = extractDataFromBlock(node, streamPosition, start, end)\n\n    queue.push(buf)\n\n    return\n  }\n\n  if (node.Data == null) {\n    throw errCode(new Error('no data in PBNode'), 'ERR_NOT_UNIXFS')\n  }\n\n  let file: UnixFS\n\n  try {\n    file = UnixFS.unmarshal(node.Data)\n  } catch (err: any) {\n    throw errCode(err, 'ERR_NOT_UNIXFS')\n  }\n\n  // might be a unixfs `raw` node or have data on intermediate nodes\n  if (file.data != null) {\n    const data = file.data\n    const buf = extractDataFromBlock(data, streamPosition, start, end)\n\n    queue.push(buf)\n\n    streamPosition += BigInt(buf.byteLength)\n  }\n\n  const childOps: Array<{ link: dagPb.PBLink, blockStart: bigint }> = []\n\n  if (node.Links.length !== file.blockSizes.length) {\n    throw errCode(new Error('Inconsistent block sizes and dag links'), 'ERR_NOT_UNIXFS')\n  }\n\n  for (let i = 0; i < node.Links.length; i++) {\n    const childLink = node.Links[i]\n    const childStart = streamPosition // inclusive\n    const childEnd = childStart + file.blockSizes[i] // exclusive\n\n    if ((start >= childStart && start < childEnd) || // child has offset byte\n        (end >= childStart && end <= childEnd) || // child has end byte\n        (start < childStart && end > childEnd)) { // child is between offset and end bytes\n      childOps.push({\n        link: childLink,\n        blockStart: streamPosition\n      })\n    }\n\n    streamPosition = childEnd\n\n    if (streamPosition > end) {\n      break\n    }\n  }\n\n  await pipe(\n    childOps,\n    (source) => map(source, (op) => {\n      return async () => {\n        const block = await blockstore.get(op.link.Hash, options)\n\n        return {\n          ...op,\n          block\n        }\n      }\n    }),\n    (source) => parallel(source, {\n      ordered: true\n    }),\n    async (source) => {\n      for await (const { link, block, blockStart } of source) {\n        let child: dagPb.PBNode | Uint8Array\n        switch (link.Hash.code) {\n          case dagPb.code:\n            child = dagPb.decode(block)\n            break\n          case raw.code:\n            child = block\n            break\n          default:\n            queue.end(errCode(new Error(`Unsupported codec: ${link.Hash.code}`), 'ERR_NOT_UNIXFS'))\n            return\n        }\n\n        // create a queue for this child - we use a queue instead of recursion\n        // to avoid overflowing the stack\n        const childQueue = new PQueue({\n          concurrency: 1\n        })\n        // if any of the child jobs error, end the read queue with the error\n        childQueue.on('error', error => {\n          queue.end(error)\n        })\n\n        // if the job rejects the 'error' event will be emitted on the child queue\n        void childQueue.add(async () => {\n          options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:file', {\n            cid: link.Hash\n          }))\n\n          await walkDAG(blockstore, child, queue, blockStart, start, end, options)\n        })\n\n        // wait for this child to complete before moving on to the next\n        await childQueue.onIdle()\n      }\n    }\n  )\n\n  if (streamPosition >= end) {\n    queue.end()\n  }\n}\n\nconst fileContent: UnixfsV1Resolver = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n  async function * yieldFileContent (options: ExporterOptions = {}): UnixfsV1FileContent {\n    const fileSize = unixfs.fileSize()\n\n    if (fileSize === undefined) {\n      throw new Error('File was a directory')\n    }\n\n    const {\n      start,\n      end\n    } = validateOffsetAndLength(fileSize, options.offset, options.length)\n\n    if (end === 0n) {\n      return\n    }\n\n    let read = 0n\n    const wanted = end - start\n    const queue = pushable()\n\n    options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:file', {\n      cid\n    }))\n\n    void walkDAG(blockstore, node, queue, 0n, start, end, options)\n      .catch(err => {\n        queue.end(err)\n      })\n\n    for await (const buf of queue) {\n      if (buf == null) {\n        continue\n      }\n\n      read += BigInt(buf.byteLength)\n\n      if (read > wanted) {\n        queue.end()\n        throw errCode(new Error('Read too many bytes - the file size reported by the UnixFS data in the root node may be incorrect'), 'ERR_OVER_READ')\n      }\n\n      if (read === wanted) {\n        queue.end()\n      }\n\n      options.onProgress?.(new CustomProgressEvent<ExportProgress>('unixfs:exporter:progress:unixfs:file', {\n        bytesRead: read,\n        totalBytes: wanted,\n        fileSize\n      }))\n\n      yield buf\n    }\n\n    if (read < wanted) {\n      throw errCode(new Error('Traversed entire DAG but did not read enough bytes'), 'ERR_UNDER_READ')\n    }\n  }\n\n  return yieldFileContent\n}\n\nexport default fileContent\n", "\nfunction extractDataFromBlock (block: Uint8Array, blockStart: bigint, requestedStart: bigint, requestedEnd: bigint): Uint8Array {\n  const blockLength = BigInt(block.length)\n  const blockEnd = BigInt(blockStart + blockLength)\n\n  if (requestedStart >= blockEnd || requestedEnd < blockStart) {\n    // If we are looking for a byte range that is starts after the start of the block,\n    // return an empty block.  This can happen when internal nodes contain data\n    return new Uint8Array(0)\n  }\n\n  if (requestedEnd >= blockStart && requestedEnd < blockEnd) {\n    // If the end byte is in the current block, truncate the block to the end byte\n    block = block.subarray(0, Number(requestedEnd - blockStart))\n  }\n\n  if (requestedStart >= blockStart && requestedStart < blockEnd) {\n    // If the start byte is in the current block, skip to the start byte\n    block = block.subarray(Number(requestedStart - blockStart))\n  }\n\n  return block\n}\n\nexport default extractDataFromBlock\n", "import errCode from 'err-code'\n\nconst validateOffsetAndLength = (size: number | bigint, offset: number | bigint = 0, length: number | bigint = size): { start: bigint, end: bigint } => {\n  const fileSize = BigInt(size)\n  const start = BigInt(offset ?? 0)\n  let end = BigInt(length)\n\n  if (end !== fileSize) {\n    end = start + end\n  }\n\n  if (end > fileSize) {\n    end = fileSize\n  }\n\n  if (start < 0n) {\n    throw errCode(new Error('Offset must be greater than or equal to 0'), 'ERR_INVALID_PARAMS')\n  }\n\n  if (start > fileSize) {\n    throw errCode(new Error('Offset must be less than the file size'), 'ERR_INVALID_PARAMS')\n  }\n\n  if (end < 0n) {\n    throw errCode(new Error('Length must be greater than or equal to 0'), 'ERR_INVALID_PARAMS')\n  }\n\n  if (end > fileSize) {\n    throw errCode(new Error('Length must be less than the file size'), 'ERR_INVALID_PARAMS')\n  }\n\n  return {\n    start,\n    end\n  }\n}\n\nexport default validateOffsetAndLength\n", "/**\n * @packageDocumentation\n *\n * An iterable that you can push values into.\n *\n * @example\n *\n * ```js\n * import { pushable } from 'it-pushable'\n *\n * const source = pushable()\n *\n * setTimeout(() => source.push('hello'), 100)\n * setTimeout(() => source.push('world'), 200)\n * setTimeout(() => source.end(), 300)\n *\n * const start = Date.now()\n *\n * for await (const value of source) {\n *   console.log(`got \"${value}\" after ${Date.now() - start}ms`)\n * }\n * console.log(`done after ${Date.now() - start}ms`)\n *\n * // Output:\n * // got \"hello\" after 105ms\n * // got \"world\" after 207ms\n * // done after 309ms\n * ```\n *\n * @example\n *\n * ```js\n * import { pushableV } from 'it-pushable'\n * import all from 'it-all'\n *\n * const source = pushableV()\n *\n * source.push(1)\n * source.push(2)\n * source.push(3)\n * source.end()\n *\n * console.info(await all(source))\n *\n * // Output:\n * // [ [1, 2, 3] ]\n * ```\n */\n\nimport { FIFO, Next } from './fifo.js'\n\ninterface BasePushable<T> {\n  /**\n   * End the iterable after all values in the buffer (if any) have been yielded. If an\n   * error is passed the buffer is cleared immediately and the next iteration will\n   * throw the passed error\n   */\n  end: (err?: Error) => this\n\n  /**\n   * Push a value into the iterable. Values are yielded from the iterable in the order\n   * they are pushed. Values not yet consumed from the iterable are buffered.\n   */\n  push: (value: T) => this\n\n  /**\n   * This property contains the number of bytes (or objects) in the queue ready to be read.\n   *\n   * If `objectMode` is true, this is the number of objects in the queue, if false it's the\n   * total number of bytes in the queue.\n   */\n  readableLength: number\n}\n\n/**\n * An iterable that you can push values into.\n */\nexport interface Pushable<T, R = void, N = unknown> extends AsyncGenerator<T, R, N>, BasePushable<T> {}\n\n/**\n * Similar to `pushable`, except it yields multiple buffered chunks at a time. All values yielded from the iterable will be arrays.\n */\nexport interface PushableV<T, R = void, N = unknown> extends AsyncGenerator<T[], R, N>, BasePushable<T> {}\n\nexport interface Options {\n  /**\n   * A boolean value that means non-`Uint8Array`s will be passed to `.push`, default: `false`\n   */\n  objectMode?: boolean\n\n  /**\n   * A function called after *all* values have been yielded from the iterator (including\n   * buffered values). In the case when the iterator is ended with an error it will be\n   * passed the error as a parameter.\n   */\n  onEnd?: (err?: Error) => void\n}\n\ntype NextResult<T> = { done: false, value: T } | { done: true }\n\ninterface getNext<T, V = T> { (buffer: FIFO<T>): NextResult<V> }\n\nexport interface ObjectPushableOptions extends Options {\n  objectMode: true\n}\n\nexport interface BytePushableOptions extends Options {\n  objectMode?: false\n}\n\n/**\n * Create a new async iterable. The values yielded from calls to `.next()`\n * or when used in a `for await of`loop are \"pushed\" into the iterable.\n * Returns an async iterable object with additional methods.\n */\nexport function pushable<T extends { byteLength: number } = Uint8Array> (options?: BytePushableOptions): Pushable<T>\nexport function pushable<T> (options: ObjectPushableOptions): Pushable<T>\nexport function pushable<T> (options: Options = {}): Pushable<T> {\n  const getNext = (buffer: FIFO<T>): NextResult<T> => {\n    const next: Next<T> | undefined = buffer.shift()\n\n    if (next == null) {\n      return { done: true }\n    }\n\n    if (next.error != null) {\n      throw next.error\n    }\n\n    return {\n      done: next.done === true,\n      // @ts-expect-error\n      value: next.value\n    }\n  }\n\n  return _pushable<T, T, Pushable<T>>(getNext, options)\n}\n\nexport function pushableV<T extends { byteLength: number } = Uint8Array> (options?: BytePushableOptions): PushableV<T>\nexport function pushableV<T> (options: ObjectPushableOptions): PushableV<T>\nexport function pushableV<T> (options: Options = {}): PushableV<T> {\n  const getNext = (buffer: FIFO<T>): NextResult<T[]> => {\n    let next: Next<T> | undefined\n    const values: T[] = []\n\n    while (!buffer.isEmpty()) {\n      next = buffer.shift()\n\n      if (next == null) {\n        break\n      }\n\n      if (next.error != null) {\n        throw next.error\n      }\n\n      if (next.done === false) {\n        // @ts-expect-error\n        values.push(next.value)\n      }\n    }\n\n    if (next == null) {\n      return { done: true }\n    }\n\n    return {\n      done: next.done === true,\n      value: values\n    }\n  }\n\n  return _pushable<T, T[], PushableV<T>>(getNext, options)\n}\n\nfunction _pushable<PushType, ValueType, ReturnType> (getNext: getNext<PushType, ValueType>, options?: Options): ReturnType {\n  options = options ?? {}\n  let onEnd = options.onEnd\n  let buffer = new FIFO<PushType>()\n  let pushable: any\n  let onNext: ((next: Next<PushType>) => ReturnType) | null\n  let ended: boolean\n\n  const waitNext = async (): Promise<NextResult<ValueType>> => {\n    if (!buffer.isEmpty()) {\n      return getNext(buffer)\n    }\n\n    if (ended) {\n      return { done: true }\n    }\n\n    return await new Promise((resolve, reject) => {\n      onNext = (next: Next<PushType>) => {\n        onNext = null\n        buffer.push(next)\n\n        try {\n          resolve(getNext(buffer))\n        } catch (err) {\n          reject(err)\n        }\n\n        return pushable\n      }\n    })\n  }\n\n  const bufferNext = (next: Next<PushType>): ReturnType => {\n    if (onNext != null) {\n      return onNext(next)\n    }\n\n    buffer.push(next)\n    return pushable\n  }\n\n  const bufferError = (err: Error): ReturnType => {\n    buffer = new FIFO()\n\n    if (onNext != null) {\n      return onNext({ error: err })\n    }\n\n    buffer.push({ error: err })\n    return pushable\n  }\n\n  const push = (value: PushType): ReturnType => {\n    if (ended) {\n      return pushable\n    }\n\n    // @ts-expect-error `byteLength` is not declared on PushType\n    if (options?.objectMode !== true && value?.byteLength == null) {\n      throw new Error('objectMode was not true but tried to push non-Uint8Array value')\n    }\n\n    return bufferNext({ done: false, value })\n  }\n  const end = (err?: Error): ReturnType => {\n    if (ended) return pushable\n    ended = true\n\n    return (err != null) ? bufferError(err) : bufferNext({ done: true })\n  }\n  const _return = (): NextResult<ValueType> => {\n    buffer = new FIFO()\n    end()\n\n    return { done: true }\n  }\n  const _throw = (err: Error): NextResult<ValueType> => {\n    end(err)\n\n    return { done: true }\n  }\n\n  pushable = {\n    [Symbol.asyncIterator] () { return this },\n    next: waitNext,\n    return: _return,\n    throw: _throw,\n    push,\n    end,\n    get readableLength () {\n      return buffer.size\n    }\n  }\n\n  if (onEnd == null) {\n    return pushable\n  }\n\n  const _pushable = pushable\n\n  pushable = {\n    [Symbol.asyncIterator] () { return this },\n    next () {\n      return _pushable.next()\n    },\n    throw (err: Error) {\n      _pushable.throw(err)\n\n      if (onEnd != null) {\n        onEnd(err)\n        onEnd = undefined\n      }\n\n      return { done: true }\n    },\n    return () {\n      _pushable.return()\n\n      if (onEnd != null) {\n        onEnd()\n        onEnd = undefined\n      }\n\n      return { done: true }\n    },\n    push,\n    end (err: Error) {\n      _pushable.end(err)\n\n      if (onEnd != null) {\n        onEnd(err)\n        onEnd = undefined\n      }\n\n      return pushable\n    },\n    get readableLength () {\n      return _pushable.readableLength\n    }\n  }\n\n  return pushable\n}\n", "// ported from https://www.npmjs.com/package/fast-fifo\n\nexport interface Next<T> {\n  done?: boolean\n  error?: Error\n  value?: T\n}\n\nclass FixedFIFO<T> {\n  public buffer: Array<Next<T> | undefined>\n  private readonly mask: number\n  private top: number\n  private btm: number\n  public next: FixedFIFO<T> | null\n\n  constructor (hwm: number) {\n    if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) {\n      throw new Error('Max size for a FixedFIFO should be a power of two')\n    }\n\n    this.buffer = new Array(hwm)\n    this.mask = hwm - 1\n    this.top = 0\n    this.btm = 0\n    this.next = null\n  }\n\n  push (data: Next<T>): boolean {\n    if (this.buffer[this.top] !== undefined) {\n      return false\n    }\n\n    this.buffer[this.top] = data\n    this.top = (this.top + 1) & this.mask\n\n    return true\n  }\n\n  shift (): Next<T> | undefined {\n    const last = this.buffer[this.btm]\n\n    if (last === undefined) {\n      return undefined\n    }\n\n    this.buffer[this.btm] = undefined\n    this.btm = (this.btm + 1) & this.mask\n    return last\n  }\n\n  isEmpty (): boolean {\n    return this.buffer[this.btm] === undefined\n  }\n}\n\nexport interface FIFOOptions {\n  /**\n   * When the queue reaches this size, it will be split into head/tail parts\n   */\n  splitLimit?: number\n}\n\nexport class FIFO<T> {\n  public size: number\n  private readonly hwm: number\n  private head: FixedFIFO<T>\n  private tail: FixedFIFO<T>\n\n  constructor (options: FIFOOptions = {}) {\n    this.hwm = options.splitLimit ?? 16\n    this.head = new FixedFIFO<T>(this.hwm)\n    this.tail = this.head\n    this.size = 0\n  }\n\n  calculateSize (obj: any): number {\n    if (obj?.byteLength != null) {\n      return obj.byteLength\n    }\n\n    return 1\n  }\n\n  push (val: Next<T>): void {\n    if (val?.value != null) {\n      this.size += this.calculateSize(val.value)\n    }\n\n    if (!this.head.push(val)) {\n      const prev = this.head\n      this.head = prev.next = new FixedFIFO<T>(2 * this.head.buffer.length)\n      this.head.push(val)\n    }\n  }\n\n  shift (): Next<T> | undefined {\n    let val = this.tail.shift()\n\n    if (val === undefined && (this.tail.next != null)) {\n      const next = this.tail.next\n      this.tail.next = null\n      this.tail = next\n      val = this.tail.shift()\n    }\n\n    if (val?.value != null) {\n      this.size -= this.calculateSize(val.value)\n    }\n\n    return val\n  }\n\n  isEmpty (): boolean {\n    return this.head.isEmpty()\n  }\n}\n", "/* global EventTarget Event */\n\nimport defer from 'p-defer'\n\ninterface Operation<T> {\n  done: boolean\n  ok: boolean\n  err: Error\n  value: T\n}\n\nconst CustomEvent = globalThis.CustomEvent ?? Event\n\nexport interface ParallelOptions {\n  /**\n   * How many jobs to execute in parallel (default: )\n   */\n  concurrency?: number\n  ordered?: boolean\n}\n\n/**\n * Takes an (async) iterator that emits promise-returning functions,\n * invokes them in parallel and emits the results as they become available but\n * in the same order as the input\n */\nexport default async function * parallel <T> (source: Iterable<() => Promise<T>> | AsyncIterable<() => Promise<T>>, options: ParallelOptions = {}): AsyncGenerator<T, void, undefined> {\n  let concurrency = options.concurrency ?? Infinity\n\n  if (concurrency < 1) {\n    concurrency = Infinity\n  }\n\n  const ordered = options.ordered == null ? false : options.ordered\n  const emitter = new EventTarget()\n\n  const ops: Array<Operation<T>> = []\n  let slotAvailable = defer()\n  let resultAvailable = defer()\n  let sourceFinished = false\n  let sourceErr: Error | undefined\n  let opErred = false\n\n  emitter.addEventListener('task-complete', () => {\n    resultAvailable.resolve()\n  })\n\n  void Promise.resolve().then(async () => {\n    try {\n      for await (const task of source) {\n        if (ops.length === concurrency) {\n          slotAvailable = defer()\n          await slotAvailable.promise\n        }\n\n        if (opErred) {\n          break\n        }\n\n        const op: any = {\n          done: false\n        }\n        ops.push(op)\n\n        task()\n          .then(result => {\n            op.done = true\n            op.ok = true\n            op.value = result\n            emitter.dispatchEvent(new CustomEvent('task-complete'))\n          }, err => {\n            op.done = true\n            op.err = err\n            emitter.dispatchEvent(new CustomEvent('task-complete'))\n          })\n      }\n\n      sourceFinished = true\n      emitter.dispatchEvent(new CustomEvent('task-complete'))\n    } catch (err: any) {\n      sourceErr = err\n      emitter.dispatchEvent(new CustomEvent('task-complete'))\n    }\n  })\n\n  function valuesAvailable (): boolean {\n    if (ordered) {\n      return ops[0]?.done\n    }\n\n    return Boolean(ops.find(op => op.done))\n  }\n\n  function * yieldOrderedValues (): Generator<T, void, unknown> {\n    while ((ops.length > 0) && ops[0].done) {\n      const op = ops[0]\n      ops.shift()\n\n      if (op.ok) {\n        yield op.value\n      } else {\n        // allow the source to exit\n        opErred = true\n        slotAvailable.resolve()\n\n        throw op.err\n      }\n\n      slotAvailable.resolve()\n    }\n  }\n\n  function * yieldUnOrderedValues (): Generator<T, void, unknown> {\n    // more values can become available while we wait for `yield`\n    // to return control to this function\n    while (valuesAvailable()) {\n      for (let i = 0; i < ops.length; i++) {\n        if (ops[i].done) {\n          const op = ops[i]\n          ops.splice(i, 1)\n          i--\n\n          if (op.ok) {\n            yield op.value\n          } else {\n            opErred = true\n            slotAvailable.resolve()\n\n            throw op.err\n          }\n\n          slotAvailable.resolve()\n        }\n      }\n    }\n  }\n\n  while (true) {\n    if (!valuesAvailable()) {\n      resultAvailable = defer()\n      await resultAvailable.promise\n    }\n\n    if (sourceErr != null) {\n      // the source threw an error, propagate it\n      throw sourceErr\n    }\n\n    if (ordered) {\n      yield * yieldOrderedValues()\n    } else {\n      yield * yieldUnOrderedValues()\n    }\n\n    if (sourceFinished && ops.length === 0) {\n      // not waiting for any results and no more tasks so we are done\n      break\n    }\n  }\n}\n", "export default function pDefer() {\n\tconst deferred = {};\n\n\tdeferred.promise = new Promise((resolve, reject) => {\n\t\tdeferred.resolve = resolve;\n\t\tdeferred.reject = reject;\n\t});\n\n\treturn deferred;\n}\n", "import { pushable } from 'it-pushable'\nimport merge from 'it-merge'\nimport type { Duplex, Transform, Sink } from 'it-stream-types'\n\ninterface SourceFn<A = any> { (): A }\n\ntype PipeSource<A = any> =\n  Iterable<A> |\n  AsyncIterable<A> |\n  SourceFn<A> |\n  Duplex<A, any, any>\n\ntype PipeTransform<A = any, B = any> =\n  Transform<A, B> |\n  Duplex<B, A>\n\ntype PipeSink<A = any, B = any> =\n  Sink<A, B> |\n  Duplex<any, A, B>\n\ntype PipeOutput<A> =\n  A extends Sink<any> ? ReturnType<A> :\n    A extends Duplex<any, any, any> ? ReturnType<A['sink']> :\n      never\n\n// single item pipe output includes pipe source types\ntype SingleItemPipeOutput<A> =\n  A extends Iterable<any> ? A :\n    A extends AsyncIterable<any> ? A :\n      A extends SourceFn ? ReturnType<A> :\n        A extends Duplex<any, any, any> ? A['source'] :\n          PipeOutput<A>\n\ntype PipeFnInput<A> =\n  A extends Iterable<any> ? A :\n    A extends AsyncIterable<any> ? A :\n      A extends SourceFn ? ReturnType<A> :\n        A extends Transform<any, any> ? ReturnType<A> :\n          A extends Duplex<any, any, any> ? A['source'] :\n            never\n\n// one item, just a pass-through\nexport function pipe<\n  A extends PipeSource\n> (\n  source: A\n): SingleItemPipeOutput<A>\n\n// two items, source to sink\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeSink<PipeFnInput<A>>\n> (\n  source: A,\n  sink: B\n): PipeOutput<B>\n\n// three items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeSink<PipeFnInput<B>>\n> (\n  source: A,\n  transform1: B,\n  sink: C\n): PipeOutput<C>\n\n// many items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeSink<PipeFnInput<C>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  sink: D\n): PipeOutput<D>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeSink<PipeFnInput<D>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  sink: E\n): PipeOutput<E>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeSink<PipeFnInput<E>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  sink: F\n): PipeOutput<F>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeSink<PipeFnInput<F>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  sink: G\n): PipeOutput<G>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeSink<PipeFnInput<G>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  sink: H\n): PipeOutput<H>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeSink<PipeFnInput<H>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  sink: I\n): PipeOutput<I>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeTransform<PipeFnInput<H>>,\n  J extends PipeSink<PipeFnInput<I>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  transform8: I,\n  sink: J\n): PipeOutput<J>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeTransform<PipeFnInput<H>>,\n  J extends PipeTransform<PipeFnInput<I>>,\n  K extends PipeSink<PipeFnInput<J>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  transform8: I,\n  transform9: J,\n  sink: K\n): PipeOutput<K>\n\n// lots of items, source to sink with transform(s) in between\nexport function pipe<\n  A extends PipeSource,\n  B extends PipeTransform<PipeFnInput<A>>,\n  C extends PipeTransform<PipeFnInput<B>>,\n  D extends PipeTransform<PipeFnInput<C>>,\n  E extends PipeTransform<PipeFnInput<D>>,\n  F extends PipeTransform<PipeFnInput<E>>,\n  G extends PipeTransform<PipeFnInput<F>>,\n  H extends PipeTransform<PipeFnInput<G>>,\n  I extends PipeTransform<PipeFnInput<H>>,\n  J extends PipeTransform<PipeFnInput<I>>,\n  K extends PipeTransform<PipeFnInput<J>>,\n  L extends PipeSink<PipeFnInput<K>>\n> (\n  source: A,\n  transform1: B,\n  transform2: C,\n  transform3: D,\n  transform4: E,\n  transform5: F,\n  transform6: G,\n  transform7: H,\n  transform8: I,\n  transform9: J,\n  transform10: K,\n  sink: L\n): PipeOutput<L>\n\nexport function pipe (first: any, ...rest: any[]): any {\n  if (first == null) {\n    throw new Error('Empty pipeline')\n  }\n\n  // Duplex at start: wrap in function and return duplex source\n  if (isDuplex(first)) {\n    const duplex = first\n    first = () => duplex.source\n  // Iterable at start: wrap in function\n  } else if (isIterable(first) || isAsyncIterable(first)) {\n    const source = first\n    first = () => source\n  }\n\n  const fns = [first, ...rest]\n\n  if (fns.length > 1) {\n    // Duplex at end: use duplex sink\n    if (isDuplex(fns[fns.length - 1])) {\n      fns[fns.length - 1] = fns[fns.length - 1].sink\n    }\n  }\n\n  if (fns.length > 2) {\n    // Duplex in the middle, consume source with duplex sink and return duplex source\n    for (let i = 1; i < fns.length - 1; i++) {\n      if (isDuplex(fns[i])) {\n        fns[i] = duplexPipelineFn(fns[i])\n      }\n    }\n  }\n\n  return rawPipe(...fns)\n}\n\nexport const rawPipe = (...fns: any): any => {\n  let res\n  while (fns.length > 0) {\n    res = fns.shift()(res)\n  }\n  return res\n}\n\nconst isAsyncIterable = (obj: any): obj is AsyncIterable<unknown> => {\n  return obj?.[Symbol.asyncIterator] != null\n}\n\nconst isIterable = (obj: any): obj is Iterable<unknown> => {\n  return obj?.[Symbol.iterator] != null\n}\n\nconst isDuplex = (obj: any): obj is Duplex => {\n  if (obj == null) {\n    return false\n  }\n\n  return obj.sink != null && obj.source != null\n}\n\nconst duplexPipelineFn = (duplex: Duplex<any, any, any>) => {\n  return (source: any) => {\n    const p = duplex.sink(source)\n\n    if (p?.then != null) {\n      const stream = pushable<any>({\n        objectMode: true\n      })\n      p.then(() => {\n        stream.end()\n      }, (err: Error) => {\n        stream.end(err)\n      })\n\n      let sourceWrap: () => Iterable<any> | AsyncIterable<any>\n      const source = duplex.source\n\n      if (isAsyncIterable(source)) {\n        sourceWrap = async function * () {\n          yield * source\n          stream.end()\n        }\n      } else if (isIterable(source)) {\n        sourceWrap = function * () {\n          yield * source\n          stream.end()\n        }\n      } else {\n        throw new Error('Unknown duplex source type - must be Iterable or AsyncIterable')\n      }\n\n      return merge(stream, sourceWrap())\n    }\n\n    return duplex.source\n  }\n}\n", "import { pushable } from 'it-pushable'\n\nfunction isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Treat one or more iterables as a single iterable.\n *\n * Nb. sources are iterated over in parallel so the\n * order of emitted items is not guaranteed.\n */\nfunction merge <T> (...sources: Array<Iterable<T>>): Generator<T, void, undefined>\nfunction merge <T> (...sources: Array<AsyncIterable<T> | Iterable<T>>): AsyncGenerator<T, void, undefined>\nfunction merge <T> (...sources: Array<AsyncIterable<T> | Iterable<T>>): AsyncGenerator<T, void, undefined> | Generator<T, void, undefined> {\n  const syncSources: Array<Iterable<T>> = []\n\n  for (const source of sources) {\n    if (!isAsyncIterable(source)) {\n      syncSources.push(source)\n    }\n  }\n\n  if (syncSources.length === sources.length) {\n    // all sources are synchronous\n    return (function * () {\n      for (const source of syncSources) {\n        yield * source\n      }\n    })()\n  }\n\n  return (async function * () {\n    const output = pushable<T>({\n      objectMode: true\n    })\n\n    void Promise.resolve().then(async () => {\n      try {\n        await Promise.all(\n          sources.map(async (source) => {\n            for await (const item of source) {\n              output.push(item)\n            }\n          })\n        )\n\n        output.end()\n      } catch (err: any) {\n        output.end(err)\n      }\n    })\n\n    yield * output\n  })()\n}\n\nexport default merge\n", "import peek from 'it-peekable'\n\nfunction isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Takes an (async) iterable and returns one with each item mapped by the passed\n * function\n */\nfunction map <I, O> (source: Iterable<I>, func: (val: I) => Promise<O>): AsyncGenerator<O, void, undefined>\nfunction map <I, O> (source: Iterable<I>, func: (val: I) => O): Generator<O, void, undefined>\nfunction map <I, O> (source: AsyncIterable<I> | Iterable<I>, func: (val: I) => O | Promise<O>): AsyncGenerator<O, void, undefined>\nfunction map <I, O> (source: AsyncIterable<I> | Iterable<I>, func: (val: I) => O | Promise<O>): AsyncGenerator<O, void, undefined> | Generator<O, void, undefined> {\n  if (isAsyncIterable(source)) {\n    return (async function * () {\n      for await (const val of source) {\n        yield func(val)\n      }\n    })()\n  }\n\n  // if mapping function returns a promise we have to return an async generator\n  const peekable = peek(source)\n  const { value, done } = peekable.next()\n\n  if (done === true) {\n    return (function * () {}())\n  }\n\n  const res = func(value)\n\n  // @ts-expect-error .then is not present on O\n  if (typeof res.then === 'function') {\n    return (async function * () {\n      yield await res\n\n      for await (const val of peekable) {\n        yield func(val)\n      }\n    })()\n  }\n\n  const fn = func as (val: I) => O\n\n  return (function * () {\n    yield res as O\n\n    for (const val of peekable) {\n      yield fn(val)\n    }\n  })()\n}\n\nexport default map\n", "\ninterface Peek <T> {\n  peek: () => IteratorResult<T, undefined>\n}\n\ninterface AsyncPeek <T> {\n  peek: () => Promise<IteratorResult<T, undefined>>\n}\n\ninterface Push <T> {\n  push: (value: T) => void\n}\n\ntype Peekable <T> = Iterable<T> & Peek<T> & Push<T> & Iterator<T>\n\ntype AsyncPeekable <T> = AsyncIterable<T> & AsyncPeek<T> & Push<T> & AsyncIterator<T>\n\nfunction peekable <T> (iterable: Iterable<T>): Peekable<T>\nfunction peekable <T> (iterable: AsyncIterable<T>): AsyncPeekable<T>\nfunction peekable <T> (iterable: Iterable<T> | AsyncIterable<T>): Peekable<T> | AsyncPeekable<T> {\n  // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n  const [iterator, symbol] = iterable[Symbol.asyncIterator] != null\n    // @ts-expect-error can't use Symbol.asyncIterator to index iterable since it might be Iterable\n    ? [iterable[Symbol.asyncIterator](), Symbol.asyncIterator]\n    // @ts-expect-error can't use Symbol.iterator to index iterable since it might be AsyncIterable\n    : [iterable[Symbol.iterator](), Symbol.iterator]\n\n  const queue: any[] = []\n\n  // @ts-expect-error can't use symbol to index peekable\n  return {\n    peek: () => {\n      return iterator.next()\n    },\n    push: (value: any) => {\n      queue.push(value)\n    },\n    next: () => {\n      if (queue.length > 0) {\n        return {\n          done: false,\n          value: queue.shift()\n        }\n      }\n\n      return iterator.next()\n    },\n    [symbol] () {\n      return this\n    }\n  }\n}\n\nexport default peekable\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PQueue_instances, _PQueue_carryoverConcurrencyCount, _PQueue_isIntervalIgnored, _PQueue_intervalCount, _PQueue_intervalCap, _PQueue_interval, _PQueue_intervalEnd, _PQueue_intervalId, _PQueue_timeoutId, _PQueue_queue, _PQueue_queueClass, _PQueue_pending, _PQueue_concurrency, _PQueue_isPaused, _PQueue_throwOnTimeout, _PQueue_doesIntervalAllowAnother_get, _PQueue_doesConcurrentAllowAnother_get, _PQueue_next, _PQueue_onResumeInterval, _PQueue_isIntervalPaused_get, _PQueue_tryToStartAnother, _PQueue_initializeIntervalIfNeeded, _PQueue_onInterval, _PQueue_processQueue, _PQueue_throwOnAbort, _PQueue_onEvent;\nimport EventEmitter from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nThe error thrown by `queue.add()` when a job is aborted before it is run. See `signal`.\n*/\nexport class AbortError extends Error {\n}\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n    // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n    constructor(options) {\n        var _a, _b, _c, _d;\n        super();\n        _PQueue_instances.add(this);\n        _PQueue_carryoverConcurrencyCount.set(this, void 0);\n        _PQueue_isIntervalIgnored.set(this, void 0);\n        _PQueue_intervalCount.set(this, 0);\n        _PQueue_intervalCap.set(this, void 0);\n        _PQueue_interval.set(this, void 0);\n        _PQueue_intervalEnd.set(this, 0);\n        _PQueue_intervalId.set(this, void 0);\n        _PQueue_timeoutId.set(this, void 0);\n        _PQueue_queue.set(this, void 0);\n        _PQueue_queueClass.set(this, void 0);\n        _PQueue_pending.set(this, 0);\n        // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n        _PQueue_concurrency.set(this, void 0);\n        _PQueue_isPaused.set(this, void 0);\n        _PQueue_throwOnTimeout.set(this, void 0);\n        /**\n        Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n    \n        Applies to each future operation.\n        */\n        Object.defineProperty(this, \"timeout\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        options = {\n            carryoverConcurrencyCount: false,\n            intervalCap: Number.POSITIVE_INFINITY,\n            interval: 0,\n            concurrency: Number.POSITIVE_INFINITY,\n            autoStart: true,\n            queueClass: PriorityQueue,\n            ...options,\n        };\n        if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n            throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(_b = (_a = options.intervalCap) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''}\\` (${typeof options.intervalCap})`);\n        }\n        if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n            throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(_d = (_c = options.interval) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : ''}\\` (${typeof options.interval})`);\n        }\n        __classPrivateFieldSet(this, _PQueue_carryoverConcurrencyCount, options.carryoverConcurrencyCount, \"f\");\n        __classPrivateFieldSet(this, _PQueue_isIntervalIgnored, options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0, \"f\");\n        __classPrivateFieldSet(this, _PQueue_intervalCap, options.intervalCap, \"f\");\n        __classPrivateFieldSet(this, _PQueue_interval, options.interval, \"f\");\n        __classPrivateFieldSet(this, _PQueue_queue, new options.queueClass(), \"f\");\n        __classPrivateFieldSet(this, _PQueue_queueClass, options.queueClass, \"f\");\n        this.concurrency = options.concurrency;\n        this.timeout = options.timeout;\n        __classPrivateFieldSet(this, _PQueue_throwOnTimeout, options.throwOnTimeout === true, \"f\");\n        __classPrivateFieldSet(this, _PQueue_isPaused, options.autoStart === false, \"f\");\n    }\n    get concurrency() {\n        return __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n    }\n    set concurrency(newConcurrency) {\n        if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n            throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n        }\n        __classPrivateFieldSet(this, _PQueue_concurrency, newConcurrency, \"f\");\n        __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n    }\n    async add(function_, options = {}) {\n        options = {\n            timeout: this.timeout,\n            throwOnTimeout: __classPrivateFieldGet(this, _PQueue_throwOnTimeout, \"f\"),\n            ...options,\n        };\n        return new Promise((resolve, reject) => {\n            __classPrivateFieldGet(this, _PQueue_queue, \"f\").enqueue(async () => {\n                var _a;\n                var _b, _c;\n                __classPrivateFieldSet(this, _PQueue_pending, (_b = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _b++, _b), \"f\");\n                __classPrivateFieldSet(this, _PQueue_intervalCount, (_c = __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\"), _c++, _c), \"f\");\n                try {\n                    // TODO: Use options.signal?.throwIfAborted() when targeting Node.js 18\n                    if ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n                        // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n                        throw new AbortError('The task was aborted.');\n                    }\n                    let operation = function_({ signal: options.signal });\n                    if (options.timeout) {\n                        operation = pTimeout(Promise.resolve(operation), options.timeout);\n                    }\n                    if (options.signal) {\n                        operation = Promise.race([operation, __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_throwOnAbort).call(this, options.signal)]);\n                    }\n                    const result = await operation;\n                    resolve(result);\n                    this.emit('completed', result);\n                }\n                catch (error) {\n                    if (error instanceof TimeoutError && !options.throwOnTimeout) {\n                        resolve();\n                        return;\n                    }\n                    reject(error);\n                    this.emit('error', error);\n                }\n                finally {\n                    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_next).call(this);\n                }\n            }, options);\n            this.emit('add');\n            __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n        });\n    }\n    async addAll(functions, options) {\n        return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n    }\n    /**\n    Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n    */\n    start() {\n        if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n            return this;\n        }\n        __classPrivateFieldSet(this, _PQueue_isPaused, false, \"f\");\n        __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n        return this;\n    }\n    /**\n    Put queue execution on hold.\n    */\n    pause() {\n        __classPrivateFieldSet(this, _PQueue_isPaused, true, \"f\");\n    }\n    /**\n    Clear the queue.\n    */\n    clear() {\n        __classPrivateFieldSet(this, _PQueue_queue, new (__classPrivateFieldGet(this, _PQueue_queueClass, \"f\"))(), \"f\");\n    }\n    /**\n    Can be called multiple times. Useful if you for example add additional items at a later time.\n\n    @returns A promise that settles when the queue becomes empty.\n    */\n    async onEmpty() {\n        // Instantly resolve if the queue is empty\n        if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n            return;\n        }\n        await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'empty');\n    }\n    /**\n    @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n    If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n    Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n    */\n    async onSizeLessThan(limit) {\n        // Instantly resolve if the queue is empty.\n        if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit) {\n            return;\n        }\n        await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'next', () => __classPrivateFieldGet(this, _PQueue_queue, \"f\").size < limit);\n    }\n    /**\n    The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n    @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n    */\n    async onIdle() {\n        // Instantly resolve if none pending and if nothing else is queued\n        if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n            return;\n        }\n        await __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onEvent).call(this, 'idle');\n    }\n    /**\n    Size of the queue, the number of queued items waiting to run.\n    */\n    get size() {\n        return __classPrivateFieldGet(this, _PQueue_queue, \"f\").size;\n    }\n    /**\n    Size of the queue, filtered by the given options.\n\n    For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n    */\n    sizeBy(options) {\n        // eslint-disable-next-line unicorn/no-array-callback-reference\n        return __classPrivateFieldGet(this, _PQueue_queue, \"f\").filter(options).length;\n    }\n    /**\n    Number of running items (no longer in the queue).\n    */\n    get pending() {\n        return __classPrivateFieldGet(this, _PQueue_pending, \"f\");\n    }\n    /**\n    Whether the queue is currently paused.\n    */\n    get isPaused() {\n        return __classPrivateFieldGet(this, _PQueue_isPaused, \"f\");\n    }\n}\n_PQueue_carryoverConcurrencyCount = new WeakMap(), _PQueue_isIntervalIgnored = new WeakMap(), _PQueue_intervalCount = new WeakMap(), _PQueue_intervalCap = new WeakMap(), _PQueue_interval = new WeakMap(), _PQueue_intervalEnd = new WeakMap(), _PQueue_intervalId = new WeakMap(), _PQueue_timeoutId = new WeakMap(), _PQueue_queue = new WeakMap(), _PQueue_queueClass = new WeakMap(), _PQueue_pending = new WeakMap(), _PQueue_concurrency = new WeakMap(), _PQueue_isPaused = new WeakMap(), _PQueue_throwOnTimeout = new WeakMap(), _PQueue_instances = new WeakSet(), _PQueue_doesIntervalAllowAnother_get = function _PQueue_doesIntervalAllowAnother_get() {\n    return __classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") < __classPrivateFieldGet(this, _PQueue_intervalCap, \"f\");\n}, _PQueue_doesConcurrentAllowAnother_get = function _PQueue_doesConcurrentAllowAnother_get() {\n    return __classPrivateFieldGet(this, _PQueue_pending, \"f\") < __classPrivateFieldGet(this, _PQueue_concurrency, \"f\");\n}, _PQueue_next = function _PQueue_next() {\n    var _a;\n    __classPrivateFieldSet(this, _PQueue_pending, (_a = __classPrivateFieldGet(this, _PQueue_pending, \"f\"), _a--, _a), \"f\");\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this);\n    this.emit('next');\n}, _PQueue_onResumeInterval = function _PQueue_onResumeInterval() {\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n    __classPrivateFieldSet(this, _PQueue_timeoutId, undefined, \"f\");\n}, _PQueue_isIntervalPaused_get = function _PQueue_isIntervalPaused_get() {\n    const now = Date.now();\n    if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\") === undefined) {\n        const delay = __classPrivateFieldGet(this, _PQueue_intervalEnd, \"f\") - now;\n        if (delay < 0) {\n            // Act as the interval was done\n            // We don't need to resume it here because it will be resumed on line 160\n            __classPrivateFieldSet(this, _PQueue_intervalCount, (__classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\")) ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n        }\n        else {\n            // Act as the interval is pending\n            if (__classPrivateFieldGet(this, _PQueue_timeoutId, \"f\") === undefined) {\n                __classPrivateFieldSet(this, _PQueue_timeoutId, setTimeout(() => {\n                    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onResumeInterval).call(this);\n                }, delay), \"f\");\n            }\n            return true;\n        }\n    }\n    return false;\n}, _PQueue_tryToStartAnother = function _PQueue_tryToStartAnother() {\n    if (__classPrivateFieldGet(this, _PQueue_queue, \"f\").size === 0) {\n        // We can clear the interval (\"pause\")\n        // Because we can redo it later (\"resume\")\n        if (__classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n            clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n        }\n        __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n        this.emit('empty');\n        if (__classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0) {\n            this.emit('idle');\n        }\n        return false;\n    }\n    if (!__classPrivateFieldGet(this, _PQueue_isPaused, \"f\")) {\n        const canInitializeInterval = !__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_isIntervalPaused_get);\n        if (__classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesIntervalAllowAnother_get) && __classPrivateFieldGet(this, _PQueue_instances, \"a\", _PQueue_doesConcurrentAllowAnother_get)) {\n            const job = __classPrivateFieldGet(this, _PQueue_queue, \"f\").dequeue();\n            if (!job) {\n                return false;\n            }\n            this.emit('active');\n            job();\n            if (canInitializeInterval) {\n                __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_initializeIntervalIfNeeded).call(this);\n            }\n            return true;\n        }\n    }\n    return false;\n}, _PQueue_initializeIntervalIfNeeded = function _PQueue_initializeIntervalIfNeeded() {\n    if (__classPrivateFieldGet(this, _PQueue_isIntervalIgnored, \"f\") || __classPrivateFieldGet(this, _PQueue_intervalId, \"f\") !== undefined) {\n        return;\n    }\n    __classPrivateFieldSet(this, _PQueue_intervalId, setInterval(() => {\n        __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_onInterval).call(this);\n    }, __classPrivateFieldGet(this, _PQueue_interval, \"f\")), \"f\");\n    __classPrivateFieldSet(this, _PQueue_intervalEnd, Date.now() + __classPrivateFieldGet(this, _PQueue_interval, \"f\"), \"f\");\n}, _PQueue_onInterval = function _PQueue_onInterval() {\n    if (__classPrivateFieldGet(this, _PQueue_intervalCount, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_pending, \"f\") === 0 && __classPrivateFieldGet(this, _PQueue_intervalId, \"f\")) {\n        clearInterval(__classPrivateFieldGet(this, _PQueue_intervalId, \"f\"));\n        __classPrivateFieldSet(this, _PQueue_intervalId, undefined, \"f\");\n    }\n    __classPrivateFieldSet(this, _PQueue_intervalCount, __classPrivateFieldGet(this, _PQueue_carryoverConcurrencyCount, \"f\") ? __classPrivateFieldGet(this, _PQueue_pending, \"f\") : 0, \"f\");\n    __classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_processQueue).call(this);\n}, _PQueue_processQueue = function _PQueue_processQueue() {\n    // eslint-disable-next-line no-empty\n    while (__classPrivateFieldGet(this, _PQueue_instances, \"m\", _PQueue_tryToStartAnother).call(this)) { }\n}, _PQueue_throwOnAbort = async function _PQueue_throwOnAbort(signal) {\n    return new Promise((_resolve, reject) => {\n        signal.addEventListener('abort', () => {\n            // TODO: Reject with signal.throwIfAborted() when targeting Node.js 18\n            // TODO: Use ABORT_ERR code when targeting Node.js 16 (https://nodejs.org/docs/latest-v16.x/api/errors.html#abort_err)\n            reject(new AbortError('The task was aborted.'));\n        }, { once: true });\n    });\n}, _PQueue_onEvent = async function _PQueue_onEvent(event, filter) {\n    return new Promise(resolve => {\n        const listener = () => {\n            if (filter && !filter()) {\n                return;\n            }\n            this.off(event, listener);\n            resolve();\n        };\n        this.on(event, listener);\n    });\n};\n", "export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined ?\n\tnew AbortError(errorMessage) :\n\tnew DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined ?\n\t\tgetDOMException('This operation was aborted.') :\n\t\tsignal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, milliseconds, fallback, options) {\n\tlet timer;\n\n\tconst cancelablePromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tresolve(promise);\n\t\t\treturn;\n\t\t}\n\n\t\toptions = {\n\t\t\tcustomTimers: {setTimeout, clearTimeout},\n\t\t\t...options\n\t\t};\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\ttimer = options.customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (typeof fallback === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\treject(timeoutError);\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t} finally {\n\t\t\t\toptions.customTimers.clearTimeout.call(undefined, timer);\n\t\t\t}\n\t\t})();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PriorityQueue_queue;\nimport lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n    constructor() {\n        _PriorityQueue_queue.set(this, []);\n    }\n    enqueue(run, options) {\n        options = {\n            priority: 0,\n            ...options,\n        };\n        const element = {\n            priority: options.priority,\n            run,\n        };\n        if (this.size && __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\")[this.size - 1].priority >= options.priority) {\n            __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").push(element);\n            return;\n        }\n        const index = lowerBound(__classPrivateFieldGet(this, _PriorityQueue_queue, \"f\"), element, (a, b) => b.priority - a.priority);\n        __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").splice(index, 0, element);\n    }\n    dequeue() {\n        const item = __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").shift();\n        return item === null || item === void 0 ? void 0 : item.run;\n    }\n    filter(options) {\n        return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").filter((element) => element.priority === options.priority).map((element) => element.run);\n    }\n    get size() {\n        return __classPrivateFieldGet(this, _PriorityQueue_queue, \"f\").length;\n    }\n}\n_PriorityQueue_queue = new WeakMap();\n", "// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n    let first = 0;\n    let count = array.length;\n    while (count > 0) {\n        const step = Math.trunc(count / 2);\n        let it = first + step;\n        if (comparator(array[it], value) <= 0) {\n            first = ++it;\n            count -= step + 1;\n        }\n        else {\n            count = step;\n        }\n    }\n    return first;\n}\n", "import parallel from 'it-parallel'\nimport { pipe } from 'it-pipe'\nimport map from 'it-map'\nimport filter from 'it-filter'\nimport type { ExporterOptions, ExportWalk, UnixfsV1DirectoryContent, UnixfsV1Resolver } from '../../../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst directoryContent: UnixfsV1Resolver = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n  async function * yieldDirectoryContent (options: ExporterOptions = {}): UnixfsV1DirectoryContent {\n    const offset = options.offset ?? 0\n    const length = options.length ?? node.Links.length\n    const links = node.Links.slice(offset, length)\n\n    options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:directory', {\n      cid\n    }))\n\n    yield * pipe(\n      links,\n      source => map(source, link => {\n        return async () => {\n          const linkName = link.Name ?? ''\n          const linkPath = `${path}/${linkName}`\n          const result = await resolve(link.Hash, linkName, linkPath, [], depth + 1, blockstore, options)\n          return result.entry\n        }\n      }),\n      source => parallel(source, { ordered: true }),\n      source => filter(source, entry => entry != null)\n    )\n  }\n\n  return yieldDirectoryContent\n}\n\nexport default directoryContent\n", "import peek from 'it-peekable'\n\nfunction isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Filters the passed (async) iterable by using the filter function\n */\nfunction filter <T> (source: Iterable<T>, fn: (val: T) => Promise<boolean>): AsyncGenerator<T, void, undefined>\nfunction filter <T> (source: Iterable<T>, fn: (val: T) => boolean): Generator<T, void, undefined>\nfunction filter <T> (source: Iterable<T> | AsyncIterable<T>, fn: (val: T) => boolean | Promise<boolean>): AsyncGenerator<T, void, undefined>\nfunction filter <T> (source: Iterable<T> | AsyncIterable<T>, fn: (val: T) => boolean | Promise<boolean>): Generator<T, void, undefined> | AsyncGenerator<T, void, undefined> {\n  if (isAsyncIterable(source)) {\n    return (async function * () {\n      for await (const entry of source) {\n        if (await fn(entry)) {\n          yield entry\n        }\n      }\n    })()\n  }\n\n  // if mapping function returns a promise we have to return an async generator\n  const peekable = peek(source)\n  const { value, done } = peekable.next()\n\n  if (done === true) {\n    return (function * () {}())\n  }\n\n  const res = fn(value)\n\n  // @ts-expect-error .then is not present on O\n  if (typeof res.then === 'function') {\n    return (async function * () {\n      if (await res) {\n        yield value\n      }\n\n      for await (const entry of peekable) {\n        if (await fn(entry)) {\n          yield entry\n        }\n      }\n    })()\n  }\n\n  const func = fn as (val: T) => boolean\n\n  return (function * () {\n    if (res === true) {\n      yield value\n    }\n\n    for (const entry of peekable) {\n      if (func(entry)) {\n        yield entry\n      }\n    }\n  })()\n}\n\nexport default filter\n", "import parallel from 'it-parallel'\nimport { pipe } from 'it-pipe'\nimport map from 'it-map'\nimport { decode, PBNode } from '@ipld/dag-pb'\nimport type { ExporterOptions, Resolve, UnixfsV1DirectoryContent, UnixfsV1Resolver, ReadableStorage, ExportWalk } from '../../../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst hamtShardedDirectoryContent: UnixfsV1Resolver = (cid, node, unixfs, path, resolve, depth, blockstore) => {\n  function yieldHamtDirectoryContent (options: ExporterOptions = {}): UnixfsV1DirectoryContent {\n    options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:hamt-sharded-directory', {\n      cid\n    }))\n\n    return listDirectory(node, path, resolve, depth, blockstore, options)\n  }\n\n  return yieldHamtDirectoryContent\n}\n\nasync function * listDirectory (node: PBNode, path: string, resolve: Resolve, depth: number, blockstore: ReadableStorage, options: ExporterOptions): UnixfsV1DirectoryContent {\n  const links = node.Links\n\n  const results = pipe(\n    links,\n    source => map(source, link => {\n      return async () => {\n        const name = link.Name != null ? link.Name.substring(2) : null\n\n        if (name != null && name !== '') {\n          const result = await resolve(link.Hash, name, `${path}/${name}`, [], depth + 1, blockstore, options)\n\n          return { entries: result.entry == null ? [] : [result.entry] }\n        } else {\n          // descend into subshard\n          const block = await blockstore.get(link.Hash, options)\n          node = decode(block)\n\n          options.onProgress?.(new CustomProgressEvent<ExportWalk>('unixfs:exporter:walk:hamt-sharded-directory', {\n            cid: link.Hash\n          }))\n\n          return { entries: listDirectory(node, path, resolve, depth, blockstore, options) }\n        }\n      }\n    }),\n    source => parallel(source, { ordered: true })\n  )\n\n  for await (const { entries } of results) {\n    yield * entries\n  }\n}\n\nexport default hamtShardedDirectoryContent\n", "import errCode from 'err-code'\nimport type { ExporterOptions, Resolver, ExportProgress } from '../index.js'\nimport extractDataFromBlock from '../utils/extract-data-from-block.js'\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst rawContent = (node: Uint8Array): ((options?: ExporterOptions) => AsyncGenerator<Uint8Array, void, undefined>) => {\n  async function * contentGenerator (options: ExporterOptions = {}): AsyncGenerator<Uint8Array, void, undefined> {\n    const {\n      start,\n      end\n    } = validateOffsetAndLength(node.length, options.offset, options.length)\n\n    const buf = extractDataFromBlock(node, 0n, start, end)\n\n    options.onProgress?.(new CustomProgressEvent<ExportProgress>('unixfs:exporter:progress:raw', {\n      bytesRead: BigInt(buf.byteLength),\n      totalBytes: end - start,\n      fileSize: BigInt(node.byteLength)\n    }))\n\n    yield buf\n  }\n\n  return contentGenerator\n}\n\nconst resolve: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  if (toResolve.length > 0) {\n    throw errCode(new Error(`No link named ${path} found in raw node ${cid}`), 'ERR_NOT_FOUND')\n  }\n\n  const block = await blockstore.get(cid, options)\n\n  return {\n    entry: {\n      type: 'raw',\n      name,\n      path,\n      cid,\n      content: rawContent(block),\n      depth,\n      size: BigInt(block.length),\n      node: block\n    }\n  }\n}\n\nexport default resolve\n", "import { CID } from 'multiformats/cid'\nimport errCode from 'err-code'\nimport * as dagCbor from '@ipld/dag-cbor'\nimport type { Resolver } from '../index.js'\n\nconst resolve: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  const block = await blockstore.get(cid, options)\n  const object = dagCbor.decode<any>(block)\n  let subObject = object\n  let subPath = path\n\n  while (toResolve.length > 0) {\n    const prop = toResolve[0]\n\n    if (prop in subObject) {\n      // remove the bit of the path we have resolved\n      toResolve.shift()\n      subPath = `${subPath}/${prop}`\n\n      const subObjectCid = CID.asCID(subObject[prop])\n      if (subObjectCid != null) {\n        return {\n          entry: {\n            type: 'object',\n            name,\n            path,\n            cid,\n            node: block,\n            depth,\n            size: BigInt(block.length),\n            content: async function * () {\n              yield object\n            }\n          },\n          next: {\n            cid: subObjectCid,\n            name: prop,\n            path: subPath,\n            toResolve\n          }\n        }\n      }\n\n      subObject = subObject[prop]\n    } else {\n      // cannot resolve further\n      throw errCode(new Error(`No property named ${prop} found in cbor node ${cid}`), 'ERR_NO_PROP')\n    }\n  }\n\n  return {\n    entry: {\n      type: 'object',\n      name,\n      path,\n      cid,\n      node: block,\n      depth,\n      size: BigInt(block.length),\n      content: async function * () {\n        yield object\n      }\n    }\n  }\n}\n\nexport default resolve\n", "import errCode from 'err-code'\nimport extractDataFromBlock from '../utils/extract-data-from-block.js'\nimport validateOffsetAndLength from '../utils/validate-offset-and-length.js'\nimport * as mh from 'multiformats/hashes/digest'\nimport type { ExporterOptions, Resolver, ExportProgress } from '../index.js'\nimport { CustomProgressEvent } from 'progress-events'\n\nconst rawContent = (node: Uint8Array): ((options?: ExporterOptions) => AsyncGenerator<Uint8Array, void, undefined>) => {\n  async function * contentGenerator (options: ExporterOptions = {}): AsyncGenerator<Uint8Array, void, undefined> {\n    const {\n      start,\n      end\n    } = validateOffsetAndLength(node.length, options.offset, options.length)\n\n    const buf = extractDataFromBlock(node, 0n, start, end)\n\n    options.onProgress?.(new CustomProgressEvent<ExportProgress>('unixfs:exporter:progress:identity', {\n      bytesRead: BigInt(buf.byteLength),\n      totalBytes: end - start,\n      fileSize: BigInt(node.byteLength)\n    }))\n\n    yield buf\n  }\n\n  return contentGenerator\n}\n\nconst resolve: Resolver = async (cid, name, path, toResolve, resolve, depth, blockstore, options) => {\n  if (toResolve.length > 0) {\n    throw errCode(new Error(`No link named ${path} found in raw node ${cid}`), 'ERR_NOT_FOUND')\n  }\n  const buf = mh.decode(cid.multihash.bytes)\n\n  return {\n    entry: {\n      type: 'identity',\n      name,\n      path,\n      cid,\n      content: rawContent(buf.digest),\n      depth,\n      size: BigInt(buf.digest.length),\n      node: buf.digest\n    }\n  }\n}\n\nexport default resolve\n", "function isAsyncIterable <T> (thing: any): thing is AsyncIterable<T> {\n  return thing[Symbol.asyncIterator] != null\n}\n\n/**\n * Returns the last item of an (async) iterable, unless empty, in which case\n * return `undefined`\n */\nfunction last <T> (source: Iterable<T>): T | undefined\nfunction last <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined>\nfunction last <T> (source: Iterable<T> | AsyncIterable<T>): Promise<T | undefined> | T | undefined {\n  if (isAsyncIterable(source)) {\n    return (async () => {\n      let res\n\n      for await (const entry of source) {\n        res = entry\n      }\n\n      return res\n    })()\n  }\n\n  let res\n\n  for (const entry of source) {\n    res = entry\n  }\n\n  return res\n}\n\nexport default last\n", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { Filter, RangeFilter } from '../../../core/types.js';\nimport type { RecordsQueryDescriptor, RecordsQueryFilter, RecordsQueryMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Message } from '../../../core/message.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\nimport { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../../../utils/url.js';\n\nexport enum DateSort {\n  CreatedAscending = 'createdAscending',\n  CreatedDescending = 'createdDescending',\n  PublishedAscending = 'publishedAscending',\n  PublishedDescending = 'publishedDescending'\n}\n\nexport type RecordsQueryOptions = {\n  dateCreated?: string;\n  filter: RecordsQueryFilter;\n  dateSort?: DateSort;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class RecordsQuery extends Message<RecordsQueryMessage> {\n\n  public static async parse(message: RecordsQueryMessage): Promise<RecordsQuery> {\n    await validateAuthorizationIntegrity(message);\n\n    if (message.descriptor.filter.protocol !== undefined) {\n      validateProtocolUrlNormalized(message.descriptor.filter.protocol);\n    }\n    if (message.descriptor.filter.schema !== undefined) {\n      validateSchemaUrlNormalized(message.descriptor.filter.schema);\n    }\n\n    return new RecordsQuery(message);\n  }\n\n  public static async create(options: RecordsQueryOptions): Promise<RecordsQuery> {\n    const descriptor: RecordsQueryDescriptor = {\n      interface   : DwnInterfaceName.Records,\n      method      : DwnMethodName.Query,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      filter      : RecordsQuery.normalizeFilter(options.filter),\n      dateSort    : options.dateSort\n    };\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsQuery(message);\n  }\n\n  public async authorize(tenant: string): Promise<void> {\n    // DWN owner can do any query\n    if (this.author === tenant) {\n      return;\n    }\n\n    // extra checks if a recipient filter is specified\n    const recipientDid = this.message.descriptor.filter.recipient;\n    if (recipientDid !== undefined) {\n      // make sure the recipient is the author\n      if (recipientDid !== this.author) {\n        throw new Error(`${this.author} is not allowed to query records intended for another recipient: ${recipientDid}`);\n      }\n    }\n  }\n\n  public static convertFilter(filter: RecordsQueryFilter): Filter {\n    const filterCopy = { ...filter };\n    const { dateCreated } = filterCopy;\n\n    let rangeFilter: RangeFilter | undefined = undefined;\n    if (dateCreated !== undefined) {\n      if (dateCreated.to !== undefined && dateCreated.from !== undefined) {\n        rangeFilter = {\n          gte : dateCreated.from,\n          lt  : dateCreated.to,\n        };\n      } else if (dateCreated.to !== undefined) {\n        rangeFilter = {\n          lt: dateCreated.to,\n        };\n      } else if (dateCreated.from !== undefined) {\n        rangeFilter = {\n          gte: dateCreated.from,\n        };\n      }\n    }\n\n    if (rangeFilter) {\n      (filterCopy as Filter).dateCreated = rangeFilter;\n    }\n\n    return filterCopy as Filter;\n  }\n\n  public static normalizeFilter(filter: RecordsQueryFilter): RecordsQueryFilter {\n    let protocol;\n    if (filter.protocol === undefined) {\n      protocol = undefined;\n    } else {\n      protocol = normalizeProtocolUrl(filter.protocol);\n    }\n\n    let schema;\n    if (filter.schema === undefined) {\n      schema = undefined;\n    } else {\n      schema = normalizeSchemaUrl(filter.schema);\n    }\n\n    return {\n      ...filter,\n      protocol,\n      schema,\n    };\n  }\n}\n", "import type { SignatureInput } from '../jose/jws/general/types.js';\nimport type { BaseDecodedAuthorizationPayload, BaseMessage, Descriptor, TimestampedMessage } from './types.js';\n\nimport { computeCid } from '../utils/cid.js';\nimport type { GeneralJws } from '../jose/jws/general/types.js';\nimport { GeneralJwsSigner } from '../jose/jws/general/signer.js';\nimport { Jws } from '../utils/jws.js';\nimport { lexicographicalCompare } from '../utils/string.js';\nimport { validateJsonSchema } from '../schema-validator.js';\n\nexport enum DwnInterfaceName {\n  Events = 'Events',\n  Hooks = 'Hooks',\n  Messages = 'Messages',\n  Permissions = 'Permissions',\n  Protocols = 'Protocols',\n  Records = 'Records'\n}\n\nexport enum DwnMethodName {\n  Configure = 'Configure',\n  Get = 'Get',\n  Grant = 'Grant',\n  Query = 'Query',\n  Read = 'Read',\n  Request = 'Request',\n  Write = 'Write',\n  Delete = 'Delete'\n}\n\nexport abstract class Message<M extends BaseMessage> {\n  readonly message: M;\n  readonly authorizationPayload: any;\n\n  // commonly used properties for extra convenience;\n  readonly author: string | undefined;\n\n  constructor(message: M) {\n    this.message = message;\n\n    if (message.authorization !== undefined) {\n      this.authorizationPayload = Jws.decodePlainObjectPayload(message.authorization);\n      this.author = Message.getAuthor(message as BaseMessage);\n    }\n  }\n\n  /**\n   * Called by `JSON.stringify(...)` automatically.\n   */\n  toJSON(): BaseMessage {\n    return this.message;\n  }\n\n  /**\n   * Validates the given message against the corresponding JSON schema.\n   * @throws {Error} if fails validation.\n   */\n  public static validateJsonSchema(rawMessage: any): void {\n    const dwnInterface = rawMessage.descriptor.interface;\n    const dwnMethod = rawMessage.descriptor.method;\n    const schemaLookupKey = dwnInterface + dwnMethod;\n\n    // throws an error if message is invalid\n    validateJsonSchema(schemaLookupKey, rawMessage);\n  };\n\n  /**\n   * Gets the DID of the author of the given message, returned `undefined` if message is not signed.\n   */\n  public static getAuthor(message: BaseMessage): string | undefined {\n    if (message.authorization === undefined) {\n      return undefined;\n    }\n\n    const author = Jws.getSignerDid(message.authorization.signatures[0]);\n    return author;\n  }\n\n  /**\n   * Gets the CID of the given message.\n   */\n  public static async getCid(message: BaseMessage): Promise<string> {\n    // NOTE: we wrap the `computeCid()` here in case that\n    // the message will contain properties that should not be part of the CID computation\n    // and we need to strip them out (like `encodedData` that we historically had for a long time),\n    // but we can remove this method entirely if the code becomes stable and it is apparent that the wrapper is not needed\n    const cid = await computeCid(message);\n    return cid;\n  }\n\n  /**\n   * Compares message CID in lexicographical order according to the spec.\n   * @returns 1 if `a` is larger than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same message)\n   */\n  public static async compareCid(a: BaseMessage, b: BaseMessage): Promise<number> {\n    // the < and > operators compare strings in lexicographical order\n    const cidA = await Message.getCid(a);\n    const cidB = await Message.getCid(b);\n    return lexicographicalCompare(cidA, cidB);\n  }\n\n  /**\n   * Compares the CID of two messages.\n   * @returns `true` if `a` is newer than `b`; `false` otherwise\n   */\n  public static async isCidLarger(a: BaseMessage, b: BaseMessage): Promise<boolean> {\n    const aIsLarger = (await Message.compareCid(a, b) > 0);\n    return aIsLarger;\n  }\n\n  /**\n   * @returns message with the largest CID in the array using lexicographical compare. `undefined` if given array is empty.\n   */\n  public static async getMessageWithLargestCid(messages: BaseMessage[]): Promise<BaseMessage | undefined> {\n    let currentNewestMessage: BaseMessage | undefined = undefined;\n    for (const message of messages) {\n      if (currentNewestMessage === undefined || await Message.isCidLarger(message, currentNewestMessage)) {\n        currentNewestMessage = message;\n      }\n    }\n\n    return currentNewestMessage;\n  }\n\n  /**\n   * Signs over the CID of provided `descriptor`. The output is used as an `authorization` property.\n   * @param signatureInput - the signature material to use (e.g. key and header data)\n   * @returns General JWS signature used as an `authorization` property.\n   */\n  public static async signAsAuthorization(\n    descriptor: Descriptor,\n    signatureInput: SignatureInput\n  ): Promise<GeneralJws> {\n    const descriptorCid = await computeCid(descriptor);\n\n    const authPayload: BaseDecodedAuthorizationPayload = { descriptorCid };\n    const authPayloadStr = JSON.stringify(authPayload);\n    const authPayloadBytes = new TextEncoder().encode(authPayloadStr);\n\n    const signer = await GeneralJwsSigner.create(authPayloadBytes, [signatureInput]);\n\n    return signer.getJws();\n  }\n\n\n  /**\n   * @returns newest message in the array. `undefined` if given array is empty.\n   */\n  public static async getNewestMessage(messages: TimestampedMessage[]): Promise<TimestampedMessage | undefined> {\n    let currentNewestMessage: TimestampedMessage | undefined = undefined;\n    for (const message of messages) {\n      if (currentNewestMessage === undefined || await Message.isNewer(message, currentNewestMessage)) {\n        currentNewestMessage = message;\n      }\n    }\n\n    return currentNewestMessage;\n  }\n\n  /**\n   * Checks if first message is newer than second message.\n   * @returns `true` if `a` is newer than `b`; `false` otherwise\n   */\n  public static async isNewer(a: TimestampedMessage, b: TimestampedMessage): Promise<boolean> {\n    const aIsNewer = (await Message.compareModifiedTime(a, b) > 0);\n    return aIsNewer;\n  }\n\n  /**\n   * Checks if first message is older than second message.\n   * @returns `true` if `a` is older than `b`; `false` otherwise\n   */\n  public static async isOlder(a: TimestampedMessage, b: TimestampedMessage): Promise<boolean> {\n    const aIsNewer = (await Message.compareModifiedTime(a, b) < 0);\n    return aIsNewer;\n  }\n\n  /**\n   * Compares the `dateModified` of the given messages with a fallback to message CID according to the spec.\n   * @returns 1 if `a` is larger/newer than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same age)\n   */\n  public static async compareModifiedTime(a: TimestampedMessage, b: TimestampedMessage): Promise<number> {\n    if (a.descriptor.dateModified > b.descriptor.dateModified) {\n      return 1;\n    } else if (a.descriptor.dateModified < b.descriptor.dateModified) {\n      return -1;\n    }\n\n    // else `dateModified` is the same between a and b\n    // compare the `dataCid` instead, the < and > operators compare strings in lexicographical order\n    return Message.compareCid(a, b);\n  }\n}", "import type { GeneralJws, SignatureInput } from './types.js';\n\nimport { Encoder } from '../../../utils/encoder.js';\nimport { signers } from '../../algorithms/signing/signers.js';\n\nexport class GeneralJwsSigner {\n  private jws: GeneralJws;\n\n  constructor(jws: GeneralJws) {\n    this.jws = jws;\n  }\n\n  static async create(payload: Uint8Array, signatureInputs: SignatureInput[] = []): Promise<GeneralJwsSigner> {\n    const jws: GeneralJws = {\n      payload    : Encoder.bytesToBase64Url(payload),\n      signatures : []\n    };\n\n    const signer = new GeneralJwsSigner(jws);\n\n    for (const signatureInput of signatureInputs) {\n      await signer.addSignature(signatureInput);\n    }\n\n    return signer;\n  }\n\n  async addSignature(signatureInput: SignatureInput): Promise<void> {\n    const { privateJwk, protectedHeader } = signatureInput;\n    const signer = signers[privateJwk.crv];\n\n    if (!signer) {\n      throw new Error(`unsupported crv. crv must be one of ${Object.keys(signers)}`);\n    }\n\n    const protectedHeaderString = JSON.stringify(protectedHeader);\n    const protectedHeaderBase64UrlString = Encoder.stringToBase64Url(protectedHeaderString);\n\n    const signingInputString = `${protectedHeaderBase64UrlString}.${this.jws.payload}`;\n    const signingInputBytes = Encoder.stringToBytes(signingInputString);\n\n    const signatureBytes = await signer.sign(signingInputBytes, privateJwk);\n    const signature = Encoder.bytesToBase64Url(signatureBytes);\n\n    this.jws.signatures.push({ protected: protectedHeaderBase64UrlString, signature });\n  }\n\n  getJws(): GeneralJws {\n    return this.jws;\n  }\n}", "import { base64url } from 'multiformats/bases/base64';\n\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\n\n/**\n * Utility class for encoding/converting data into various formats.\n */\nexport class Encoder {\n\n  public static base64UrlToBytes(base64urlString: string): Uint8Array {\n    const content = base64url.baseDecode(base64urlString);\n    return content;\n  }\n\n  public static base64UrlToObject(base64urlString: string): any {\n    const payloadBytes = base64url.baseDecode(base64urlString);\n    const payloadString = Encoder.bytesToString(payloadBytes);\n    const payloadObject = JSON.parse(payloadString);\n    return payloadObject;\n  }\n\n  public static bytesToBase64Url(bytes: Uint8Array): string {\n    const base64UrlString = base64url.baseEncode(bytes);\n    return base64UrlString;\n  }\n\n  public static bytesToString(content: Uint8Array): string {\n    const bytes = textDecoder.decode(content);\n    return bytes;\n  }\n\n  public static objectToBytes(obj: Record<string, any>): Uint8Array {\n    const objectString = JSON.stringify(obj);\n    const objectBytes = textEncoder.encode(objectString);\n    return objectBytes;\n  }\n\n  public static stringToBase64Url(content: string): string {\n    const bytes = textEncoder.encode(content);\n    const base64UrlString = base64url.baseEncode(bytes);\n    return base64UrlString;\n  }\n\n  public static stringToBytes(content: string): Uint8Array {\n    const bytes = textEncoder.encode(content);\n    return bytes;\n  }\n}\n", "import type { Signer } from '../../../jose/types.js';\n\nimport { ed25519 } from './ed25519.js';\nimport { Secp256k1 } from '../../../utils/secp256k1.js';\n\n// the key should be the appropriate `crv` value\nexport const signers: Record<string, Signer> = {\n  'Ed25519'   : ed25519,\n  'secp256k1' : {\n    sign            : Secp256k1.sign,\n    verify          : Secp256k1.verify,\n    generateKeyPair : Secp256k1.generateKeyPair,\n    publicKeyToJwk  : Secp256k1.publicKeyToJwk\n  },\n};", "import * as Ed25519 from '@noble/ed25519';\nimport type { PrivateJwk, PublicJwk, Signer } from '../../types.js';\n\nimport { Encoder } from '../../../utils/encoder.js';\n\nfunction validateKey(jwk: PrivateJwk | PublicJwk): void {\n  if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519') {\n    throw new Error('invalid jwk. kty MUST be OKP. crv MUST be Ed25519');\n  }\n}\n\nfunction publicKeyToJwk(publicKeyBytes: Uint8Array): PublicJwk {\n  const x = Encoder.bytesToBase64Url(publicKeyBytes);\n\n  const publicJwk: PublicJwk = {\n    alg : 'EdDSA',\n    kty : 'OKP',\n    crv : 'Ed25519',\n    x\n  };\n\n  return publicJwk;\n}\n\nexport const ed25519: Signer = {\n  sign: (content: Uint8Array, privateJwk: PrivateJwk): Promise<Uint8Array> => {\n    validateKey(privateJwk);\n\n    const privateKeyBytes = Encoder.base64UrlToBytes(privateJwk.d);\n\n    return Ed25519.sign(content, privateKeyBytes);\n  },\n\n  verify: (content: Uint8Array, signature: Uint8Array, publicJwk: PublicJwk): Promise<boolean> => {\n    validateKey(publicJwk);\n    const publicKeyBytes = Encoder.base64UrlToBytes(publicJwk.x);\n\n    return Ed25519.verify(signature, content, publicKeyBytes);\n  },\n\n  generateKeyPair: async (): Promise<{publicJwk: PublicJwk, privateJwk: PrivateJwk}> => {\n    const privateKeyBytes = Ed25519.utils.randomPrivateKey();\n    const publicKeyBytes = await Ed25519.getPublicKey(privateKeyBytes);\n\n    const d = Encoder.bytesToBase64Url(privateKeyBytes);\n\n    const publicJwk = publicKeyToJwk(publicKeyBytes);\n    const privateJwk: PrivateJwk = { ...publicJwk, d };\n\n    return { publicJwk, privateJwk };\n  },\n\n  publicKeyToJwk: async (publicKeyBytes: Uint8Array): Promise<PublicJwk> => {\n    return publicKeyToJwk(publicKeyBytes);\n  }\n};", "/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst CU_O = BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989');\nconst CURVE = Object.freeze({\n    a: BigInt(-1),\n    d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n    P: BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949'),\n    l: CU_O,\n    n: CU_O,\n    h: BigInt(8),\n    Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n    Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n});\nexport { CURVE };\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nconst SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\nconst SQRT_D = BigInt('6853475219497561581579357271197624642482790079785650197046958215289687604742');\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\nclass ExtendedPoint {\n    constructor(x, y, z, t) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.t = t;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('ExtendedPoint#fromAffine: expected Point');\n        }\n        if (p.equals(Point.ZERO))\n            return ExtendedPoint.ZERO;\n        return new ExtendedPoint(p.x, p.y, _1n, mod(p.x * p.y));\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return this.toAffineBatch(points).map(this.fromAffine);\n    }\n    equals(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const X1Z2 = mod(X1 * Z2);\n        const X2Z1 = mod(X2 * Z1);\n        const Y1Z2 = mod(Y1 * Z2);\n        const Y2Z1 = mod(Y2 * Z1);\n        return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n    }\n    negate() {\n        return new ExtendedPoint(mod(-this.x), this.y, this.z, mod(-this.t));\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { a } = CURVE;\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(_2n * mod(Z1 * Z1));\n        const D = mod(a * A);\n        const x1y1 = X1 + Y1;\n        const E = mod(mod(x1y1 * x1y1) - A - B);\n        const G = D + B;\n        const F = G - C;\n        const H = D - B;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    add(other) {\n        assertExtPoint(other);\n        const { x: X1, y: Y1, z: Z1, t: T1 } = this;\n        const { x: X2, y: Y2, z: Z2, t: T2 } = other;\n        const A = mod((Y1 - X1) * (Y2 + X2));\n        const B = mod((Y1 + X1) * (Y2 - X2));\n        const F = mod(B - A);\n        if (F === _0n)\n            return this.double();\n        const C = mod(Z1 * _2n * T2);\n        const D = mod(T1 * _2n * Z2);\n        const E = D + C;\n        const G = B + A;\n        const H = D - C;\n        const X3 = mod(E * F);\n        const Y3 = mod(G * H);\n        const T3 = mod(E * H);\n        const Z3 = mod(F * G);\n        return new ExtendedPoint(X3, Y3, Z3, T3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    precomputeWindow(W) {\n        const windows = 1 + 256 / W;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(ExtendedPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = ExtendedPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = ExtendedPoint.ZERO;\n        let f = ExtendedPoint.ZERO;\n        const windows = 1 + 256 / W;\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            if (wbits === 0) {\n                let pr = precomputes[offset];\n                if (window % 2)\n                    pr = pr.negate();\n                f = f.add(pr);\n            }\n            else {\n                let cached = precomputes[offset + Math.abs(wbits) - 1];\n                if (wbits < 0)\n                    cached = cached.negate();\n                p = p.add(cached);\n            }\n        }\n        return ExtendedPoint.normalizeZ([p, f])[0];\n    }\n    multiply(scalar, affinePoint) {\n        return this.wNAF(normalizeScalar(scalar, CURVE.l), affinePoint);\n    }\n    multiplyUnsafe(scalar) {\n        let n = normalizeScalar(scalar, CURVE.l, false);\n        const G = ExtendedPoint.BASE;\n        const P0 = ExtendedPoint.ZERO;\n        if (n === _0n)\n            return P0;\n        if (this.equals(P0) || n === _1n)\n            return this;\n        if (this.equals(G))\n            return this.wNAF(n);\n        let p = P0;\n        let d = this;\n        while (n > _0n) {\n            if (n & _1n)\n                p = p.add(d);\n            d = d.double();\n            n >>= _1n;\n        }\n        return p;\n    }\n    isSmallOrder() {\n        return this.multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n    }\n    isTorsionFree() {\n        return this.multiplyUnsafe(CURVE.l).equals(ExtendedPoint.ZERO);\n    }\n    toAffine(invZ = invert(this.z)) {\n        const { x, y, z } = this;\n        const ax = mod(x * invZ);\n        const ay = mod(y * invZ);\n        const zz = mod(z * invZ);\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n    fromRistrettoBytes() {\n        legacyRist();\n    }\n    toRistrettoBytes() {\n        legacyRist();\n    }\n    fromRistrettoHash() {\n        legacyRist();\n    }\n}\nExtendedPoint.BASE = new ExtendedPoint(CURVE.Gx, CURVE.Gy, _1n, mod(CURVE.Gx * CURVE.Gy));\nExtendedPoint.ZERO = new ExtendedPoint(_0n, _1n, _1n, _0n);\nfunction assertExtPoint(other) {\n    if (!(other instanceof ExtendedPoint))\n        throw new TypeError('ExtendedPoint expected');\n}\nfunction assertRstPoint(other) {\n    if (!(other instanceof RistrettoPoint))\n        throw new TypeError('RistrettoPoint expected');\n}\nfunction legacyRist() {\n    throw new Error('Legacy method: switch to RistrettoPoint');\n}\nclass RistrettoPoint {\n    constructor(ep) {\n        this.ep = ep;\n    }\n    static calcElligatorRistrettoMap(r0) {\n        const { d } = CURVE;\n        const r = mod(SQRT_M1 * r0 * r0);\n        const Ns = mod((r + _1n) * ONE_MINUS_D_SQ);\n        let c = BigInt(-1);\n        const D = mod((c - d * r) * mod(r + d));\n        let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D);\n        let s_ = mod(s * r0);\n        if (!edIsNegative(s_))\n            s_ = mod(-s_);\n        if (!Ns_D_is_sq)\n            s = s_;\n        if (!Ns_D_is_sq)\n            c = r;\n        const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D);\n        const s2 = s * s;\n        const W0 = mod((s + s) * D);\n        const W1 = mod(Nt * SQRT_AD_MINUS_ONE);\n        const W2 = mod(_1n - s2);\n        const W3 = mod(_1n + s2);\n        return new ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n    }\n    static hashToCurve(hex) {\n        hex = ensureBytes(hex, 64);\n        const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n        const R1 = this.calcElligatorRistrettoMap(r1);\n        const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n        const R2 = this.calcElligatorRistrettoMap(r2);\n        return new RistrettoPoint(R1.add(R2));\n    }\n    static fromHex(hex) {\n        hex = ensureBytes(hex, 32);\n        const { a, d } = CURVE;\n        const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n        const s = bytes255ToNumberLE(hex);\n        if (!equalBytes(numberTo32BytesLE(s), hex) || edIsNegative(s))\n            throw new Error(emsg);\n        const s2 = mod(s * s);\n        const u1 = mod(_1n + a * s2);\n        const u2 = mod(_1n - a * s2);\n        const u1_2 = mod(u1 * u1);\n        const u2_2 = mod(u2 * u2);\n        const v = mod(a * d * u1_2 - u2_2);\n        const { isValid, value: I } = invertSqrt(mod(v * u2_2));\n        const Dx = mod(I * u2);\n        const Dy = mod(I * Dx * v);\n        let x = mod((s + s) * Dx);\n        if (edIsNegative(x))\n            x = mod(-x);\n        const y = mod(u1 * Dy);\n        const t = mod(x * y);\n        if (!isValid || edIsNegative(t) || y === _0n)\n            throw new Error(emsg);\n        return new RistrettoPoint(new ExtendedPoint(x, y, _1n, t));\n    }\n    toRawBytes() {\n        let { x, y, z, t } = this.ep;\n        const u1 = mod(mod(z + y) * mod(z - y));\n        const u2 = mod(x * y);\n        const u2sq = mod(u2 * u2);\n        const { value: invsqrt } = invertSqrt(mod(u1 * u2sq));\n        const D1 = mod(invsqrt * u1);\n        const D2 = mod(invsqrt * u2);\n        const zInv = mod(D1 * D2 * t);\n        let D;\n        if (edIsNegative(t * zInv)) {\n            let _x = mod(y * SQRT_M1);\n            let _y = mod(x * SQRT_M1);\n            x = _x;\n            y = _y;\n            D = mod(D1 * INVSQRT_A_MINUS_D);\n        }\n        else {\n            D = D2;\n        }\n        if (edIsNegative(x * zInv))\n            y = mod(-y);\n        let s = mod((z - y) * D);\n        if (edIsNegative(s))\n            s = mod(-s);\n        return numberTo32BytesLE(s);\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toString() {\n        return this.toHex();\n    }\n    equals(other) {\n        assertRstPoint(other);\n        const a = this.ep;\n        const b = other.ep;\n        const one = mod(a.x * b.y) === mod(a.y * b.x);\n        const two = mod(a.y * b.y) === mod(a.x * b.x);\n        return one || two;\n    }\n    add(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.add(other.ep));\n    }\n    subtract(other) {\n        assertRstPoint(other);\n        return new RistrettoPoint(this.ep.subtract(other.ep));\n    }\n    multiply(scalar) {\n        return new RistrettoPoint(this.ep.multiply(scalar));\n    }\n    multiplyUnsafe(scalar) {\n        return new RistrettoPoint(this.ep.multiplyUnsafe(scalar));\n    }\n}\nRistrettoPoint.BASE = new RistrettoPoint(ExtendedPoint.BASE);\nRistrettoPoint.ZERO = new RistrettoPoint(ExtendedPoint.ZERO);\nconst pointPrecomputes = new WeakMap();\nclass Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    static fromHex(hex, strict = true) {\n        const { d, P } = CURVE;\n        hex = ensureBytes(hex, 32);\n        const normed = hex.slice();\n        normed[31] = hex[31] & ~0x80;\n        const y = bytesToNumberLE(normed);\n        if (strict && y >= P)\n            throw new Error('Expected 0 < hex < P');\n        if (!strict && y >= POW_2_256)\n            throw new Error('Expected 0 < hex < 2**256');\n        const y2 = mod(y * y);\n        const u = mod(y2 - _1n);\n        const v = mod(d * y2 + _1n);\n        let { isValid, value: x } = uvRatio(u, v);\n        if (!isValid)\n            throw new Error('Point.fromHex: invalid y coordinate');\n        const isXOdd = (x & _1n) === _1n;\n        const isLastByteOdd = (hex[31] & 0x80) !== 0;\n        if (isLastByteOdd !== isXOdd) {\n            x = mod(-x);\n        }\n        return new Point(x, y);\n    }\n    static async fromPrivateKey(privateKey) {\n        return (await getExtendedPublicKey(privateKey)).point;\n    }\n    toRawBytes() {\n        const bytes = numberTo32BytesLE(this.y);\n        bytes[31] |= this.x & _1n ? 0x80 : 0;\n        return bytes;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n    toX25519() {\n        const { y } = this;\n        const u = mod((_1n + y) * invert(_1n - y));\n        return numberTo32BytesLE(u);\n    }\n    isTorsionFree() {\n        return ExtendedPoint.fromAffine(this).isTorsionFree();\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(mod(-this.x), this.y);\n    }\n    add(other) {\n        return ExtendedPoint.fromAffine(this).add(ExtendedPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return ExtendedPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _1n);\nclass Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex, 64);\n        const r = Point.fromHex(bytes.slice(0, 32), false);\n        const s = bytesToNumberLE(bytes.slice(32, 64));\n        return new Signature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!(r instanceof Point))\n            throw new Error('Expected Point instance');\n        normalizeScalar(s, CURVE.l, false);\n        return this;\n    }\n    toRawBytes() {\n        const u8 = new Uint8Array(64);\n        u8.set(this.r.toRawBytes());\n        u8.set(numberTo32BytesLE(this.s), 32);\n        return u8;\n    }\n    toHex() {\n        return bytesToHex(this.toRawBytes());\n    }\n}\nexport { ExtendedPoint, RistrettoPoint, Point, Signature };\nfunction concatBytes(...arrays) {\n    if (!arrays.every((a) => a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array list');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Uint8Array expected');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex');\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction numberTo32BytesBE(num) {\n    const length = 32;\n    const hex = num.toString(16).padStart(length * 2, '0');\n    return hexToBytes(hex);\n}\nfunction numberTo32BytesLE(num) {\n    return numberTo32BytesBE(num).reverse();\n}\nfunction edIsNegative(num) {\n    return (mod(num) & _1n) === _1n;\n}\nfunction bytesToNumberLE(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    return BigInt('0x' + bytesToHex(Uint8Array.from(uint8a).reverse()));\n}\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nfunction bytes255ToNumberLE(bytes) {\n    return mod(bytesToNumberLE(bytes) & MAX_255B);\n}\nfunction mod(a, b = CURVE.P) {\n    const res = a % b;\n    return res >= _0n ? res : b + res;\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const tmp = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        tmp[i] = mod(acc * tmp[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return tmp;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction pow_2_252_3(x) {\n    const { P } = CURVE;\n    const _5n = BigInt(5);\n    const _10n = BigInt(10);\n    const _20n = BigInt(20);\n    const _40n = BigInt(40);\n    const _80n = BigInt(80);\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P;\n    const b4 = (pow2(b2, _2n) * b2) % P;\n    const b5 = (pow2(b4, _1n) * x) % P;\n    const b10 = (pow2(b5, _5n) * b5) % P;\n    const b20 = (pow2(b10, _10n) * b10) % P;\n    const b40 = (pow2(b20, _20n) * b20) % P;\n    const b80 = (pow2(b40, _40n) * b40) % P;\n    const b160 = (pow2(b80, _80n) * b80) % P;\n    const b240 = (pow2(b160, _80n) * b80) % P;\n    const b250 = (pow2(b240, _10n) * b10) % P;\n    const pow_p_5_8 = (pow2(b250, _2n) * x) % P;\n    return { pow_p_5_8, b2 };\n}\nfunction uvRatio(u, v) {\n    const v3 = mod(v * v * v);\n    const v7 = mod(v3 * v3 * v);\n    const pow = pow_2_252_3(u * v7).pow_p_5_8;\n    let x = mod(u * v3 * pow);\n    const vx2 = mod(v * x * x);\n    const root1 = x;\n    const root2 = mod(x * SQRT_M1);\n    const useRoot1 = vx2 === u;\n    const useRoot2 = vx2 === mod(-u);\n    const noRoot = vx2 === mod(-u * SQRT_M1);\n    if (useRoot1)\n        x = root1;\n    if (useRoot2 || noRoot)\n        x = root2;\n    if (edIsNegative(x))\n        x = mod(-x);\n    return { isValid: useRoot1 || useRoot2, value: x };\n}\nfunction invertSqrt(number) {\n    return uvRatio(_1n, number);\n}\nfunction modlLE(hash) {\n    return mod(bytesToNumberLE(hash), CURVE.l);\n}\nfunction equalBytes(b1, b2) {\n    if (b1.length !== b2.length) {\n        return false;\n    }\n    for (let i = 0; i < b1.length; i++) {\n        if (b1[i] !== b2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction ensureBytes(hex, expectedLength) {\n    const bytes = hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n    if (typeof expectedLength === 'number' && bytes.length !== expectedLength)\n        throw new Error(`Expected ${expectedLength} bytes`);\n    return bytes;\n}\nfunction normalizeScalar(num, max, strict = true) {\n    if (!max)\n        throw new TypeError('Specify max value');\n    if (typeof num === 'number' && Number.isSafeInteger(num))\n        num = BigInt(num);\n    if (typeof num === 'bigint' && num < max) {\n        if (strict) {\n            if (_0n < num)\n                return num;\n        }\n        else {\n            if (_0n <= num)\n                return num;\n        }\n    }\n    throw new TypeError('Expected valid scalar: 0 < scalar < max');\n}\nfunction adjustBytes25519(bytes) {\n    bytes[0] &= 248;\n    bytes[31] &= 127;\n    bytes[31] |= 64;\n    return bytes;\n}\nfunction decodeScalar25519(n) {\n    return bytesToNumberLE(adjustBytes25519(ensureBytes(n, 32)));\n}\nfunction checkPrivateKey(key) {\n    key =\n        typeof key === 'bigint' || typeof key === 'number'\n            ? numberTo32BytesBE(normalizeScalar(key, POW_2_256))\n            : ensureBytes(key);\n    if (key.length !== 32)\n        throw new Error(`Expected 32 bytes`);\n    return key;\n}\nfunction getKeyFromHash(hashed) {\n    const head = adjustBytes25519(hashed.slice(0, 32));\n    const prefix = hashed.slice(32, 64);\n    const scalar = modlLE(head);\n    const point = Point.BASE.multiply(scalar);\n    const pointBytes = point.toRawBytes();\n    return { head, prefix, scalar, point, pointBytes };\n}\nlet _sha512Sync;\nfunction sha512s(...m) {\n    if (typeof _sha512Sync !== 'function')\n        throw new Error('utils.sha512Sync must be set to use sync methods');\n    return _sha512Sync(...m);\n}\nasync function getExtendedPublicKey(key) {\n    return getKeyFromHash(await utils.sha512(checkPrivateKey(key)));\n}\nfunction getExtendedPublicKeySync(key) {\n    return getKeyFromHash(sha512s(checkPrivateKey(key)));\n}\nexport async function getPublicKey(privateKey) {\n    return (await getExtendedPublicKey(privateKey)).pointBytes;\n}\nfunction getPublicKeySync(privateKey) {\n    return getExtendedPublicKeySync(privateKey).pointBytes;\n}\nexport async function sign(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = await getExtendedPublicKey(privateKey);\n    const r = modlLE(await utils.sha512(prefix, message));\n    const R = Point.BASE.multiply(r);\n    const k = modlLE(await utils.sha512(R.toRawBytes(), pointBytes, message));\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nfunction signSync(message, privateKey) {\n    message = ensureBytes(message);\n    const { prefix, scalar, pointBytes } = getExtendedPublicKeySync(privateKey);\n    const r = modlLE(sha512s(prefix, message));\n    const R = Point.BASE.multiply(r);\n    const k = modlLE(sha512s(R.toRawBytes(), pointBytes, message));\n    const s = mod(r + k * scalar, CURVE.l);\n    return new Signature(R, s).toRawBytes();\n}\nfunction prepareVerification(sig, message, publicKey) {\n    message = ensureBytes(message);\n    if (!(publicKey instanceof Point))\n        publicKey = Point.fromHex(publicKey, false);\n    const { r, s } = sig instanceof Signature ? sig.assertValidity() : Signature.fromHex(sig);\n    const SB = ExtendedPoint.BASE.multiplyUnsafe(s);\n    return { r, s, SB, pub: publicKey, msg: message };\n}\nfunction finishVerification(publicKey, r, SB, hashed) {\n    const k = modlLE(hashed);\n    const kA = ExtendedPoint.fromAffine(publicKey).multiplyUnsafe(k);\n    const RkA = ExtendedPoint.fromAffine(r).add(kA);\n    return RkA.subtract(SB).multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n}\nexport async function verify(sig, message, publicKey) {\n    const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n    const hashed = await utils.sha512(r.toRawBytes(), pub.toRawBytes(), msg);\n    return finishVerification(pub, r, SB, hashed);\n}\nfunction verifySync(sig, message, publicKey) {\n    const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n    const hashed = sha512s(r.toRawBytes(), pub.toRawBytes(), msg);\n    return finishVerification(pub, r, SB, hashed);\n}\nexport const sync = {\n    getExtendedPublicKey: getExtendedPublicKeySync,\n    getPublicKey: getPublicKeySync,\n    sign: signSync,\n    verify: verifySync,\n};\nexport async function getSharedSecret(privateKey, publicKey) {\n    const { head } = await getExtendedPublicKey(privateKey);\n    const u = Point.fromHex(publicKey).toX25519();\n    return curve25519.scalarMult(head, u);\n}\nPoint.BASE._setWindowSize(8);\nfunction cswap(swap, x_2, x_3) {\n    const dummy = mod(swap * (x_2 - x_3));\n    x_2 = mod(x_2 - dummy);\n    x_3 = mod(x_3 + dummy);\n    return [x_2, x_3];\n}\nfunction montgomeryLadder(pointU, scalar) {\n    const { P } = CURVE;\n    const u = normalizeScalar(pointU, P);\n    const k = normalizeScalar(scalar, P);\n    const a24 = BigInt(121665);\n    const x_1 = u;\n    let x_2 = _1n;\n    let z_2 = _0n;\n    let x_3 = u;\n    let z_3 = _1n;\n    let swap = _0n;\n    let sw;\n    for (let t = BigInt(255 - 1); t >= _0n; t--) {\n        const k_t = (k >> t) & _1n;\n        swap ^= k_t;\n        sw = cswap(swap, x_2, x_3);\n        x_2 = sw[0];\n        x_3 = sw[1];\n        sw = cswap(swap, z_2, z_3);\n        z_2 = sw[0];\n        z_3 = sw[1];\n        swap = k_t;\n        const A = x_2 + z_2;\n        const AA = mod(A * A);\n        const B = x_2 - z_2;\n        const BB = mod(B * B);\n        const E = AA - BB;\n        const C = x_3 + z_3;\n        const D = x_3 - z_3;\n        const DA = mod(D * A);\n        const CB = mod(C * B);\n        const dacb = DA + CB;\n        const da_cb = DA - CB;\n        x_3 = mod(dacb * dacb);\n        z_3 = mod(x_1 * mod(da_cb * da_cb));\n        x_2 = mod(AA * BB);\n        z_2 = mod(E * (AA + mod(a24 * E)));\n    }\n    sw = cswap(swap, x_2, x_3);\n    x_2 = sw[0];\n    x_3 = sw[1];\n    sw = cswap(swap, z_2, z_3);\n    z_2 = sw[0];\n    z_3 = sw[1];\n    const { pow_p_5_8, b2 } = pow_2_252_3(z_2);\n    const xp2 = mod(pow2(pow_p_5_8, BigInt(3)) * b2);\n    return mod(x_2 * xp2);\n}\nfunction encodeUCoordinate(u) {\n    return numberTo32BytesLE(mod(u, CURVE.P));\n}\nfunction decodeUCoordinate(uEnc) {\n    const u = ensureBytes(uEnc, 32);\n    u[31] &= 127;\n    return bytesToNumberLE(u);\n}\nexport const curve25519 = {\n    BASE_POINT_U: '0900000000000000000000000000000000000000000000000000000000000000',\n    scalarMult(privateKey, publicKey) {\n        const u = decodeUCoordinate(publicKey);\n        const p = decodeScalar25519(privateKey);\n        const pu = montgomeryLadder(u, p);\n        if (pu === _0n)\n            throw new Error('Invalid private or public key received');\n        return encodeUCoordinate(pu);\n    },\n    scalarMultBase(privateKey) {\n        return curve25519.scalarMult(privateKey, curve25519.BASE_POINT_U);\n    },\n};\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n    bytesToHex,\n    hexToBytes,\n    concatBytes,\n    getExtendedPublicKey,\n    mod,\n    invert,\n    TORSION_SUBGROUP: [\n        '0100000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n        '0000000000000000000000000000000000000000000000000000000000000080',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n        'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n        '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n        '0000000000000000000000000000000000000000000000000000000000000000',\n        'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n    ],\n    hashToPrivateScalar: (hash) => {\n        hash = ensureBytes(hash);\n        if (hash.length < 40 || hash.length > 1024)\n            throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n        return mod(bytesToNumberLE(hash), CURVE.l - _1n) + _1n;\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return new Uint8Array(randomBytes(bytesLength).buffer);\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => {\n        return utils.randomBytes(32);\n    },\n    sha512: async (...messages) => {\n        const message = concatBytes(...messages);\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-512', message.buffer);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            return Uint8Array.from(crypto.node.createHash('sha512').update(message).digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha512 function\");\n        }\n    },\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point.equals(Point.BASE) ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_2n);\n        return cached;\n    },\n    sha512Sync: undefined,\n};\nObject.defineProperties(utils, {\n    sha512Sync: {\n        configurable: false,\n        get() {\n            return _sha512Sync;\n        },\n        set(val) {\n            if (!_sha512Sync)\n                _sha512Sync = val;\n        },\n    },\n});\n", "import type { PrivateJwk, PublicJwk } from '../jose/types.js';\n\nimport * as secp256k1 from '@noble/secp256k1';\nimport secp256k1Derivation from 'secp256k1';\n\nimport { Encoder } from '../utils/encoder.js';\nimport { sha256 } from 'multiformats/hashes/sha2';\nimport { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\n/**\n * Class containing SECP256K1 related utility methods.\n */\nexport class Secp256k1 {\n  /**\n   * Validates the given JWK is a SECP256K1 key.\n   * @throws {Error} if fails validation.\n   */\n  public static validateKey(jwk: PrivateJwk | PublicJwk): void {\n    if (jwk.kty !== 'EC' || jwk.crv !== 'secp256k1') {\n      throw new DwnError(DwnErrorCode.Secp256k1KeyNotValid, 'Invalid SECP256K1 JWK: `kty` MUST be `EC`. `crv` MUST be `secp256k1`');\n    }\n  }\n\n  /**\n   * Converts a public key in bytes into a JWK.\n   */\n  public static async publicKeyToJwk(publicKeyBytes: Uint8Array): Promise<PublicJwk> {\n  // ensure public key is in uncompressed format so we can convert it into both x and y value\n    let uncompressedPublicKeyBytes;\n    if (publicKeyBytes.byteLength === 33) {\n    // this means given key is compressed\n      const publicKeyHex = secp256k1.utils.bytesToHex(publicKeyBytes);\n      const curvePoints = secp256k1.Point.fromHex(publicKeyHex);\n      uncompressedPublicKeyBytes = curvePoints.toRawBytes(false); // isCompressed = false\n    } else {\n      uncompressedPublicKeyBytes = publicKeyBytes;\n    }\n\n    // the first byte is a header that indicates whether the key is uncompressed (0x04 if uncompressed), we can safely ignore\n    // bytes 1 - 32 represent X\n    // bytes 33 - 64 represent Y\n\n    // skip the first byte because it's used as a header to indicate whether the key is uncompressed\n    const x = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(1, 33));\n    const y = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(33, 65));\n\n    const publicJwk: PublicJwk = {\n      alg : 'ES256K',\n      kty : 'EC',\n      crv : 'secp256k1',\n      x,\n      y\n    };\n\n    return publicJwk;\n  }\n\n  /**\n   * Converts a private key in bytes into a JWK.\n   */\n  public static async privateKeyToJwk(privateKeyBytes: Uint8Array): Promise<PrivateJwk> {\n    const publicKeyBytes = await Secp256k1.getPublicKey(privateKeyBytes);\n\n    const jwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);\n    (jwk as PrivateJwk).d = Encoder.bytesToBase64Url(privateKeyBytes);\n\n    return jwk as PrivateJwk;\n  }\n\n  /**\n   * Creates a uncompressed key in raw bytes from the given SECP256K1 JWK.\n   */\n  public static publicJwkToBytes(publicJwk: PublicJwk): Uint8Array {\n    const x = Encoder.base64UrlToBytes(publicJwk.x);\n    const y = Encoder.base64UrlToBytes(publicJwk.y!);\n\n    // leading byte of 0x04 indicates that the public key is uncompressed\n    const publicKey = new Uint8Array([0x04, ...x, ...y]);\n    return publicKey;\n  }\n\n  /**\n   * Creates a private key in raw bytes from the given SECP256K1 JWK.\n   */\n  public static privateJwkToBytes(privateJwk: PrivateJwk): Uint8Array {\n    const privateKey = Encoder.base64UrlToBytes(privateJwk.d);\n    return privateKey;\n  }\n\n  /**\n   * Signs the provided content using the provided JWK.\n   */\n  public static async sign(content: Uint8Array, privateJwk: PrivateJwk): Promise<Uint8Array> {\n    Secp256k1.validateKey(privateJwk);\n\n    // the underlying lib expects us to hash the content ourselves:\n    // https://github.com/paulmillr/noble-secp256k1/blob/97aa518b9c12563544ea87eba471b32ecf179916/index.ts#L1160\n    const hashedContent = await sha256.encode(content);\n    const privateKeyBytes = Secp256k1.privateJwkToBytes(privateJwk);\n\n    return await secp256k1.sign(hashedContent, privateKeyBytes, { der: false });\n  }\n\n  /**\n   * Verifies a signature against the provided payload hash and public key.\n   * @returns a boolean indicating whether the signature is valid.\n   */\n  public static async verify(content: Uint8Array, signature: Uint8Array, publicJwk: PublicJwk): Promise<boolean> {\n    Secp256k1.validateKey(publicJwk);\n\n    const publicKeyBytes = Secp256k1.publicJwkToBytes(publicJwk);\n    const hashedContent = await sha256.encode(content);\n    return secp256k1.verify(signature, hashedContent, publicKeyBytes);\n  }\n\n  /**\n   * Generates a random key pair in JWK format.\n   */\n  public static async generateKeyPair(): Promise<{publicJwk: PublicJwk, privateJwk: PrivateJwk}> {\n    const privateKeyBytes = secp256k1.utils.randomPrivateKey();\n    const publicKeyBytes = secp256k1.getPublicKey(privateKeyBytes);\n\n    const d = Encoder.bytesToBase64Url(privateKeyBytes);\n    const publicJwk: PublicJwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);\n    const privateJwk: PrivateJwk = { ...publicJwk, d };\n\n    return { publicJwk, privateJwk };\n  }\n\n  /**\n   * Generates key pair in raw bytes, where the `publicKey` is uncompressed.\n   */\n  public static async generateKeyPairRaw(): Promise<{publicKey: Uint8Array, privateKey: Uint8Array}> {\n    const privateKey = secp256k1.utils.randomPrivateKey();\n    const publicKey = secp256k1.getPublicKey(privateKey);\n\n    return { publicKey, privateKey };\n  }\n\n  /**\n   * Gets the uncompressed public key of the given private key.\n   */\n  public static async getPublicKey(privateKey: Uint8Array): Promise<Uint8Array> {\n    const compressedPublicKey = false;\n    const publicKey = secp256k1.getPublicKey(privateKey, compressedPublicKey);\n    return publicKey;\n  }\n\n  /**\n   * Derives a hierarchical deterministic public key.\n   * @param key Either a private or an uncompressed public key used to derive the descendant public key.\n   * @returns uncompressed public key\n   */\n  public static async derivePublicKey(key: Uint8Array, relativePath: string[]): Promise<Uint8Array> {\n    Secp256k1.validateKeyDerivationPath(relativePath);\n\n    let currentPublicKey: Uint8Array;\n    if (key.length === 32) {\n      // private key is always 32 bytes\n      currentPublicKey = secp256k1.getPublicKey(key);\n    } else {\n      currentPublicKey = key;\n    }\n\n    for (const segment of relativePath) {\n      const hash = await sha256.encode(Encoder.stringToBytes(segment));\n      currentPublicKey = Secp256k1.deriveChildPublicKey(currentPublicKey, hash);\n    }\n\n    return currentPublicKey;\n  }\n\n  /**\n   * Derives a hierarchical deterministic private key.\n   */\n  public static async derivePrivateKey(privateKey: Uint8Array, relativePath: string[]): Promise<Uint8Array> {\n    Secp256k1.validateKeyDerivationPath(relativePath);\n\n    let currentPrivateKey = privateKey;\n    for (const segment of relativePath) {\n      const hash = await sha256.encode(Encoder.stringToBytes(segment));\n      currentPrivateKey = Secp256k1.deriveChildPrivateKey(currentPrivateKey, hash);\n    }\n\n    return currentPrivateKey;\n  }\n\n  /**\n   * Derives a child public key using the given tweak input.\n   */\n  public static deriveChildPublicKey(uncompressedPublicKey: Uint8Array, tweakInput: Uint8Array): Uint8Array {\n    // underlying library requires Buffer as input\n    const compressedPublicKey = false;\n    const publicKeyBuffer = Buffer.from(uncompressedPublicKey);\n    const tweakBuffer = Buffer.from(tweakInput);\n    const derivedPublicKey = secp256k1Derivation.publicKeyTweakAdd(publicKeyBuffer, tweakBuffer, compressedPublicKey);\n    return derivedPublicKey;\n  }\n\n  /**\n   * Derives a child private key using the given tweak input.\n   */\n  public static deriveChildPrivateKey(privateKey: Uint8Array, tweakInput: Uint8Array): Uint8Array {\n    // NOTE: passing in private key to v5.0.0 of `secp256k1.privateKeyTweakAdd()` has the side effect of modifying the input private key bytes.\n    // `secp256k1.publicKeyTweakAdd()` does not have this side effect.\n    // before there is a fix for it (we can also investigate and submit a PR), cloning the private key to workaround is a MUST\n    // also underlying library requires Buffer as input\n    const privateKeyBuffer = Buffer.from(privateKey);\n    const tweakBuffer = Buffer.from(tweakInput);\n    const derivedPrivateKey = secp256k1Derivation.privateKeyTweakAdd(privateKeyBuffer, tweakBuffer);\n    return derivedPrivateKey;\n  }\n\n  /**\n   * Parses the given key derivation path.\n   * @returns Path segments if successfully validate the derivation path.\n   * @throws {DwnError} with `DwnErrorCode.HdKeyDerivationPathInvalid` if derivation path fails validation.\n   */\n  private static validateKeyDerivationPath(pathSegments: string[]): void {\n    if (pathSegments.includes('')) {\n      throw new DwnError(DwnErrorCode.HdKeyDerivationPathInvalid, `Invalid key derivation path: ${pathSegments}`);\n    }\n  }\n}\n", "/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n    a: _0n,\n    b: BigInt(7),\n    P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n    n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n    h: _1n,\n    Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n    Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n    beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst endo = {\n    beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n    splitScalar(k) {\n        const { n } = CURVE;\n        const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n        const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n        const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n        const b2 = a1;\n        const POW_2_128 = BigInt('0x100000000000000000000000000000000');\n        const c1 = divNearest(b2 * k, n);\n        const c2 = divNearest(-b1 * k, n);\n        let k1 = mod(k - c1 * a1 - c2 * a2, n);\n        let k2 = mod(-c1 * b1 - c2 * b2, n);\n        const k1neg = k1 > POW_2_128;\n        const k2neg = k2 > POW_2_128;\n        if (k1neg)\n            k1 = n - k1;\n        if (k2neg)\n            k2 = n - k2;\n        if (k1 > POW_2_128 || k2 > POW_2_128) {\n            throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n        }\n        return { k1neg, k1, k2neg, k2 };\n    },\n};\nconst fieldLen = 32;\nconst groupLen = 32;\nconst hashLen = 32;\nconst compressedLen = fieldLen + 1;\nconst uncompressedLen = 2 * fieldLen + 1;\nexport { CURVE };\nfunction weierstrass(x) {\n    const { a, b } = CURVE;\n    const x2 = mod(x * x);\n    const x3 = mod(x2 * x);\n    return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n    constructor(message) {\n        super(message);\n    }\n}\nfunction assertJacPoint(other) {\n    if (!(other instanceof JacobianPoint))\n        throw new TypeError('JacobianPoint expected');\n}\nclass JacobianPoint {\n    constructor(x, y, z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n    static fromAffine(p) {\n        if (!(p instanceof Point)) {\n            throw new TypeError('JacobianPoint#fromAffine: expected Point');\n        }\n        if (p.equals(Point.ZERO))\n            return JacobianPoint.ZERO;\n        return new JacobianPoint(p.x, p.y, _1n);\n    }\n    static toAffineBatch(points) {\n        const toInv = invertBatch(points.map((p) => p.z));\n        return points.map((p, i) => p.toAffine(toInv[i]));\n    }\n    static normalizeZ(points) {\n        return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n    }\n    equals(other) {\n        assertJacPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        const Z1Z1 = mod(Z1 * Z1);\n        const Z2Z2 = mod(Z2 * Z2);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        return U1 === U2 && S1 === S2;\n    }\n    negate() {\n        return new JacobianPoint(this.x, mod(-this.y), this.z);\n    }\n    double() {\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const A = mod(X1 * X1);\n        const B = mod(Y1 * Y1);\n        const C = mod(B * B);\n        const x1b = X1 + B;\n        const D = mod(_2n * (mod(x1b * x1b) - A - C));\n        const E = mod(_3n * A);\n        const F = mod(E * E);\n        const X3 = mod(F - _2n * D);\n        const Y3 = mod(E * (D - X3) - _8n * C);\n        const Z3 = mod(_2n * Y1 * Z1);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    add(other) {\n        assertJacPoint(other);\n        const { x: X1, y: Y1, z: Z1 } = this;\n        const { x: X2, y: Y2, z: Z2 } = other;\n        if (X2 === _0n || Y2 === _0n)\n            return this;\n        if (X1 === _0n || Y1 === _0n)\n            return other;\n        const Z1Z1 = mod(Z1 * Z1);\n        const Z2Z2 = mod(Z2 * Z2);\n        const U1 = mod(X1 * Z2Z2);\n        const U2 = mod(X2 * Z1Z1);\n        const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n        const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n        const H = mod(U2 - U1);\n        const r = mod(S2 - S1);\n        if (H === _0n) {\n            if (r === _0n) {\n                return this.double();\n            }\n            else {\n                return JacobianPoint.ZERO;\n            }\n        }\n        const HH = mod(H * H);\n        const HHH = mod(H * HH);\n        const V = mod(U1 * HH);\n        const X3 = mod(r * r - HHH - _2n * V);\n        const Y3 = mod(r * (V - X3) - S1 * HHH);\n        const Z3 = mod(Z1 * Z2 * H);\n        return new JacobianPoint(X3, Y3, Z3);\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiplyUnsafe(scalar) {\n        const P0 = JacobianPoint.ZERO;\n        if (typeof scalar === 'bigint' && scalar === _0n)\n            return P0;\n        let n = normalizeScalar(scalar);\n        if (n === _1n)\n            return this;\n        if (!USE_ENDOMORPHISM) {\n            let p = P0;\n            let d = this;\n            while (n > _0n) {\n                if (n & _1n)\n                    p = p.add(d);\n                d = d.double();\n                n >>= _1n;\n            }\n            return p;\n        }\n        let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n        let k1p = P0;\n        let k2p = P0;\n        let d = this;\n        while (k1 > _0n || k2 > _0n) {\n            if (k1 & _1n)\n                k1p = k1p.add(d);\n            if (k2 & _1n)\n                k2p = k2p.add(d);\n            d = d.double();\n            k1 >>= _1n;\n            k2 >>= _1n;\n        }\n        if (k1neg)\n            k1p = k1p.negate();\n        if (k2neg)\n            k2p = k2p.negate();\n        k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n        return k1p.add(k2p);\n    }\n    precomputeWindow(W) {\n        const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n        const points = [];\n        let p = this;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            for (let i = 1; i < 2 ** (W - 1); i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    wNAF(n, affinePoint) {\n        if (!affinePoint && this.equals(JacobianPoint.BASE))\n            affinePoint = Point.BASE;\n        const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n        if (256 % W) {\n            throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n        }\n        let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n        if (!precomputes) {\n            precomputes = this.precomputeWindow(W);\n            if (affinePoint && W !== 1) {\n                precomputes = JacobianPoint.normalizeZ(precomputes);\n                pointPrecomputes.set(affinePoint, precomputes);\n            }\n        }\n        let p = JacobianPoint.ZERO;\n        let f = JacobianPoint.BASE;\n        const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n        const windowSize = 2 ** (W - 1);\n        const mask = BigInt(2 ** W - 1);\n        const maxNumber = 2 ** W;\n        const shiftBy = BigInt(W);\n        for (let window = 0; window < windows; window++) {\n            const offset = window * windowSize;\n            let wbits = Number(n & mask);\n            n >>= shiftBy;\n            if (wbits > windowSize) {\n                wbits -= maxNumber;\n                n += _1n;\n            }\n            const offset1 = offset;\n            const offset2 = offset + Math.abs(wbits) - 1;\n            const cond1 = window % 2 !== 0;\n            const cond2 = wbits < 0;\n            if (wbits === 0) {\n                f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n            }\n            else {\n                p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n            }\n        }\n        return { p, f };\n    }\n    multiply(scalar, affinePoint) {\n        let n = normalizeScalar(scalar);\n        let point;\n        let fake;\n        if (USE_ENDOMORPHISM) {\n            const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n            let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n            let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n            k1p = constTimeNegate(k1neg, k1p);\n            k2p = constTimeNegate(k2neg, k2p);\n            k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n            point = k1p.add(k2p);\n            fake = f1p.add(f2p);\n        }\n        else {\n            const { p, f } = this.wNAF(n, affinePoint);\n            point = p;\n            fake = f;\n        }\n        return JacobianPoint.normalizeZ([point, fake])[0];\n    }\n    toAffine(invZ) {\n        const { x, y, z } = this;\n        const is0 = this.equals(JacobianPoint.ZERO);\n        if (invZ == null)\n            invZ = is0 ? _8n : invert(z);\n        const iz1 = invZ;\n        const iz2 = mod(iz1 * iz1);\n        const iz3 = mod(iz2 * iz1);\n        const ax = mod(x * iz2);\n        const ay = mod(y * iz3);\n        const zz = mod(z * iz1);\n        if (is0)\n            return Point.ZERO;\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return new Point(ax, ay);\n    }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nfunction constTimeNegate(condition, item) {\n    const neg = item.negate();\n    return condition ? neg : item;\n}\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    _setWindowSize(windowSize) {\n        this._WINDOW_SIZE = windowSize;\n        pointPrecomputes.delete(this);\n    }\n    hasEvenY() {\n        return this.y % _2n === _0n;\n    }\n    static fromCompressedHex(bytes) {\n        const isShort = bytes.length === 32;\n        const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n        if (!isValidFieldElement(x))\n            throw new Error('Point is not on curve');\n        const y2 = weierstrass(x);\n        let y = sqrtMod(y2);\n        const isYOdd = (y & _1n) === _1n;\n        if (isShort) {\n            if (isYOdd)\n                y = mod(-y);\n        }\n        else {\n            const isFirstByteOdd = (bytes[0] & 1) === 1;\n            if (isFirstByteOdd !== isYOdd)\n                y = mod(-y);\n        }\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromUncompressedHex(bytes) {\n        const x = bytesToNumber(bytes.subarray(1, fieldLen + 1));\n        const y = bytesToNumber(bytes.subarray(fieldLen + 1, fieldLen * 2 + 1));\n        const point = new Point(x, y);\n        point.assertValidity();\n        return point;\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        const len = bytes.length;\n        const header = bytes[0];\n        if (len === fieldLen)\n            return this.fromCompressedHex(bytes);\n        if (len === compressedLen && (header === 0x02 || header === 0x03)) {\n            return this.fromCompressedHex(bytes);\n        }\n        if (len === uncompressedLen && header === 0x04)\n            return this.fromUncompressedHex(bytes);\n        throw new Error(`Point.fromHex: received invalid point. Expected 32-${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes, not ${len}`);\n    }\n    static fromPrivateKey(privateKey) {\n        return Point.BASE.multiply(normalizePrivateKey(privateKey));\n    }\n    static fromSignature(msgHash, signature, recovery) {\n        const { r, s } = normalizeSignature(signature);\n        if (![0, 1, 2, 3].includes(recovery))\n            throw new Error('Cannot recover: invalid recovery bit');\n        const h = truncateHash(ensureBytes(msgHash));\n        const { n } = CURVE;\n        const radj = recovery === 2 || recovery === 3 ? r + n : r;\n        const rinv = invert(radj, n);\n        const u1 = mod(-h * rinv, n);\n        const u2 = mod(s * rinv, n);\n        const prefix = recovery & 1 ? '03' : '02';\n        const R = Point.fromHex(prefix + numTo32bStr(radj));\n        const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n        if (!Q)\n            throw new Error('Cannot recover signature: point at infinify');\n        Q.assertValidity();\n        return Q;\n    }\n    toRawBytes(isCompressed = false) {\n        return hexToBytes(this.toHex(isCompressed));\n    }\n    toHex(isCompressed = false) {\n        const x = numTo32bStr(this.x);\n        if (isCompressed) {\n            const prefix = this.hasEvenY() ? '02' : '03';\n            return `${prefix}${x}`;\n        }\n        else {\n            return `04${x}${numTo32bStr(this.y)}`;\n        }\n    }\n    toHexX() {\n        return this.toHex(true).slice(2);\n    }\n    toRawX() {\n        return this.toRawBytes(true).slice(1);\n    }\n    assertValidity() {\n        const msg = 'Point is not on elliptic curve';\n        const { x, y } = this;\n        if (!isValidFieldElement(x) || !isValidFieldElement(y))\n            throw new Error(msg);\n        const left = mod(y * y);\n        const right = weierstrass(x);\n        if (mod(left - right) !== _0n)\n            throw new Error(msg);\n    }\n    equals(other) {\n        return this.x === other.x && this.y === other.y;\n    }\n    negate() {\n        return new Point(this.x, mod(-this.y));\n    }\n    double() {\n        return JacobianPoint.fromAffine(this).double().toAffine();\n    }\n    add(other) {\n        return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n    }\n    subtract(other) {\n        return this.add(other.negate());\n    }\n    multiply(scalar) {\n        return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n    }\n    multiplyAndAddUnsafe(Q, a, b) {\n        const P = JacobianPoint.fromAffine(this);\n        const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n        const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n        const sum = aP.add(bQ);\n        return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n    }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n    return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n    if (data.length < 2 || data[0] !== 0x02) {\n        throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n    }\n    const len = data[1];\n    const res = data.subarray(2, len + 2);\n    if (!len || res.length !== len) {\n        throw new Error(`Invalid signature integer: wrong length`);\n    }\n    if (res[0] === 0x00 && res[1] <= 0x7f) {\n        throw new Error('Invalid signature integer: trailing length');\n    }\n    return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n    if (data.length < 2 || data[0] != 0x30) {\n        throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n    }\n    if (data[1] !== data.length - 2) {\n        throw new Error('Invalid signature: incorrect length');\n    }\n    const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n    const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n    if (rBytesLeft.length) {\n        throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n    }\n    return { r, s };\n}\nexport class Signature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromCompact(hex) {\n        const arr = hex instanceof Uint8Array;\n        const name = 'Signature.fromCompact';\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`${name}: Expected string or Uint8Array`);\n        const str = arr ? bytesToHex(hex) : hex;\n        if (str.length !== 128)\n            throw new Error(`${name}: Expected 64-byte hex`);\n        return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n    }\n    static fromDER(hex) {\n        const arr = hex instanceof Uint8Array;\n        if (typeof hex !== 'string' && !arr)\n            throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n        const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n        return new Signature(r, s);\n    }\n    static fromHex(hex) {\n        return this.fromDER(hex);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isWithinCurveOrder(r))\n            throw new Error('Invalid Signature: r must be 0 < r < n');\n        if (!isWithinCurveOrder(s))\n            throw new Error('Invalid Signature: s must be 0 < s < n');\n    }\n    hasHighS() {\n        const HALF = CURVE.n >> _1n;\n        return this.s > HALF;\n    }\n    normalizeS() {\n        return this.hasHighS() ? new Signature(this.r, mod(-this.s, CURVE.n)) : this;\n    }\n    toDERRawBytes() {\n        return hexToBytes(this.toDERHex());\n    }\n    toDERHex() {\n        const sHex = sliceDER(numberToHexUnpadded(this.s));\n        const rHex = sliceDER(numberToHexUnpadded(this.r));\n        const sHexL = sHex.length / 2;\n        const rHexL = rHex.length / 2;\n        const sLen = numberToHexUnpadded(sHexL);\n        const rLen = numberToHexUnpadded(rHexL);\n        const length = numberToHexUnpadded(rHexL + sHexL + 4);\n        return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n    }\n    toRawBytes() {\n        return this.toDERRawBytes();\n    }\n    toHex() {\n        return this.toDERHex();\n    }\n    toCompactRawBytes() {\n        return hexToBytes(this.toCompactHex());\n    }\n    toCompactHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n}\nfunction concatBytes(...arrays) {\n    if (!arrays.every((b) => b instanceof Uint8Array))\n        throw new Error('Uint8Array list expected');\n    if (arrays.length === 1)\n        return arrays[0];\n    const length = arrays.reduce((a, arr) => a + arr.length, 0);\n    const result = new Uint8Array(length);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const arr = arrays[i];\n        result.set(arr, pad);\n        pad += arr.length;\n    }\n    return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n    if (!(uint8a instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    let hex = '';\n    for (let i = 0; i < uint8a.length; i++) {\n        hex += hexes[uint8a[i]];\n    }\n    return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n    if (typeof num !== 'bigint')\n        throw new Error('Expected bigint');\n    if (!(_0n <= num && num < POW_2_256))\n        throw new Error('Expected number 0 <= n < 2^256');\n    return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n    const b = hexToBytes(numTo32bStr(num));\n    if (b.length !== 32)\n        throw new Error('Error: expected 32 bytes');\n    return b;\n}\nfunction numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n    }\n    return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n    if (typeof hex !== 'string') {\n        throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n    }\n    if (hex.length % 2)\n        throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n    const array = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\nfunction bytesToNumber(bytes) {\n    return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n    return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n    if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n        return BigInt(num);\n    if (typeof num === 'bigint' && isWithinCurveOrder(num))\n        return num;\n    throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n    const { P } = CURVE;\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= P;\n    }\n    return res;\n}\nfunction sqrtMod(x) {\n    const { P } = CURVE;\n    const _6n = BigInt(6);\n    const _11n = BigInt(11);\n    const _22n = BigInt(22);\n    const _23n = BigInt(23);\n    const _44n = BigInt(44);\n    const _88n = BigInt(88);\n    const b2 = (x * x * x) % P;\n    const b3 = (b2 * b2 * x) % P;\n    const b6 = (pow2(b3, _3n) * b3) % P;\n    const b9 = (pow2(b6, _3n) * b3) % P;\n    const b11 = (pow2(b9, _2n) * b2) % P;\n    const b22 = (pow2(b11, _11n) * b11) % P;\n    const b44 = (pow2(b22, _22n) * b22) % P;\n    const b88 = (pow2(b44, _44n) * b44) % P;\n    const b176 = (pow2(b88, _88n) * b88) % P;\n    const b220 = (pow2(b176, _44n) * b44) % P;\n    const b223 = (pow2(b220, _3n) * b3) % P;\n    const t1 = (pow2(b223, _23n) * b22) % P;\n    const t2 = (pow2(t1, _6n) * b2) % P;\n    const rt = pow2(t2, _2n);\n    const xc = (rt * rt) % P;\n    if (xc !== x)\n        throw new Error('Cannot find square root');\n    return rt;\n}\nfunction invert(number, modulo = CURVE.P) {\n    if (number === _0n || modulo <= _0n) {\n        throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n    }\n    let a = mod(number, modulo);\n    let b = modulo;\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n    const scratch = new Array(nums.length);\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = acc;\n        return mod(acc * num, p);\n    }, _1n);\n    const inverted = invert(lastMultiplied, p);\n    nums.reduceRight((acc, num, i) => {\n        if (num === _0n)\n            return acc;\n        scratch[i] = mod(acc * scratch[i], p);\n        return mod(acc * num, p);\n    }, inverted);\n    return scratch;\n}\nfunction bits2int_2(bytes) {\n    const delta = bytes.length * 8 - groupLen * 8;\n    const num = bytesToNumber(bytes);\n    return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction truncateHash(hash, truncateOnly = false) {\n    const h = bits2int_2(hash);\n    if (truncateOnly)\n        return h;\n    const { n } = CURVE;\n    return h >= n ? h - n : h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n    constructor(hashLen, qByteLen) {\n        this.hashLen = hashLen;\n        this.qByteLen = qByteLen;\n        if (typeof hashLen !== 'number' || hashLen < 2)\n            throw new Error('hashLen must be a number');\n        if (typeof qByteLen !== 'number' || qByteLen < 2)\n            throw new Error('qByteLen must be a number');\n        this.v = new Uint8Array(hashLen).fill(1);\n        this.k = new Uint8Array(hashLen).fill(0);\n        this.counter = 0;\n    }\n    hmac(...values) {\n        return utils.hmacSha256(this.k, ...values);\n    }\n    hmacSync(...values) {\n        return _hmacSha256Sync(this.k, ...values);\n    }\n    checkSync() {\n        if (typeof _hmacSha256Sync !== 'function')\n            throw new ShaError('hmacSha256Sync needs to be set');\n    }\n    incr() {\n        if (this.counter >= 1000)\n            throw new Error('Tried 1,000 k values for sign(), all were invalid');\n        this.counter += 1;\n    }\n    async reseed(seed = new Uint8Array()) {\n        this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n        this.v = await this.hmac(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n        this.v = await this.hmac(this.v);\n    }\n    reseedSync(seed = new Uint8Array()) {\n        this.checkSync();\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n        this.v = this.hmacSync(this.v);\n        if (seed.length === 0)\n            return;\n        this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n        this.v = this.hmacSync(this.v);\n    }\n    async generate() {\n        this.incr();\n        let len = 0;\n        const out = [];\n        while (len < this.qByteLen) {\n            this.v = await this.hmac(this.v);\n            const sl = this.v.slice();\n            out.push(sl);\n            len += this.v.length;\n        }\n        return concatBytes(...out);\n    }\n    generateSync() {\n        this.checkSync();\n        this.incr();\n        let len = 0;\n        const out = [];\n        while (len < this.qByteLen) {\n            this.v = this.hmacSync(this.v);\n            const sl = this.v.slice();\n            out.push(sl);\n            len += this.v.length;\n        }\n        return concatBytes(...out);\n    }\n}\nfunction isWithinCurveOrder(num) {\n    return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n    return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d, lowS = true) {\n    const { n } = CURVE;\n    const k = truncateHash(kBytes, true);\n    if (!isWithinCurveOrder(k))\n        return;\n    const kinv = invert(k, n);\n    const q = Point.BASE.multiply(k);\n    const r = mod(q.x, n);\n    if (r === _0n)\n        return;\n    const s = mod(kinv * mod(m + d * r, n), n);\n    if (s === _0n)\n        return;\n    let sig = new Signature(r, s);\n    let recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n    if (lowS && sig.hasHighS()) {\n        sig = sig.normalizeS();\n        recovery ^= 1;\n    }\n    return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n    let num;\n    if (typeof key === 'bigint') {\n        num = key;\n    }\n    else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n        num = BigInt(key);\n    }\n    else if (typeof key === 'string') {\n        if (key.length !== 2 * groupLen)\n            throw new Error('Expected 32 bytes of private key');\n        num = hexToNumber(key);\n    }\n    else if (key instanceof Uint8Array) {\n        if (key.length !== groupLen)\n            throw new Error('Expected 32 bytes of private key');\n        num = bytesToNumber(key);\n    }\n    else {\n        throw new TypeError('Expected valid private key');\n    }\n    if (!isWithinCurveOrder(num))\n        throw new Error('Expected private key: 0 < key < n');\n    return num;\n}\nfunction normalizePublicKey(publicKey) {\n    if (publicKey instanceof Point) {\n        publicKey.assertValidity();\n        return publicKey;\n    }\n    else {\n        return Point.fromHex(publicKey);\n    }\n}\nfunction normalizeSignature(signature) {\n    if (signature instanceof Signature) {\n        signature.assertValidity();\n        return signature;\n    }\n    try {\n        return Signature.fromDER(signature);\n    }\n    catch (error) {\n        return Signature.fromCompact(signature);\n    }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n    return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n    return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isProbPub(item) {\n    const arr = item instanceof Uint8Array;\n    const str = typeof item === 'string';\n    const len = (arr || str) && item.length;\n    if (arr)\n        return len === compressedLen || len === uncompressedLen;\n    if (str)\n        return len === compressedLen * 2 || len === uncompressedLen * 2;\n    if (item instanceof Point)\n        return true;\n    return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n    if (isProbPub(privateA))\n        throw new TypeError('getSharedSecret: first arg must be private key');\n    if (!isProbPub(publicB))\n        throw new TypeError('getSharedSecret: second arg must be public key');\n    const b = normalizePublicKey(publicB);\n    b.assertValidity();\n    return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n    const slice = bytes.length > fieldLen ? bytes.slice(0, fieldLen) : bytes;\n    return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n    const z1 = bits2int(bytes);\n    const z2 = mod(z1, CURVE.n);\n    return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n    return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n    if (msgHash == null)\n        throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n    const h1 = ensureBytes(msgHash);\n    const d = normalizePrivateKey(privateKey);\n    const seedArgs = [int2octets(d), bits2octets(h1)];\n    if (extraEntropy != null) {\n        if (extraEntropy === true)\n            extraEntropy = utils.randomBytes(fieldLen);\n        const e = ensureBytes(extraEntropy);\n        if (e.length !== fieldLen)\n            throw new Error(`sign: Expected ${fieldLen} bytes of extra data`);\n        seedArgs.push(e);\n    }\n    const seed = concatBytes(...seedArgs);\n    const m = bits2int(h1);\n    return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n    const { sig, recovery } = recSig;\n    const { der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n    const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n    return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    const drbg = new HmacDrbg(hashLen, groupLen);\n    await drbg.reseed(seed);\n    let sig;\n    while (!(sig = kmdToSig(await drbg.generate(), m, d, opts.canonical)))\n        await drbg.reseed();\n    return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n    const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n    const drbg = new HmacDrbg(hashLen, groupLen);\n    drbg.reseedSync(seed);\n    let sig;\n    while (!(sig = kmdToSig(drbg.generateSync(), m, d, opts.canonical)))\n        drbg.reseedSync();\n    return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n    let sig;\n    try {\n        sig = normalizeSignature(signature);\n        msgHash = ensureBytes(msgHash);\n    }\n    catch (error) {\n        return false;\n    }\n    const { r, s } = sig;\n    if (opts.strict && sig.hasHighS())\n        return false;\n    const h = truncateHash(msgHash);\n    let P;\n    try {\n        P = normalizePublicKey(publicKey);\n    }\n    catch (error) {\n        return false;\n    }\n    const { n } = CURVE;\n    const sinv = invert(s, n);\n    const u1 = mod(h * sinv, n);\n    const u2 = mod(r * sinv, n);\n    const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n    if (!R)\n        return false;\n    const v = mod(R.x, n);\n    return v === r;\n}\nfunction schnorrChallengeFinalize(ch) {\n    return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n    constructor(r, s) {\n        this.r = r;\n        this.s = s;\n        this.assertValidity();\n    }\n    static fromHex(hex) {\n        const bytes = ensureBytes(hex);\n        if (bytes.length !== 64)\n            throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n        const r = bytesToNumber(bytes.subarray(0, 32));\n        const s = bytesToNumber(bytes.subarray(32, 64));\n        return new SchnorrSignature(r, s);\n    }\n    assertValidity() {\n        const { r, s } = this;\n        if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n            throw new Error('Invalid signature');\n    }\n    toHex() {\n        return numTo32bStr(this.r) + numTo32bStr(this.s);\n    }\n    toRawBytes() {\n        return hexToBytes(this.toHex());\n    }\n}\nfunction schnorrGetPublicKey(privateKey) {\n    return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n    constructor(message, privateKey, auxRand = utils.randomBytes()) {\n        if (message == null)\n            throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n        this.m = ensureBytes(message);\n        const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n        this.px = x;\n        this.d = scalar;\n        this.rand = ensureBytes(auxRand);\n        if (this.rand.length !== 32)\n            throw new TypeError('sign: Expected 32 bytes of aux randomness');\n    }\n    getScalar(priv) {\n        const point = Point.fromPrivateKey(priv);\n        const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n        return { point, scalar, x: point.toRawX() };\n    }\n    initNonce(d, t0h) {\n        return numTo32b(d ^ bytesToNumber(t0h));\n    }\n    finalizeNonce(k0h) {\n        const k0 = mod(bytesToNumber(k0h), CURVE.n);\n        if (k0 === _0n)\n            throw new Error('sign: Creation of signature failed. k is zero');\n        const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n        return { R, rx, k };\n    }\n    finalizeSig(R, k, e, d) {\n        return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n    }\n    error() {\n        throw new Error('sign: Invalid signature produced');\n    }\n    async calc() {\n        const { m, d, px, rand } = this;\n        const tag = utils.taggedHash;\n        const t = this.initNonce(d, await tag(TAGS.aux, rand));\n        const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n        const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n        const sig = this.finalizeSig(R, k, e, d);\n        if (!(await schnorrVerify(sig, m, px)))\n            this.error();\n        return sig;\n    }\n    calcSync() {\n        const { m, d, px, rand } = this;\n        const tag = utils.taggedHashSync;\n        const t = this.initNonce(d, tag(TAGS.aux, rand));\n        const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n        const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n        const sig = this.finalizeSig(R, k, e, d);\n        if (!schnorrVerifySync(sig, m, px))\n            this.error();\n        return sig;\n    }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n    return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n    return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n    const raw = signature instanceof SchnorrSignature;\n    const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n    if (raw)\n        sig.assertValidity();\n    return {\n        ...sig,\n        m: ensureBytes(message),\n        P: normalizePublicKey(publicKey),\n    };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n    const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n    if (!R || !R.hasEvenY() || R.x !== r)\n        return false;\n    return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n    try {\n        const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n        const e = schnorrChallengeFinalize(await utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n        return finalizeSchnorrVerify(r, P, s, e);\n    }\n    catch (error) {\n        return false;\n    }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n    try {\n        const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n        const e = schnorrChallengeFinalize(utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n        return finalizeSchnorrVerify(r, P, s, e);\n    }\n    catch (error) {\n        if (error instanceof ShaError)\n            throw error;\n        return false;\n    }\n}\nexport const schnorr = {\n    Signature: SchnorrSignature,\n    getPublicKey: schnorrGetPublicKey,\n    sign: schnorrSign,\n    verify: schnorrVerify,\n    signSync: schnorrSignSync,\n    verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n    node: nodeCrypto,\n    web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n    challenge: 'BIP0340/challenge',\n    aux: 'BIP0340/aux',\n    nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexport const utils = {\n    bytesToHex,\n    hexToBytes,\n    concatBytes,\n    mod,\n    invert,\n    isValidPrivateKey(privateKey) {\n        try {\n            normalizePrivateKey(privateKey);\n            return true;\n        }\n        catch (error) {\n            return false;\n        }\n    },\n    _bigintTo32Bytes: numTo32b,\n    _normalizePrivateKey: normalizePrivateKey,\n    hashToPrivateKey: (hash) => {\n        hash = ensureBytes(hash);\n        const minLen = groupLen + 8;\n        if (hash.length < minLen || hash.length > 1024) {\n            throw new Error(`Expected valid bytes of private key as per FIPS 186`);\n        }\n        const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n        return numTo32b(num);\n    },\n    randomBytes: (bytesLength = 32) => {\n        if (crypto.web) {\n            return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n        }\n        else if (crypto.node) {\n            const { randomBytes } = crypto.node;\n            return Uint8Array.from(randomBytes(bytesLength));\n        }\n        else {\n            throw new Error(\"The environment doesn't have randomBytes function\");\n        }\n    },\n    randomPrivateKey: () => utils.hashToPrivateKey(utils.randomBytes(groupLen + 8)),\n    precompute(windowSize = 8, point = Point.BASE) {\n        const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n        cached._setWindowSize(windowSize);\n        cached.multiply(_3n);\n        return cached;\n    },\n    sha256: async (...messages) => {\n        if (crypto.web) {\n            const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHash } = crypto.node;\n            const hash = createHash('sha256');\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have sha256 function\");\n        }\n    },\n    hmacSha256: async (key, ...messages) => {\n        if (crypto.web) {\n            const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n            const message = concatBytes(...messages);\n            const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n            return new Uint8Array(buffer);\n        }\n        else if (crypto.node) {\n            const { createHmac } = crypto.node;\n            const hash = createHmac('sha256', key);\n            messages.forEach((m) => hash.update(m));\n            return Uint8Array.from(hash.digest());\n        }\n        else {\n            throw new Error(\"The environment doesn't have hmac-sha256 function\");\n        }\n    },\n    sha256Sync: undefined,\n    hmacSha256Sync: undefined,\n    taggedHash: async (tag, ...messages) => {\n        let tagP = TAGGED_HASH_PREFIXES[tag];\n        if (tagP === undefined) {\n            const tagH = await utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n            tagP = concatBytes(tagH, tagH);\n            TAGGED_HASH_PREFIXES[tag] = tagP;\n        }\n        return utils.sha256(tagP, ...messages);\n    },\n    taggedHashSync: (tag, ...messages) => {\n        if (typeof _sha256Sync !== 'function')\n            throw new ShaError('sha256Sync is undefined, you need to set it');\n        let tagP = TAGGED_HASH_PREFIXES[tag];\n        if (tagP === undefined) {\n            const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n            tagP = concatBytes(tagH, tagH);\n            TAGGED_HASH_PREFIXES[tag] = tagP;\n        }\n        return _sha256Sync(tagP, ...messages);\n    },\n    _JacobianPoint: JacobianPoint,\n};\nObject.defineProperties(utils, {\n    sha256Sync: {\n        configurable: false,\n        get() {\n            return _sha256Sync;\n        },\n        set(val) {\n            if (!_sha256Sync)\n                _sha256Sync = val;\n        },\n    },\n    hmacSha256Sync: {\n        configurable: false,\n        get() {\n            return _hmacSha256Sync;\n        },\n        set(val) {\n            if (!_hmacSha256Sync)\n                _hmacSha256Sync = val;\n        },\n    },\n});\n", "/**\n * A class that represents a DWN error.\n */\nexport class DwnError extends Error {\n  constructor (public code: string, message: string) {\n    super(`${code}: ${message}`);\n\n    this.name = 'DwnError';\n  }\n}\n\n/**\n * DWN SDK error codes.\n */\nexport enum DwnErrorCode {\n  AuthenticateJwsMissing = 'AuthenticateJwsMissing',\n  AuthorizationMissing = 'AuthorizationMissing',\n  AuthorizationUnknownAuthor = 'AuthorizationUnknownAuthor',\n  HdKeyDerivationPathInvalid = 'HdKeyDerivationPathInvalid',\n  ProtocolAuthorizationIncorrectDataFormat = 'ProtocolAuthorizationIncorrectDataFormat',\n  ProtocolAuthorizationIncorrectProtocolPath = 'ProtocolAuthorizationIncorrectProtocolPath',\n  ProtocolAuthorizationInvalidSchema = 'ProtocolAuthorizationInvalidSchema',\n  ProtocolAuthorizationInvalidType = 'ProtocolAuthorizationInvalidType',\n  ProtocolAuthorizationMissingRuleSet = 'ProtocolAuthorizationMissingRuleSet',\n  RecordsDecryptNoMatchingKeyDerivationScheme = 'RecordsDecryptNoMatchingKeyDerivationScheme',\n  RecordsDeriveLeafPrivateKeyUnSupportedCurve = 'RecordsDeriveLeafPrivateKeyUnSupportedCurve',\n  RecordsDeriveLeafPublicKeyUnSupportedCurve = 'RecordsDeriveLeafPublicKeyUnSupportedCurve',\n  RecordsInvalidAncestorKeyDerivationSegment = 'RecordsInvalidAncestorKeyDerivationSegment',\n  RecordsProtocolsDerivationSchemeMissingProtocol = 'RecordsProtocolsDerivationSchemeMissingProtocol',\n  RecordsSchemasDerivationSchemeMissingSchema = 'RecordsSchemasDerivationSchemeMissingSchema',\n  RecordsWriteGetEntryIdUndefinedAuthor = 'RecordsWriteGetEntryIdUndefinedAuthor',\n  RecordsWriteMissingDataStream = 'RecordsWriteMissingDataStream',\n  RecordsWriteValidateIntegrityEncryptionCidMismatch = 'RecordsWriteValidateIntegrityEncryptionCidMismatch',\n  Secp256k1KeyNotValid = 'Secp256k1KeyNotValid',\n  StorageControllerDataCidMismatch = 'StorageControllerDataCidMismatch',\n  StorageControllerDataSizeMismatch = 'StorageControllerDataSizeMismatch',\n  UrlProtocolNotNormalized = 'UrlProtocolNotNormalized',\n  UrlProtocolNotNormalizable = 'UrlProtocolNotNormalizable',\n  UrlSchemaNotNormalized = 'UrlSchemaNotNormalized',\n  UrlSchemaNotNormalizable = 'UrlSchemaNotNormalizable'\n};\n", "import type { SignatureEntry } from '../jose/jws/general/types.js';\nimport type { GeneralJws, SignatureInput } from '../jose/jws/general/types.js';\nimport type { KeyMaterial, PublicJwk } from '../jose/types.js';\n\nimport isPlainObject from 'lodash/isPlainObject.js';\n\nimport { Encoder } from './encoder.js';\nimport { signers as verifiers } from '../jose/algorithms/signing/signers.js';\n\n\n/**\n * Utility class for JWS related operations.\n */\nexport class Jws {\n  /**\n   * Gets the `kid` from a general JWS signature entry.\n   */\n  public static getKid(signatureEntry: SignatureEntry): string {\n    const { kid } = Encoder.base64UrlToObject(signatureEntry.protected);\n    return kid;\n  }\n\n  /**\n   * Gets the signer DID from a general JWS signature entry.\n   */\n  public static getSignerDid(signatureEntry: SignatureEntry): string {\n    const kid = Jws.getKid(signatureEntry);\n    const did = Jws.extractDid(kid);\n    return did;\n  }\n\n  /**\n   * Verifies the signature against the given payload.\n   * @returns `true` if signature is valid; `false` otherwise\n   */\n  public static async verifySignature(base64UrlPayload: string, signatureEntry: SignatureEntry, jwkPublic: PublicJwk): Promise<boolean> {\n    const verifier = verifiers[jwkPublic.crv];\n\n    if (!verifier) {\n      throw new Error(`unsupported crv. crv must be one of ${Object.keys(verifiers)}`);\n    }\n\n    const payload = Encoder.stringToBytes(`${signatureEntry.protected}.${base64UrlPayload}`);\n    const signatureBytes = Encoder.base64UrlToBytes(signatureEntry.signature);\n\n    return await verifier.verify(payload, signatureBytes, jwkPublic);\n  }\n\n  /**\n   * Decodes the payload of the given JWS object as a plain object.\n   */\n  public static decodePlainObjectPayload(jws: GeneralJws): any {\n    let payloadJson;\n    try {\n      payloadJson = Encoder.base64UrlToObject(jws.payload);\n    } catch {\n      throw new Error('payload is not a JSON object');\n    }\n\n    if (!isPlainObject(payloadJson)) {\n      throw new Error('signed payload must be a plain object');\n    }\n\n    return payloadJson;\n  }\n\n  /**\n   * Extracts the DID from the given `kid` string.\n   */\n  public static extractDid(kid: string): string {\n    const [ did ] = kid.split('#');\n    return did;\n  }\n\n  /**\n   * Creates a SignatureInput[] from the given Personas.\n   */\n  public static createSignatureInputs(keyMaterials: KeyMaterial[]): SignatureInput[] {\n    const signatureInputs = keyMaterials.map((keyMaterial) => Jws.createSignatureInput(keyMaterial));\n    return signatureInputs;\n  }\n\n  /**\n   * Creates a SignatureInput from the given Persona.\n   */\n  public static createSignatureInput(keyMaterial: KeyMaterial): SignatureInput {\n    const signatureInput = {\n      privateJwk      : keyMaterial.keyPair.privateJwk,\n      protectedHeader : {\n        alg : keyMaterial.keyPair.privateJwk.alg as string,\n        kid : keyMaterial.keyId\n      }\n    };\n\n    return signatureInput;\n  }\n}\n", "/**\n * Compares two string given in lexicographical order.\n * @returns 1 if `a` is larger than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same message)\n */\nexport function lexicographicalCompare(a: string, b: string): number {\n  if (a > b) {\n    return 1;\n  } else if (a < b) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n", "import * as precompiledValidators from '../generated/precompiled-validators.js';\n\n/**\n * Validates the given payload using JSON schema keyed by the given schema name. Throws if the given payload fails validation.\n * @param schemaName the schema name use to look up the JSON schema to be used for schema validation.\n *                   The list of schema names can be found in compile-validators.js\n * @param payload javascript object to be validated\n */\nexport function validateJsonSchema(schemaName: string, payload: any): void {\n  // const validateFn = validator.getSchema(schemaName);\n  const validateFn = (precompiledValidators as any)[schemaName];\n\n  if (!validateFn) {\n    throw new Error(`schema for ${schemaName} not found.`);\n  }\n\n  validateFn(payload);\n\n  if (!validateFn.errors) {\n    return;\n  }\n\n  // AJV is configured by default to stop validating after the 1st error is encountered which means\n  // there will only ever be one error;\n  const [ errorObj ] = validateFn.errors;\n  let { instancePath, message } = errorObj;\n\n  if (!instancePath) {\n    instancePath = schemaName;\n  }\n\n  throw new Error(`${instancePath}: ${message}`);\n}", "\"use strict\";export const RecordsDelete = validate10;const schema11 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/records-delete.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateModified\",\"recordId\"],\"properties\":{\"interface\":{\"enum\":[\"Records\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Delete\"],\"type\":\"string\"},\"dateModified\":{\"type\":\"string\"},\"recordId\":{\"type\":\"string\"}}}}};const schema12 = {\"$id\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"payload\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"},\"signatures\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"type\":\"object\",\"properties\":{\"protected\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"},\"signature\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"}}}}}};const schema14 = {\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]+$\"};const pattern0 = new RegExp(\"^[A-Za-z0-9_-]+$\", \"u\");function validate11(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/general-jws.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){const _errs1 = errors;for(const key0 in data){if(!((key0 === \"payload\") || (key0 === \"signatures\"))){validate11.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.payload !== undefined){let data0 = data.payload;const _errs2 = errors;const _errs3 = errors;if(errors === _errs3){if(typeof data0 === \"string\"){if(!pattern0.test(data0)){validate11.errors = [{instancePath:instancePath+\"/payload\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate11.errors = [{instancePath:instancePath+\"/payload\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.signatures !== undefined){let data1 = data.signatures;const _errs5 = errors;if(errors === _errs5){if(Array.isArray(data1)){if(data1.length < 1){validate11.errors = [{instancePath:instancePath+\"/signatures\",schemaPath:\"#/properties/signatures/minItems\",keyword:\"minItems\",params:{limit: 1},message:\"must NOT have fewer than 1 items\"}];return false;}else {var valid2 = true;const len0 = data1.length;for(let i0=0; i0<len0; i0++){let data2 = data1[i0];const _errs7 = errors;if(errors === _errs7){if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){if(data2.protected !== undefined){let data3 = data2.protected;const _errs9 = errors;const _errs10 = errors;if(errors === _errs10){if(typeof data3 === \"string\"){if(!pattern0.test(data3)){validate11.errors = [{instancePath:instancePath+\"/signatures/\" + i0+\"/protected\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate11.errors = [{instancePath:instancePath+\"/signatures/\" + i0+\"/protected\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid3 = _errs9 === errors;}else {var valid3 = true;}if(valid3){if(data2.signature !== undefined){let data4 = data2.signature;const _errs12 = errors;const _errs13 = errors;if(errors === _errs13){if(typeof data4 === \"string\"){if(!pattern0.test(data4)){validate11.errors = [{instancePath:instancePath+\"/signatures/\" + i0+\"/signature\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate11.errors = [{instancePath:instancePath+\"/signatures/\" + i0+\"/signature\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid3 = _errs12 === errors;}else {var valid3 = true;}}}else {validate11.errors = [{instancePath:instancePath+\"/signatures/\" + i0,schemaPath:\"#/properties/signatures/items/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid2 = _errs7 === errors;if(!valid2){break;}}}}else {validate11.errors = [{instancePath:instancePath+\"/signatures\",schemaPath:\"#/properties/signatures/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"}];return false;}}var valid0 = _errs5 === errors;}else {var valid0 = true;}}}}else {validate11.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate11.errors = vErrors;return errors === 0;}function validate10(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/records-delete.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate10.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate10.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if(((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.dateModified === undefined) && (missing1 = \"dateModified\"))) || ((data1.recordId === undefined) && (missing1 = \"recordId\"))){validate10.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!((((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"dateModified\")) || (key1 === \"recordId\"))){validate10.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate10.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Records\")){validate10.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema11.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate10.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Delete\")){validate10.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema11.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.dateModified !== undefined){const _errs10 = errors;if(typeof data1.dateModified !== \"string\"){validate10.errors = [{instancePath:instancePath+\"/descriptor/dateModified\",schemaPath:\"#/properties/descriptor/properties/dateModified/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs10 === errors;}else {var valid1 = true;}if(valid1){if(data1.recordId !== undefined){const _errs12 = errors;if(typeof data1.recordId !== \"string\"){validate10.errors = [{instancePath:instancePath+\"/descriptor/recordId\",schemaPath:\"#/properties/descriptor/properties/recordId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs12 === errors;}else {var valid1 = true;}}}}}}}else {validate10.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate10.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate10.errors = vErrors;return errors === 0;}export const RecordsQuery = validate14;const schema17 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/records-query.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateCreated\",\"filter\"],\"properties\":{\"interface\":{\"enum\":[\"Records\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Query\"],\"type\":\"string\"},\"dateCreated\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"},\"filter\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"protocol\":{\"type\":\"string\"},\"attester\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"},\"recipient\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"},\"contextId\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"},\"recordId\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\"},\"dataFormat\":{\"type\":\"string\"},\"dateCreated\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"from\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"},\"to\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"}}}}},\"dateSort\":{\"enum\":[\"createdAscending\",\"createdDescending\",\"publishedAscending\",\"publishedDescending\"],\"type\":\"string\"}}}}};const schema18 = {\"type\":\"string\",\"pattern\":\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"};const schema19 = {\"type\":\"string\",\"pattern\":\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"};const pattern3 = new RegExp(\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\", \"u\");const pattern4 = new RegExp(\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\", \"u\");const func2 = Object.prototype.hasOwnProperty;function validate14(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/records-query.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate14.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate14.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if(((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.dateCreated === undefined) && (missing1 = \"dateCreated\"))) || ((data1.filter === undefined) && (missing1 = \"filter\"))){validate14.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!(((((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"dateCreated\")) || (key1 === \"filter\")) || (key1 === \"dateSort\"))){validate14.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Records\")){validate14.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema17.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Query\")){validate14.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema17.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.dateCreated !== undefined){let data4 = data1.dateCreated;const _errs10 = errors;const _errs11 = errors;if(errors === _errs11){if(typeof data4 === \"string\"){if(!pattern3.test(data4)){validate14.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs10 === errors;}else {var valid1 = true;}if(valid1){if(data1.filter !== undefined){let data5 = data1.filter;const _errs13 = errors;if(errors === _errs13){if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"}];return false;}else {const _errs15 = errors;for(const key2 in data5){if(!(func2.call(schema17.properties.descriptor.properties.filter.properties, key2))){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs15 === errors){if(data5.protocol !== undefined){const _errs16 = errors;if(typeof data5.protocol !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/protocol\",schemaPath:\"#/properties/descriptor/properties/filter/properties/protocol/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs16 === errors;}else {var valid3 = true;}if(valid3){if(data5.attester !== undefined){let data7 = data5.attester;const _errs18 = errors;const _errs19 = errors;if(errors === _errs19){if(typeof data7 === \"string\"){if(!pattern4.test(data7)){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/attester\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/attester\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid3 = _errs18 === errors;}else {var valid3 = true;}if(valid3){if(data5.recipient !== undefined){let data8 = data5.recipient;const _errs21 = errors;const _errs22 = errors;if(errors === _errs22){if(typeof data8 === \"string\"){if(!pattern4.test(data8)){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/recipient\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/recipient\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid3 = _errs21 === errors;}else {var valid3 = true;}if(valid3){if(data5.contextId !== undefined){const _errs24 = errors;if(typeof data5.contextId !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/contextId\",schemaPath:\"#/properties/descriptor/properties/filter/properties/contextId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs24 === errors;}else {var valid3 = true;}if(valid3){if(data5.schema !== undefined){const _errs26 = errors;if(typeof data5.schema !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/schema\",schemaPath:\"#/properties/descriptor/properties/filter/properties/schema/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs26 === errors;}else {var valid3 = true;}if(valid3){if(data5.recordId !== undefined){const _errs28 = errors;if(typeof data5.recordId !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/recordId\",schemaPath:\"#/properties/descriptor/properties/filter/properties/recordId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs28 === errors;}else {var valid3 = true;}if(valid3){if(data5.parentId !== undefined){const _errs30 = errors;if(typeof data5.parentId !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/parentId\",schemaPath:\"#/properties/descriptor/properties/filter/properties/parentId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs30 === errors;}else {var valid3 = true;}if(valid3){if(data5.dataFormat !== undefined){const _errs32 = errors;if(typeof data5.dataFormat !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dataFormat\",schemaPath:\"#/properties/descriptor/properties/filter/properties/dataFormat/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs32 === errors;}else {var valid3 = true;}if(valid3){if(data5.dateCreated !== undefined){let data14 = data5.dateCreated;const _errs34 = errors;if(errors === _errs34){if(data14 && typeof data14 == \"object\" && !Array.isArray(data14)){if(Object.keys(data14).length < 1){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated\",schemaPath:\"#/properties/descriptor/properties/filter/properties/dateCreated/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"}];return false;}else {const _errs36 = errors;for(const key3 in data14){if(!((key3 === \"from\") || (key3 === \"to\"))){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated\",schemaPath:\"#/properties/descriptor/properties/filter/properties/dateCreated/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key3},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs36 === errors){if(data14.from !== undefined){let data15 = data14.from;const _errs37 = errors;const _errs38 = errors;if(errors === _errs38){if(typeof data15 === \"string\"){if(!pattern3.test(data15)){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated/from\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated/from\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid6 = _errs37 === errors;}else {var valid6 = true;}if(valid6){if(data14.to !== undefined){let data16 = data14.to;const _errs40 = errors;const _errs41 = errors;if(errors === _errs41){if(typeof data16 === \"string\"){if(!pattern3.test(data16)){validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated/to\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated/to\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid6 = _errs40 === errors;}else {var valid6 = true;}}}}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/filter/dateCreated\",schemaPath:\"#/properties/descriptor/properties/filter/properties/dateCreated/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid3 = _errs34 === errors;}else {var valid3 = true;}}}}}}}}}}}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs13 === errors;}else {var valid1 = true;}if(valid1){if(data1.dateSort !== undefined){let data17 = data1.dateSort;const _errs43 = errors;if(typeof data17 !== \"string\"){validate14.errors = [{instancePath:instancePath+\"/descriptor/dateSort\",schemaPath:\"#/properties/descriptor/properties/dateSort/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!((((data17 === \"createdAscending\") || (data17 === \"createdDescending\")) || (data17 === \"publishedAscending\")) || (data17 === \"publishedDescending\"))){validate14.errors = [{instancePath:instancePath+\"/descriptor/dateSort\",schemaPath:\"#/properties/descriptor/properties/dateSort/enum\",keyword:\"enum\",params:{allowedValues: schema17.properties.descriptor.properties.dateSort.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs43 === errors;}else {var valid1 = true;}}}}}}}}else {validate14.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate14.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate14.errors = vErrors;return errors === 0;}export const RecordsWrite = validate16;const schema23 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/records-write.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\",\"recordId\"],\"properties\":{\"recordId\":{\"type\":\"string\"},\"contextId\":{\"type\":\"string\"},\"attestation\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"encryption\":{\"type\":\"object\",\"properties\":{\"algorithm\":{\"type\":\"string\",\"enum\":[\"A256CTR\"]},\"initializationVector\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"},\"keyEncryption\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"type\":\"object\",\"properties\":{\"derivationScheme\":{\"type\":\"string\",\"enum\":[\"dataFormats\",\"protocols\",\"schemas\"]},\"algorithm\":{\"type\":\"string\",\"enum\":[\"ECIES-ES256K\"]},\"encryptedKey\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"},\"initializationVector\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"},\"ephemeralPublicKey\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/public-jwk.json\"},\"messageAuthenticationCode\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url\"}},\"additionalProperties\":false,\"required\":[\"derivationScheme\",\"algorithm\",\"encryptedKey\",\"initializationVector\",\"ephemeralPublicKey\",\"messageAuthenticationCode\"]}}},\"additionalProperties\":false,\"required\":[\"algorithm\",\"initializationVector\",\"keyEncryption\"]},\"descriptor\":{\"type\":\"object\",\"properties\":{\"interface\":{\"enum\":[\"Records\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Write\"],\"type\":\"string\"},\"recipient\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"},\"protocol\":{\"type\":\"string\"},\"protocolPath\":{\"type\":\"string\",\"pattern\":\"^[a-zA-Z]+(/[a-zA-Z]+)*$\"},\"schema\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\"},\"dataCid\":{\"type\":\"string\"},\"dataSize\":{\"type\":\"number\"},\"dateCreated\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"},\"dateModified\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"},\"published\":{\"type\":\"boolean\"},\"datePublished\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"},\"dataFormat\":{\"type\":\"string\"}},\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dataCid\",\"dataSize\",\"dateCreated\",\"dateModified\",\"dataFormat\"],\"allOf\":[{\"$comment\":\"rule defining `published` and `datePublished` relationship\",\"anyOf\":[{\"properties\":{\"published\":{\"type\":\"boolean\",\"enum\":[true]}},\"required\":[\"published\",\"datePublished\"]},{\"properties\":{\"published\":{\"type\":\"boolean\",\"enum\":[false]}},\"not\":{\"required\":[\"datePublished\"]}},{\"allOf\":[{\"not\":{\"required\":[\"published\"]}},{\"not\":{\"required\":[\"datePublished\"]}}]}]}]}},\"$comment\":\"rule defining `protocol` and `contextId` relationship\",\"anyOf\":[{\"properties\":{\"descriptor\":{\"type\":\"object\",\"required\":[\"protocol\",\"protocolPath\",\"schema\"]}},\"required\":[\"contextId\"]},{\"allOf\":[{\"not\":{\"required\":[\"contextId\"]}},{\"properties\":{\"descriptor\":{\"type\":\"object\",\"not\":{\"required\":[\"protocol\"]}}}},{\"properties\":{\"descriptor\":{\"type\":\"object\",\"not\":{\"required\":[\"protocolPath\"]}}}}]}]};const schema27 = {\"$id\":\"https://identity.foundation/dwn/json-schemas/public-jwk.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jwk.json\",\"not\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"kty\":{\"const\":\"EC\"}},\"anyOf\":[{\"required\":[\"d\"]}]},{\"type\":\"object\",\"properties\":{\"kty\":{\"const\":\"OKP\"}},\"anyOf\":[{\"required\":[\"d\"]}]},{\"type\":\"object\",\"properties\":{\"kty\":{\"const\":\"RSA\"},\"d\":{},\"p\":{},\"q\":{},\"dp\":{},\"dq\":{},\"qi\":{},\"oth\":{\"type\":\"object\"}},\"anyOf\":[{\"required\":[\"d\"]},{\"required\":[\"p\"]},{\"required\":[\"q\"]},{\"required\":[\"dp\"]},{\"required\":[\"dq\"]},{\"required\":[\"qi\"]},{\"required\":[\"oth\"]}]}]}};const schema28 = {\"$id\":\"https://identity.foundation/dwn/json-schemas/general-jwk.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"kty\"],\"properties\":{\"alg\":{\"type\":\"string\"},\"kid\":{\"type\":\"string\"},\"kty\":{\"enum\":[\"EC\",\"RSA\",\"oct\",\"OKP\"]},\"crv\":{\"type\":\"string\"},\"use\":{\"type\":\"string\"},\"key_ops\":{\"type\":\"string\"},\"x5u\":{\"type\":\"string\"},\"x5c\":{\"type\":\"string\"},\"x5t\":{\"type\":\"string\"},\"x5t#S256\":{\"type\":\"string\"}},\"oneOf\":[{\"properties\":{\"kty\":{\"const\":\"EC\"},\"crv\":{\"type\":\"string\"},\"x\":{\"type\":\"string\"},\"y\":{\"type\":\"string\"},\"d\":{\"type\":\"string\"}},\"required\":[\"crv\",\"x\"]},{\"properties\":{\"kty\":{\"const\":\"OKP\"},\"crv\":{\"type\":\"string\"},\"x\":{\"type\":\"string\"},\"d\":{\"type\":\"string\"}},\"required\":[\"crv\",\"x\"]},{\"properties\":{\"kty\":{\"const\":\"RSA\"},\"n\":{\"type\":\"string\"},\"e\":{\"type\":\"string\"},\"d\":{\"type\":\"string\"},\"p\":{\"type\":\"string\"},\"q\":{\"type\":\"string\"},\"dp\":{\"type\":\"string\"},\"dq\":{\"type\":\"string\"},\"qi\":{\"type\":\"string\"},\"oth\":{\"type\":\"object\"}},\"required\":[\"n\",\"e\"]},{\"properties\":{\"kty\":{\"const\":\"oct\"},\"k\":{\"type\":\"string\"}},\"required\":[\"k\"]}]};function validate19(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/public-jwk.json\" */;let vErrors = null;let errors = 0;const _errs0 = errors;const _errs2 = errors;let valid1 = false;let passing0 = null;const _errs3 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.crv === undefined) && (missing0 = \"crv\")) || ((data.x === undefined) && (missing0 = \"x\"))){const err0 = {instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/0/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.kty !== undefined){const _errs4 = errors;if(\"EC\" !== data.kty){const err1 = {instancePath:instancePath+\"/kty\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/0/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"EC\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}var valid2 = _errs4 === errors;}else {var valid2 = true;}if(valid2){if(data.crv !== undefined){const _errs5 = errors;if(typeof data.crv !== \"string\"){const err2 = {instancePath:instancePath+\"/crv\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/0/properties/crv/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}var valid2 = _errs5 === errors;}else {var valid2 = true;}if(valid2){if(data.x !== undefined){const _errs7 = errors;if(typeof data.x !== \"string\"){const err3 = {instancePath:instancePath+\"/x\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/0/properties/x/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}var valid2 = _errs7 === errors;}else {var valid2 = true;}if(valid2){if(data.y !== undefined){const _errs9 = errors;if(typeof data.y !== \"string\"){const err4 = {instancePath:instancePath+\"/y\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/0/properties/y/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}var valid2 = _errs9 === errors;}else {var valid2 = true;}if(valid2){if(data.d !== undefined){const _errs11 = errors;if(typeof data.d !== \"string\"){const err5 = {instancePath:instancePath+\"/d\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/0/properties/d/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var valid2 = _errs11 === errors;}else {var valid2 = true;}}}}}}}var _valid0 = _errs3 === errors;if(_valid0){valid1 = true;passing0 = 0;}const _errs13 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing1;if(((data.crv === undefined) && (missing1 = \"crv\")) || ((data.x === undefined) && (missing1 = \"x\"))){const err6 = {instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/1/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}else {if(data.kty !== undefined){const _errs14 = errors;if(\"OKP\" !== data.kty){const err7 = {instancePath:instancePath+\"/kty\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/1/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"OKP\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}var valid3 = _errs14 === errors;}else {var valid3 = true;}if(valid3){if(data.crv !== undefined){const _errs15 = errors;if(typeof data.crv !== \"string\"){const err8 = {instancePath:instancePath+\"/crv\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/1/properties/crv/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}var valid3 = _errs15 === errors;}else {var valid3 = true;}if(valid3){if(data.x !== undefined){const _errs17 = errors;if(typeof data.x !== \"string\"){const err9 = {instancePath:instancePath+\"/x\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/1/properties/x/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid3 = _errs17 === errors;}else {var valid3 = true;}if(valid3){if(data.d !== undefined){const _errs19 = errors;if(typeof data.d !== \"string\"){const err10 = {instancePath:instancePath+\"/d\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/1/properties/d/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs19 === errors;}else {var valid3 = true;}}}}}}var _valid0 = _errs13 === errors;if(_valid0 && valid1){valid1 = false;passing0 = [passing0, 1];}else {if(_valid0){valid1 = true;passing0 = 1;}const _errs21 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing2;if(((data.n === undefined) && (missing2 = \"n\")) || ((data.e === undefined) && (missing2 = \"e\"))){const err11 = {instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/required\",keyword:\"required\",params:{missingProperty: missing2},message:\"must have required property '\"+missing2+\"'\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}else {if(data.kty !== undefined){const _errs22 = errors;if(\"RSA\" !== data.kty){const err12 = {instancePath:instancePath+\"/kty\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"RSA\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}var valid4 = _errs22 === errors;}else {var valid4 = true;}if(valid4){if(data.n !== undefined){const _errs23 = errors;if(typeof data.n !== \"string\"){const err13 = {instancePath:instancePath+\"/n\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/n/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var valid4 = _errs23 === errors;}else {var valid4 = true;}if(valid4){if(data.e !== undefined){const _errs25 = errors;if(typeof data.e !== \"string\"){const err14 = {instancePath:instancePath+\"/e\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/e/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid4 = _errs25 === errors;}else {var valid4 = true;}if(valid4){if(data.d !== undefined){const _errs27 = errors;if(typeof data.d !== \"string\"){const err15 = {instancePath:instancePath+\"/d\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/d/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}var valid4 = _errs27 === errors;}else {var valid4 = true;}if(valid4){if(data.p !== undefined){const _errs29 = errors;if(typeof data.p !== \"string\"){const err16 = {instancePath:instancePath+\"/p\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/p/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid4 = _errs29 === errors;}else {var valid4 = true;}if(valid4){if(data.q !== undefined){const _errs31 = errors;if(typeof data.q !== \"string\"){const err17 = {instancePath:instancePath+\"/q\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/q/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid4 = _errs31 === errors;}else {var valid4 = true;}if(valid4){if(data.dp !== undefined){const _errs33 = errors;if(typeof data.dp !== \"string\"){const err18 = {instancePath:instancePath+\"/dp\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/dp/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var valid4 = _errs33 === errors;}else {var valid4 = true;}if(valid4){if(data.dq !== undefined){const _errs35 = errors;if(typeof data.dq !== \"string\"){const err19 = {instancePath:instancePath+\"/dq\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/dq/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var valid4 = _errs35 === errors;}else {var valid4 = true;}if(valid4){if(data.qi !== undefined){const _errs37 = errors;if(typeof data.qi !== \"string\"){const err20 = {instancePath:instancePath+\"/qi\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/qi/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}var valid4 = _errs37 === errors;}else {var valid4 = true;}if(valid4){if(data.oth !== undefined){let data18 = data.oth;const _errs39 = errors;if(!(data18 && typeof data18 == \"object\" && !Array.isArray(data18))){const err21 = {instancePath:instancePath+\"/oth\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/2/properties/oth/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}var valid4 = _errs39 === errors;}else {var valid4 = true;}}}}}}}}}}}}var _valid0 = _errs21 === errors;if(_valid0 && valid1){valid1 = false;passing0 = [passing0, 2];}else {if(_valid0){valid1 = true;passing0 = 2;}const _errs41 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing3;if((data.k === undefined) && (missing3 = \"k\")){const err22 = {instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/3/required\",keyword:\"required\",params:{missingProperty: missing3},message:\"must have required property '\"+missing3+\"'\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}else {if(data.kty !== undefined){const _errs42 = errors;if(\"oct\" !== data.kty){const err23 = {instancePath:instancePath+\"/kty\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/3/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"oct\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}var valid5 = _errs42 === errors;}else {var valid5 = true;}if(valid5){if(data.k !== undefined){const _errs43 = errors;if(typeof data.k !== \"string\"){const err24 = {instancePath:instancePath+\"/k\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf/3/properties/k/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}var valid5 = _errs43 === errors;}else {var valid5 = true;}}}}var _valid0 = _errs41 === errors;if(_valid0 && valid1){valid1 = false;passing0 = [passing0, 3];}else {if(_valid0){valid1 = true;passing0 = 3;}}}}if(!valid1){const err25 = {instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/oneOf\",keyword:\"oneOf\",params:{passingSchemas: passing0},message:\"must match exactly one schema in oneOf\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;validate19.errors = vErrors;return false;}else {errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}}if(errors === _errs0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing4;if((data.kty === undefined) && (missing4 = \"kty\")){validate19.errors = [{instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/required\",keyword:\"required\",params:{missingProperty: missing4},message:\"must have required property '\"+missing4+\"'\"}];return false;}else {if(data.alg !== undefined){const _errs45 = errors;if(typeof data.alg !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/alg\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/alg/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs45 === errors;}else {var valid6 = true;}if(valid6){if(data.kid !== undefined){const _errs47 = errors;if(typeof data.kid !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/kid\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/kid/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs47 === errors;}else {var valid6 = true;}if(valid6){if(data.kty !== undefined){let data23 = data.kty;const _errs49 = errors;if(!((((data23 === \"EC\") || (data23 === \"RSA\")) || (data23 === \"oct\")) || (data23 === \"OKP\"))){validate19.errors = [{instancePath:instancePath+\"/kty\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/kty/enum\",keyword:\"enum\",params:{allowedValues: schema28.properties.kty.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid6 = _errs49 === errors;}else {var valid6 = true;}if(valid6){if(data.crv !== undefined){const _errs50 = errors;if(typeof data.crv !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/crv\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/crv/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs50 === errors;}else {var valid6 = true;}if(valid6){if(data.use !== undefined){const _errs52 = errors;if(typeof data.use !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/use\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/use/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs52 === errors;}else {var valid6 = true;}if(valid6){if(data.key_ops !== undefined){const _errs54 = errors;if(typeof data.key_ops !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/key_ops\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/key_ops/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs54 === errors;}else {var valid6 = true;}if(valid6){if(data.x5u !== undefined){const _errs56 = errors;if(typeof data.x5u !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/x5u\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/x5u/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs56 === errors;}else {var valid6 = true;}if(valid6){if(data.x5c !== undefined){const _errs58 = errors;if(typeof data.x5c !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/x5c\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/x5c/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs58 === errors;}else {var valid6 = true;}if(valid6){if(data.x5t !== undefined){const _errs60 = errors;if(typeof data.x5t !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/x5t\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/x5t/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs60 === errors;}else {var valid6 = true;}if(valid6){if(data[\"x5t#S256\"] !== undefined){const _errs62 = errors;if(typeof data[\"x5t#S256\"] !== \"string\"){validate19.errors = [{instancePath:instancePath+\"/x5t#S256\",schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/properties/x5t%23S256/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid6 = _errs62 === errors;}else {var valid6 = true;}}}}}}}}}}}}else {validate19.errors = [{instancePath,schemaPath:\"https://identity.foundation/dwn/json-schemas/general-jwk.json/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs0 === errors;if(valid0){const _errs64 = errors;const _errs65 = errors;const _errs66 = errors;let valid8 = false;const _errs67 = errors;const _errs69 = errors;let valid9 = false;const _errs70 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing5;if((data.d === undefined) && (missing5 = \"d\")){const err26 = {};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}var _valid2 = _errs70 === errors;valid9 = valid9 || _valid2;if(!valid9){const err27 = {};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}else {errors = _errs69;if(vErrors !== null){if(_errs69){vErrors.length = _errs69;}else {vErrors = null;}}}if(errors === _errs67){if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.kty !== undefined){if(\"EC\" !== data.kty){const err28 = {};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}}else {const err29 = {};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}var _valid1 = _errs67 === errors;valid8 = valid8 || _valid1;if(!valid8){const _errs72 = errors;const _errs74 = errors;let valid11 = false;const _errs75 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing6;if((data.d === undefined) && (missing6 = \"d\")){const err30 = {};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}var _valid3 = _errs75 === errors;valid11 = valid11 || _valid3;if(!valid11){const err31 = {};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}else {errors = _errs74;if(vErrors !== null){if(_errs74){vErrors.length = _errs74;}else {vErrors = null;}}}if(errors === _errs72){if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.kty !== undefined){if(\"OKP\" !== data.kty){const err32 = {};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}}else {const err33 = {};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}var _valid1 = _errs72 === errors;valid8 = valid8 || _valid1;if(!valid8){const _errs77 = errors;const _errs79 = errors;let valid13 = false;const _errs80 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing7;if((data.d === undefined) && (missing7 = \"d\")){const err34 = {};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}var _valid4 = _errs80 === errors;valid13 = valid13 || _valid4;if(!valid13){const _errs81 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing8;if((data.p === undefined) && (missing8 = \"p\")){const err35 = {};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}var _valid4 = _errs81 === errors;valid13 = valid13 || _valid4;if(!valid13){const _errs82 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing9;if((data.q === undefined) && (missing9 = \"q\")){const err36 = {};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}var _valid4 = _errs82 === errors;valid13 = valid13 || _valid4;if(!valid13){const _errs83 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing10;if((data.dp === undefined) && (missing10 = \"dp\")){const err37 = {};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}var _valid4 = _errs83 === errors;valid13 = valid13 || _valid4;if(!valid13){const _errs84 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing11;if((data.dq === undefined) && (missing11 = \"dq\")){const err38 = {};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}var _valid4 = _errs84 === errors;valid13 = valid13 || _valid4;if(!valid13){const _errs85 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing12;if((data.qi === undefined) && (missing12 = \"qi\")){const err39 = {};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}var _valid4 = _errs85 === errors;valid13 = valid13 || _valid4;if(!valid13){const _errs86 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing13;if((data.oth === undefined) && (missing13 = \"oth\")){const err40 = {};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}var _valid4 = _errs86 === errors;valid13 = valid13 || _valid4;}}}}}}if(!valid13){const err41 = {};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}else {errors = _errs79;if(vErrors !== null){if(_errs79){vErrors.length = _errs79;}else {vErrors = null;}}}if(errors === _errs77){if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.kty !== undefined){const _errs87 = errors;if(\"RSA\" !== data.kty){const err42 = {};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}var valid14 = _errs87 === errors;}else {var valid14 = true;}if(valid14){if(data.oth !== undefined){let data34 = data.oth;const _errs88 = errors;if(!(data34 && typeof data34 == \"object\" && !Array.isArray(data34))){const err43 = {};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}var valid14 = _errs88 === errors;}else {var valid14 = true;}}}else {const err44 = {};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}var _valid1 = _errs77 === errors;valid8 = valid8 || _valid1;}}if(!valid8){const err45 = {};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}else {errors = _errs66;if(vErrors !== null){if(_errs66){vErrors.length = _errs66;}else {vErrors = null;}}}var valid7 = _errs65 === errors;if(valid7){validate19.errors = [{instancePath,schemaPath:\"#/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"}];return false;}else {errors = _errs64;if(vErrors !== null){if(_errs64){vErrors.length = _errs64;}else {vErrors = null;}}}}validate19.errors = vErrors;return errors === 0;}const pattern13 = new RegExp(\"^[a-zA-Z]+(/[a-zA-Z]+)*$\", \"u\");function validate16(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/records-write.json\" */;let vErrors = null;let errors = 0;const _errs2 = errors;let valid0 = false;const _errs3 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if((data.contextId === undefined) && (missing0 = \"contextId\")){const err0 = {instancePath,schemaPath:\"#/anyOf/0/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.descriptor !== undefined){let data0 = data.descriptor;const _errs4 = errors;if(errors === _errs4){if(data0 && typeof data0 == \"object\" && !Array.isArray(data0)){let missing1;if((((data0.protocol === undefined) && (missing1 = \"protocol\")) || ((data0.protocolPath === undefined) && (missing1 = \"protocolPath\"))) || ((data0.schema === undefined) && (missing1 = \"schema\"))){const err1 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/anyOf/0/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}else {const err2 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/anyOf/0/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}}}}var _valid0 = _errs3 === errors;valid0 = valid0 || _valid0;if(!valid0){const _errs6 = errors;const _errs7 = errors;const _errs8 = errors;const _errs9 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing2;if((data.contextId === undefined) && (missing2 = \"contextId\")){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}var valid3 = _errs9 === errors;if(valid3){const err4 = {instancePath,schemaPath:\"#/anyOf/1/allOf/0/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}else {errors = _errs8;if(vErrors !== null){if(_errs8){vErrors.length = _errs8;}else {vErrors = null;}}}var valid2 = _errs7 === errors;if(valid2){const _errs10 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.descriptor !== undefined){let data1 = data.descriptor;if(!(data1 && typeof data1 == \"object\" && !Array.isArray(data1))){const err5 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/anyOf/1/allOf/1/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}const _errs13 = errors;const _errs14 = errors;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing3;if((data1.protocol === undefined) && (missing3 = \"protocol\")){const err6 = {};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}var valid5 = _errs14 === errors;if(valid5){const err7 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/anyOf/1/allOf/1/properties/descriptor/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}else {errors = _errs13;if(vErrors !== null){if(_errs13){vErrors.length = _errs13;}else {vErrors = null;}}}}}var valid2 = _errs10 === errors;if(valid2){const _errs15 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.descriptor !== undefined){let data2 = data.descriptor;if(!(data2 && typeof data2 == \"object\" && !Array.isArray(data2))){const err8 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/anyOf/1/allOf/2/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}const _errs18 = errors;const _errs19 = errors;if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){let missing4;if((data2.protocolPath === undefined) && (missing4 = \"protocolPath\")){const err9 = {};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}var valid7 = _errs19 === errors;if(valid7){const err10 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/anyOf/1/allOf/2/properties/descriptor/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}else {errors = _errs18;if(vErrors !== null){if(_errs18){vErrors.length = _errs18;}else {vErrors = null;}}}}}var valid2 = _errs15 === errors;}}var _valid0 = _errs6 === errors;valid0 = valid0 || _valid0;}if(!valid0){const err11 = {instancePath,schemaPath:\"#/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;validate16.errors = vErrors;return false;}else {errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}}if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing5;if((((data.authorization === undefined) && (missing5 = \"authorization\")) || ((data.descriptor === undefined) && (missing5 = \"descriptor\"))) || ((data.recordId === undefined) && (missing5 = \"recordId\"))){validate16.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing5},message:\"must have required property '\"+missing5+\"'\"}];return false;}else {const _errs20 = errors;for(const key0 in data){if(!((((((key0 === \"recordId\") || (key0 === \"contextId\")) || (key0 === \"attestation\")) || (key0 === \"authorization\")) || (key0 === \"encryption\")) || (key0 === \"descriptor\"))){validate16.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs20 === errors){if(data.recordId !== undefined){const _errs21 = errors;if(typeof data.recordId !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/recordId\",schemaPath:\"#/properties/recordId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid8 = _errs21 === errors;}else {var valid8 = true;}if(valid8){if(data.contextId !== undefined){const _errs23 = errors;if(typeof data.contextId !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/contextId\",schemaPath:\"#/properties/contextId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid8 = _errs23 === errors;}else {var valid8 = true;}if(valid8){if(data.attestation !== undefined){const _errs25 = errors;if(!(validate11(data.attestation, {instancePath:instancePath+\"/attestation\",parentData:data,parentDataProperty:\"attestation\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid8 = _errs25 === errors;}else {var valid8 = true;}if(valid8){if(data.authorization !== undefined){const _errs26 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid8 = _errs26 === errors;}else {var valid8 = true;}if(valid8){if(data.encryption !== undefined){let data7 = data.encryption;const _errs27 = errors;if(errors === _errs27){if(data7 && typeof data7 == \"object\" && !Array.isArray(data7)){let missing6;if((((data7.algorithm === undefined) && (missing6 = \"algorithm\")) || ((data7.initializationVector === undefined) && (missing6 = \"initializationVector\"))) || ((data7.keyEncryption === undefined) && (missing6 = \"keyEncryption\"))){validate16.errors = [{instancePath:instancePath+\"/encryption\",schemaPath:\"#/properties/encryption/required\",keyword:\"required\",params:{missingProperty: missing6},message:\"must have required property '\"+missing6+\"'\"}];return false;}else {const _errs29 = errors;for(const key1 in data7){if(!(((key1 === \"algorithm\") || (key1 === \"initializationVector\")) || (key1 === \"keyEncryption\"))){validate16.errors = [{instancePath:instancePath+\"/encryption\",schemaPath:\"#/properties/encryption/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs29 === errors){if(data7.algorithm !== undefined){let data8 = data7.algorithm;const _errs30 = errors;if(typeof data8 !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/encryption/algorithm\",schemaPath:\"#/properties/encryption/properties/algorithm/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data8 === \"A256CTR\")){validate16.errors = [{instancePath:instancePath+\"/encryption/algorithm\",schemaPath:\"#/properties/encryption/properties/algorithm/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.encryption.properties.algorithm.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid9 = _errs30 === errors;}else {var valid9 = true;}if(valid9){if(data7.initializationVector !== undefined){let data9 = data7.initializationVector;const _errs32 = errors;const _errs33 = errors;if(errors === _errs33){if(typeof data9 === \"string\"){if(!pattern0.test(data9)){validate16.errors = [{instancePath:instancePath+\"/encryption/initializationVector\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/encryption/initializationVector\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid9 = _errs32 === errors;}else {var valid9 = true;}if(valid9){if(data7.keyEncryption !== undefined){let data10 = data7.keyEncryption;const _errs35 = errors;if(errors === _errs35){if(Array.isArray(data10)){if(data10.length < 1){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption\",schemaPath:\"#/properties/encryption/properties/keyEncryption/minItems\",keyword:\"minItems\",params:{limit: 1},message:\"must NOT have fewer than 1 items\"}];return false;}else {var valid11 = true;const len0 = data10.length;for(let i0=0; i0<len0; i0++){let data11 = data10[i0];const _errs37 = errors;if(errors === _errs37){if(data11 && typeof data11 == \"object\" && !Array.isArray(data11)){let missing7;if(((((((data11.derivationScheme === undefined) && (missing7 = \"derivationScheme\")) || ((data11.algorithm === undefined) && (missing7 = \"algorithm\"))) || ((data11.encryptedKey === undefined) && (missing7 = \"encryptedKey\"))) || ((data11.initializationVector === undefined) && (missing7 = \"initializationVector\"))) || ((data11.ephemeralPublicKey === undefined) && (missing7 = \"ephemeralPublicKey\"))) || ((data11.messageAuthenticationCode === undefined) && (missing7 = \"messageAuthenticationCode\"))){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0,schemaPath:\"#/properties/encryption/properties/keyEncryption/items/required\",keyword:\"required\",params:{missingProperty: missing7},message:\"must have required property '\"+missing7+\"'\"}];return false;}else {const _errs39 = errors;for(const key2 in data11){if(!((((((key2 === \"derivationScheme\") || (key2 === \"algorithm\")) || (key2 === \"encryptedKey\")) || (key2 === \"initializationVector\")) || (key2 === \"ephemeralPublicKey\")) || (key2 === \"messageAuthenticationCode\"))){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0,schemaPath:\"#/properties/encryption/properties/keyEncryption/items/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs39 === errors){if(data11.derivationScheme !== undefined){let data12 = data11.derivationScheme;const _errs40 = errors;if(typeof data12 !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/derivationScheme\",schemaPath:\"#/properties/encryption/properties/keyEncryption/items/properties/derivationScheme/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(((data12 === \"dataFormats\") || (data12 === \"protocols\")) || (data12 === \"schemas\"))){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/derivationScheme\",schemaPath:\"#/properties/encryption/properties/keyEncryption/items/properties/derivationScheme/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.encryption.properties.keyEncryption.items.properties.derivationScheme.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid12 = _errs40 === errors;}else {var valid12 = true;}if(valid12){if(data11.algorithm !== undefined){let data13 = data11.algorithm;const _errs42 = errors;if(typeof data13 !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/algorithm\",schemaPath:\"#/properties/encryption/properties/keyEncryption/items/properties/algorithm/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data13 === \"ECIES-ES256K\")){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/algorithm\",schemaPath:\"#/properties/encryption/properties/keyEncryption/items/properties/algorithm/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.encryption.properties.keyEncryption.items.properties.algorithm.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid12 = _errs42 === errors;}else {var valid12 = true;}if(valid12){if(data11.encryptedKey !== undefined){let data14 = data11.encryptedKey;const _errs44 = errors;const _errs45 = errors;if(errors === _errs45){if(typeof data14 === \"string\"){if(!pattern0.test(data14)){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/encryptedKey\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/encryptedKey\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid12 = _errs44 === errors;}else {var valid12 = true;}if(valid12){if(data11.initializationVector !== undefined){let data15 = data11.initializationVector;const _errs47 = errors;const _errs48 = errors;if(errors === _errs48){if(typeof data15 === \"string\"){if(!pattern0.test(data15)){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/initializationVector\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/initializationVector\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid12 = _errs47 === errors;}else {var valid12 = true;}if(valid12){if(data11.ephemeralPublicKey !== undefined){const _errs50 = errors;if(!(validate19(data11.ephemeralPublicKey, {instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/ephemeralPublicKey\",parentData:data11,parentDataProperty:\"ephemeralPublicKey\",rootData}))){vErrors = vErrors === null ? validate19.errors : vErrors.concat(validate19.errors);errors = vErrors.length;}var valid12 = _errs50 === errors;}else {var valid12 = true;}if(valid12){if(data11.messageAuthenticationCode !== undefined){let data17 = data11.messageAuthenticationCode;const _errs51 = errors;const _errs52 = errors;if(errors === _errs52){if(typeof data17 === \"string\"){if(!pattern0.test(data17)){validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/messageAuthenticationCode\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Za-z0-9_-]+$\"},message:\"must match pattern \\\"\"+\"^[A-Za-z0-9_-]+$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0+\"/messageAuthenticationCode\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/base64url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid12 = _errs51 === errors;}else {var valid12 = true;}}}}}}}}}else {validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption/\" + i0,schemaPath:\"#/properties/encryption/properties/keyEncryption/items/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid11 = _errs37 === errors;if(!valid11){break;}}}}else {validate16.errors = [{instancePath:instancePath+\"/encryption/keyEncryption\",schemaPath:\"#/properties/encryption/properties/keyEncryption/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"}];return false;}}var valid9 = _errs35 === errors;}else {var valid9 = true;}}}}}}else {validate16.errors = [{instancePath:instancePath+\"/encryption\",schemaPath:\"#/properties/encryption/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid8 = _errs27 === errors;}else {var valid8 = true;}if(valid8){if(data.descriptor !== undefined){let data18 = data.descriptor;const _errs54 = errors;const _errs58 = errors;let valid17 = false;const _errs59 = errors;if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){let missing8;if(((data18.published === undefined) && (missing8 = \"published\")) || ((data18.datePublished === undefined) && (missing8 = \"datePublished\"))){const err12 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/0/required\",keyword:\"required\",params:{missingProperty: missing8},message:\"must have required property '\"+missing8+\"'\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}else {if(data18.published !== undefined){let data19 = data18.published;if(typeof data19 !== \"boolean\"){const err13 = {instancePath:instancePath+\"/descriptor/published\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/0/properties/published/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!(data19 === true)){const err14 = {instancePath:instancePath+\"/descriptor/published\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/0/properties/published/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.descriptor.allOf[0].anyOf[0].properties.published.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}}var _valid1 = _errs59 === errors;valid17 = valid17 || _valid1;if(!valid17){const _errs62 = errors;const _errs63 = errors;const _errs64 = errors;if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){let missing9;if((data18.datePublished === undefined) && (missing9 = \"datePublished\")){const err15 = {};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}var valid19 = _errs64 === errors;if(valid19){const err16 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/1/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}else {errors = _errs63;if(vErrors !== null){if(_errs63){vErrors.length = _errs63;}else {vErrors = null;}}}if(errors === _errs62){if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){if(data18.published !== undefined){let data20 = data18.published;if(typeof data20 !== \"boolean\"){const err17 = {instancePath:instancePath+\"/descriptor/published\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/1/properties/published/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if(!(data20 === false)){const err18 = {instancePath:instancePath+\"/descriptor/published\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/1/properties/published/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.descriptor.allOf[0].anyOf[1].properties.published.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}}var _valid1 = _errs62 === errors;valid17 = valid17 || _valid1;if(!valid17){const _errs67 = errors;const _errs68 = errors;const _errs69 = errors;const _errs70 = errors;if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){let missing10;if((data18.published === undefined) && (missing10 = \"published\")){const err19 = {};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}var valid22 = _errs70 === errors;if(valid22){const err20 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/2/allOf/0/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}else {errors = _errs69;if(vErrors !== null){if(_errs69){vErrors.length = _errs69;}else {vErrors = null;}}}var valid21 = _errs68 === errors;if(valid21){const _errs71 = errors;const _errs72 = errors;const _errs73 = errors;if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){let missing11;if((data18.datePublished === undefined) && (missing11 = \"datePublished\")){const err21 = {};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}var valid23 = _errs73 === errors;if(valid23){const err22 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf/2/allOf/1/not\",keyword:\"not\",params:{},message:\"must NOT be valid\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}else {errors = _errs72;if(vErrors !== null){if(_errs72){vErrors.length = _errs72;}else {vErrors = null;}}}var valid21 = _errs71 === errors;}var _valid1 = _errs67 === errors;valid17 = valid17 || _valid1;}}if(!valid17){const err23 = {instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/allOf/0/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;validate16.errors = vErrors;return false;}else {errors = _errs58;if(vErrors !== null){if(_errs58){vErrors.length = _errs58;}else {vErrors = null;}}}if(errors === _errs54){if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){let missing12;if((((((((data18.interface === undefined) && (missing12 = \"interface\")) || ((data18.method === undefined) && (missing12 = \"method\"))) || ((data18.dataCid === undefined) && (missing12 = \"dataCid\"))) || ((data18.dataSize === undefined) && (missing12 = \"dataSize\"))) || ((data18.dateCreated === undefined) && (missing12 = \"dateCreated\"))) || ((data18.dateModified === undefined) && (missing12 = \"dateModified\"))) || ((data18.dataFormat === undefined) && (missing12 = \"dataFormat\"))){validate16.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing12},message:\"must have required property '\"+missing12+\"'\"}];return false;}else {const _errs74 = errors;for(const key3 in data18){if(!(func2.call(schema23.properties.descriptor.properties, key3))){validate16.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key3},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs74 === errors){if(data18.interface !== undefined){let data21 = data18.interface;const _errs75 = errors;if(typeof data21 !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data21 === \"Records\")){validate16.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid24 = _errs75 === errors;}else {var valid24 = true;}if(valid24){if(data18.method !== undefined){let data22 = data18.method;const _errs77 = errors;if(typeof data22 !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data22 === \"Write\")){validate16.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid24 = _errs77 === errors;}else {var valid24 = true;}if(valid24){if(data18.recipient !== undefined){let data23 = data18.recipient;const _errs79 = errors;const _errs80 = errors;if(errors === _errs80){if(typeof data23 === \"string\"){if(!pattern4.test(data23)){validate16.errors = [{instancePath:instancePath+\"/descriptor/recipient\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/descriptor/recipient\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid24 = _errs79 === errors;}else {var valid24 = true;}if(valid24){if(data18.protocol !== undefined){const _errs82 = errors;if(typeof data18.protocol !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/protocol\",schemaPath:\"#/properties/descriptor/properties/protocol/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid24 = _errs82 === errors;}else {var valid24 = true;}if(valid24){if(data18.protocolPath !== undefined){let data25 = data18.protocolPath;const _errs84 = errors;if(errors === _errs84){if(typeof data25 === \"string\"){if(!pattern13.test(data25)){validate16.errors = [{instancePath:instancePath+\"/descriptor/protocolPath\",schemaPath:\"#/properties/descriptor/properties/protocolPath/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]+(/[a-zA-Z]+)*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]+(/[a-zA-Z]+)*$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/descriptor/protocolPath\",schemaPath:\"#/properties/descriptor/properties/protocolPath/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid24 = _errs84 === errors;}else {var valid24 = true;}if(valid24){if(data18.schema !== undefined){const _errs86 = errors;if(typeof data18.schema !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/schema\",schemaPath:\"#/properties/descriptor/properties/schema/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid24 = _errs86 === errors;}else {var valid24 = true;}if(valid24){if(data18.parentId !== undefined){const _errs88 = errors;if(typeof data18.parentId !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/parentId\",schemaPath:\"#/properties/descriptor/properties/parentId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid24 = _errs88 === errors;}else {var valid24 = true;}if(valid24){if(data18.dataCid !== undefined){const _errs90 = errors;if(typeof data18.dataCid !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/dataCid\",schemaPath:\"#/properties/descriptor/properties/dataCid/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid24 = _errs90 === errors;}else {var valid24 = true;}if(valid24){if(data18.dataSize !== undefined){let data29 = data18.dataSize;const _errs92 = errors;if(!((typeof data29 == \"number\") && (isFinite(data29)))){validate16.errors = [{instancePath:instancePath+\"/descriptor/dataSize\",schemaPath:\"#/properties/descriptor/properties/dataSize/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\"}];return false;}var valid24 = _errs92 === errors;}else {var valid24 = true;}if(valid24){if(data18.dateCreated !== undefined){let data30 = data18.dateCreated;const _errs94 = errors;const _errs95 = errors;if(errors === _errs95){if(typeof data30 === \"string\"){if(!pattern3.test(data30)){validate16.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid24 = _errs94 === errors;}else {var valid24 = true;}if(valid24){if(data18.dateModified !== undefined){let data31 = data18.dateModified;const _errs97 = errors;const _errs98 = errors;if(errors === _errs98){if(typeof data31 === \"string\"){if(!pattern3.test(data31)){validate16.errors = [{instancePath:instancePath+\"/descriptor/dateModified\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/descriptor/dateModified\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid24 = _errs97 === errors;}else {var valid24 = true;}if(valid24){if(data18.published !== undefined){const _errs100 = errors;if(typeof data18.published !== \"boolean\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/published\",schemaPath:\"#/properties/descriptor/properties/published/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid24 = _errs100 === errors;}else {var valid24 = true;}if(valid24){if(data18.datePublished !== undefined){let data33 = data18.datePublished;const _errs102 = errors;const _errs103 = errors;if(errors === _errs103){if(typeof data33 === \"string\"){if(!pattern3.test(data33)){validate16.errors = [{instancePath:instancePath+\"/descriptor/datePublished\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate16.errors = [{instancePath:instancePath+\"/descriptor/datePublished\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid24 = _errs102 === errors;}else {var valid24 = true;}if(valid24){if(data18.dataFormat !== undefined){const _errs105 = errors;if(typeof data18.dataFormat !== \"string\"){validate16.errors = [{instancePath:instancePath+\"/descriptor/dataFormat\",schemaPath:\"#/properties/descriptor/properties/dataFormat/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid24 = _errs105 === errors;}else {var valid24 = true;}}}}}}}}}}}}}}}}}else {validate16.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid8 = _errs54 === errors;}else {var valid8 = true;}}}}}}}}}else {validate16.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate16.errors = vErrors;return errors === 0;}export const EventsGet = validate21;const schema34 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/events-get.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\"],\"properties\":{\"interface\":{\"enum\":[\"Events\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Get\"],\"type\":\"string\"},\"watermark\":{\"type\":\"string\"}}}}};function validate21(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/events-get.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate21.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate21.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if(((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))){validate21.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!(((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"watermark\"))){validate21.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate21.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Events\")){validate21.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema34.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate21.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Get\")){validate21.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema34.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.watermark !== undefined){const _errs10 = errors;if(typeof data1.watermark !== \"string\"){validate21.errors = [{instancePath:instancePath+\"/descriptor/watermark\",schemaPath:\"#/properties/descriptor/properties/watermark/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs10 === errors;}else {var valid1 = true;}}}}}}else {validate21.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate21.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate21.errors = vErrors;return errors === 0;}export const Definitions = validate12;const schema13 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/defs.json\",\"type\":\"object\",\"definitions\":{\"base64url\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]+$\"},\"uuid\":{\"type\":\"string\",\"pattern\":\"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"},\"did\":{\"type\":\"string\",\"pattern\":\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},\"date-time\":{\"type\":\"string\",\"pattern\":\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"}}};function validate12(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/defs.json\" */;let vErrors = null;let errors = 0;if(!(data && typeof data == \"object\" && !Array.isArray(data))){validate12.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}validate12.errors = vErrors;return errors === 0;}export const GeneralJwk = validate23;function validate23(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/general-jwk.json\" */;let vErrors = null;let errors = 0;const _errs1 = errors;let valid0 = false;let passing0 = null;const _errs2 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.crv === undefined) && (missing0 = \"crv\")) || ((data.x === undefined) && (missing0 = \"x\"))){const err0 = {instancePath,schemaPath:\"#/oneOf/0/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.kty !== undefined){const _errs3 = errors;if(\"EC\" !== data.kty){const err1 = {instancePath:instancePath+\"/kty\",schemaPath:\"#/oneOf/0/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"EC\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}var valid1 = _errs3 === errors;}else {var valid1 = true;}if(valid1){if(data.crv !== undefined){const _errs4 = errors;if(typeof data.crv !== \"string\"){const err2 = {instancePath:instancePath+\"/crv\",schemaPath:\"#/oneOf/0/properties/crv/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}var valid1 = _errs4 === errors;}else {var valid1 = true;}if(valid1){if(data.x !== undefined){const _errs6 = errors;if(typeof data.x !== \"string\"){const err3 = {instancePath:instancePath+\"/x\",schemaPath:\"#/oneOf/0/properties/x/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data.y !== undefined){const _errs8 = errors;if(typeof data.y !== \"string\"){const err4 = {instancePath:instancePath+\"/y\",schemaPath:\"#/oneOf/0/properties/y/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data.d !== undefined){const _errs10 = errors;if(typeof data.d !== \"string\"){const err5 = {instancePath:instancePath+\"/d\",schemaPath:\"#/oneOf/0/properties/d/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var valid1 = _errs10 === errors;}else {var valid1 = true;}}}}}}}var _valid0 = _errs2 === errors;if(_valid0){valid0 = true;passing0 = 0;}const _errs12 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing1;if(((data.crv === undefined) && (missing1 = \"crv\")) || ((data.x === undefined) && (missing1 = \"x\"))){const err6 = {instancePath,schemaPath:\"#/oneOf/1/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}else {if(data.kty !== undefined){const _errs13 = errors;if(\"OKP\" !== data.kty){const err7 = {instancePath:instancePath+\"/kty\",schemaPath:\"#/oneOf/1/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"OKP\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}var valid2 = _errs13 === errors;}else {var valid2 = true;}if(valid2){if(data.crv !== undefined){const _errs14 = errors;if(typeof data.crv !== \"string\"){const err8 = {instancePath:instancePath+\"/crv\",schemaPath:\"#/oneOf/1/properties/crv/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}var valid2 = _errs14 === errors;}else {var valid2 = true;}if(valid2){if(data.x !== undefined){const _errs16 = errors;if(typeof data.x !== \"string\"){const err9 = {instancePath:instancePath+\"/x\",schemaPath:\"#/oneOf/1/properties/x/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid2 = _errs16 === errors;}else {var valid2 = true;}if(valid2){if(data.d !== undefined){const _errs18 = errors;if(typeof data.d !== \"string\"){const err10 = {instancePath:instancePath+\"/d\",schemaPath:\"#/oneOf/1/properties/d/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid2 = _errs18 === errors;}else {var valid2 = true;}}}}}}var _valid0 = _errs12 === errors;if(_valid0 && valid0){valid0 = false;passing0 = [passing0, 1];}else {if(_valid0){valid0 = true;passing0 = 1;}const _errs20 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing2;if(((data.n === undefined) && (missing2 = \"n\")) || ((data.e === undefined) && (missing2 = \"e\"))){const err11 = {instancePath,schemaPath:\"#/oneOf/2/required\",keyword:\"required\",params:{missingProperty: missing2},message:\"must have required property '\"+missing2+\"'\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}else {if(data.kty !== undefined){const _errs21 = errors;if(\"RSA\" !== data.kty){const err12 = {instancePath:instancePath+\"/kty\",schemaPath:\"#/oneOf/2/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"RSA\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}var valid3 = _errs21 === errors;}else {var valid3 = true;}if(valid3){if(data.n !== undefined){const _errs22 = errors;if(typeof data.n !== \"string\"){const err13 = {instancePath:instancePath+\"/n\",schemaPath:\"#/oneOf/2/properties/n/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var valid3 = _errs22 === errors;}else {var valid3 = true;}if(valid3){if(data.e !== undefined){const _errs24 = errors;if(typeof data.e !== \"string\"){const err14 = {instancePath:instancePath+\"/e\",schemaPath:\"#/oneOf/2/properties/e/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid3 = _errs24 === errors;}else {var valid3 = true;}if(valid3){if(data.d !== undefined){const _errs26 = errors;if(typeof data.d !== \"string\"){const err15 = {instancePath:instancePath+\"/d\",schemaPath:\"#/oneOf/2/properties/d/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}var valid3 = _errs26 === errors;}else {var valid3 = true;}if(valid3){if(data.p !== undefined){const _errs28 = errors;if(typeof data.p !== \"string\"){const err16 = {instancePath:instancePath+\"/p\",schemaPath:\"#/oneOf/2/properties/p/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid3 = _errs28 === errors;}else {var valid3 = true;}if(valid3){if(data.q !== undefined){const _errs30 = errors;if(typeof data.q !== \"string\"){const err17 = {instancePath:instancePath+\"/q\",schemaPath:\"#/oneOf/2/properties/q/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid3 = _errs30 === errors;}else {var valid3 = true;}if(valid3){if(data.dp !== undefined){const _errs32 = errors;if(typeof data.dp !== \"string\"){const err18 = {instancePath:instancePath+\"/dp\",schemaPath:\"#/oneOf/2/properties/dp/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var valid3 = _errs32 === errors;}else {var valid3 = true;}if(valid3){if(data.dq !== undefined){const _errs34 = errors;if(typeof data.dq !== \"string\"){const err19 = {instancePath:instancePath+\"/dq\",schemaPath:\"#/oneOf/2/properties/dq/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var valid3 = _errs34 === errors;}else {var valid3 = true;}if(valid3){if(data.qi !== undefined){const _errs36 = errors;if(typeof data.qi !== \"string\"){const err20 = {instancePath:instancePath+\"/qi\",schemaPath:\"#/oneOf/2/properties/qi/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}var valid3 = _errs36 === errors;}else {var valid3 = true;}if(valid3){if(data.oth !== undefined){let data18 = data.oth;const _errs38 = errors;if(!(data18 && typeof data18 == \"object\" && !Array.isArray(data18))){const err21 = {instancePath:instancePath+\"/oth\",schemaPath:\"#/oneOf/2/properties/oth/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}var valid3 = _errs38 === errors;}else {var valid3 = true;}}}}}}}}}}}}var _valid0 = _errs20 === errors;if(_valid0 && valid0){valid0 = false;passing0 = [passing0, 2];}else {if(_valid0){valid0 = true;passing0 = 2;}const _errs40 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing3;if((data.k === undefined) && (missing3 = \"k\")){const err22 = {instancePath,schemaPath:\"#/oneOf/3/required\",keyword:\"required\",params:{missingProperty: missing3},message:\"must have required property '\"+missing3+\"'\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}else {if(data.kty !== undefined){const _errs41 = errors;if(\"oct\" !== data.kty){const err23 = {instancePath:instancePath+\"/kty\",schemaPath:\"#/oneOf/3/properties/kty/const\",keyword:\"const\",params:{allowedValue: \"oct\"},message:\"must be equal to constant\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}var valid4 = _errs41 === errors;}else {var valid4 = true;}if(valid4){if(data.k !== undefined){const _errs42 = errors;if(typeof data.k !== \"string\"){const err24 = {instancePath:instancePath+\"/k\",schemaPath:\"#/oneOf/3/properties/k/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}var valid4 = _errs42 === errors;}else {var valid4 = true;}}}}var _valid0 = _errs40 === errors;if(_valid0 && valid0){valid0 = false;passing0 = [passing0, 3];}else {if(_valid0){valid0 = true;passing0 = 3;}}}}if(!valid0){const err25 = {instancePath,schemaPath:\"#/oneOf\",keyword:\"oneOf\",params:{passingSchemas: passing0},message:\"must match exactly one schema in oneOf\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;validate23.errors = vErrors;return false;}else {errors = _errs1;if(vErrors !== null){if(_errs1){vErrors.length = _errs1;}else {vErrors = null;}}}if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing4;if((data.kty === undefined) && (missing4 = \"kty\")){validate23.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing4},message:\"must have required property '\"+missing4+\"'\"}];return false;}else {if(data.alg !== undefined){const _errs44 = errors;if(typeof data.alg !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/alg\",schemaPath:\"#/properties/alg/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs44 === errors;}else {var valid5 = true;}if(valid5){if(data.kid !== undefined){const _errs46 = errors;if(typeof data.kid !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/kid\",schemaPath:\"#/properties/kid/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs46 === errors;}else {var valid5 = true;}if(valid5){if(data.kty !== undefined){let data23 = data.kty;const _errs48 = errors;if(!((((data23 === \"EC\") || (data23 === \"RSA\")) || (data23 === \"oct\")) || (data23 === \"OKP\"))){validate23.errors = [{instancePath:instancePath+\"/kty\",schemaPath:\"#/properties/kty/enum\",keyword:\"enum\",params:{allowedValues: schema28.properties.kty.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid5 = _errs48 === errors;}else {var valid5 = true;}if(valid5){if(data.crv !== undefined){const _errs49 = errors;if(typeof data.crv !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/crv\",schemaPath:\"#/properties/crv/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs49 === errors;}else {var valid5 = true;}if(valid5){if(data.use !== undefined){const _errs51 = errors;if(typeof data.use !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/use\",schemaPath:\"#/properties/use/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs51 === errors;}else {var valid5 = true;}if(valid5){if(data.key_ops !== undefined){const _errs53 = errors;if(typeof data.key_ops !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/key_ops\",schemaPath:\"#/properties/key_ops/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs53 === errors;}else {var valid5 = true;}if(valid5){if(data.x5u !== undefined){const _errs55 = errors;if(typeof data.x5u !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/x5u\",schemaPath:\"#/properties/x5u/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs55 === errors;}else {var valid5 = true;}if(valid5){if(data.x5c !== undefined){const _errs57 = errors;if(typeof data.x5c !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/x5c\",schemaPath:\"#/properties/x5c/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs57 === errors;}else {var valid5 = true;}if(valid5){if(data.x5t !== undefined){const _errs59 = errors;if(typeof data.x5t !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/x5t\",schemaPath:\"#/properties/x5t/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs59 === errors;}else {var valid5 = true;}if(valid5){if(data[\"x5t#S256\"] !== undefined){const _errs61 = errors;if(typeof data[\"x5t#S256\"] !== \"string\"){validate23.errors = [{instancePath:instancePath+\"/x5t#S256\",schemaPath:\"#/properties/x5t%23S256/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid5 = _errs61 === errors;}else {var valid5 = true;}}}}}}}}}}}}else {validate23.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate23.errors = vErrors;return errors === 0;}export const GeneralJws = validate11;export const HooksWrite = validate24;const schema36 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/hooks-write.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateCreated\",\"uri\",\"filter\"],\"properties\":{\"interface\":{\"enum\":[\"Hooks\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Write\"],\"type\":\"string\"},\"dateCreated\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time\"},\"schema\":{\"type\":\"string\"},\"filter\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"method\":{\"type\":\"string\"}}}}}}};function validate24(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/hooks-write.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate24.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate24.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if((((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.dateCreated === undefined) && (missing1 = \"dateCreated\"))) || ((data1.uri === undefined) && (missing1 = \"uri\"))) || ((data1.filter === undefined) && (missing1 = \"filter\"))){validate24.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!(((((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"dateCreated\")) || (key1 === \"schema\")) || (key1 === \"filter\"))){validate24.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate24.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Hooks\")){validate24.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema36.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate24.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Write\")){validate24.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema36.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.dateCreated !== undefined){let data4 = data1.dateCreated;const _errs10 = errors;const _errs11 = errors;if(errors === _errs11){if(typeof data4 === \"string\"){if(!pattern3.test(data4)){validate24.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/pattern\",keyword:\"pattern\",params:{pattern: \"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"},message:\"must match pattern \\\"\"+\"^\\\\d{4}-[0-1]\\\\d-[0-3]\\\\dT(?:[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d|23:59:60)\\\\.\\\\d{6}Z$\"+\"\\\"\"}];return false;}}else {validate24.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/date-time/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs10 === errors;}else {var valid1 = true;}if(valid1){if(data1.schema !== undefined){const _errs13 = errors;if(typeof data1.schema !== \"string\"){validate24.errors = [{instancePath:instancePath+\"/descriptor/schema\",schemaPath:\"#/properties/descriptor/properties/schema/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs13 === errors;}else {var valid1 = true;}if(valid1){if(data1.filter !== undefined){let data6 = data1.filter;const _errs15 = errors;if(errors === _errs15){if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){if(Object.keys(data6).length < 1){validate24.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"}];return false;}else {const _errs17 = errors;for(const key2 in data6){if(!(key2 === \"method\")){validate24.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs17 === errors){if(data6.method !== undefined){if(typeof data6.method !== \"string\"){validate24.errors = [{instancePath:instancePath+\"/descriptor/filter/method\",schemaPath:\"#/properties/descriptor/properties/filter/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}}}}else {validate24.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs15 === errors;}else {var valid1 = true;}}}}}}}}else {validate24.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate24.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate24.errors = vErrors;return errors === 0;}export const JwkVerificationMethod = validate26;const schema38 = {\"$id\":\"https://identity.foundation/dwn/json-schemas/jwk-verification-method.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"id\",\"type\",\"controller\",\"publicKeyJwk\"],\"properties\":{\"id\":{\"type\":\"string\"},\"type\":{\"const\":\"JsonWebKey2020\"},\"controller\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"},\"publicKeyJwk\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/public-jwk.json\"}}};function validate26(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/jwk-verification-method.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((((data.id === undefined) && (missing0 = \"id\")) || ((data.type === undefined) && (missing0 = \"type\"))) || ((data.controller === undefined) && (missing0 = \"controller\"))) || ((data.publicKeyJwk === undefined) && (missing0 = \"publicKeyJwk\"))){validate26.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((((key0 === \"id\") || (key0 === \"type\")) || (key0 === \"controller\")) || (key0 === \"publicKeyJwk\"))){validate26.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.id !== undefined){const _errs2 = errors;if(typeof data.id !== \"string\"){validate26.errors = [{instancePath:instancePath+\"/id\",schemaPath:\"#/properties/id/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.type !== undefined){const _errs4 = errors;if(\"JsonWebKey2020\" !== data.type){validate26.errors = [{instancePath:instancePath+\"/type\",schemaPath:\"#/properties/type/const\",keyword:\"const\",params:{allowedValue: \"JsonWebKey2020\"},message:\"must be equal to constant\"}];return false;}var valid0 = _errs4 === errors;}else {var valid0 = true;}if(valid0){if(data.controller !== undefined){let data2 = data.controller;const _errs5 = errors;const _errs6 = errors;if(errors === _errs6){if(typeof data2 === \"string\"){if(!pattern4.test(data2)){validate26.errors = [{instancePath:instancePath+\"/controller\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate26.errors = [{instancePath:instancePath+\"/controller\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid0 = _errs5 === errors;}else {var valid0 = true;}if(valid0){if(data.publicKeyJwk !== undefined){const _errs8 = errors;if(!(validate19(data.publicKeyJwk, {instancePath:instancePath+\"/publicKeyJwk\",parentData:data,parentDataProperty:\"publicKeyJwk\",rootData}))){vErrors = vErrors === null ? validate19.errors : vErrors.concat(validate19.errors);errors = vErrors.length;}var valid0 = _errs8 === errors;}else {var valid0 = true;}}}}}}}else {validate26.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate26.errors = vErrors;return errors === 0;}export const MessagesGet = validate28;const schema40 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/messages-get.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\"],\"properties\":{\"interface\":{\"enum\":[\"Messages\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Get\"],\"type\":\"string\"},\"messageCids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1}}}}};function validate28(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/messages-get.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate28.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate28.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if(((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))){validate28.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!(((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"messageCids\"))){validate28.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate28.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Messages\")){validate28.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema40.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate28.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Get\")){validate28.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema40.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.messageCids !== undefined){let data4 = data1.messageCids;const _errs10 = errors;if(errors === _errs10){if(Array.isArray(data4)){if(data4.length < 1){validate28.errors = [{instancePath:instancePath+\"/descriptor/messageCids\",schemaPath:\"#/properties/descriptor/properties/messageCids/minItems\",keyword:\"minItems\",params:{limit: 1},message:\"must NOT have fewer than 1 items\"}];return false;}else {var valid2 = true;const len0 = data4.length;for(let i0=0; i0<len0; i0++){const _errs12 = errors;if(typeof data4[i0] !== \"string\"){validate28.errors = [{instancePath:instancePath+\"/descriptor/messageCids/\" + i0,schemaPath:\"#/properties/descriptor/properties/messageCids/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid2 = _errs12 === errors;if(!valid2){break;}}}}else {validate28.errors = [{instancePath:instancePath+\"/descriptor/messageCids\",schemaPath:\"#/properties/descriptor/properties/messageCids/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"}];return false;}}var valid1 = _errs10 === errors;}else {var valid1 = true;}}}}}}else {validate28.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate28.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate28.errors = vErrors;return errors === 0;}export const PermissionsDefinitions = validate30;const schema41 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json\",\"type\":\"object\",\"definitions\":{\"conditions\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"attestation\":{\"enum\":[\"optional\",\"required\"],\"type\":\"string\"},\"delegation\":{\"type\":\"boolean\"},\"encryption\":{\"enum\":[\"optional\",\"required\"],\"type\":\"string\"},\"publication\":{\"type\":\"boolean\"},\"sharedAccess\":{\"type\":\"boolean\"}}},\"grantedTo\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"},\"grantedBy\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"},\"scope\":{\"properties\":{\"method\":{\"type\":\"string\"},\"objectId\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"}},\"type\":\"object\",\"additionalProperties\":false}}};function validate30(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/permissions/defs.json\" */;let vErrors = null;let errors = 0;if(!(data && typeof data == \"object\" && !Array.isArray(data))){validate30.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}validate30.errors = vErrors;return errors === 0;}export const PermissionsGrant = validate31;const schema42 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/permissions-grant.json\",\"type\":\"object\",\"required\":[\"authorization\",\"descriptor\"],\"additionalProperties\":false,\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"delegationChain\":{\"description\":\"the parent grant\",\"$ref\":\"#\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateCreated\"],\"properties\":{\"dateCreated\":{\"type\":\"string\"},\"conditions\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions\"},\"delegatedFrom\":{\"description\":\"CID of the parent grant\",\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"grantedTo\":{\"description\":\"DID of the grantee\",\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedTo\"},\"grantedBy\":{\"description\":\"DID of the grantor\",\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedBy\"},\"interface\":{\"enum\":[\"Permissions\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Grant\"],\"type\":\"string\"},\"scope\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope\"},\"objectId\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/uuid\"}}}}};const schema43 = {\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"attestation\":{\"enum\":[\"optional\",\"required\"],\"type\":\"string\"},\"delegation\":{\"type\":\"boolean\"},\"encryption\":{\"enum\":[\"optional\",\"required\"],\"type\":\"string\"},\"publication\":{\"type\":\"boolean\"},\"sharedAccess\":{\"type\":\"boolean\"}}};const schema46 = {\"properties\":{\"method\":{\"type\":\"string\"},\"objectId\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"}},\"type\":\"object\",\"additionalProperties\":false};const schema47 = {\"type\":\"string\",\"pattern\":\"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"};const pattern21 = new RegExp(\"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\", \"u\");function validate31(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/permissions-grant.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate31.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!(((key0 === \"authorization\") || (key0 === \"delegationChain\")) || (key0 === \"descriptor\"))){validate31.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.delegationChain !== undefined){const _errs3 = errors;if(!(validate31(data.delegationChain, {instancePath:instancePath+\"/delegationChain\",parentData:data,parentDataProperty:\"delegationChain\",rootData}))){vErrors = vErrors === null ? validate31.errors : vErrors.concat(validate31.errors);errors = vErrors.length;}var valid0 = _errs3 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data2 = data.descriptor;const _errs4 = errors;if(errors === _errs4){if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){let missing1;if((((data2.interface === undefined) && (missing1 = \"interface\")) || ((data2.method === undefined) && (missing1 = \"method\"))) || ((data2.dateCreated === undefined) && (missing1 = \"dateCreated\"))){validate31.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs6 = errors;for(const key1 in data2){if(!(func2.call(schema42.properties.descriptor.properties, key1))){validate31.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs6 === errors){if(data2.dateCreated !== undefined){const _errs7 = errors;if(typeof data2.dateCreated !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"#/properties/descriptor/properties/dateCreated/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs7 === errors;}else {var valid1 = true;}if(valid1){if(data2.conditions !== undefined){let data4 = data2.conditions;const _errs9 = errors;const _errs10 = errors;if(errors === _errs10){if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){const _errs12 = errors;for(const key2 in data4){if(!(((((key2 === \"attestation\") || (key2 === \"delegation\")) || (key2 === \"encryption\")) || (key2 === \"publication\")) || (key2 === \"sharedAccess\"))){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs12 === errors){if(data4.attestation !== undefined){let data5 = data4.attestation;const _errs13 = errors;if(typeof data5 !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/attestation\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/attestation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!((data5 === \"optional\") || (data5 === \"required\"))){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/attestation\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/attestation/enum\",keyword:\"enum\",params:{allowedValues: schema43.properties.attestation.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid3 = _errs13 === errors;}else {var valid3 = true;}if(valid3){if(data4.delegation !== undefined){const _errs15 = errors;if(typeof data4.delegation !== \"boolean\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/delegation\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/delegation/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid3 = _errs15 === errors;}else {var valid3 = true;}if(valid3){if(data4.encryption !== undefined){let data7 = data4.encryption;const _errs17 = errors;if(typeof data7 !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/encryption\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/encryption/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!((data7 === \"optional\") || (data7 === \"required\"))){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/encryption\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/encryption/enum\",keyword:\"enum\",params:{allowedValues: schema43.properties.encryption.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid3 = _errs17 === errors;}else {var valid3 = true;}if(valid3){if(data4.publication !== undefined){const _errs19 = errors;if(typeof data4.publication !== \"boolean\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/publication\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/publication/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid3 = _errs19 === errors;}else {var valid3 = true;}if(valid3){if(data4.sharedAccess !== undefined){const _errs21 = errors;if(typeof data4.sharedAccess !== \"boolean\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions/sharedAccess\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/sharedAccess/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid3 = _errs21 === errors;}else {var valid3 = true;}}}}}}}else {validate31.errors = [{instancePath:instancePath+\"/descriptor/conditions\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs9 === errors;}else {var valid1 = true;}if(valid1){if(data2.delegatedFrom !== undefined){const _errs23 = errors;if(typeof data2.delegatedFrom !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/delegatedFrom\",schemaPath:\"#/properties/descriptor/properties/delegatedFrom/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs23 === errors;}else {var valid1 = true;}if(valid1){if(data2.description !== undefined){const _errs25 = errors;if(typeof data2.description !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/description\",schemaPath:\"#/properties/descriptor/properties/description/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs25 === errors;}else {var valid1 = true;}if(valid1){if(data2.grantedTo !== undefined){let data12 = data2.grantedTo;const _errs27 = errors;const _errs28 = errors;if(errors === _errs28){if(typeof data12 === \"string\"){if(!pattern4.test(data12)){validate31.errors = [{instancePath:instancePath+\"/descriptor/grantedTo\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedTo/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate31.errors = [{instancePath:instancePath+\"/descriptor/grantedTo\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedTo/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs27 === errors;}else {var valid1 = true;}if(valid1){if(data2.grantedBy !== undefined){let data13 = data2.grantedBy;const _errs30 = errors;const _errs31 = errors;if(errors === _errs31){if(typeof data13 === \"string\"){if(!pattern4.test(data13)){validate31.errors = [{instancePath:instancePath+\"/descriptor/grantedBy\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedBy/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate31.errors = [{instancePath:instancePath+\"/descriptor/grantedBy\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedBy/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs30 === errors;}else {var valid1 = true;}if(valid1){if(data2.interface !== undefined){let data14 = data2.interface;const _errs33 = errors;if(typeof data14 !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data14 === \"Permissions\")){validate31.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema42.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs33 === errors;}else {var valid1 = true;}if(valid1){if(data2.method !== undefined){let data15 = data2.method;const _errs35 = errors;if(typeof data15 !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data15 === \"Grant\")){validate31.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema42.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs35 === errors;}else {var valid1 = true;}if(valid1){if(data2.scope !== undefined){let data16 = data2.scope;const _errs37 = errors;const _errs38 = errors;if(errors === _errs38){if(data16 && typeof data16 == \"object\" && !Array.isArray(data16)){const _errs40 = errors;for(const key3 in data16){if(!(((key3 === \"method\") || (key3 === \"objectId\")) || (key3 === \"schema\"))){validate31.errors = [{instancePath:instancePath+\"/descriptor/scope\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key3},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs40 === errors){if(data16.method !== undefined){const _errs41 = errors;if(typeof data16.method !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/scope/method\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid7 = _errs41 === errors;}else {var valid7 = true;}if(valid7){if(data16.objectId !== undefined){const _errs43 = errors;if(typeof data16.objectId !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/scope/objectId\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/properties/objectId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid7 = _errs43 === errors;}else {var valid7 = true;}if(valid7){if(data16.schema !== undefined){const _errs45 = errors;if(typeof data16.schema !== \"string\"){validate31.errors = [{instancePath:instancePath+\"/descriptor/scope/schema\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/properties/schema/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid7 = _errs45 === errors;}else {var valid7 = true;}}}}}else {validate31.errors = [{instancePath:instancePath+\"/descriptor/scope\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs37 === errors;}else {var valid1 = true;}if(valid1){if(data2.objectId !== undefined){let data20 = data2.objectId;const _errs47 = errors;const _errs48 = errors;if(errors === _errs48){if(typeof data20 === \"string\"){if(!pattern21.test(data20)){validate31.errors = [{instancePath:instancePath+\"/descriptor/objectId\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/uuid/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"},message:\"must match pattern \\\"\"+\"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"+\"\\\"\"}];return false;}}else {validate31.errors = [{instancePath:instancePath+\"/descriptor/objectId\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/uuid/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs47 === errors;}else {var valid1 = true;}}}}}}}}}}}}}else {validate31.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs4 === errors;}else {var valid0 = true;}}}}}}else {validate31.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate31.errors = vErrors;return errors === 0;}export const PermissionsRequest = validate33;const schema48 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/permissions-request.json\",\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateCreated\"],\"properties\":{\"dateCreated\":{\"type\":\"string\"},\"conditions\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions\"},\"description\":{\"type\":\"string\"},\"grantedTo\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedTo\"},\"grantedBy\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedBy\"},\"interface\":{\"enum\":[\"Permissions\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Request\"],\"type\":\"string\"},\"scope\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope\"},\"objectId\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/uuid\"}}}}};function validate33(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/permissions-request.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate33.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate33.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.dateCreated === undefined) && (missing1 = \"dateCreated\"))){validate33.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!(func2.call(schema48.properties.descriptor.properties, key1))){validate33.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.dateCreated !== undefined){const _errs6 = errors;if(typeof data1.dateCreated !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"#/properties/descriptor/properties/dateCreated/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.conditions !== undefined){let data3 = data1.conditions;const _errs8 = errors;const _errs9 = errors;if(errors === _errs9){if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){const _errs11 = errors;for(const key2 in data3){if(!(((((key2 === \"attestation\") || (key2 === \"delegation\")) || (key2 === \"encryption\")) || (key2 === \"publication\")) || (key2 === \"sharedAccess\"))){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs11 === errors){if(data3.attestation !== undefined){let data4 = data3.attestation;const _errs12 = errors;if(typeof data4 !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/attestation\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/attestation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!((data4 === \"optional\") || (data4 === \"required\"))){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/attestation\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/attestation/enum\",keyword:\"enum\",params:{allowedValues: schema43.properties.attestation.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid3 = _errs12 === errors;}else {var valid3 = true;}if(valid3){if(data3.delegation !== undefined){const _errs14 = errors;if(typeof data3.delegation !== \"boolean\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/delegation\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/delegation/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid3 = _errs14 === errors;}else {var valid3 = true;}if(valid3){if(data3.encryption !== undefined){let data6 = data3.encryption;const _errs16 = errors;if(typeof data6 !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/encryption\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/encryption/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!((data6 === \"optional\") || (data6 === \"required\"))){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/encryption\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/encryption/enum\",keyword:\"enum\",params:{allowedValues: schema43.properties.encryption.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid3 = _errs16 === errors;}else {var valid3 = true;}if(valid3){if(data3.publication !== undefined){const _errs18 = errors;if(typeof data3.publication !== \"boolean\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/publication\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/publication/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid3 = _errs18 === errors;}else {var valid3 = true;}if(valid3){if(data3.sharedAccess !== undefined){const _errs20 = errors;if(typeof data3.sharedAccess !== \"boolean\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions/sharedAccess\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/properties/sharedAccess/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"}];return false;}var valid3 = _errs20 === errors;}else {var valid3 = true;}}}}}}}else {validate33.errors = [{instancePath:instancePath+\"/descriptor/conditions\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/conditions/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.description !== undefined){const _errs22 = errors;if(typeof data1.description !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/description\",schemaPath:\"#/properties/descriptor/properties/description/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs22 === errors;}else {var valid1 = true;}if(valid1){if(data1.grantedTo !== undefined){let data10 = data1.grantedTo;const _errs24 = errors;const _errs25 = errors;if(errors === _errs25){if(typeof data10 === \"string\"){if(!pattern4.test(data10)){validate33.errors = [{instancePath:instancePath+\"/descriptor/grantedTo\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedTo/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate33.errors = [{instancePath:instancePath+\"/descriptor/grantedTo\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedTo/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs24 === errors;}else {var valid1 = true;}if(valid1){if(data1.grantedBy !== undefined){let data11 = data1.grantedBy;const _errs27 = errors;const _errs28 = errors;if(errors === _errs28){if(typeof data11 === \"string\"){if(!pattern4.test(data11)){validate33.errors = [{instancePath:instancePath+\"/descriptor/grantedBy\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedBy/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate33.errors = [{instancePath:instancePath+\"/descriptor/grantedBy\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/grantedBy/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs27 === errors;}else {var valid1 = true;}if(valid1){if(data1.interface !== undefined){let data12 = data1.interface;const _errs30 = errors;if(typeof data12 !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data12 === \"Permissions\")){validate33.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema48.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs30 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data13 = data1.method;const _errs32 = errors;if(typeof data13 !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data13 === \"Request\")){validate33.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema48.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs32 === errors;}else {var valid1 = true;}if(valid1){if(data1.scope !== undefined){let data14 = data1.scope;const _errs34 = errors;const _errs35 = errors;if(errors === _errs35){if(data14 && typeof data14 == \"object\" && !Array.isArray(data14)){const _errs37 = errors;for(const key3 in data14){if(!(((key3 === \"method\") || (key3 === \"objectId\")) || (key3 === \"schema\"))){validate33.errors = [{instancePath:instancePath+\"/descriptor/scope\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key3},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs37 === errors){if(data14.method !== undefined){const _errs38 = errors;if(typeof data14.method !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/scope/method\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid7 = _errs38 === errors;}else {var valid7 = true;}if(valid7){if(data14.objectId !== undefined){const _errs40 = errors;if(typeof data14.objectId !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/scope/objectId\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/properties/objectId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid7 = _errs40 === errors;}else {var valid7 = true;}if(valid7){if(data14.schema !== undefined){const _errs42 = errors;if(typeof data14.schema !== \"string\"){validate33.errors = [{instancePath:instancePath+\"/descriptor/scope/schema\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/properties/schema/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid7 = _errs42 === errors;}else {var valid7 = true;}}}}}else {validate33.errors = [{instancePath:instancePath+\"/descriptor/scope\",schemaPath:\"https://identity.foundation/dwn/json-schemas/permissions/defs.json#/definitions/scope/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs34 === errors;}else {var valid1 = true;}if(valid1){if(data1.objectId !== undefined){let data18 = data1.objectId;const _errs44 = errors;const _errs45 = errors;if(errors === _errs45){if(typeof data18 === \"string\"){if(!pattern21.test(data18)){validate33.errors = [{instancePath:instancePath+\"/descriptor/objectId\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/uuid/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"},message:\"must match pattern \\\"\"+\"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"+\"\\\"\"}];return false;}}else {validate33.errors = [{instancePath:instancePath+\"/descriptor/objectId\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/uuid/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid1 = _errs44 === errors;}else {var valid1 = true;}}}}}}}}}}}}else {validate33.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate33.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate33.errors = vErrors;return errors === 0;}export const ProtocolDefinition = validate35;const schema54 = {\"$id\":\"https://identity.foundation/dwn/json-schemas/protocol-definition.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"types\",\"structure\"],\"properties\":{\"protocol\":{\"type\":\"string\"},\"types\":{\"type\":\"object\",\"patternProperties\":{\".*\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"schema\":{\"type\":\"string\"},\"dataFormats\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"type\":\"string\"}}}}}},\"structure\":{\"type\":\"object\",\"patternProperties\":{\".*\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/protocol-rule-set.json\"}}}}};const pattern25 = new RegExp(\".*\", \"u\");const schema55 = {\"$id\":\"https://identity.foundation/dwn/json-schemas/protocol-rule-set.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"$actions\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"who\",\"can\"],\"additionalProperties\":false,\"properties\":{\"who\":{\"type\":\"string\",\"enum\":[\"anyone\"]},\"can\":{\"type\":\"string\",\"enum\":[\"read\",\"write\"]}}},{\"required\":[\"who\",\"of\",\"can\"],\"additionalProperties\":false,\"properties\":{\"who\":{\"type\":\"string\",\"enum\":[\"author\",\"recipient\"]},\"of\":{\"type\":\"string\"},\"can\":{\"type\":\"string\",\"enum\":[\"read\",\"write\"]}}}]}}},\"patternProperties\":{\"^[^$].*\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/protocol-rule-set.json\"}}};const pattern27 = new RegExp(\"^[^$].*\", \"u\");const wrapper0 = {validate: validate36};function validate36(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/protocol-rule-set.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){const _errs1 = errors;for(const key0 in data){if(!((key0 === \"$actions\") || (pattern27.test(key0)))){validate36.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.$actions !== undefined){let data0 = data.$actions;const _errs2 = errors;if(errors === _errs2){if(Array.isArray(data0)){if(data0.length < 1){validate36.errors = [{instancePath:instancePath+\"/$actions\",schemaPath:\"#/properties/%24actions/minItems\",keyword:\"minItems\",params:{limit: 1},message:\"must NOT have fewer than 1 items\"}];return false;}else {var valid1 = true;const len0 = data0.length;for(let i0=0; i0<len0; i0++){let data1 = data0[i0];const _errs4 = errors;if(!(data1 && typeof data1 == \"object\" && !Array.isArray(data1))){validate36.errors = [{instancePath:instancePath+\"/$actions/\" + i0,schemaPath:\"#/properties/%24actions/items/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}const _errs6 = errors;let valid2 = false;const _errs7 = errors;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing0;if(((data1.who === undefined) && (missing0 = \"who\")) || ((data1.can === undefined) && (missing0 = \"can\"))){const err0 = {instancePath:instancePath+\"/$actions/\" + i0,schemaPath:\"#/properties/%24actions/items/anyOf/0/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {const _errs8 = errors;for(const key1 in data1){if(!((key1 === \"who\") || (key1 === \"can\"))){const err1 = {instancePath:instancePath+\"/$actions/\" + i0,schemaPath:\"#/properties/%24actions/items/anyOf/0/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;break;}}if(_errs8 === errors){if(data1.who !== undefined){let data2 = data1.who;const _errs9 = errors;if(typeof data2 !== \"string\"){const err2 = {instancePath:instancePath+\"/$actions/\" + i0+\"/who\",schemaPath:\"#/properties/%24actions/items/anyOf/0/properties/who/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(!(data2 === \"anyone\")){const err3 = {instancePath:instancePath+\"/$actions/\" + i0+\"/who\",schemaPath:\"#/properties/%24actions/items/anyOf/0/properties/who/enum\",keyword:\"enum\",params:{allowedValues: schema55.properties.$actions.items.anyOf[0].properties.who.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}var valid3 = _errs9 === errors;}else {var valid3 = true;}if(valid3){if(data1.can !== undefined){let data3 = data1.can;const _errs11 = errors;if(typeof data3 !== \"string\"){const err4 = {instancePath:instancePath+\"/$actions/\" + i0+\"/can\",schemaPath:\"#/properties/%24actions/items/anyOf/0/properties/can/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!((data3 === \"read\") || (data3 === \"write\"))){const err5 = {instancePath:instancePath+\"/$actions/\" + i0+\"/can\",schemaPath:\"#/properties/%24actions/items/anyOf/0/properties/can/enum\",keyword:\"enum\",params:{allowedValues: schema55.properties.$actions.items.anyOf[0].properties.can.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var valid3 = _errs11 === errors;}else {var valid3 = true;}}}}}var _valid0 = _errs7 === errors;valid2 = valid2 || _valid0;if(!valid2){const _errs13 = errors;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if((((data1.who === undefined) && (missing1 = \"who\")) || ((data1.of === undefined) && (missing1 = \"of\"))) || ((data1.can === undefined) && (missing1 = \"can\"))){const err6 = {instancePath:instancePath+\"/$actions/\" + i0,schemaPath:\"#/properties/%24actions/items/anyOf/1/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}else {const _errs14 = errors;for(const key2 in data1){if(!(((key2 === \"who\") || (key2 === \"of\")) || (key2 === \"can\"))){const err7 = {instancePath:instancePath+\"/$actions/\" + i0,schemaPath:\"#/properties/%24actions/items/anyOf/1/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;break;}}if(_errs14 === errors){if(data1.who !== undefined){let data4 = data1.who;const _errs15 = errors;if(typeof data4 !== \"string\"){const err8 = {instancePath:instancePath+\"/$actions/\" + i0+\"/who\",schemaPath:\"#/properties/%24actions/items/anyOf/1/properties/who/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(!((data4 === \"author\") || (data4 === \"recipient\"))){const err9 = {instancePath:instancePath+\"/$actions/\" + i0+\"/who\",schemaPath:\"#/properties/%24actions/items/anyOf/1/properties/who/enum\",keyword:\"enum\",params:{allowedValues: schema55.properties.$actions.items.anyOf[1].properties.who.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid4 = _errs15 === errors;}else {var valid4 = true;}if(valid4){if(data1.of !== undefined){const _errs17 = errors;if(typeof data1.of !== \"string\"){const err10 = {instancePath:instancePath+\"/$actions/\" + i0+\"/of\",schemaPath:\"#/properties/%24actions/items/anyOf/1/properties/of/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid4 = _errs17 === errors;}else {var valid4 = true;}if(valid4){if(data1.can !== undefined){let data6 = data1.can;const _errs19 = errors;if(typeof data6 !== \"string\"){const err11 = {instancePath:instancePath+\"/$actions/\" + i0+\"/can\",schemaPath:\"#/properties/%24actions/items/anyOf/1/properties/can/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(!((data6 === \"read\") || (data6 === \"write\"))){const err12 = {instancePath:instancePath+\"/$actions/\" + i0+\"/can\",schemaPath:\"#/properties/%24actions/items/anyOf/1/properties/can/enum\",keyword:\"enum\",params:{allowedValues: schema55.properties.$actions.items.anyOf[1].properties.can.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}var valid4 = _errs19 === errors;}else {var valid4 = true;}}}}}}var _valid0 = _errs13 === errors;valid2 = valid2 || _valid0;}if(!valid2){const err13 = {instancePath:instancePath+\"/$actions/\" + i0,schemaPath:\"#/properties/%24actions/items/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;validate36.errors = vErrors;return false;}else {errors = _errs6;if(vErrors !== null){if(_errs6){vErrors.length = _errs6;}else {vErrors = null;}}}var valid1 = _errs4 === errors;if(!valid1){break;}}}}else {validate36.errors = [{instancePath:instancePath+\"/$actions\",schemaPath:\"#/properties/%24actions/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"}];return false;}}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){var valid5 = true;for(const key3 in data){if(pattern27.test(key3)){const _errs21 = errors;if(!(wrapper0.validate(data[key3], {instancePath:instancePath+\"/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),parentData:data,parentDataProperty:key3,rootData}))){vErrors = vErrors === null ? wrapper0.validate.errors : vErrors.concat(wrapper0.validate.errors);errors = vErrors.length;}var valid5 = _errs21 === errors;if(!valid5){break;}}}}}}else {validate36.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate36.errors = vErrors;return errors === 0;}function validate35(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/protocol-definition.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.types === undefined) && (missing0 = \"types\")) || ((data.structure === undefined) && (missing0 = \"structure\"))){validate35.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!(((key0 === \"protocol\") || (key0 === \"types\")) || (key0 === \"structure\"))){validate35.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.protocol !== undefined){const _errs2 = errors;if(typeof data.protocol !== \"string\"){validate35.errors = [{instancePath:instancePath+\"/protocol\",schemaPath:\"#/properties/protocol/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.types !== undefined){let data1 = data.types;const _errs4 = errors;if(errors === _errs4){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){var valid1 = true;for(const key1 in data1){if(pattern25.test(key1)){let data2 = data1[key1];const _errs6 = errors;if(errors === _errs6){if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){const _errs8 = errors;for(const key2 in data2){if(!((key2 === \"schema\") || (key2 === \"dataFormats\"))){validate35.errors = [{instancePath:instancePath+\"/types/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/properties/types/patternProperties/.*/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs8 === errors){if(data2.schema !== undefined){const _errs9 = errors;if(typeof data2.schema !== \"string\"){validate35.errors = [{instancePath:instancePath+\"/types/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")+\"/schema\",schemaPath:\"#/properties/types/patternProperties/.*/properties/schema/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid2 = _errs9 === errors;}else {var valid2 = true;}if(valid2){if(data2.dataFormats !== undefined){let data4 = data2.dataFormats;const _errs11 = errors;if(errors === _errs11){if(Array.isArray(data4)){if(data4.length < 1){validate35.errors = [{instancePath:instancePath+\"/types/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")+\"/dataFormats\",schemaPath:\"#/properties/types/patternProperties/.*/properties/dataFormats/minItems\",keyword:\"minItems\",params:{limit: 1},message:\"must NOT have fewer than 1 items\"}];return false;}else {var valid3 = true;const len0 = data4.length;for(let i0=0; i0<len0; i0++){const _errs13 = errors;if(typeof data4[i0] !== \"string\"){validate35.errors = [{instancePath:instancePath+\"/types/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")+\"/dataFormats/\" + i0,schemaPath:\"#/properties/types/patternProperties/.*/properties/dataFormats/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid3 = _errs13 === errors;if(!valid3){break;}}}}else {validate35.errors = [{instancePath:instancePath+\"/types/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")+\"/dataFormats\",schemaPath:\"#/properties/types/patternProperties/.*/properties/dataFormats/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"}];return false;}}var valid2 = _errs11 === errors;}else {var valid2 = true;}}}}else {validate35.errors = [{instancePath:instancePath+\"/types/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/properties/types/patternProperties/.*/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs6 === errors;if(!valid1){break;}}}}else {validate35.errors = [{instancePath:instancePath+\"/types\",schemaPath:\"#/properties/types/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs4 === errors;}else {var valid0 = true;}if(valid0){if(data.structure !== undefined){let data6 = data.structure;const _errs15 = errors;if(errors === _errs15){if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){var valid4 = true;for(const key3 in data6){if(pattern25.test(key3)){const _errs17 = errors;if(!(validate36(data6[key3], {instancePath:instancePath+\"/structure/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),parentData:data6,parentDataProperty:key3,rootData}))){vErrors = vErrors === null ? validate36.errors : vErrors.concat(validate36.errors);errors = vErrors.length;}var valid4 = _errs17 === errors;if(!valid4){break;}}}}else {validate35.errors = [{instancePath:instancePath+\"/structure\",schemaPath:\"#/properties/structure/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs15 === errors;}else {var valid0 = true;}}}}}}else {validate35.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate35.errors = vErrors;return errors === 0;}export const ProtocolRuleSet = validate36;export const ProtocolsConfigure = validate38;const schema56 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/protocols-configure.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateCreated\",\"definition\"],\"properties\":{\"interface\":{\"enum\":[\"Protocols\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Configure\"],\"type\":\"string\"},\"dateCreated\":{\"type\":\"string\"},\"definition\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/protocol-definition.json\"}}}}};function validate38(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/protocols-configure.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate38.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate38.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if(((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.dateCreated === undefined) && (missing1 = \"dateCreated\"))) || ((data1.definition === undefined) && (missing1 = \"definition\"))){validate38.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!((((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"dateCreated\")) || (key1 === \"definition\"))){validate38.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate38.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Protocols\")){validate38.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema56.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate38.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Configure\")){validate38.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema56.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.dateCreated !== undefined){const _errs10 = errors;if(typeof data1.dateCreated !== \"string\"){validate38.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"#/properties/descriptor/properties/dateCreated/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs10 === errors;}else {var valid1 = true;}if(valid1){if(data1.definition !== undefined){const _errs12 = errors;if(!(validate35(data1.definition, {instancePath:instancePath+\"/descriptor/definition\",parentData:data1,parentDataProperty:\"definition\",rootData}))){vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors);errors = vErrors.length;}var valid1 = _errs12 === errors;}else {var valid1 = true;}}}}}}}else {validate38.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate38.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate38.errors = vErrors;return errors === 0;}export const ProtocolsQuery = validate41;const schema57 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/protocols-query.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"authorization\",\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"dateCreated\"],\"properties\":{\"interface\":{\"enum\":[\"Protocols\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Query\"],\"type\":\"string\"},\"dateCreated\":{\"type\":\"string\"},\"filter\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"protocol\":{\"type\":\"string\"},\"recipient\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did\"}}}}}}};function validate41(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/protocols-query.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if(((data.authorization === undefined) && (missing0 = \"authorization\")) || ((data.descriptor === undefined) && (missing0 = \"descriptor\"))){validate41.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate41.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.dateCreated === undefined) && (missing1 = \"dateCreated\"))){validate41.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!((((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"dateCreated\")) || (key1 === \"filter\"))){validate41.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate41.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Protocols\")){validate41.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema57.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate41.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Query\")){validate41.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema57.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.dateCreated !== undefined){const _errs10 = errors;if(typeof data1.dateCreated !== \"string\"){validate41.errors = [{instancePath:instancePath+\"/descriptor/dateCreated\",schemaPath:\"#/properties/descriptor/properties/dateCreated/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs10 === errors;}else {var valid1 = true;}if(valid1){if(data1.filter !== undefined){let data5 = data1.filter;const _errs12 = errors;if(errors === _errs12){if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){validate41.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"}];return false;}else {const _errs14 = errors;for(const key2 in data5){if(!((key2 === \"protocol\") || (key2 === \"recipient\"))){validate41.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key2},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs14 === errors){if(data5.protocol !== undefined){const _errs15 = errors;if(typeof data5.protocol !== \"string\"){validate41.errors = [{instancePath:instancePath+\"/descriptor/filter/protocol\",schemaPath:\"#/properties/descriptor/properties/filter/properties/protocol/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid2 = _errs15 === errors;}else {var valid2 = true;}if(valid2){if(data5.recipient !== undefined){let data7 = data5.recipient;const _errs17 = errors;const _errs18 = errors;if(errors === _errs18){if(typeof data7 === \"string\"){if(!pattern4.test(data7)){validate41.errors = [{instancePath:instancePath+\"/descriptor/filter/recipient\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/pattern\",keyword:\"pattern\",params:{pattern: \"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"},message:\"must match pattern \\\"\"+\"^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(/[^#?]*)?([?][^#]*)?(#.*)?$\"+\"\\\"\"}];return false;}}else {validate41.errors = [{instancePath:instancePath+\"/descriptor/filter/recipient\",schemaPath:\"https://identity.foundation/dwn/json-schemas/defs.json#/definitions/did/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}}var valid2 = _errs17 === errors;}else {var valid2 = true;}}}}}else {validate41.errors = [{instancePath:instancePath+\"/descriptor/filter\",schemaPath:\"#/properties/descriptor/properties/filter/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid1 = _errs12 === errors;}else {var valid1 = true;}}}}}}}else {validate41.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate41.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate41.errors = vErrors;return errors === 0;}export const RecordsRead = validate43;const schema59 = {\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://identity.foundation/dwn/json-schemas/records-read.json\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"descriptor\"],\"properties\":{\"authorization\":{\"$ref\":\"https://identity.foundation/dwn/json-schemas/general-jws.json\"},\"descriptor\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"interface\",\"method\",\"date\",\"recordId\"],\"properties\":{\"interface\":{\"enum\":[\"Records\"],\"type\":\"string\"},\"method\":{\"enum\":[\"Read\"],\"type\":\"string\"},\"date\":{\"type\":\"string\"},\"recordId\":{\"type\":\"string\"}}}}};function validate43(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL=\"https://identity.foundation/dwn/json-schemas/records-read.json\" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if((data.descriptor === undefined) && (missing0 = \"descriptor\")){validate43.errors = [{instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: missing0},message:\"must have required property '\"+missing0+\"'\"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === \"authorization\") || (key0 === \"descriptor\"))){validate43.errors = [{instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs1 === errors){if(data.authorization !== undefined){const _errs2 = errors;if(!(validate11(data.authorization, {instancePath:instancePath+\"/authorization\",parentData:data,parentDataProperty:\"authorization\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.descriptor !== undefined){let data1 = data.descriptor;const _errs3 = errors;if(errors === _errs3){if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){let missing1;if(((((data1.interface === undefined) && (missing1 = \"interface\")) || ((data1.method === undefined) && (missing1 = \"method\"))) || ((data1.date === undefined) && (missing1 = \"date\"))) || ((data1.recordId === undefined) && (missing1 = \"recordId\"))){validate43.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/required\",keyword:\"required\",params:{missingProperty: missing1},message:\"must have required property '\"+missing1+\"'\"}];return false;}else {const _errs5 = errors;for(const key1 in data1){if(!((((key1 === \"interface\") || (key1 === \"method\")) || (key1 === \"date\")) || (key1 === \"recordId\"))){validate43.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"}];return false;break;}}if(_errs5 === errors){if(data1.interface !== undefined){let data2 = data1.interface;const _errs6 = errors;if(typeof data2 !== \"string\"){validate43.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data2 === \"Records\")){validate43.errors = [{instancePath:instancePath+\"/descriptor/interface\",schemaPath:\"#/properties/descriptor/properties/interface/enum\",keyword:\"enum\",params:{allowedValues: schema59.properties.descriptor.properties.interface.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs6 === errors;}else {var valid1 = true;}if(valid1){if(data1.method !== undefined){let data3 = data1.method;const _errs8 = errors;if(typeof data3 !== \"string\"){validate43.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}if(!(data3 === \"Read\")){validate43.errors = [{instancePath:instancePath+\"/descriptor/method\",schemaPath:\"#/properties/descriptor/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema59.properties.descriptor.properties.method.enum},message:\"must be equal to one of the allowed values\"}];return false;}var valid1 = _errs8 === errors;}else {var valid1 = true;}if(valid1){if(data1.date !== undefined){const _errs10 = errors;if(typeof data1.date !== \"string\"){validate43.errors = [{instancePath:instancePath+\"/descriptor/date\",schemaPath:\"#/properties/descriptor/properties/date/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs10 === errors;}else {var valid1 = true;}if(valid1){if(data1.recordId !== undefined){const _errs12 = errors;if(typeof data1.recordId !== \"string\"){validate43.errors = [{instancePath:instancePath+\"/descriptor/recordId\",schemaPath:\"#/properties/descriptor/properties/recordId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"}];return false;}var valid1 = _errs12 === errors;}else {var valid1 = true;}}}}}}}else {validate43.errors = [{instancePath:instancePath+\"/descriptor\",schemaPath:\"#/properties/descriptor/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}}}}}else {validate43.errors = [{instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"}];return false;}}validate43.errors = vErrors;return errors === 0;}export const PublicJwk = validate19;", "import flat from 'flat';\n\n/**\n * Flattens the given object.\n * e.g. `{ a: { b: { c: 42 } } }` becomes `{ 'a.b.c': 42 }`\n */\nexport function flatten(obj: unknown): object {\n  const flattened = flat.flatten<unknown, Record<string, unknown>>(obj);\n  removeEmptyObjects(flattened);\n  return flattened;\n}\n\n/**\n * Checks whether the given object has any properties.\n */\nexport function isEmptyObject(obj: unknown): boolean {\n  if (typeof(obj) !== 'object') {\n    return false;\n  }\n\n  for (const _ in obj) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Recursively removes all properties with an empty object or array as its value from the given object.\n */\nexport function removeEmptyObjects(obj: Record<string, unknown>): void {\n  Object.keys(obj).forEach(key => {\n    if (typeof(obj[key]) === 'object') {\n      // recursive remove empty object or array properties in nested objects\n      removeEmptyObjects(obj[key] as Record<string, unknown>);\n    }\n\n    if (isEmptyObject(obj[key])) {\n      delete obj[key];\n    }\n  });\n}\n\n/**\n * Recursively removes all properties with `undefined` as its value from the given object.\n */\nexport function removeUndefinedProperties(obj: Record<string, unknown>): void {\n  Object.keys(obj).forEach(key => {\n    if (obj[key] === undefined) {\n      delete obj[key];\n    } else if (typeof(obj[key]) === 'object') {\n      removeUndefinedProperties(obj[key] as Record<string, unknown>); // recursive remove `undefined` properties in nested objects\n    }\n  });\n}\n", "import type { BaseMessage } from './types.js';\nimport type { CID } from 'multiformats';\nimport type { DidResolver } from '../did/did-resolver.js';\nimport type { GeneralJws } from '../jose/jws/general/types.js';\nimport type { Message } from './message.js';\n\nimport { GeneralJwsVerifier } from '../jose/jws/general/verifier.js';\nimport { Jws } from '../utils/jws.js';\nimport { computeCid, parseCid } from '../utils/cid.js';\nimport { DwnError, DwnErrorCode } from './dwn-error.js';\n\ntype AuthorizationPayloadConstraints = {\n  /** permissible properties within payload. Note that `descriptorCid` is implied and does not need to be added */\n  allowedProperties: Set<string>;\n};\n\n/**\n * Authenticates then authorizes the given message using the \"canonical\" auth flow.\n * Some message auth require special handling such as `RecordsWrite` and `RecordsQuery`,\n * which would be incompatible with this auth flow.\n * @throws {Error} if auth fails\n */\nexport async function canonicalAuth(\n  tenant: string,\n  incomingMessage: Message<BaseMessage>,\n  didResolver: DidResolver\n): Promise<void> {\n  await authenticate(incomingMessage.message.authorization, didResolver);\n  await authorize(tenant, incomingMessage);\n}\n\n/**\n * Validates the structural integrity of the `authorization` property.\n * NOTE: signature is not verified.\n * @returns the parsed JSON payload object if validation succeeds.\n */\nexport async function validateAuthorizationIntegrity(\n  message: BaseMessage,\n  authorizationPayloadConstraints?: AuthorizationPayloadConstraints\n): Promise<{ descriptorCid: CID, [key: string]: any }> {\n  if (message.authorization === undefined) {\n    throw new DwnError(DwnErrorCode.AuthorizationMissing, 'Property `authorization` is missing.');\n  }\n\n  if (message.authorization.signatures.length !== 1) {\n    throw new Error('expected no more than 1 signature for authorization');\n  }\n\n  const payloadJson = Jws.decodePlainObjectPayload(message.authorization);\n  const { descriptorCid } = payloadJson;\n\n  // `descriptorCid` validation - ensure that the provided descriptorCid matches the CID of the actual message\n  const expectedDescriptorCid = await computeCid(message.descriptor);\n  if (descriptorCid !== expectedDescriptorCid) {\n    throw new Error(`provided descriptorCid ${descriptorCid} does not match expected CID ${expectedDescriptorCid}`);\n  }\n\n  // check to ensure that no other unexpected properties exist in payload.\n  const allowedProperties = authorizationPayloadConstraints?.allowedProperties ?? new Set();\n  const customProperties = { ...payloadJson };\n  delete customProperties.descriptorCid;\n  for (const propertyName in customProperties) {\n    {\n      if (!allowedProperties.has(propertyName)) {\n        throw new Error(`${propertyName} not allowed in auth payload.`);\n      }\n    }\n\n    try {\n      parseCid(payloadJson[propertyName]);\n    } catch (e) {\n      throw new Error(`${propertyName} must be a valid CID`);\n    }\n  }\n\n  return payloadJson;\n}\n\n/**\n * Validates the signature(s) of the given JWS.\n * @throws {Error} if fails authentication\n */\nexport async function authenticate(jws: GeneralJws | undefined, didResolver: DidResolver): Promise<void> {\n  if (jws === undefined) {\n    throw new DwnError(DwnErrorCode.AuthenticateJwsMissing, 'Missing JWS.');\n  }\n\n  const verifier = new GeneralJwsVerifier(jws);\n  await verifier.verify(didResolver);\n}\n\n/**\n * Authorizes the incoming message.\n * @throws {Error} if fails authentication\n */\nexport async function authorize(tenant: string, incomingMessage: Message<BaseMessage>): Promise<void> {\n  // if author/requester is the same as the target tenant, we can directly grant access\n  if (incomingMessage.author === tenant) {\n    return;\n  } else {\n    throw new Error('message failed authorization, permission grant check not yet implemented');\n  }\n}\n", "import type { Cache } from '../../../utils/types.js';\nimport type { GeneralJws } from './types.js';\nimport type { PublicJwk } from '../../types.js';\nimport type { DidResolver, VerificationMethod } from '../../../did/did-resolver.js';\n\nimport { Jws } from '../../../utils/jws.js';\nimport { MemoryCache } from '../../../utils/memory-cache.js';\nimport { validateJsonSchema } from '../../../schema-validator.js';\n\ntype VerificationResult = {\n  /** DIDs of all signers */\n  signers: string[];\n};\n\nexport class GeneralJwsVerifier {\n  jws: GeneralJws;\n  cache: Cache;\n\n  constructor(jws: GeneralJws, cache?: Cache) {\n    this.jws = jws;\n    this.cache = cache || new MemoryCache(600);\n  }\n\n  async verify(didResolver: DidResolver): Promise<VerificationResult> {\n    const signers: string[] = [];\n\n    for (const signatureEntry of this.jws.signatures) {\n      let isVerified: boolean;\n      const cacheKey = `${signatureEntry.protected}.${this.jws.payload}.${signatureEntry.signature}`;\n      const kid = Jws.getKid(signatureEntry);\n      const publicJwk = await GeneralJwsVerifier.getPublicKey(kid, didResolver);\n\n      const cachedValue = await this.cache.get(cacheKey);\n\n      // explicit strict equality check to avoid potential buggy cache implementation causing incorrect truthy compare e.g. \"false\"\n      if (cachedValue === undefined) {\n        isVerified = await Jws.verifySignature(this.jws.payload, signatureEntry, publicJwk);\n        await this.cache.set(cacheKey, isVerified);\n      } else {\n        isVerified = cachedValue;\n      }\n\n      const did = Jws.extractDid(kid);\n\n      if (isVerified) {\n        signers.push(did);\n      } else {\n        throw new Error(`signature verification failed for ${did}`);\n      }\n    }\n\n    return { signers };\n  }\n\n  /**\n   * Gets the public key given a fully qualified key ID (`kid`).\n   */\n  public static async getPublicKey(kid: string, didResolver: DidResolver): Promise<PublicJwk> {\n    // `resolve` throws exception if DID is invalid, DID method is not supported,\n    // or resolving DID fails\n    const did = Jws.extractDid(kid);\n    const { didDocument } = await didResolver.resolve(did);\n    const { verificationMethod: verificationMethods = [] } = didDocument || {};\n\n    let verificationMethod: VerificationMethod | undefined;\n\n    for (const vm of verificationMethods) {\n      // consider optimizing using a set for O(1) lookups if needed\n      // key ID in DID Document may or may not be fully qualified. e.g.\n      // `did:ion:alice#key1` or `#key1`\n      if (kid.endsWith(vm.id)) {\n        verificationMethod = vm;\n        break;\n      }\n    }\n\n    if (!verificationMethod) {\n      throw new Error('public key needed to verify signature not found in DID Document');\n    }\n\n    validateJsonSchema('JwkVerificationMethod', verificationMethod);\n\n    const { publicKeyJwk: publicJwk } = verificationMethod;\n\n    return publicJwk as PublicJwk;\n  }\n}", "import type { Cache } from './types.js';\nimport LruCache from 'lru-cache';\n\n/**\n * A cache using local memory.\n */\nexport class MemoryCache implements Cache {\n  private cache: LruCache<string, any>;\n\n  /**\n   * @param timeToLiveInSeconds time-to-live for every key-value pair set in the cache\n   */\n  public constructor (private timeToLiveInSeconds: number) {\n    this.cache = new LruCache({\n      max : 100_000,\n      ttl : timeToLiveInSeconds * 1000\n    });\n  }\n\n  async set(key: string, value: any): Promise<void> {\n    try {\n      this.cache.set(key, value);\n    } catch {\n      // let the code continue as this is a non-fatal error\n    }\n  }\n\n  async get(key: string): Promise<any | undefined> {\n    return this.cache.get(key);\n  }\n\n  async dump(): Promise<void> {\n    for (const [ key, value ] of this.cache) {\n      console.debug(key, value);\n    }\n  }\n}\n", "import { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\nexport function validateProtocolUrlNormalized(url: string): void {\n  let normalized: string | undefined;\n  try {\n    normalized = normalizeProtocolUrl(url);\n  } catch {\n    normalized = undefined;\n  }\n\n  if (url !== normalized) {\n    throw new DwnError(DwnErrorCode.UrlProtocolNotNormalized, `Protocol URI ${url} must be normalized.`);\n  }\n}\n\nexport function normalizeProtocolUrl(url: string): string {\n  // Keeping protocol normalization as a separate function in case\n  // protocol and schema normalization diverge in the future\n  return normalizeUrl(url);\n}\n\nexport function validateSchemaUrlNormalized(url: string): void {\n  let normalized: string | undefined;\n  try {\n    normalized = normalizeSchemaUrl(url);\n  } catch {\n    normalized = undefined;\n  }\n\n  if (url !== normalized) {\n    throw new DwnError(DwnErrorCode.UrlSchemaNotNormalized, `Schema URI ${url} must be normalized.`);\n  }\n}\n\nexport function normalizeSchemaUrl(url: string): string {\n  // Keeping schema normalization as a separate function in case\n  // protocol and schema normalization diverge in the future\n  return normalizeUrl(url);\n}\n\nfunction normalizeUrl(url: string): string {\n  let fullUrl: string;\n  if (/^[^:]+:\\/\\/./.test(url)) {\n    fullUrl = url;\n  } else {\n    fullUrl = `http://${url}`;\n  }\n\n  try {\n    const result = new URL(fullUrl);\n    result.search = '';\n    result.hash = '';\n    return removeTrailingSlash(result.href);\n  } catch (e) {\n    throw new DwnError(DwnErrorCode.UrlProtocolNotNormalizable, 'Could not normalize protocol URI');\n  }\n}\n\nfunction removeTrailingSlash(str: string): string {\n  if (str.endsWith('/')) {\n    return str.slice(0, -1);\n  } else {\n    return str;\n  }\n}\n", "import { Encoder } from './encoder.js';\nimport { Readable } from 'readable-stream';\n\n/**\n * Utility class for readable data stream, intentionally named to disambiguate from ReadableStream, readable-stream, Readable etc.\n */\nexport class DataStream {\n  /**\n   * Reads the entire readable stream given into array of bytes.\n   */\n  public static async toBytes(readableStream: Readable): Promise<Uint8Array> {\n    return new Promise((resolve, reject) => {\n      const chunks: any[] = [];\n      readableStream.on('data', chunk => {\n        chunks.push(chunk);\n      });\n\n      readableStream.on('end', () => {\n        const uint8Array = DataStream.concatenateArrayOfBytes(chunks);\n        resolve(uint8Array);\n      });\n\n      readableStream.on('error', reject);\n    });\n  }\n\n  /**\n   * Concatenates the array of bytes given into one Uint8Array.\n   */\n  private static concatenateArrayOfBytes(arrayOfBytes: Uint8Array[]): Uint8Array {\n    // sum of individual array lengths\n    const totalLength = arrayOfBytes.reduce((accumulatedValue, currentValue) => accumulatedValue + currentValue.length, 0);\n\n    const result = new Uint8Array(totalLength);\n\n    let length = 0;\n    for (const bytes of arrayOfBytes) {\n      result.set(bytes, length);\n      length += bytes.length;\n    }\n\n    return result;\n  }\n\n  /**\n   * Creates a readable stream from the bytes given.\n   */\n  public static fromBytes(bytes: Uint8Array): Readable {\n    // chunk up the bytes to simulate a more real-world like behavior\n    const chunkLength = 100_000;\n    let currentIndex = 0;\n    const readableStream = new Readable({\n      read(_size): void {\n        // if this is the last chunk\n        if (currentIndex + chunkLength > bytes.length) {\n          this.push(bytes.subarray(currentIndex));\n          this.push(null);\n        } else {\n          this.push(bytes.subarray(currentIndex, currentIndex + chunkLength));\n\n          currentIndex = currentIndex + chunkLength;\n        }\n      }\n    });\n\n    return readableStream;\n  }\n\n  /**\n   * Creates a readable stream from the object given.\n   */\n  public static fromObject(object: Record<string, any>): Readable {\n    const bytes = Encoder.objectToBytes(object);\n    return DataStream.fromBytes(bytes);\n  }\n}", "import type { PrivateJwk } from '../jose/types.js';\n\nimport { Secp256k1 } from './secp256k1.js';\n\nexport enum KeyDerivationScheme {\n  DataFormats = 'dataFormats',\n  Protocols = 'protocols',\n  Schemas = 'schemas'\n}\n\nexport type DerivedPrivateJwk = {\n  derivationScheme: KeyDerivationScheme;\n  derivationPath?: string[];\n  derivedPrivateKey: PrivateJwk,\n};\n\n/**\n * Class containing hierarchical deterministic key related utility methods used by the DWN.\n */\nexport class HdKey {\n  /**\n   * Derives a descendant private key.\n   * NOTE: currently only supports SECP256K1 keys.\n   */\n  public static async derivePrivateKey(ancestorKey: DerivedPrivateJwk, subDerivationPath: string[]): Promise<DerivedPrivateJwk> {\n    const ancestorPrivateKey = Secp256k1.privateJwkToBytes(ancestorKey.derivedPrivateKey);\n    const ancestorPrivateKeyDerivationPath = ancestorKey.derivationPath ?? [];\n    const derivedPrivateKeyBytes = await Secp256k1.derivePrivateKey(ancestorPrivateKey, subDerivationPath);\n    const derivedPrivateJwk = await Secp256k1.privateKeyToJwk(derivedPrivateKeyBytes);\n    const derivedDescendantPrivateKey: DerivedPrivateJwk = {\n      derivationPath    : [...ancestorPrivateKeyDerivationPath, ...subDerivationPath],\n      derivationScheme  : ancestorKey.derivationScheme,\n      derivedPrivateKey : derivedPrivateJwk\n    };\n\n    return derivedDescendantPrivateKey;\n  }\n}", "import varint from 'varint';\nimport type { DidDocument, DidMethodResolver, DidResolutionResult } from './did-resolver.js';\n\nimport { base58btc } from 'multiformats/bases/base58';\nimport { Did } from './did.js';\nimport { ed25519 } from '../../src/jose/algorithms/signing/ed25519.js';\nimport { Encoder } from '../utils/encoder.js';\nimport { Secp256k1 } from '../utils/secp256k1.js';\nimport type { KeyMaterial, PublicJwk } from '../jose/types.js';\n\n/**\n * did:key Resolver.\n * * **NOTE**: Key support is limited to Ed25519 and SECP256k1.\n * * **NOTE**: `verificationMethod` support is limited to `JsonWebKey2020`\n *\n * Helpful Resources:\n * * [DID-Key Draft Spec](https://w3c-ccg.github.io/did-method-key/)\n */\nexport class DidKeyResolver implements DidMethodResolver {\n  method(): string {\n    return 'key';\n  }\n\n  /**\n   * Gets the number of bytes of the multicodec header in the `did:key` DID.\n   * @param did - A `did:key` DID\n   * @returns size of the multicodec head in number of bytes\n   */\n  public static getMulticodecSize(did: Uint8Array): number {\n    let multicodecHeaderSize = 0;\n\n    while (true) {\n      const currentByte = did[multicodecHeaderSize];\n      multicodecHeaderSize++;\n\n      // bitwise and with binary 1000 0000\n      // as soon as the result byte does not lead with a leading 1, we've reached the end of the multicodec header\n      if ((currentByte & 0x80) !== 0x80) {\n        break;\n      }\n    }\n\n    return multicodecHeaderSize;\n  }\n\n  async resolve(did: string): Promise<DidResolutionResult> {\n    const [_scheme, _method, id] = did.split(':', 3);\n\n    try {\n      const idBytes = base58btc.decode(id);\n      const multicodec = varint.decode(idBytes);\n      const multicodecSize = DidKeyResolver.getMulticodecSize(idBytes);\n      const publicKeyBytes = idBytes.slice(multicodecSize);\n\n      // key specific values\n      const keySpecificContext: string[] = [];\n      let publicJwk: PublicJwk;\n      if (multicodec === 0xed) {\n        // ed25519-pub multicodec\n        keySpecificContext.push('https://w3id.org/security/suites/ed25519-2020/v1');\n        publicJwk = await ed25519.publicKeyToJwk(publicKeyBytes);\n      } else if (multicodec === 0xe7) {\n        // secp256k1-pub multicodec\n        publicJwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);\n      } else {\n        throw Error(`key type of multicodec ${multicodec} is not supported`);\n      }\n\n      const keyId = `${did}#${id}`;\n\n      const didDocument: DidDocument = {\n        '@context': [\n          'https://www.w3.org/ns/did/v1',\n          'https://w3id.org/security/suites/jws-2020/v1',\n          ...keySpecificContext\n        ],\n        'id'                 : did,\n        'verificationMethod' : [{\n          id           : keyId,\n          type         : 'JsonWebKey2020',\n          controller   : did,\n          publicKeyJwk : publicJwk\n        }],\n        'authentication'       : [keyId],\n        'assertionMethod'      : [keyId],\n        'capabilityDelegation' : [keyId],\n        'capabilityInvocation' : [keyId]\n      };\n\n      return {\n        '@context'            : 'https://w3id.org/did-resolution/v1',\n        didDocument,\n        didDocumentMetadata   : {},\n        didResolutionMetadata : {}\n      };\n    } catch {\n      return {\n        didDocument           : undefined,\n        didDocumentMetadata   : {},\n        didResolutionMetadata : {\n          error: 'invalidDid'\n        },\n      };\n    }\n  }\n\n  /**\n   * Generates a new ed25519 public/private key pair. Creates a DID using the private key.\n   * @returns DID and its key material.\n   */\n  public static async generate(): Promise<{ did: string } & KeyMaterial> {\n    const { publicJwk, privateJwk } = await ed25519.generateKeyPair();\n\n    // multicodec code for Ed25519 public keys\n    const ed25519Multicodec = varint.encode(0xed);\n    const publicKeyBytes = Encoder.base64UrlToBytes(publicJwk.x);\n    const idBytes = new Uint8Array(ed25519Multicodec.length + publicKeyBytes.byteLength);\n    idBytes.set(ed25519Multicodec, 0);\n    idBytes.set(publicKeyBytes, ed25519Multicodec.length);\n\n    const id = base58btc.encode(idBytes);\n    const did = `did:key:${id}`;\n    const keyId = DidKeyResolver.getKeyId(did);\n\n    return { did, keyId, keyPair: { publicJwk, privateJwk } };\n  }\n\n  /**\n   * Gets the fully qualified key ID of a `did:key` DID. ie. '<did>#<method-specific-id>'\n   */\n  public static getKeyId(did: string): string {\n    const methodSpecificId = Did.getMethodSpecificId(did);\n    const keyId = `${did}#${methodSpecificId}`;\n    return keyId;\n  };\n\n  async dump(): Promise<void> {\n  }\n}", "/**\n * DID related operations.\n */\nexport class Did {\n  /**\n   * Gets the method specific ID segment of a DID. ie. did:<method-name>:<method-specific-id>\n   */\n  public static getMethodSpecificId(did: string): string {\n    const secondColonIndex = did.indexOf(':', 4); // start search for : from the method portion\n    const methodSpecificId = did.substring(secondColonIndex + 1);\n    return methodSpecificId;\n  }\n\n  /**\n   * @param did - the DID to validate\n   */\n  public static validate(did: unknown): void {\n    if (typeof did !== 'string') {\n      throw new Error(`DID is not string: ${did}`);\n    }\n\n    // eslint-disable-next-line\n    const didRegex= /^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(\\/[^#?]*)?([?][^#]*)?(#.*)?$/;\n    if (!didRegex.test(did)) {\n      throw new TypeError(`DID is not a valid DID: ${did}`);\n    }\n  }\n\n  /**\n   * Gets the method name from a DID. ie. did:<method-name>:<method-specific-id>\n   */\n  public static getMethodName(did: string): string {\n    const secondColonIndex = did.indexOf(':', 4); // start search for : from the method portion\n    const methodName = did.substring(4, secondColonIndex);\n    return methodName;\n  }\n}\n", "import type { DidMethodResolver, DidResolutionResult } from './did-resolver.js';\n\nimport crossFetch from 'cross-fetch';\n// supports fetch in: node, browsers, and browser extensions.\n// uses native fetch if available in environment or falls back to a ponyfill.\n// 'cross-fetch' is a ponyfill that uses `XMLHTTPRequest` under the hood.\n// `XMLHTTPRequest` cannot be used in browser extension background service workers.\n// browser extensions get even more strict with `fetch` in that it cannot be referenced\n// indirectly.\nconst fetch = globalThis.fetch ?? crossFetch;\n\n/**\n * Resolver for ION DIDs.\n */\nexport class DidIonResolver implements DidMethodResolver {\n  /**\n   * @param resolutionEndpoint optional custom URL to send DID resolution request to\n   */\n  constructor (private resolutionEndpoint: string = 'https://discover.did.msidentity.com/1.0/identifiers/') { }\n\n  method(): string {\n    return 'ion';\n  }\n\n  async resolve(did: string): Promise<DidResolutionResult> {\n    // using `URL` constructor to handle both existence and absence of trailing slash '/' in resolution endpoint\n    // appending './' to DID so 'did' in 'did:ion:abc' doesn't get interpreted as a URL scheme (e.g. like 'http') due to the colon\n    const resolutionUrl = new URL('./' + did, this.resolutionEndpoint).toString();\n    const response = await fetch(resolutionUrl);\n\n    if (response.status !== 200) {\n      throw new Error(`unable to resolve ${did}, got http status ${response.status}`);\n    }\n\n    const didResolutionResult = await response.json();\n    return didResolutionResult;\n  }\n\n  async dump(): Promise<void> {\n  }\n}\n", "import type { Cache } from '../utils/types.js';\nimport type { PublicJwk } from '../jose/types.js';\n\nimport { Did } from './did.js';\nimport { DidIonResolver } from './did-ion-resolver.js';\nimport { DidKeyResolver } from './did-key-resolver.js';\nimport { MemoryCache } from '../utils/memory-cache.js';\n\n/**\n * A DID resolver that by default supports `did:key` and `did:ion` DIDs.\n */\nexport class DidResolver {\n  private didResolvers: Map<string, DidMethodResolver>;\n  private cache: Cache;\n\n  constructor(resolvers?: DidMethodResolver[], cache?:Cache) {\n\n    this.cache = cache || new MemoryCache(600);\n\n    // construct default DID method resolvers if none given\n    if (resolvers === undefined || resolvers.length === 0) {\n      resolvers = [\n        new DidIonResolver(),\n        new DidKeyResolver()\n      ];\n    }\n\n    this.didResolvers = new Map();\n\n    for (const resolver of resolvers) {\n      this.didResolvers.set(resolver.method(), resolver);\n    }\n  }\n\n  /**\n   * attempt to resolve the DID provided\n   * @throws {Error} if DID is invalid\n   * @throws {Error} if DID method is not supported\n   * @throws {Error} if resolving DID fails\n   * @param did - the DID to resolve\n   * @returns {DidResolutionResult}\n   */\n  public async resolve(did: string): Promise<DidResolutionResult> {\n    // naively validate requester DID\n    Did.validate(did);\n    const splitDID = did.split(':', 3);\n\n    const didMethod = splitDID[1];\n    const didResolver = this.didResolvers.get(didMethod);\n\n    if (!didResolver) {\n      throw new Error(`${didMethod} DID method not supported`);\n    }\n\n    // use cached result if exists\n    const cachedResolutionResult = await this.cache.get(did);\n    const resolutionResult = cachedResolutionResult ?? await didResolver.resolve(did);\n    if (cachedResolutionResult === undefined){\n      await this.cache.set(did, resolutionResult);\n    }\n\n    const { didDocument, didResolutionMetadata } = resolutionResult;\n\n    if (!didDocument || didResolutionMetadata?.error) {\n      const { error } = didResolutionMetadata;\n      let errMsg = `Failed to resolve DID ${did}.`;\n      errMsg += error ? ` Error: ${error}` : '';\n\n      throw new Error(errMsg);\n    }\n\n    return resolutionResult;\n  }\n\n  async dump(): Promise<void> {\n    console.group('didResolvers');\n    for (const [ key, value ] of this.didResolvers) {\n      console.group(key);\n      // @ts-ignore\n      await value['dump']?.();\n      console.groupEnd();\n    }\n    console.groupEnd();\n\n    console.group('didCache');\n    // @ts-ignore\n    await this.cache['dump']?.();\n    console.groupEnd();\n  }\n}\n\n/**\n * A generalized interface that can be implemented for individual\n * DID methods\n */\nexport interface DidMethodResolver {\n  /**\n   * @returns the DID method supported by {@link DidMethodResolver.resolve}\n   */\n  method(): string;\n\n  /**\n   * attempts to resolve the DID provided into its respective DID Document.\n   * More info on resolving DIDs can be found\n   * {@link https://www.w3.org/TR/did-core/#resolution here}\n   * @param did - the DID to resolve\n   * @throws {Error} if unable to resolve the DID\n   */\n  resolve(did: string): Promise<DidResolutionResult>;\n}\n\nexport type DidDocument = {\n  '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n  id: string\n  alsoKnownAs?: string[]\n  controller?: string | string[]\n  verificationMethod?: VerificationMethod[]\n  service?: ServiceEndpoint[]\n  authentication?: VerificationMethod[] | string[]\n  assertionMethod?: VerificationMethod[] | string[]\n  keyAgreement?: VerificationMethod[] | string[]\n  capabilityInvocation?: VerificationMethod[] | string[]\n  capabilityDelegation?: VerificationMethod[] | string[]\n};\n\nexport type DwnServiceEndpoint = {\n  nodes: string[]\n};\n\nexport type ServiceEndpoint = {\n  id: string\n  type: string\n  serviceEndpoint: string | DwnServiceEndpoint\n  description?: string\n};\n\nexport type VerificationMethod = {\n  id: string\n  // one of the valid verification method types as per\n  // https://www.w3.org/TR/did-spec-registries/#verification-method-types\n  type: string\n  // DID of the key's controller\n  controller: string\n  // a JSON Web Key that conforms to https://datatracker.ietf.org/doc/html/rfc7517\n  publicKeyJwk?: PublicJwk\n};\n\nexport type DidResolutionResult = {\n  '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n  didResolutionMetadata: DidResolutionMetadata\n  didDocument?: DidDocument\n  didDocumentMetadata: DidDocumentMetadata\n};\n\nexport type DidResolutionMetadata = {\n  contentType?: string\n  error?: 'invalidDid' | 'notFound' | 'representationNotSupported' |\n  'unsupportedDidMethod' | string\n};\n\nexport type DidDocumentMetadata = {\n  // indicates the timestamp of the Create operation. ISO8601 timestamp\n  created?: string\n  // indicates the timestamp of the last Update operation for the document version which was\n  // resolved. ISO8601 timestamp\n  updated?: string\n  // indicates whether the DID has been deactivated\n  deactivated?: boolean\n  // indicates the version of the last Update operation for the document version which\n  // was resolved\n  versionId?: string\n  // indicates the timestamp of the next Update operation if the resolved document version\n  // is not the latest version of the document.\n  nextUpdate?: string\n  // indicates the version of the next Update operation if the resolved document version\n  // is not the latest version of the document.\n  nextVersionId?: string\n  // @see https://www.w3.org/TR/did-core/#dfn-equivalentid\n  equivalentId?: string\n  // @see https://www.w3.org/TR/did-core/#dfn-canonicalid\n  canonicalId?: string\n};", "import type { BaseMessage } from './core/types.js';\nimport type { DataStore } from './store/data-store.js';\nimport type { EventLog } from './event-log/event-log.js';\nimport type { MessageStore } from './store/message-store.js';\nimport type { MethodHandler } from './interfaces/types.js';\nimport type { Readable } from 'readable-stream';\nimport type { TenantGate } from './core/tenant-gate.js';\nimport type { MessagesGetMessage, MessagesGetReply } from './interfaces/messages/types.js';\nimport type { RecordsReadMessage, RecordsReadReply, RecordsWriteMessage } from './interfaces/records/types.js';\n\nimport { AllowAllTenantGate } from './core/tenant-gate.js';\nimport { DataStoreLevel } from './store/data-store-level.js';\nimport { DidResolver } from './did/did-resolver.js';\nimport { EventLogLevel } from './event-log/event-log-level.js';\nimport { EventsGetHandler } from './interfaces/events/handlers/events-get.js';\nimport { MessageReply } from './core/message-reply.js';\nimport { MessagesGetHandler } from './interfaces/messages/handlers/messages-get.js';\nimport { MessageStoreLevel } from './store/message-store-level.js';\nimport { ProtocolsConfigureHandler } from './interfaces/protocols/handlers/protocols-configure.js';\nimport { ProtocolsQueryHandler } from './interfaces/protocols/handlers/protocols-query.js';\nimport { PrunedInitialRecordsWriteHandler } from './interfaces/records/handlers/pruned-initial-records-write.js';\nimport { RecordsDeleteHandler } from './interfaces/records/handlers/records-delete.js';\nimport { RecordsQueryHandler } from './interfaces/records/handlers/records-query.js';\nimport { RecordsReadHandler } from './interfaces/records/handlers/records-read.js';\nimport { RecordsWriteHandler } from './interfaces/records/handlers/records-write.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from './core/message.js';\n\nexport class Dwn {\n  private methodHandlers: { [key:string]: MethodHandler };\n  private didResolver: DidResolver;\n  private messageStore: MessageStore;\n  private dataStore: DataStore;\n  private eventLog: EventLog;\n  private tenantGate: TenantGate;\n\n  // used by sync\n  private prunedInitialRecordsWriteHandler: PrunedInitialRecordsWriteHandler;\n\n  private constructor(config: DwnConfig) {\n    this.didResolver = config.didResolver!;\n    this.messageStore = config.messageStore!;\n    this.dataStore = config.dataStore!;\n    this.eventLog = config.eventLog!;\n    this.tenantGate = config.tenantGate!;\n\n    this.methodHandlers = {\n      [DwnInterfaceName.Events + DwnMethodName.Get]          : new EventsGetHandler(this.didResolver, this.eventLog),\n      [DwnInterfaceName.Messages + DwnMethodName.Get]        : new MessagesGetHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Protocols + DwnMethodName.Configure] : new ProtocolsConfigureHandler(\n        this.didResolver, this.messageStore, this.dataStore, this.eventLog),\n      [DwnInterfaceName.Protocols + DwnMethodName.Query] : new ProtocolsQueryHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Records + DwnMethodName.Delete]  : new RecordsDeleteHandler(\n        this.didResolver, this.messageStore, this.dataStore, this.eventLog),\n      [DwnInterfaceName.Records + DwnMethodName.Query] : new RecordsQueryHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Records + DwnMethodName.Read]  : new RecordsReadHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Records + DwnMethodName.Write] : new RecordsWriteHandler(this.didResolver, this.messageStore, this.dataStore, this.eventLog),\n    };\n\n    this.prunedInitialRecordsWriteHandler = new PrunedInitialRecordsWriteHandler(this.didResolver, this.messageStore, this.dataStore, this.eventLog);\n  }\n\n  /**\n   * Creates an instance of the DWN.\n   */\n  public static async create(config?: DwnConfig): Promise<Dwn> {\n    config ??= { };\n    config.didResolver ??= new DidResolver();\n    config.tenantGate ??= new AllowAllTenantGate();\n    config.messageStore ??= new MessageStoreLevel();\n    config.dataStore ??= new DataStoreLevel();\n    config.eventLog ??= new EventLogLevel();\n\n    const dwn = new Dwn(config);\n    await dwn.open();\n\n    return dwn;\n  }\n\n  private async open(): Promise<void> {\n    await this.messageStore.open();\n    await this.dataStore.open();\n    await this.eventLog.open();\n  }\n\n  public async close(): Promise<void> {\n    this.messageStore.close();\n    this.dataStore.close();\n    this.eventLog.close();\n  }\n\n  /**\n   * Processes the given DWN message and returns with a reply.\n   * @param tenant The tenant DID to route the given message to.\n   */\n  public async processMessage(tenant: string, rawMessage: any, dataStream?: Readable): Promise<MessageReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, rawMessage);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const handlerKey = rawMessage.descriptor.interface + rawMessage.descriptor.method;\n    const methodHandlerReply = await this.methodHandlers[handlerKey].handle({\n      tenant,\n      message: rawMessage as BaseMessage,\n      dataStream\n    });\n\n    return methodHandlerReply;\n  }\n\n  /**\n   * Handles a `RecordsRead` message.\n   */\n  public async handleRecordsRead(tenant: string, message: RecordsReadMessage): Promise<RecordsReadReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, message, DwnInterfaceName.Records, DwnMethodName.Read);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const handler = new RecordsReadHandler(this.didResolver, this.messageStore, this.dataStore);\n    return handler.handle({ tenant, message });\n  }\n\n  /**\n   * Handles a `MessagesGet` message.\n   */\n  public async handleMessagesGet(tenant: string, message: MessagesGetMessage): Promise<MessagesGetReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, message, DwnInterfaceName.Messages, DwnMethodName.Get);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const handler = new MessagesGetHandler(this.didResolver, this.messageStore, this.dataStore);\n    return handler.handle({ tenant, message });\n  }\n\n  /**\n   * Privileged method for writing a pruned initial `RecordsWrite` to a DWN without needing to supply associated data.\n   */\n  public async synchronizePrunedInitialRecordsWrite(tenant: string, message: RecordsWriteMessage): Promise<MessagesGetReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, message, DwnInterfaceName.Records, DwnMethodName.Write);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const methodHandlerReply = await this.prunedInitialRecordsWriteHandler.handle({ tenant, message });\n    return methodHandlerReply;\n  }\n\n  /**\n   * Common checks for handlers.\n   */\n  private async preprocessingChecks(\n    tenant: string,\n    rawMessage: any,\n    expectedInterface?: DwnInterfaceName,\n    expectedMethod?: DwnMethodName\n  ): Promise<MessageReply | undefined> {\n    const isTenant = await this.tenantGate.isTenant(tenant);\n    if (!isTenant) {\n      return new MessageReply({\n        status: { code: 401, detail: `${tenant} is not a tenant` }\n      });\n    }\n\n    // Verify interface and method\n    const dwnInterface = rawMessage?.descriptor?.interface;\n    const dwnMethod = rawMessage?.descriptor?.method;\n    if (dwnInterface === undefined || dwnMethod === undefined) {\n      return new MessageReply({\n        status: { code: 400, detail: `Both interface and method must be present, interface: ${dwnInterface}, method: ${dwnMethod}` }\n      });\n    }\n    if (expectedInterface !== undefined && expectedInterface !== dwnInterface) {\n      return new MessageReply({\n        status: { code: 400, detail: `Expected interface ${expectedInterface}, received ${dwnInterface}` }\n      });\n    }\n    if (expectedMethod !== undefined && expectedMethod !== dwnMethod) {\n      return new MessageReply({\n        status: { code: 400, detail: `Expected method ${expectedInterface}${expectedMethod}, received ${dwnInterface}${dwnMethod}` }\n      });\n    }\n\n    // validate message structure\n    try {\n      // consider to push this down to individual handlers\n      Message.validateJsonSchema(rawMessage);\n    } catch (error) {\n      return MessageReply.fromError(error, 400);\n    }\n\n    return undefined;\n  }\n\n  public async dump(): Promise<void> {\n    console.group('didResolver');\n    await this.didResolver['dump']?.();\n    console.groupEnd();\n\n    console.group('messageStore');\n    // @ts-ignore\n    await this.messageStore['dump']?.();\n    console.groupEnd();\n\n    console.group('dataStore');\n    // @ts-ignore\n    await this.dataStore['dump']?.();\n    console.groupEnd();\n\n    console.group('eventLog');\n    await this.eventLog['dump']?.();\n    console.groupEnd();\n  }\n};\n\nexport type DwnConfig = {\n  didResolver?: DidResolver,\n  messageStore?: MessageStore;\n  dataStore?: DataStore;\n  tenantGate?: TenantGate;\n  eventLog?: EventLog\n};\n", "import type { LevelWrapperBatchOperation } from '../store/level-wrapper.js';\nimport type { ULID } from 'ulid';\nimport type { Event, EventLog, GetEventsOptions } from './event-log.js';\n\nimport { monotonicFactory } from 'ulid';\nimport { createLevelDatabase, LevelWrapper } from '../store/level-wrapper.js';\n\ntype EventLogLevelConfig = {\n /**\n   * must be a directory path (relative or absolute) where\n   *  LevelDB will store its files, or in browsers, the name of the\n   * {@link https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase IDBDatabase} to be opened.\n  */\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};\n\nconst WATERMARKS_SUBLEVEL_NAME = 'watermarks';\nconst CIDS_SUBLEVEL_NAME = 'cids';\n\nexport class EventLogLevel implements EventLog {\n  config: EventLogLevelConfig;\n  db: LevelWrapper<string>;\n  ulid: ULID;\n\n  constructor(config?: EventLogLevelConfig) {\n    this.config = {\n      location: 'EVENTLOG',\n      createLevelDatabase,\n      ...config,\n    };\n\n    this.db = new LevelWrapper<string>({ ...this.config, valueEncoding: 'utf8' });\n    this.ulid = monotonicFactory();\n  }\n\n  async open(): Promise<void> {\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    return this.db.close();\n  }\n\n  async clear(): Promise<void> {\n    return this.db.clear();\n  }\n\n  async append(tenant: string, messageCid: string): Promise<string> {\n    const tenantEventLog = await this.db.partition(tenant);\n    const watermarkLog = await tenantEventLog.partition(WATERMARKS_SUBLEVEL_NAME);\n    const cidLog = await tenantEventLog.partition(CIDS_SUBLEVEL_NAME);\n\n    const watermark = this.ulid();\n\n    await watermarkLog.put(watermark, messageCid);\n    await cidLog.put(messageCid, watermark);\n\n    return watermark;\n  }\n\n  async getEvents(tenant: string, options?: GetEventsOptions): Promise<Event[]> {\n    const tenantEventLog = await this.db.partition(tenant);\n    const watermarkLog = await tenantEventLog.partition(WATERMARKS_SUBLEVEL_NAME);\n    const events: Array<Event> = [];\n\n    for await (const [key, value] of watermarkLog.iterator(options)) {\n      const event = { watermark: key, messageCid: value };\n      events.push(event);\n    }\n\n    return events;\n  }\n\n  async deleteEventsByCid(tenant: string, cids: Array<string>): Promise<number> {\n    if (cids.length === 0) {\n      return 0;\n    }\n\n    const tenantEventLog = await this.db.partition(tenant);\n    const cidLog = await tenantEventLog.partition(CIDS_SUBLEVEL_NAME);\n\n    let ops: LevelWrapperBatchOperation<string>[] = [];\n    const promises: Array<Promise<string | undefined>> = [];\n\n    for (const cid of cids) {\n      ops.push({ type: 'del', key: cid });\n\n      const promise = cidLog.get(cid).catch(e => e);\n      promises.push(promise);\n    }\n\n    await cidLog.batch(ops);\n\n    ops = [];\n    let numEventsDeleted = 0;\n\n    const watermarks: Array<string | undefined> = await Promise.all(promises);\n    for (const watermark of watermarks) {\n      if (watermark) {\n        ops.push({ type: 'del', key: watermark });\n        numEventsDeleted += 1;\n      }\n    }\n\n    const watermarkLog = await tenantEventLog.partition('watermarks');\n    await watermarkLog.batch(ops);\n\n    return numEventsDeleted;\n  }\n\n  async dump(): Promise<void> {\n    console.group('db');\n    await this.db['dump']?.();\n    console.groupEnd();\n  }\n}", "function createError(message) {\n    var err = new Error(message);\n    err.source = \"ulid\";\n    return err;\n}\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nvar ENCODING = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"; // Crockford's Base32\nvar ENCODING_LEN = ENCODING.length;\nvar TIME_MAX = Math.pow(2, 48) - 1;\nvar TIME_LEN = 10;\nvar RANDOM_LEN = 16;\nfunction replaceCharAt(str, index, char) {\n    if (index > str.length - 1) {\n        return str;\n    }\n    return str.substr(0, index) + char + str.substr(index + 1);\n}\nfunction incrementBase32(str) {\n    var done = undefined;\n    var index = str.length;\n    var char = void 0;\n    var charIndex = void 0;\n    var maxCharIndex = ENCODING_LEN - 1;\n    while (!done && index-- >= 0) {\n        char = str[index];\n        charIndex = ENCODING.indexOf(char);\n        if (charIndex === -1) {\n            throw createError(\"incorrectly encoded string\");\n        }\n        if (charIndex === maxCharIndex) {\n            str = replaceCharAt(str, index, ENCODING[0]);\n            continue;\n        }\n        done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n    }\n    if (typeof done === \"string\") {\n        return done;\n    }\n    throw createError(\"cannot increment this string\");\n}\nfunction randomChar(prng) {\n    var rand = Math.floor(prng() * ENCODING_LEN);\n    if (rand === ENCODING_LEN) {\n        rand = ENCODING_LEN - 1;\n    }\n    return ENCODING.charAt(rand);\n}\nfunction encodeTime(now, len) {\n    if (isNaN(now)) {\n        throw new Error(now + \" must be a number\");\n    }\n    if (now > TIME_MAX) {\n        throw createError(\"cannot encode time greater than \" + TIME_MAX);\n    }\n    if (now < 0) {\n        throw createError(\"time must be positive\");\n    }\n    if (Number.isInteger(now) === false) {\n        throw createError(\"time must be an integer\");\n    }\n    var mod = void 0;\n    var str = \"\";\n    for (; len > 0; len--) {\n        mod = now % ENCODING_LEN;\n        str = ENCODING.charAt(mod) + str;\n        now = (now - mod) / ENCODING_LEN;\n    }\n    return str;\n}\nfunction encodeRandom(len, prng) {\n    var str = \"\";\n    for (; len > 0; len--) {\n        str = randomChar(prng) + str;\n    }\n    return str;\n}\nfunction decodeTime(id) {\n    if (id.length !== TIME_LEN + RANDOM_LEN) {\n        throw createError(\"malformed ulid\");\n    }\n    var time = id.substr(0, TIME_LEN).split(\"\").reverse().reduce(function (carry, char, index) {\n        var encodingIndex = ENCODING.indexOf(char);\n        if (encodingIndex === -1) {\n            throw createError(\"invalid character found: \" + char);\n        }\n        return carry += encodingIndex * Math.pow(ENCODING_LEN, index);\n    }, 0);\n    if (time > TIME_MAX) {\n        throw createError(\"malformed ulid, timestamp too large\");\n    }\n    return time;\n}\nfunction detectPrng() {\n    var allowInsecure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var root = arguments[1];\n\n    if (!root) {\n        root = typeof window !== \"undefined\" ? window : null;\n    }\n    var browserCrypto = root && (root.crypto || root.msCrypto);\n    if (browserCrypto) {\n        return function () {\n            var buffer = new Uint8Array(1);\n            browserCrypto.getRandomValues(buffer);\n            return buffer[0] / 0xff;\n        };\n    } else {\n        try {\n            var nodeCrypto = require(\"crypto\");\n            return function () {\n                return nodeCrypto.randomBytes(1).readUInt8() / 0xff;\n            };\n        } catch (e) {}\n    }\n    if (allowInsecure) {\n        try {\n            console.error(\"secure crypto unusable, falling back to insecure Math.random()!\");\n        } catch (e) {}\n        return function () {\n            return Math.random();\n        };\n    }\n    throw createError(\"secure crypto unusable, insecure Math.random not allowed\");\n}\nfunction factory(currPrng) {\n    if (!currPrng) {\n        currPrng = detectPrng();\n    }\n    return function ulid(seedTime) {\n        if (isNaN(seedTime)) {\n            seedTime = Date.now();\n        }\n        return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, currPrng);\n    };\n}\nfunction monotonicFactory(currPrng) {\n    if (!currPrng) {\n        currPrng = detectPrng();\n    }\n    var lastTime = 0;\n    var lastRandom = void 0;\n    return function ulid(seedTime) {\n        if (isNaN(seedTime)) {\n            seedTime = Date.now();\n        }\n        if (seedTime <= lastTime) {\n            var incrementedRandom = lastRandom = incrementBase32(lastRandom);\n            return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n        }\n        lastTime = seedTime;\n        var newRandom = lastRandom = encodeRandom(RANDOM_LEN, currPrng);\n        return encodeTime(seedTime, TIME_LEN) + newRandom;\n    };\n}\nvar ulid = factory();\n\nexport { replaceCharAt, incrementBase32, randomChar, encodeTime, encodeRandom, decodeTime, detectPrng, factory, monotonicFactory, ulid };\n", "import type { DidResolver } from '../../../index.js';\nimport type { EventLog } from '../../../event-log/event-log.js';\nimport type { GetEventsOptions } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { EventsGetMessage, EventsGetReply } from '../types.js';\n\nimport { EventsGet } from '../messages/events-get.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { authenticate, authorize } from '../../../core/auth.js';\n\ntype HandleArgs = {tenant: string, message: EventsGetMessage};\n\nexport class EventsGetHandler implements MethodHandler {\n  constructor(private didResolver: DidResolver, private eventLog: EventLog) {}\n\n  public async handle({ tenant, message }: HandleArgs): Promise<EventsGetReply> {\n    let eventsGet: EventsGet;\n\n    try {\n      eventsGet = await EventsGet.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await authorize(tenant, eventsGet);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // if watermark was provided in message, get all events _after_ the watermark.\n    // Otherwise, get all events.\n    let options: GetEventsOptions | undefined;\n    if (message.descriptor.watermark) {\n      options = { gt: message.descriptor.watermark };\n    }\n\n    const events = await this.eventLog.getEvents(tenant, options);\n\n    return {\n      status: { code: 200, detail: 'OK' },\n      events\n    };\n  }\n}", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { EventsGetDescriptor, EventsGetMessage } from '../types.js';\n\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport type EventsGetOptions = {\n  watermark?: string;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class EventsGet extends Message<EventsGetMessage> {\n\n  public static async parse(message: EventsGetMessage): Promise<EventsGet> {\n    Message.validateJsonSchema(message);\n    await validateAuthorizationIntegrity(message);\n\n    return new EventsGet(message);\n  }\n\n  public static async create(options: EventsGetOptions): Promise<EventsGet> {\n    const descriptor: EventsGetDescriptor = {\n      interface : DwnInterfaceName.Events,\n      method    : DwnMethodName.Get,\n    };\n\n    if (options.watermark) {\n      descriptor.watermark = options.watermark;\n    }\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new EventsGet(message);\n  }\n}", "import type { QueryResultEntry } from './types.js';\nimport type { Readable } from 'readable-stream';\n\ntype Status = {\n  code: number\n  detail: string\n};\n\ntype MessageReplyOptions = {\n  status: Status,\n  entries?: QueryResultEntry[];\n  data? : Readable;\n};\n\nexport type BaseMessageReply = {\n  status: Status;\n};\n\nexport class MessageReply {\n  status: Status;\n\n  /**\n   * Resulting message entries or events returned from the invocation of the corresponding message.\n   * e.g. the resulting messages from a RecordsQuery\n   * Mutually exclusive with `data`.\n   */\n  entries?: QueryResultEntry[];\n\n  /**\n   * Data corresponding to the message received if applicable (e.g. RecordsRead).\n   * Mutually exclusive with `entries`.\n   */\n  data?: Readable;\n\n  constructor(opts: MessageReplyOptions) {\n    const { status, entries, data } = opts;\n\n    this.status = status;\n    this.entries = entries;\n    this.data = data;\n  }\n\n  static fromError(e: unknown, code: number): MessageReply {\n\n    const detail = e instanceof Error ? e.message : 'Error';\n\n    return new MessageReply({ status: { code, detail } });\n  }\n}", "import type { DataStore } from '../../../store/data-store.js';\nimport type { DidResolver } from '../../../did/did-resolver.js';\nimport type { MessageStore } from '../../../store/message-store.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { MessagesGetMessage, MessagesGetReply, MessagesGetReplyEntry } from '../types.js';\n\nimport { DataStream } from '../../../utils/data-stream.js';\nimport { DwnConstant } from '../../../core/dwn-constant.js';\nimport { Encoder } from '../../../utils/encoder.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { MessagesGet } from '../messages/messages-get.js';\nimport { authenticate, authorize } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\ntype HandleArgs = { tenant: string, message: MessagesGetMessage };\n\nexport class MessagesGetHandler implements MethodHandler {\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore) {}\n\n  public async handle({ tenant, message }: HandleArgs): Promise<MessagesGetReply> {\n    let messagesGet: MessagesGet;\n\n    try {\n      messagesGet = await MessagesGet.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await authorize(tenant, messagesGet);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    const promises: Promise<MessagesGetReplyEntry>[] = [];\n    const messageCids = new Set(message.descriptor.messageCids);\n\n    for (const messageCid of messageCids) {\n      const promise = this.messageStore.get(tenant, messageCid)\n        .then(message => {\n          return { messageCid, message };\n        })\n        .catch(_ => {\n          return { messageCid, message: undefined, error: `Failed to get message ${messageCid}` };\n        });\n\n      promises.push(promise);\n    }\n\n    const messages = await Promise.all(promises);\n\n    // for every message, include associated data as `encodedData` IF:\n    //  * its a RecordsWrite\n    //  * the data size is equal or smaller than the size threshold\n    //! NOTE: this is somewhat duplicate code that also exists in `StorageController.query`.\n    for (const entry of messages) {\n      const { message } = entry;\n\n      if (!message) {\n        continue;\n      }\n\n      const { interface: messageInterface, method } = message.descriptor;\n      if (messageInterface !== DwnInterfaceName.Records || method !== DwnMethodName.Write) {\n        continue;\n      }\n\n      const dataCid = message.descriptor.dataCid;\n      const dataSize = message.descriptor.dataSize;\n\n      if (dataCid !== undefined && dataSize! <= DwnConstant.maxDataSizeAllowedToBeEncoded) {\n        const messageCid = await Message.getCid(message);\n        const result = await this.dataStore.get(tenant, messageCid, dataCid);\n\n        if (result) {\n          const dataBytes = await DataStream.toBytes(result.dataStream);\n          entry.encodedData = Encoder.bytesToBase64Url(dataBytes);\n        }\n      }\n    }\n\n    return {\n      status: { code: 200, detail: 'OK' },\n      messages\n    };\n  }\n}", "export class DwnConstant {\n  /**\n   * The maximum size of raw data that will be returned as `encodedData`.\n   */\n  public static readonly maxDataSizeAllowedToBeEncoded = 10_000;\n}", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { MessagesGetDescriptor, MessagesGetMessage } from '../types.js';\n\nimport { parseCid } from '../../../utils/cid.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport type MessagesGetOptions = {\n  messageCids: string[];\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class MessagesGet extends Message<MessagesGetMessage> {\n  public static async parse(message: MessagesGetMessage): Promise<MessagesGet> {\n    Message.validateJsonSchema(message);\n    this.validateMessageCids(message.descriptor.messageCids);\n\n    await validateAuthorizationIntegrity(message);\n\n    return new MessagesGet(message);\n  }\n\n  public static async create(options: MessagesGetOptions): Promise<MessagesGet> {\n    const descriptor: MessagesGetDescriptor = {\n      interface   : DwnInterfaceName.Messages,\n      method      : DwnMethodName.Get,\n      messageCids : options.messageCids\n    };\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n    MessagesGet.validateMessageCids(options.messageCids);\n\n    return new MessagesGet(message);\n  }\n\n  /**\n   * validates the provided cids\n   * @param messageCids - the cids in question\n   * @throws {Error} if an invalid cid is found.\n   */\n  private static validateMessageCids(messageCids: string[]): void {\n    for (const cid of messageCids) {\n      try {\n        parseCid(cid);\n      } catch (_) {\n        throw new Error(`${cid} is not a valid CID`);\n      }\n    }\n  }\n}", "import type { BaseMessage, Filter } from '../core/types.js';\nimport type { MessageStore, MessageStoreOptions } from './message-store.js';\n\nimport * as block from 'multiformats/block';\nimport * as cbor from '@ipld/dag-cbor';\n\nimport { abortOr } from '../utils/abort.js';\nimport { BlockstoreLevel } from './blockstore-level.js';\nimport { CID } from 'multiformats/cid';\nimport { createLevelDatabase } from './level-wrapper.js';\nimport { IndexLevel } from './index-level.js';\nimport { sha256 } from 'multiformats/hashes/sha2';\n\n/**\n * A simple implementation of {@link MessageStore} that works in both the browser and server-side.\n * Leverages LevelDB under the hood.\n */\nexport class MessageStoreLevel implements MessageStore {\n  config: MessageStoreLevelConfig;\n\n  blockstore: BlockstoreLevel;\n\n  index: IndexLevel;\n\n  /**\n   * @param {MessageStoreLevelConfig} config\n   * @param {string} config.blockstoreLocation - must be a directory path (relative or absolute) where\n   *  LevelDB will store its files, or in browsers, the name of the\n   * {@link https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase IDBDatabase} to be opened.\n   * @param {string} config.indexLocation - same as config.blockstoreLocation\n   */\n  constructor(config: MessageStoreLevelConfig = {}) {\n    this.config = {\n      blockstoreLocation : 'MESSAGESTORE',\n      indexLocation      : 'INDEX',\n      createLevelDatabase,\n      ...config\n    };\n\n    this.blockstore = new BlockstoreLevel({\n      location            : this.config.blockstoreLocation!,\n      createLevelDatabase : this.config.createLevelDatabase,\n    });\n\n    this.index = new IndexLevel({\n      location            : this.config.indexLocation!,\n      createLevelDatabase : this.config.createLevelDatabase,\n    });\n  }\n\n  async open(): Promise<void> {\n    await this.blockstore.open();\n    await this.index.open();\n  }\n\n  async close(): Promise<void> {\n    await this.blockstore.close();\n    await this.index.close();\n  }\n\n  async get(tenant: string, cidString: string, options?: MessageStoreOptions): Promise<BaseMessage | undefined> {\n    options?.signal?.throwIfAborted();\n\n    const partition = await abortOr(options?.signal, this.blockstore.partition(tenant));\n\n    const cid = CID.parse(cidString);\n    const bytes = await partition.get(cid, options);\n\n    if (!bytes) {\n      return undefined;\n    }\n\n    const decodedBlock = await abortOr(options?.signal, block.decode({ bytes, codec: cbor, hasher: sha256 }));\n\n    const messageJson = decodedBlock.value as BaseMessage;\n    return messageJson;\n  }\n\n  async query(tenant: string, filter: Filter, options?: MessageStoreOptions): Promise<BaseMessage[]> {\n    options?.signal?.throwIfAborted();\n\n    const messages: BaseMessage[] = [];\n\n    const resultIds = await this.index.query({ ...filter, tenant }, options);\n\n    for (const id of resultIds) {\n      const message = await this.get(tenant, id, options);\n      if (message) { messages.push(message); }\n    }\n\n    return messages;\n  }\n\n  async delete(tenant: string, cidString: string, options?: MessageStoreOptions): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    const partition = await abortOr(options?.signal, this.blockstore.partition(tenant));\n\n    const cid = CID.parse(cidString);\n    await partition.delete(cid, options);\n    await this.index.delete(cidString, options);\n  }\n\n  async put(\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    options?: MessageStoreOptions\n  ): Promise<void> {\n    options?.signal?.throwIfAborted();\n\n    const partition = await abortOr(options?.signal, this.blockstore.partition(tenant));\n\n    const encodedMessageBlock = await abortOr(options?.signal, block.encode({ value: message, codec: cbor, hasher: sha256 }));\n\n    await partition.put(encodedMessageBlock.cid, encodedMessageBlock.bytes, options);\n\n    const encodedMessageBlockCid = encodedMessageBlock.cid.toString();\n    const indexDocument = {\n      ...indexes,\n      tenant,\n    };\n    await this.index.put(encodedMessageBlockCid, indexDocument, options);\n  }\n\n  /**\n   * deletes everything in the underlying blockstore and indices.\n   */\n  async clear(): Promise<void> {\n    await this.blockstore.clear();\n    await this.index.clear();\n  }\n\n  async dump(): Promise<void> {\n    console.group('blockstore');\n    await this.blockstore['dump']?.();\n    console.groupEnd();\n\n    console.group('index');\n    await this.index['dump']?.();\n    console.groupEnd();\n  }\n}\n\ntype MessageStoreLevelConfig = {\n  blockstoreLocation?: string,\n  indexLocation?: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};", "import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n  return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n  if (value != null && typeof value === 'object') {\n    if (Array.isArray(value)) {\n      for (const [index, element] of value.entries()) {\n        const elementPath = [...path, index]\n        const cid = CID.asCID(element)\n        if (cid) {\n          yield [elementPath.join('/'), cid]\n        } else if (typeof element === 'object') {\n          yield * links(element, elementPath)\n        }\n      }\n    } else {\n      const cid = CID.asCID(value)\n      if (cid) {\n        yield [path.join('/'), cid]\n      } else {\n        yield * links(value, path)\n      }\n    }\n  }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n  if (source == null || source instanceof Uint8Array) {\n    return\n  }\n  const cid = CID.asCID(source)\n  if (cid) {\n    yield [base.join('/'), cid]\n  }\n  for (const [key, value] of Object.entries(source)) {\n    const path = /** @type {[string|number, string]} */ ([...base, key])\n    yield * linksWithin(path, value)\n  }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<string>}\n */\nfunction * treeWithin (path, value) {\n  if (Array.isArray(value)) {\n    for (const [index, element] of value.entries()) {\n      const elementPath = [...path, index]\n      yield elementPath.join('/')\n      if (typeof element === 'object' && !CID.asCID(element)) {\n        yield * tree(element, elementPath)\n      }\n    }\n  } else {\n    yield * tree(value, path)\n  }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<string>}\n */\nfunction * tree (source, base) {\n  if (source == null || typeof source !== 'object') {\n    return\n  }\n  for (const [key, value] of Object.entries(source)) {\n    const path = /** @type {[string|number, string]} */ ([...base, key])\n    yield path.join('/')\n    if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n      yield * treeWithin(path, value)\n    }\n  }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView<unknown>}\n */\nfunction get (source, path) {\n  let node = /** @type {Record<string, any>} */(source)\n  for (const [index, key] of path.entries()) {\n    node = node[key]\n    if (node == null) {\n      throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`)\n    }\n    const cid = CID.asCID(node)\n    if (cid) {\n      return { value: cid, remaining: path.slice(index + 1).join('/') }\n    }\n  }\n  return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView<T, C, A, V>}\n */\nclass Block {\n  /**\n   * @param {object} options\n   * @param {CID<T, C, A, V>} options.cid\n   * @param {API.ByteView<T>} options.bytes\n   * @param {T} options.value\n   */\n  constructor ({ cid, bytes, value }) {\n    if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n    this.cid = cid\n    this.bytes = bytes\n    this.value = value\n    this.asBlock = this\n\n    // Mark all the properties immutable\n    Object.defineProperties(this, {\n      cid: readonly(),\n      bytes: readonly(),\n      value: readonly(),\n      asBlock: readonly()\n    })\n  }\n\n  links () {\n    return links(this.value, [])\n  }\n\n  tree () {\n    return tree(this.value, [])\n  }\n\n  /**\n   *\n   * @param {string} [path]\n   * @returns {API.BlockCursorView<unknown>}\n   */\n  get (path = '/') {\n    return get(this.value, path.split('/').filter(Boolean))\n  }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function encode ({ value, codec, hasher }) {\n  if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n  if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n  const bytes = codec.encode(value)\n  const hash = await hasher.digest(bytes)\n  /** @type {CID<T, Code, Alg, 1>} */\n  const cid = CID.create(\n    1,\n    codec.code,\n    hash\n  )\n\n  return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n  if (!bytes) throw new Error('Missing required argument \"bytes\"')\n  if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n  const value = codec.decode(bytes)\n  const hash = await hasher.digest(bytes)\n  /** @type {CID<T, Code, Alg, 1>} */\n  const cid = CID.create(1, codec.code, hash)\n\n  return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link<T, Code, Alg, V>, value:T, codec?: API.BlockDecoder<Code, T>, bytes: API.ByteView<T> }|{cid:API.Link<T, Code, Alg, V>, bytes:API.ByteView<T>, value?:void, codec:API.BlockDecoder<Code, T>}} options\n * @returns {API.BlockView<T, Code, Alg, V>}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n  const value = maybeValue !== undefined\n    ? maybeValue\n    : (codec && codec.decode(bytes))\n\n  if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n  return new Block({\n    // eslint-disable-next-line object-shorthand\n    cid: /** @type {CID<T, Code, Alg, V>} */ (cid),\n    bytes,\n    value\n  })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link<T, Code, Alg, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg, V>>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n  if (!bytes) throw new Error('Missing required argument \"bytes\"')\n  if (!hasher) throw new Error('Missing required argument \"hasher\"')\n  const value = codec.decode(bytes)\n  const hash = await hasher.digest(bytes)\n  if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n    throw new Error('CID hash does not match bytes')\n  }\n\n  return createUnsafe({\n    bytes,\n    cid,\n    value,\n    codec\n  })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n", "import type { Filter, RangeFilter } from '../core/types.js';\nimport type { LevelWrapperBatchOperation, LevelWrapperIteratorOptions } from './level-wrapper.js';\n\nimport { flatten } from '../utils/object.js';\nimport { createLevelDatabase, LevelWrapper } from './level-wrapper.js';\n\nexport type Entry = {\n  [property: string]: unknown\n};\n\nexport interface IndexLevelOptions {\n  signal?: AbortSignal;\n}\n\n/**\n * A LevelDB implementation for indexing the messages stored in the DWN.\n */\nexport class IndexLevel {\n  config: IndexLevelConfig;\n\n  db: LevelWrapper<string>;\n\n  constructor(config: IndexLevelConfig) {\n    this.config = {\n      createLevelDatabase,\n      ...config\n    };\n\n    this.db = new LevelWrapper<string>({ ...this.config, valueEncoding: 'utf8' });\n  }\n\n  async open(): Promise<void> {\n    return this.db.open();\n  }\n\n  async close(): Promise<void> {\n    return this.db.close();\n  }\n\n  async put(id: string, entry: Entry, options?: IndexLevelOptions): Promise<void> {\n    entry = flatten(entry) as Entry;\n\n    const ops: LevelWrapperBatchOperation<string>[] = [ ];\n    const prefixes: string[] = [ ];\n    for (const property in entry) {\n      const value = entry[property];\n\n      const prefix = this.join(property, this.encodeValue(value));\n      ops.push({ type: 'put', key: this.join(prefix, id), value: id });\n      prefixes.push(prefix);\n    }\n    ops.push({ type: 'put', key: `__${id}__prefixes`, value: JSON.stringify(prefixes) });\n\n    return this.db.batch(ops, options);\n  }\n\n  async query(filter: Filter, options?: IndexLevelOptions): Promise<Array<string>> {\n    const requiredProperties = new Set<string>();\n    const missingPropertiesForID: { [id: string]: Set<string> } = { };\n    const promises: Promise<Matches>[] = [ ];\n    const matchedIDs: string[] = [ ];\n\n    async function checkMatches(property: string, promise: Promise<Matches>): Promise<void> {\n      promises.push(promise);\n\n      for (const [ _, id ] of await promise) {\n        missingPropertiesForID[id] ??= new Set<string>([ ...requiredProperties ]);\n        missingPropertiesForID[id].delete(property);\n        if (missingPropertiesForID[id].size === 0) {\n          matchedIDs.push(id);\n        }\n      }\n    }\n\n    for (const propertyName in filter) {\n      const propertyFilter = filter[propertyName];\n\n      if (typeof propertyFilter === 'object' && propertyFilter !== null) {\n        if (Array.isArray(propertyFilter)) {\n          for (const propertyValue of new Set(propertyFilter)) {\n            checkMatches(propertyName, this.findExactMatches(propertyName, propertyValue, options));\n          }\n        } else {\n          checkMatches(propertyName, this.findRangeMatches(propertyName, propertyFilter, options));\n        }\n      } else {\n        checkMatches(propertyName, this.findExactMatches(propertyName, propertyFilter, options));\n      }\n\n      requiredProperties.add(propertyName);\n    }\n\n    await Promise.all(promises);\n\n    return matchedIDs;\n  }\n\n  async delete(id: string, options?: IndexLevelOptions): Promise<void> {\n    const prefixes = await this.db.get(`__${id}__prefixes`, options);\n    if (!prefixes) {\n      return;\n    }\n\n    const ops: LevelWrapperBatchOperation<string>[] = [ ];\n    for (const prefix of JSON.parse(prefixes)) {\n      ops.push({ type: 'del', key: this.join(prefix, id) });\n    }\n    ops.push({ type: 'del', key: `__${id}__prefixes` });\n\n    return this.db.batch(ops, options);\n  }\n\n  async clear(): Promise<void> {\n    return this.db.clear();\n  }\n\n  private async findExactMatches(propertyName: string, propertyValue: unknown, options?: IndexLevelOptions): Promise<Matches> {\n    const propertyKey = this.join(propertyName, this.encodeValue(propertyValue));\n\n    const iteratorOptions: LevelWrapperIteratorOptions<string> = {\n      gt: propertyKey\n    };\n\n    return this.findMatches(propertyKey, iteratorOptions, options);\n  }\n\n  private async findRangeMatches(propertyName: string, range: RangeFilter, options?: IndexLevelOptions): Promise<Matches> {\n    const propertyKey = this.join(propertyName);\n\n    const iteratorOptions: LevelWrapperIteratorOptions<string> = { };\n    for (const comparator in range) {\n      iteratorOptions[comparator] = this.join(propertyName, this.encodeValue(range[comparator]));\n    }\n\n    const matches = await this.findMatches(propertyKey, iteratorOptions, options);\n\n    if ('lte' in range) {\n      // When using `lte` we must also query for an exact match due to how we're encoding values.\n      // For example, `{ lte: 'foo' }` would not match `'foo\\x02bar'`.\n      for (const [ key, value ] of await this.findExactMatches(propertyName, range.lte, options)) {\n        matches.set(key, value);\n      }\n    }\n\n    return matches;\n  }\n\n  private async findMatches(\n    propertyName: string,\n    iteratorOptions: LevelWrapperIteratorOptions<string>,\n    options?: IndexLevelOptions\n  ): Promise<Matches> {\n    // Since we will stop iterating if we encounter entries that do not start with the `propertyName`, we need to always start from the upper bound.\n    // For example, `{ lte: 'b' }` would immediately stop if the data was `[ 'a', 'ab', 'b' ]` since `'a'` does not start with `'b'`.\n    if (('lt' in iteratorOptions || 'lte' in iteratorOptions) && !('gt' in iteratorOptions || 'gte' in iteratorOptions)) {\n      iteratorOptions.reverse = true;\n    }\n\n    const matches = new Map<string, string>;\n    for await (const [ key, value ] of this.db.iterator(iteratorOptions, options)) {\n      if (!key.startsWith(propertyName)) {\n        break;\n      }\n\n      matches.set(key, value);\n    }\n    return matches;\n  }\n\n  private encodeValue(value: unknown): string {\n    if (typeof value === 'string') {\n      // We can't just `JSON.stringify` as that'll affect the sort order of strings.\n      // For example, `'\\x00'` becomes `'\\\\u0000'`.\n      return `\"${value}\"`;\n    }\n\n    return String(value);\n  }\n\n  private join(...values: unknown[]): string {\n    return values.join(`\\x00`);\n  }\n\n  async dump(): Promise<void> {\n    console.group('db');\n    await this.db['dump']?.();\n    console.groupEnd();\n  }\n}\n\ntype IndexLevelConfig = {\n  location: string,\n  createLevelDatabase?: typeof createLevelDatabase,\n};\n\ntype Matches = Map<string, string>;", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { ProtocolsConfigureMessage } from '../types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { canonicalAuth } from '../../../core/auth.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { ProtocolsConfigure } from '../messages/protocols-configure.js';\nimport { StorageController } from '../../../store/storage-controller.js';\n\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport class ProtocolsConfigureHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore, private eventLog: EventLog) { }\n\n  public async handle({\n    tenant,\n    message,\n    dataStream\n  }: {tenant: string, message: ProtocolsConfigureMessage, dataStream: _Readable.Readable}): Promise<MessageReply> {\n\n    let protocolsConfigure: ProtocolsConfigure;\n    try {\n      protocolsConfigure = await ProtocolsConfigure.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication & authorization\n    try {\n      await canonicalAuth(tenant, protocolsConfigure, this.didResolver);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // attempt to get existing protocol\n    const query = {\n      interface : DwnInterfaceName.Protocols,\n      method    : DwnMethodName.Configure,\n      protocol  : message.descriptor.definition.protocol\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as ProtocolsConfigureMessage[];\n\n    // find lexicographically the largest message, and if the incoming message is the largest\n    let newestMessage = await Message.getMessageWithLargestCid(existingMessages);\n    let incomingMessageIsNewest = false;\n    if (newestMessage === undefined || await Message.isCidLarger(message, newestMessage)) {\n      incomingMessageIsNewest = true;\n      newestMessage = message;\n    }\n\n    // write the incoming message to DB if incoming message is newest\n    let messageReply: MessageReply;\n    if (incomingMessageIsNewest) {\n      const indexes = ProtocolsConfigureHandler.constructProtocolsConfigureIndexes(protocolsConfigure);\n\n      await StorageController.put(this.messageStore, this.dataStore, this.eventLog, tenant, message, indexes, dataStream);\n\n      messageReply = new MessageReply({\n        status: { code: 202, detail: 'Accepted' }\n      });\n    } else {\n      messageReply = new MessageReply({\n        status: { code: 409, detail: 'Conflict' }\n      });\n    }\n\n    // delete all existing records that are smaller\n    const deletedMessageCids: string[] = [];\n    for (const message of existingMessages) {\n      if (await Message.isCidLarger(newestMessage, message)) {\n        const messageCid = await Message.getCid(message);\n        deletedMessageCids.push(messageCid);\n\n        await StorageController.delete(this.messageStore, this.dataStore, tenant, message);\n      }\n    }\n\n    await this.eventLog.deleteEventsByCid(tenant, deletedMessageCids);\n\n    return messageReply;\n  };\n\n  private static constructProtocolsConfigureIndexes(protocolsConfigure: ProtocolsConfigure): Record<string, string> {\n    // strip out `dataSize` and `definition` as they are not indexable\n    // retain protocol url from `definition`\n    const { dataSize, definition, ...propertiesToIndex } = protocolsConfigure.message.descriptor;\n    const { author } = protocolsConfigure;\n\n    const indexes = {\n      ...propertiesToIndex,\n      protocol : definition.protocol,\n      author   : author!\n    };\n\n    return indexes;\n  }\n}", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { ProtocolDefinition, ProtocolsConfigureDescriptor, ProtocolsConfigureMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\n\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\nimport { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../../../utils/url.js';\n\nexport type ProtocolsConfigureOptions = {\n  dateCreated? : string;\n  definition : ProtocolDefinition;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class ProtocolsConfigure extends Message<ProtocolsConfigureMessage> {\n\n  public static async parse(message: ProtocolsConfigureMessage): Promise<ProtocolsConfigure> {\n    await validateAuthorizationIntegrity(message);\n    ProtocolsConfigure.validateDefinitionNormalized(message.descriptor.definition);\n\n    return new ProtocolsConfigure(message);\n  }\n\n  public static async create(options: ProtocolsConfigureOptions): Promise<ProtocolsConfigure> {\n    const descriptor: ProtocolsConfigureDescriptor = {\n      interface   : DwnInterfaceName.Protocols,\n      method      : DwnMethodName.Configure,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      // TODO: #139 - move definition out of the descriptor - https://github.com/TBD54566975/dwn-sdk-js/issues/139\n      definition  : ProtocolsConfigure.normalizeDefinition(options.definition)\n    };\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    const protocolsConfigure = new ProtocolsConfigure(message);\n    return protocolsConfigure;\n  }\n\n  private static validateDefinitionNormalized(definition: ProtocolDefinition): void {\n    const { protocol, types } = definition;\n\n    // validate protocol url\n    validateProtocolUrlNormalized(protocol);\n\n    // validate schema url normalized\n    for (const typeName in types) {\n      const schema = types[typeName].schema;\n      if (schema !== undefined) {\n        validateSchemaUrlNormalized(schema);\n      }\n    }\n  }\n\n  private static normalizeDefinition(definition: ProtocolDefinition): ProtocolDefinition {\n    const typesCopy = { ...definition.types };\n\n    // Normalize schema url\n    for (const typeName in typesCopy) {\n      const schema = typesCopy[typeName].schema;\n      if (schema !== undefined) {\n        typesCopy[typeName].schema = normalizeSchemaUrl(schema);\n      }\n    }\n\n    return {\n      ...definition,\n      protocol : normalizeProtocolUrl(definition.protocol),\n      types    : typesCopy,\n    };\n  }\n}\n", "import type { DataStore } from './data-store.js';\nimport type { EventLog } from '../event-log/event-log.js';\nimport type { MessageStore } from './message-store.js';\nimport type { Readable } from 'readable-stream';\nimport type { BaseMessage, Filter } from '../core/types.js';\n\nimport { DwnConstant } from '../core/dwn-constant.js';\nimport { Message } from '../core/message.js';\nimport type { RecordsWriteMessage } from '../index.js';\nimport { DataStream, Encoder } from '../index.js';\nimport { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\n/**\n * A class that provides an abstraction for the usage of BlockStore and DataStore.\n */\nexport class StorageController {\n  /**\n   * Puts the given message and data in storage.\n   * @throws {DwnError} with `DwnErrorCode.StorageControllerDataCidMismatch`\n   *                    if the data stream resulted in a data CID that mismatches with `dataCid` in the given message\n   * @throws {DwnError} with `DwnErrorCode.StorageControllerDataSizeMismatch`\n   *                    if `dataSize` in `descriptor` given mismatches the actual data size\n   */\n  public static async put(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    eventLog: EventLog,\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    dataStream?: Readable\n  ): Promise<void> {\n    const messageCid = await Message.getCid(message);\n\n    // if `dataCid` is given, it means there is corresponding data associated with this message\n    if (message.descriptor.dataCid !== undefined) {\n      let result;\n      if (dataStream === undefined) {\n        // but NOTE: it is possible that a data stream is not given even when `dataCid` is given, for instance,\n        // a subsequent RecordsWrite that changes the `published` property, but the data hasn't changed,\n        // in this case requiring re-uploading of the data is extremely inefficient so we allow omission of data stream as a utility function,\n        // but this method assumes checks for the appropriate conditions already took place prior to calling this method.\n        result = await dataStore.associate(tenant, messageCid, message.descriptor.dataCid);\n      } else {\n        result = await dataStore.put(tenant, messageCid, message.descriptor.dataCid, dataStream);\n      }\n\n      // MUST verify that the size of the actual data matches with the given `dataSize`\n      // if data size is wrong, delete the data we just stored\n      if (message.descriptor.dataSize !== result.dataSize) {\n        // there is an opportunity to improve here: handle the edge cae of if the delete fails...\n        await dataStore.delete(tenant, messageCid, message.descriptor.dataCid);\n\n        throw new DwnError(\n          DwnErrorCode.StorageControllerDataSizeMismatch,\n          `actual data size ${result.dataSize} bytes does not match dataSize in descriptor: ${message.descriptor.dataSize}`\n        );\n      }\n\n      // MUST verify that the CID of the actual data matches with the given `dataCid`\n      // if data CID is wrong, delete the data we just stored\n      if (message.descriptor.dataCid !== result.dataCid) {\n        // there is an opportunity to improve here: handle the edge cae of if the delete fails...\n        await dataStore.delete(tenant, messageCid, message.descriptor.dataCid);\n\n        throw new DwnError(\n          DwnErrorCode.StorageControllerDataCidMismatch,\n          `actual data CID ${result.dataCid} does not match dataCid in descriptor: ${message.descriptor.dataCid}`\n        );\n      }\n    }\n\n    await messageStore.put(tenant, message, indexes);\n    await eventLog.append(tenant, messageCid);\n  }\n\n  public static async query(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    tenant: string,\n    filter: Filter\n  ): Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n\n    const messages: RecordsWriteMessageWithOptionalEncodedData[] = (await messageStore.query(tenant, filter)) as RecordsWriteMessage[];\n\n    // for every message, only include the data as `encodedData` if the data size is equal or smaller than the size threshold\n    for (const message of messages) {\n      const dataCid = message.descriptor.dataCid;\n      const dataSize = message.descriptor.dataSize;\n      if (dataCid !== undefined && dataSize! <= DwnConstant.maxDataSizeAllowedToBeEncoded) {\n        const messageCid = await Message.getCid(message);\n        const result = await dataStore.get(tenant, messageCid, dataCid);\n\n        if (result) {\n          const dataBytes = await DataStream.toBytes(result.dataStream);\n          message.encodedData = Encoder.bytesToBase64Url(dataBytes);\n        }\n      }\n    }\n\n    return messages;\n  }\n\n  public static async delete(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    tenant: string,\n    message: BaseMessage\n  ): Promise<void> {\n    const messageCid = await Message.getCid(message);\n\n    if (message.descriptor.dataCid !== undefined) {\n      await dataStore.delete(tenant, messageCid, message.descriptor.dataCid);\n    }\n\n    await messageStore.delete(tenant, messageCid);\n  }\n}\n\nexport type RecordsWriteMessageWithOptionalEncodedData = RecordsWriteMessage & { encodedData?: string };\n", "import type { MethodHandler } from '../../types.js';\nimport type { ProtocolsQueryMessage } from '../types.js';\nimport type { QueryResultEntry } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { canonicalAuth } from '../../../core/auth.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { ProtocolsQuery } from '../messages/protocols-query.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\n\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport class ProtocolsQueryHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore,private dataStore: DataStore) { }\n\n  public async handle({\n    tenant,\n    message\n  }: { tenant: string, message: ProtocolsQueryMessage}): Promise<MessageReply> {\n\n    let protocolsQuery: ProtocolsQuery;\n    try {\n      protocolsQuery = await ProtocolsQuery.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await canonicalAuth(tenant, protocolsQuery, this.didResolver);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    const query = {\n      interface : DwnInterfaceName.Protocols,\n      method    : DwnMethodName.Configure,\n      ...message.descriptor.filter\n    };\n    removeUndefinedProperties(query);\n\n    const messages = await this.messageStore.query(tenant, query);\n\n    // strip away `authorization` property for each record before responding\n    const entries: QueryResultEntry[] = [];\n    for (const message of messages) {\n      const { authorization: _, ...objectWithRemainingProperties } = message; // a trick to stripping away `authorization`\n      entries.push(objectWithRemainingProperties);\n    }\n\n    return new MessageReply({\n      status: { code: 200, detail: 'OK' },\n      entries\n    });\n  };\n}\n", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { ProtocolsQueryDescriptor, ProtocolsQueryFilter, ProtocolsQueryMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\nimport { normalizeProtocolUrl, validateProtocolUrlNormalized } from '../../../utils/url.js';\n\nexport type ProtocolsQueryOptions = {\n  dateCreated?: string;\n  filter?: ProtocolsQueryFilter,\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class ProtocolsQuery extends Message<ProtocolsQueryMessage> {\n\n  public static async parse(message: ProtocolsQueryMessage): Promise<ProtocolsQuery> {\n    await validateAuthorizationIntegrity(message);\n\n    if (message.descriptor.filter !== undefined) {\n      validateProtocolUrlNormalized(message.descriptor.filter.protocol);\n    }\n\n    return new ProtocolsQuery(message);\n  }\n\n  public static async create(options: ProtocolsQueryOptions): Promise<ProtocolsQuery> {\n    const descriptor: ProtocolsQueryDescriptor = {\n      interface   : DwnInterfaceName.Protocols,\n      method      : DwnMethodName.Query,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      filter      : ProtocolsQuery.normalizeFilter(options.filter),\n    };\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    const protocolsQuery = new ProtocolsQuery(message);\n    return protocolsQuery;\n  }\n\n  private static normalizeFilter(filter: ProtocolsQueryFilter | undefined): ProtocolsQueryFilter | undefined {\n    if (filter === undefined) {\n      return undefined;\n    }\n\n    return {\n      ...filter,\n      protocol: normalizeProtocolUrl(filter.protocol),\n    };\n  }\n}\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { Readable } from 'readable-stream';\nimport type { BaseMessage, TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, MessageStore, RecordsWriteMessage } from '../../../index.js';\n\nimport { Message } from '../../../core/message.js';\nimport { RecordsWriteHandler } from './records-write.js';\n\n/**\n * Handler for initial `RecordsWrite` that already have its data pruned thus cannot supply data stream for it.\n * NOTE: This is intended to be ONLY used by sync.\n */\nexport class PrunedInitialRecordsWriteHandler extends RecordsWriteHandler {\n  /**\n   * Overriding parent behavior, `undefined` data stream is allowed.\n   */\n  protected validateUndefinedDataStream(\n    _dataStream: Readable | undefined,\n    _newestExistingMessage: TimestampedMessage | undefined,\n    _incomingMessage: RecordsWriteMessage): void { }\n\n  /**\n   * Stores the given message without storing the associated data.\n   * Requires `dataCid` to exist in the `RecordsWrite` message given.\n   */\n  protected async storeMessage(\n    messageStore: MessageStore,\n    _dataStore: DataStore,\n    eventLog: EventLog,\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    _dataStream?: Readable): Promise<void> {\n\n    const messageCid = await Message.getCid(message);\n    await messageStore.put(tenant, message, indexes);\n    await eventLog.append(tenant, messageCid);\n  }\n}\n\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { Readable } from 'readable-stream';\nimport type { RecordsWriteMessage } from '../types.js';\nimport type { BaseMessage, TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { deleteAllOlderMessagesButKeepInitialWrite } from '../records-interface.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { RecordsWrite } from '../messages/records-write.js';\nimport { StorageController } from '../../../store/storage-controller.js';\nimport { DwnError, DwnErrorCode } from '../../../core/dwn-error.js';\nimport { DwnInterfaceName, Message } from '../../../core/message.js';\n\nexport class RecordsWriteHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore,private dataStore: DataStore, private eventLog: EventLog) { }\n\n  public async handle({\n    tenant,\n    message,\n    dataStream\n  }: { tenant: string, message: RecordsWriteMessage, dataStream?: _Readable.Readable}): Promise<MessageReply> {\n\n    let recordsWrite: RecordsWrite;\n    try {\n      recordsWrite = await RecordsWrite.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication & authorization\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await recordsWrite.authorize(tenant, this.messageStore);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // get existing messages matching the `recordId`\n    const query = {\n      interface : DwnInterfaceName.Records,\n      recordId  : message.recordId\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as TimestampedMessage[];\n\n    // if the incoming write is not the initial write, then it must not modify any immutable properties defined by the initial write\n    const newMessageIsInitialWrite = await recordsWrite.isInitialWrite();\n    if (!newMessageIsInitialWrite) {\n      try {\n        const initialWrite = await RecordsWrite.getInitialWrite(existingMessages);\n        RecordsWrite.verifyEqualityOfImmutableProperties(initialWrite, message);\n      } catch (e) {\n        return MessageReply.fromError(e, 400);\n      }\n    }\n\n    const newestExistingMessage = await Message.getNewestMessage(existingMessages);\n\n    let incomingMessageIsNewest = false;\n    let newestMessage; // keep reference of newest message for pruning later\n    if (newestExistingMessage === undefined || await Message.isNewer(message, newestExistingMessage)) {\n      incomingMessageIsNewest = true;\n      newestMessage = message;\n    } else { // existing message is the same age or newer than the incoming message\n      newestMessage = newestExistingMessage;\n    }\n\n    if (!incomingMessageIsNewest) {\n      return new MessageReply({\n        status: { code: 409, detail: 'Conflict' }\n      });\n    }\n\n    const isLatestBaseState = true;\n    const indexes = await constructRecordsWriteIndexes(recordsWrite, isLatestBaseState);\n\n    try {\n      this.validateUndefinedDataStream(dataStream, newestExistingMessage, message);\n\n      await this.storeMessage(this.messageStore, this.dataStore, this.eventLog, tenant, message, indexes, dataStream);\n    } catch (error) {\n      const e = error as any;\n      if (e.code === DwnErrorCode.StorageControllerDataCidMismatch ||\n          e.code === DwnErrorCode.StorageControllerDataSizeMismatch ||\n          e.code === DwnErrorCode.RecordsWriteMissingDataStream) {\n        return MessageReply.fromError(error, 400);\n      }\n\n      // else throw\n      throw error;\n    }\n\n    const messageReply = new MessageReply({\n      status: { code: 202, detail: 'Accepted' }\n    });\n\n    // delete all existing messages that are not newest, except for the initial write\n    await deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, this.messageStore, this.dataStore, this.eventLog);\n\n    return messageReply;\n  };\n\n  /**\n   * Further validation if data stream is undefined.\n   * NOTE: if data stream is not be provided but `dataCid` is provided,\n   * then we need to make sure that the existing record state is referencing the same data as the incoming message.\n   * Without this check will lead to unauthorized access of data (https://github.com/TBD54566975/dwn-sdk-js/issues/359)\n   */\n  protected validateUndefinedDataStream(\n    dataStream: _Readable.Readable | undefined,\n    newestExistingMessage: TimestampedMessage | undefined,\n    incomingMessage: RecordsWriteMessage): void {\n    if (dataStream === undefined && incomingMessage.descriptor.dataCid !== undefined) {\n      if (newestExistingMessage?.descriptor.dataCid !== incomingMessage.descriptor.dataCid) {\n        throw new DwnError(\n          DwnErrorCode.RecordsWriteMissingDataStream,\n          'Data stream is not provided.'\n        );\n      }\n    }\n  }\n\n  /**\n   * Stores the given message and its data in the underlying database(s).\n   * NOTE: this method was created to allow a child class to override the default behavior for sync feature to work:\n   * ie. allow `RecordsWrite` to be written even if data stream is not provided to handle the case that:\n   * a `RecordsDelete` has happened, as a result a DWN would have pruned the data associated with the original write.\n   * This approach avoids the need to duplicate the entire handler.\n   */\n  protected async storeMessage(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    eventLog: EventLog,\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    dataStream?: Readable): Promise<void> {\n    await StorageController.put(messageStore, dataStore, eventLog, tenant, message, indexes, dataStream);\n  }\n}\n\nexport async function constructRecordsWriteIndexes(\n  recordsWrite: RecordsWrite,\n  isLatestBaseState: boolean\n): Promise<Record<string, string>> {\n  const message = recordsWrite.message;\n  const descriptor = { ...message.descriptor };\n  delete descriptor.published; // handle `published` specifically further down\n\n  const indexes: Record<string, any> = {\n    ...descriptor,\n    isLatestBaseState,\n    published : !!message.descriptor.published,\n    author    : recordsWrite.author,\n    recordId  : message.recordId,\n    entryId   : await RecordsWrite.getEntryId(recordsWrite.author, recordsWrite.message.descriptor)\n  };\n\n  // add additional indexes to optional values if given\n  // TODO: index multi-attesters to be unblocked by #205 - Revisit database interfaces (https://github.com/TBD54566975/dwn-sdk-js/issues/205)\n  if (recordsWrite.attesters.length > 0) { indexes.attester = recordsWrite.attesters[0]; }\n  if (message.contextId !== undefined) { indexes.contextId = message.contextId; }\n\n  return indexes;\n}\n", "import type { DataStore } from '../../store/data-store.js';\nimport type { EventLog } from '../../event-log/event-log.js';\nimport type { MessageStore } from '../../store/message-store.js';\nimport type { RecordsWriteMessage } from '../../interfaces/records/types.js';\nimport type { TimestampedMessage } from '../../core/types.js';\n\nimport { constructRecordsWriteIndexes } from './handlers/records-write.js';\nimport { Message } from '../../core/message.js';\nimport { RecordsWrite } from './messages/records-write.js';\nimport { StorageController } from '../../store/storage-controller.js';\n\n/**\n * Deletes all messages in `existingMessages` that are older than the `comparedToMessage` in the given tenant,\n * but keep the initial write write for future processing by ensuring its `isLatestBaseState` index is \"false\".\n */\nexport async function deleteAllOlderMessagesButKeepInitialWrite(\n  tenant: string,\n  existingMessages: TimestampedMessage[],\n  comparedToMessage: TimestampedMessage,\n  messageStore: MessageStore,\n  dataStore: DataStore,\n  eventLog: EventLog\n): Promise<void> {\n  const deletedMessageCids: string[] = [];\n\n  // NOTE: under normal operation, there should only be at most two existing records per `recordId` (initial + a potential subsequent write/delete),\n  // but the DWN may crash before `delete()` is called below, so we use a loop as a tactic to clean up lingering data as needed\n  for (const message of existingMessages) {\n    const messageIsOld = await Message.isOlder(message, comparedToMessage);\n    if (messageIsOld) {\n      // the easiest implementation here is delete each old messages\n      // and re-create it with the right index (isLatestBaseState = 'false') if the message is the initial write,\n      // but there is room for better/more efficient implementation here\n      await StorageController.delete(messageStore, dataStore, tenant, message);\n\n      // if the existing message is the initial write\n      // we actually need to keep it BUT, need to ensure the message is no longer marked as the latest state\n      const existingMessageIsInitialWrite = await RecordsWrite.isInitialWrite(message);\n      if (existingMessageIsInitialWrite) {\n        const existingRecordsWrite = await RecordsWrite.parse(message as RecordsWriteMessage);\n        const isLatestBaseState = false;\n        const indexes = await constructRecordsWriteIndexes(existingRecordsWrite, isLatestBaseState);\n        await messageStore.put(tenant, message, indexes);\n      } else {\n        const messageCid = await Message.getCid(message);\n        deletedMessageCids.push(messageCid);\n      }\n    }\n\n    await eventLog.deleteEventsByCid(tenant, deletedMessageCids);\n  }\n}\n", "import type { BaseMessage } from '../../../core/types.js';\nimport type { KeyDerivationScheme } from '../../../index.js';\nimport type { MessageStore } from '../../../store/message-store.js';\nimport type { PublicJwk } from '../../../jose/types.js';\nimport type {\n  EncryptedKey,\n  EncryptionProperty,\n  RecordsWriteAttestationPayload,\n  RecordsWriteAuthorizationPayload,\n  RecordsWriteDescriptor,\n  RecordsWriteMessage,\n  UnsignedRecordsWriteMessage\n} from '../types.js';\nimport type { GeneralJws, SignatureInput } from '../../../jose/jws/general/types.js';\n\nimport { Encoder } from '../../../utils/encoder.js';\nimport { Encryption } from '../../../utils/encryption.js';\nimport { EncryptionAlgorithm } from '../../../utils/encryption.js';\nimport { GeneralJwsSigner } from '../../../jose/jws/general/signer.js';\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Jws } from '../../../utils/jws.js';\nimport { Message } from '../../../core/message.js';\nimport { ProtocolAuthorization } from '../../../core/protocol-authorization.js';\nimport { Records } from '../../../utils/records.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\nimport { Secp256k1 } from '../../../utils/secp256k1.js';\nimport { authorize, validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { Cid, computeCid } from '../../../utils/cid.js';\nimport { DwnError, DwnErrorCode } from '../../../core/dwn-error.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\nimport { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../../../utils/url.js';\n\nexport type RecordsWriteOptions = {\n  recipient?: string;\n  protocol?: string;\n  protocolPath?: string;\n  contextId?: string;\n  schema?: string;\n  recordId?: string;\n  parentId?: string;\n  data?: Uint8Array;\n  dataCid?: string;\n  dataSize?: number;\n  dateCreated?: string;\n  dateModified?: string;\n  published?: boolean;\n  datePublished?: string;\n  dataFormat: string;\n  authorizationSignatureInput: SignatureInput;\n  attestationSignatureInputs?: SignatureInput[];\n  encryptionInput?: EncryptionInput;\n};\n\n/**\n * Input that describes how data is encrypted as spec-ed in TP18 (https://github.com/TBD54566975/technical-proposals/pull/6).\n */\nexport type EncryptionInput = {\n  /**\n   * Algorithm used for encrypting the Data. Uses {EncryptionAlgorithm.Aes256Ctr} if not given.\n   */\n  algorithm?: EncryptionAlgorithm;\n\n  /**\n   * Initialization vector used for encrypting the data.\n   */\n  initializationVector: Uint8Array;\n\n  /**\n   * Symmetric key used to encrypt the data.\n   */\n  key: Uint8Array;\n\n  /**\n   * Array of input that specifies how the symmetric key is encrypted.\n   * Each entry in the array will result in a unique ciphertext of the symmetric key.\n   */\n  keyEncryptionInputs: KeyEncryptionInput[];\n};\n\n/**\n * Input that specifies how a symmetric key is encrypted.\n */\nexport type KeyEncryptionInput = {\n  /**\n   * Key derivation scheme to derive the descendant public key to encrypt the symmetric key.\n   */\n  derivationScheme: KeyDerivationScheme;\n\n  /**\n   * Root public key used derive the descendant public key to encrypt the symmetric key.\n   */\n  publicKey: PublicJwk;\n\n  /**\n   * Algorithm used for encrypting the symmetric key. Uses {EncryptionAlgorithm.EciesSecp256k1} if not given.\n   */\n  algorithm?: EncryptionAlgorithm;\n};\n\nexport type CreateFromOptions = {\n  unsignedRecordsWriteMessage: UnsignedRecordsWriteMessage,\n  data?: Uint8Array;\n  published?: boolean;\n  dateModified?: string;\n  datePublished?: string;\n  authorizationSignatureInput: SignatureInput;\n  attestationSignatureInputs?: SignatureInput[];\n  encryptionInput?: EncryptionInput;\n};\n\nexport class RecordsWrite extends Message<RecordsWriteMessage> {\n\n  readonly attesters: string[];\n\n  private constructor(message: RecordsWriteMessage) {\n    super(message);\n\n    this.attesters = RecordsWrite.getAttesters(message);\n\n    // consider converting isInitialWrite() & getEntryId() into properties for performance and convenience\n  }\n\n  public static async parse(message: RecordsWriteMessage): Promise<RecordsWrite> {\n    // asynchronous checks that are required by the constructor to initialize members properly\n    await validateAuthorizationIntegrity(message, { allowedProperties: new Set(['recordId', 'contextId', 'attestationCid', 'encryptionCid']) });\n    await RecordsWrite.validateAttestationIntegrity(message);\n\n    const recordsWrite = new RecordsWrite(message);\n\n    await recordsWrite.validateIntegrity(); // RecordsWrite specific data integrity check\n\n    return recordsWrite;\n  }\n\n  /**\n   * Creates a RecordsWrite message.\n   * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.\n   * @param options.data Data used to compute the `dataCid`, must be the encrypted data bytes if `options.encryptionInput` is given.\n   *                     Must specify `options.dataCid` if `undefined`.\n   * @param options.dataCid CID of the data that is already stored in the DWN. Must specify `options.data` if `undefined`.\n   * @param options.dataSize Size of data in number of bytes. Must be defined if `options.dataCid` is defined; must be `undefined` otherwise.\n   * @param options.dateCreated If `undefined`, it will be auto-filled with current time.\n   * @param options.dateModified If `undefined`, it will be auto-filled with current time.\n   */\n  public static async create(options: RecordsWriteOptions): Promise<RecordsWrite> {\n    if ((options.protocol === undefined && options.protocolPath !== undefined) ||\n        (options.protocol !== undefined && options.protocolPath === undefined)) {\n      throw new Error('`protocol` and `protocolPath` must both be defined or undefined at the same time');\n    }\n\n    if ((options.data === undefined && options.dataCid === undefined) ||\n        (options.data !== undefined && options.dataCid !== undefined)) {\n      throw new Error('one and only one parameter between `data` and `dataCid` is allowed');\n    }\n\n    if ((options.dataCid === undefined && options.dataSize !== undefined) ||\n        (options.dataCid !== undefined && options.dataSize === undefined)) {\n      throw new Error('`dataCid` and `dataSize` must both be defined or undefined at the same time');\n    }\n\n    const dataCid = options.dataCid ?? await Cid.computeDagPbCidFromBytes(options.data!);\n    const dataSize = options.dataSize ?? options.data!.length;\n\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    const descriptor: RecordsWriteDescriptor = {\n      interface     : DwnInterfaceName.Records,\n      method        : DwnMethodName.Write,\n      protocol      : options.protocol !== undefined ? normalizeProtocolUrl(options.protocol) : undefined,\n      protocolPath  : options.protocolPath,\n      recipient     : options.recipient!,\n      schema        : options.schema !== undefined ? normalizeSchemaUrl(options.schema) : undefined,\n      parentId      : options.parentId,\n      dataCid,\n      dataSize,\n      dateCreated   : options.dateCreated ?? currentTime,\n      dateModified  : options.dateModified ?? currentTime,\n      published     : options.published,\n      datePublished : options.datePublished,\n      dataFormat    : options.dataFormat\n    };\n\n    // generate `datePublished` if the message is to be published but `datePublished` is not given\n    if (options.published === true &&\n      options.datePublished === undefined) {\n      descriptor.datePublished = currentTime;\n    }\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const author = Jws.extractDid(options.authorizationSignatureInput.protectedHeader.kid);\n\n    // `recordId` computation\n    const recordId = options.recordId ?? await RecordsWrite.getEntryId(author, descriptor);\n\n    // `contextId` computation\n    let contextId: string | undefined;\n    if (options.contextId !== undefined) {\n      contextId = options.contextId;\n    } else { // `contextId` is undefined\n      // we compute the contextId for the caller if `protocol` is specified (this is the case of the root message of a protocol context)\n      if (descriptor.protocol !== undefined) {\n        contextId = await RecordsWrite.getEntryId(author, descriptor);\n      }\n    }\n\n    // `attestation` generation\n    const descriptorCid = await computeCid(descriptor);\n    const attestation = await RecordsWrite.createAttestation(descriptorCid, options.attestationSignatureInputs);\n    const encryption = await RecordsWrite.createEncryptionProperty(recordId, contextId, descriptor, options.encryptionInput);\n\n    // `authorization` generation\n    const authorization = await RecordsWrite.createAuthorization(\n      recordId,\n      contextId,\n      descriptorCid,\n      attestation,\n      encryption,\n      options.authorizationSignatureInput\n    );\n\n    const message: RecordsWriteMessage = {\n      recordId,\n      descriptor,\n      authorization\n    };\n\n    if (contextId !== undefined) { message.contextId = contextId; } // assign `contextId` only if it is defined\n    if (attestation !== undefined) { message.attestation = attestation; } // assign `attestation` only if it is defined\n    if (encryption !== undefined) { message.encryption = encryption; } // assign `encryption` only if it is defined\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsWrite(message);\n  }\n\n  /**\n   * Convenience method that creates a message by:\n   * 1. Copying over immutable properties from the given unsigned message\n   * 2. Copying over mutable properties that are not overwritten from the given unsigned message\n   * 3. Replace the mutable properties that are given new value\n   * @param options.unsignedRecordsWriteMessage Unsigned message that the new RecordsWrite will be based from.\n   * @param options.dateModified The new date the record is modified. If not given, current time will be used .\n   * @param options.data The new data or the record. If not given, data from given message will be used.\n   * @param options.published The new published state. If not given, then will be set to `true` if {options.dateModified} is given;\n   * else the state from given message will be used.\n   * @param options.publishedDate The new date the record is modified. If not given, then:\n   * - will not be set if the record will be unpublished as the result of this RecordsWrite; else\n   * - will be set to the same published date as the given message if it wss already published; else\n   * - will be set to current time (because this is a toggle from unpublished to published)\n   */\n  public static async createFrom(options: CreateFromOptions): Promise<RecordsWrite> {\n    const unsignedMessage = options.unsignedRecordsWriteMessage;\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    // inherit published value from parent if neither published nor datePublished is specified\n    const published = options.published ?? (options.datePublished ? true : unsignedMessage.descriptor.published);\n    // use current time if published but no explicit time given\n    let datePublished: string | undefined = undefined;\n    // if given explicitly published dated\n    if (options.datePublished) {\n      datePublished = options.datePublished;\n    } else {\n      // if this RecordsWrite will publish the record\n      if (published) {\n        // the parent was already published, inherit the same published date\n        if (unsignedMessage.descriptor.published) {\n          datePublished = unsignedMessage.descriptor.datePublished;\n        } else {\n          // this is a toggle from unpublished to published, use current time\n          datePublished = currentTime;\n        }\n      }\n    }\n\n    const createOptions: RecordsWriteOptions = {\n      // immutable properties below, just inherit from the message given\n      recipient                   : unsignedMessage.descriptor.recipient,\n      recordId                    : unsignedMessage.recordId,\n      dateCreated                 : unsignedMessage.descriptor.dateCreated,\n      contextId                   : unsignedMessage.contextId,\n      protocol                    : unsignedMessage.descriptor.protocol,\n      protocolPath                : unsignedMessage.descriptor.protocolPath,\n      parentId                    : unsignedMessage.descriptor.parentId,\n      schema                      : unsignedMessage.descriptor.schema,\n      dataFormat                  : unsignedMessage.descriptor.dataFormat,\n      // mutable properties below\n      dateModified                : options.dateModified ?? currentTime,\n      published,\n      datePublished,\n      data                        : options.data,\n      dataCid                     : options.data ? undefined : unsignedMessage.descriptor.dataCid, // if data not given, use base message dataCid\n      dataSize                    : options.data ? undefined : unsignedMessage.descriptor.dataSize, // if data not given, use base message dataSize\n      // finally still need input for signing\n      authorizationSignatureInput : options.authorizationSignatureInput,\n      attestationSignatureInputs  : options.attestationSignatureInputs\n    };\n\n    const recordsWrite = await RecordsWrite.create(createOptions);\n    return recordsWrite;\n  }\n\n  public async authorize(tenant: string, messageStore: MessageStore): Promise<void> {\n    if (this.message.descriptor.protocol !== undefined) {\n      // NOTE: `author` definitely exists because of the earlier `authenticate()` call\n      await ProtocolAuthorization.authorize(tenant, this, this.author!, messageStore);\n    } else {\n      await authorize(tenant, this);\n    }\n  }\n\n  /**\n   * Validates the integrity of the RecordsWrite message assuming the message passed basic schema validation.\n   * There is opportunity to integrate better with `validateSchema(...)`\n   */\n  private async validateIntegrity(): Promise<void> {\n    // make sure the same `recordId` in message is the same as the `recordId` in `authorization`\n    if (this.message.recordId !== this.authorizationPayload.recordId) {\n      throw new Error(\n        `recordId in message ${this.message.recordId} does not match recordId in authorization: ${this.authorizationPayload.recordId}`\n      );\n    }\n\n    // if the new message is the initial write\n    const isInitialWrite = await this.isInitialWrite();\n    if (isInitialWrite) {\n      // `dateModified` and `dateCreated` equality check\n      const dateCreated = this.message.descriptor.dateCreated;\n      const dateModified = this.message.descriptor.dateModified;\n      if (dateModified !== dateCreated) {\n        throw new Error(`dateModified ${dateModified} must match dateCreated ${dateCreated} for the initial write`);\n      }\n\n      // if the message is also a protocol context root, the `contextId` must match the expected deterministic value\n      if (this.message.descriptor.protocol !== undefined &&\n        this.message.descriptor.parentId === undefined) {\n        const expectedContextId = await this.getEntryId();\n\n        if (this.message.contextId !== expectedContextId) {\n          throw new Error(`contextId in message: ${this.message.contextId} does not match deterministic contextId: ${expectedContextId}`);\n        }\n      }\n    }\n\n    // if `contextId` is given in message, make sure the same `contextId` is in the `authorization`\n    if (this.message.contextId !== this.authorizationPayload.contextId) {\n      throw new Error(\n        `contextId in message ${this.message.contextId} does not match contextId in authorization: ${this.authorizationPayload.contextId}`\n      );\n    }\n\n    // if `attestation` is given in message, make sure the correct `attestationCid` is in the `authorization`\n    if (this.authorizationPayload.attestationCid !== undefined) {\n      const expectedAttestationCid = await computeCid(this.message.attestation);\n      const actualAttestationCid = this.authorizationPayload.attestationCid;\n      if (actualAttestationCid !== expectedAttestationCid) {\n        throw new Error(\n          `CID ${expectedAttestationCid} of attestation property in message does not match attestationCid in authorization: ${actualAttestationCid}`\n        );\n      }\n    }\n\n    // if `encryption` is given in message, make sure the correct `encryptionCid` is in the `authorization`\n    if (this.authorizationPayload.encryptionCid !== undefined) {\n      const expectedEncryptionCid = await computeCid(this.message.encryption);\n      const actualEncryptionCid = this.authorizationPayload.encryptionCid;\n      if (actualEncryptionCid !== expectedEncryptionCid) {\n        throw new DwnError(\n          DwnErrorCode.RecordsWriteValidateIntegrityEncryptionCidMismatch,\n          `CID ${expectedEncryptionCid} of encryption property in message does not match encryptionCid in authorization: ${actualEncryptionCid}`\n        );\n      }\n    }\n\n    if (this.message.descriptor.protocol !== undefined) {\n      validateProtocolUrlNormalized(this.message.descriptor.protocol);\n    }\n    if (this.message.descriptor.schema !== undefined) {\n      validateSchemaUrlNormalized(this.message.descriptor.schema);\n    }\n  }\n\n  /**\n   * Validates the structural integrity of the `attestation` property.\n   * NOTE: signature is not verified.\n   */\n  private static async validateAttestationIntegrity(message: RecordsWriteMessage): Promise<void> {\n    if (message.attestation === undefined) {\n      return;\n    }\n\n    // TODO: multi-attesters to be unblocked by #205 - Revisit database interfaces (https://github.com/TBD54566975/dwn-sdk-js/issues/205)\n    if (message.attestation.signatures.length !== 1) {\n      throw new Error(`Currently implementation only supports 1 attester, but got ${message.attestation.signatures.length}`);\n    }\n\n    const payloadJson = Jws.decodePlainObjectPayload(message.attestation);\n    const { descriptorCid } = payloadJson;\n\n    // `descriptorCid` validation - ensure that the provided descriptorCid matches the CID of the actual message\n    const expectedDescriptorCid = await computeCid(message.descriptor);\n    if (descriptorCid !== expectedDescriptorCid) {\n      throw new Error(`descriptorCid ${descriptorCid} does not match expected descriptorCid ${expectedDescriptorCid}`);\n    }\n\n    // check to ensure that no other unexpected properties exist in payload.\n    const propertyCount = Object.keys(payloadJson).length;\n    if (propertyCount > 1) {\n      throw new Error(`Only 'descriptorCid' is allowed in attestation payload, but got ${propertyCount} properties.`);\n    }\n  };\n\n  /**\n   * Computes the deterministic Entry ID of this message.\n   */\n  public async getEntryId(): Promise<string> {\n    const entryId = await RecordsWrite.getEntryId(this.author, this.message.descriptor);\n    return entryId;\n  };\n\n  /**\n   * Computes the deterministic Entry ID of this message.\n   */\n  public static async getEntryId(author: string | undefined, descriptor: RecordsWriteDescriptor): Promise<string> {\n    // TODO: this paves the way to allow unsigned RecordsWrite as suggested in #206 (https://github.com/TBD54566975/dwn-sdk-js/issues/206)\n    if (author === undefined) {\n      throw new DwnError(DwnErrorCode.RecordsWriteGetEntryIdUndefinedAuthor, 'Property `author` is needed to compute entry ID.');\n    }\n\n    const entryIdInput = { ...descriptor };\n    (entryIdInput as any).author = author;\n\n    const cid = await computeCid(entryIdInput);\n    return cid;\n  };\n\n  /**\n   * Checks if the given message is the initial entry of a record.\n   */\n  public async isInitialWrite(): Promise<boolean> {\n    const entryId = await this.getEntryId();\n    return (entryId === this.message.recordId);\n  }\n\n  /**\n   * Checks if the given message is the initial entry of a record.\n   */\n  public static async isInitialWrite(message: BaseMessage): Promise<boolean> {\n    // can't be the initial write if the message is not a Records Write\n    if (message.descriptor.interface !== DwnInterfaceName.Records ||\n        message.descriptor.method !== DwnMethodName.Write) {\n      return false;\n    }\n\n    const recordsWriteMessage = message as RecordsWriteMessage;\n    const author = Message.getAuthor(message);\n    const entryId = await RecordsWrite.getEntryId(author, recordsWriteMessage.descriptor);\n    return (entryId === recordsWriteMessage.recordId);\n  }\n\n  /**\n   * Creates the `encryption` property if encryption input is given. Else `undefined` is returned.\n   */\n  private static async createEncryptionProperty(\n    recordId: string,\n    contextId: string | undefined,\n    descriptor: RecordsWriteDescriptor,\n    encryptionInput: EncryptionInput | undefined\n  ): Promise<EncryptionProperty | undefined> {\n    if (encryptionInput === undefined) {\n      return undefined;\n    }\n\n    // encrypt the data encryption key once per key derivation scheme\n    const keyEncryption: EncryptedKey[] = [];\n    for (const keyEncryptionInput of encryptionInput.keyEncryptionInputs) {\n\n      const fullDerivationPath = Records.constructKeyDerivationPath(keyEncryptionInput.derivationScheme, recordId, contextId, descriptor);\n\n      // NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n      // so we will assume that's the algorithm without additional switch/if statements\n      const leafPublicKey = await Records.deriveLeafPublicKey(keyEncryptionInput.publicKey, fullDerivationPath);\n      const keyEncryptionOutput = await Encryption.eciesSecp256k1Encrypt(leafPublicKey, encryptionInput.key);\n\n      const encryptedKey = Encoder.bytesToBase64Url(keyEncryptionOutput.ciphertext);\n      const ephemeralPublicKey = await Secp256k1.publicKeyToJwk(keyEncryptionOutput.ephemeralPublicKey);\n      const keyEncryptionInitializationVector = Encoder.bytesToBase64Url(keyEncryptionOutput.initializationVector);\n      const messageAuthenticationCode = Encoder.bytesToBase64Url(keyEncryptionOutput.messageAuthenticationCode);\n      const encryptedKeyData: EncryptedKey = {\n        algorithm            : keyEncryptionInput.algorithm ?? EncryptionAlgorithm.EciesSecp256k1,\n        derivationScheme     : keyEncryptionInput.derivationScheme,\n        encryptedKey,\n        ephemeralPublicKey,\n        initializationVector : keyEncryptionInitializationVector,\n        messageAuthenticationCode\n      };\n\n      keyEncryption.push(encryptedKeyData);\n    }\n\n    const encryption: EncryptionProperty = {\n      algorithm            : encryptionInput.algorithm ?? EncryptionAlgorithm.Aes256Ctr,\n      initializationVector : Encoder.bytesToBase64Url(encryptionInput.initializationVector),\n      keyEncryption\n    };\n\n    return encryption;\n  }\n\n  /**\n   * Creates the `attestation` property of a RecordsWrite message if given signature inputs; returns `undefined` otherwise.\n   */\n  public static async createAttestation(descriptorCid: string, signatureInputs?: SignatureInput[]): Promise<GeneralJws | undefined> {\n    if (signatureInputs === undefined || signatureInputs.length === 0) {\n      return undefined;\n    }\n\n    const attestationPayload: RecordsWriteAttestationPayload = { descriptorCid };\n    const attestationPayloadBytes = Encoder.objectToBytes(attestationPayload);\n\n    const signer = await GeneralJwsSigner.create(attestationPayloadBytes, signatureInputs);\n    return signer.getJws();\n  }\n\n  /**\n   * Creates the `authorization` property of a RecordsWrite message.\n   */\n  public static async createAuthorization(\n    recordId: string,\n    contextId: string | undefined,\n    descriptorCid: string,\n    attestation: GeneralJws | undefined,\n    encryption: EncryptionProperty | undefined,\n    signatureInput: SignatureInput\n  ): Promise<GeneralJws> {\n    const authorizationPayload: RecordsWriteAuthorizationPayload = {\n      recordId,\n      descriptorCid\n    };\n\n    const attestationCid = attestation ? await computeCid(attestation) : undefined;\n    const encryptionCid = encryption ? await computeCid(encryption) : undefined;\n\n    if (contextId !== undefined) { authorizationPayload.contextId = contextId; } // assign `contextId` only if it is defined\n    if (attestationCid !== undefined) { authorizationPayload.attestationCid = attestationCid; } // assign `attestationCid` only if it is defined\n    if (encryptionCid !== undefined) { authorizationPayload.encryptionCid = encryptionCid; } // assign `encryptionCid` only if it is defined\n\n    const authorizationPayloadBytes = Encoder.objectToBytes(authorizationPayload);\n\n    const signer = await GeneralJwsSigner.create(authorizationPayloadBytes, [signatureInput]);\n    return signer.getJws();\n  }\n\n  /**\n   * Gets the initial write from the given list or record write.\n   */\n  public static async getInitialWrite(messages: BaseMessage[]): Promise<RecordsWriteMessage>{\n    for (const message of messages) {\n      if (await RecordsWrite.isInitialWrite(message)) {\n        return message as RecordsWriteMessage;\n      }\n    }\n\n    throw new Error(`initial write is not found`);\n  }\n\n  /**\n   * Verifies that immutable properties of the two given messages are identical.\n   * @throws {Error} if immutable properties between two RecordsWrite message\n   */\n  public static verifyEqualityOfImmutableProperties(existingWriteMessage: RecordsWriteMessage, newMessage: RecordsWriteMessage): boolean {\n    const mutableDescriptorProperties = ['dataCid', 'dataSize', 'datePublished', 'published', 'dateModified'];\n\n    // get distinct property names that exist in either the existing message given or new message\n    let descriptorPropertyNames: string[] = [];\n    descriptorPropertyNames.push(...Object.keys(existingWriteMessage.descriptor));\n    descriptorPropertyNames.push(...Object.keys(newMessage.descriptor));\n    descriptorPropertyNames = [...new Set(descriptorPropertyNames)]; // step to remove duplicates\n\n    // ensure all immutable properties are not modified\n    for (const descriptorPropertyName of descriptorPropertyNames) {\n      // if property is supposed to be immutable\n      if (mutableDescriptorProperties.indexOf(descriptorPropertyName) === -1) {\n        const valueInExistingWrite = (existingWriteMessage.descriptor as any)[descriptorPropertyName];\n        const valueInNewMessage = (newMessage.descriptor as any)[descriptorPropertyName];\n        if (valueInNewMessage !== valueInExistingWrite) {\n          throw new Error(`${descriptorPropertyName} is an immutable property: cannot change '${valueInExistingWrite}' to '${valueInNewMessage}'`);\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Gets the DID of the author of the given message.\n   */\n  public static getAttesters(message: RecordsWriteMessage): string[] {\n    const attestationSignatures = message.attestation?.signatures ?? [];\n    const attesters = attestationSignatures.map((signature) => Jws.getSignerDid(signature));\n    return attesters;\n  }\n}\n", "import * as crypto from 'crypto';\nimport * as eccrypto from 'eccrypto';\nimport { Readable } from 'readable-stream';\n\n/**\n * Utility class for performing common, non-DWN specific encryption operations.\n */\nexport class Encryption {\n  /**\n   * Encrypts the given plaintext stream using AES-256-CTR algorithm.\n   */\n  public static async aes256CtrEncrypt(key: Uint8Array, initializationVector: Uint8Array, plaintextStream: Readable): Promise<Readable> {\n    const cipher = crypto.createCipheriv('aes-256-ctr', key, initializationVector);\n\n    const cipherStream = new Readable({\n      read(): void { }\n    });\n\n    plaintextStream.on('data', (chunk) => {\n      const encryptedChunk = cipher.update(chunk);\n      cipherStream.push(encryptedChunk);\n    });\n\n    plaintextStream.on('end', () => {\n      const finalChunk = cipher.final();\n      cipherStream.push(finalChunk);\n      cipherStream.push(null);\n    });\n\n    plaintextStream.on('error', (err) => {\n      cipherStream.emit('error', err);\n    });\n\n    return cipherStream;\n  }\n\n  /**\n   * Decrypts the given cipher stream using AES-256-CTR algorithm.\n   */\n  public static async aes256CtrDecrypt(key: Uint8Array, initializationVector: Uint8Array, cipherStream: Readable): Promise<Readable> {\n    const decipher = crypto.createDecipheriv('aes-256-ctr', key, initializationVector);\n\n    const plaintextStream = new Readable({\n      read(): void { }\n    });\n\n    cipherStream.on('data', (chunk) => {\n      const decryptedChunk = decipher.update(chunk);\n      plaintextStream.push(decryptedChunk);\n    });\n\n    cipherStream.on('end', () => {\n      const finalChunk = decipher.final();\n      plaintextStream.push(finalChunk);\n      plaintextStream.push(null);\n    });\n\n    cipherStream.on('error', (err) => {\n      plaintextStream.emit('error', err);\n    });\n\n    return plaintextStream;\n  }\n\n  /**\n   * Encrypts the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme) with SECP256K1.\n   */\n  public static async eciesSecp256k1Encrypt(uncompressedPublicKey: Uint8Array, plaintext: Uint8Array): Promise<EciesEncryptionOutput> {\n    // TODO: #291 - Swap out `eccrypto` in favor of a more up-to-date ECIES library - https://github.com/TBD54566975/dwn-sdk-js/issues/291\n    const publicKey = Buffer.from(uncompressedPublicKey);\n\n    const { ciphertext, ephemPublicKey, iv, mac } = await eccrypto.encrypt(publicKey, plaintext as Buffer);\n\n    return {\n      ciphertext,\n      ephemeralPublicKey        : ephemPublicKey,\n      initializationVector      : iv,\n      messageAuthenticationCode : mac\n    };\n  }\n\n  /**\n   * Decrypt the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme) with SECP256K1.\n   */\n  public static async eciesSecp256k1Decrypt(input: EciesEncryptionInput): Promise<Uint8Array> {\n    // underlying library requires Buffer as input\n    // TODO: #291 - Swap out `eccrypto` in favor of a more up-to-date ECIES library - https://github.com/TBD54566975/dwn-sdk-js/issues/291\n    const privateKeyBuffer = Buffer.from(input.privateKey);\n    const ephemPublicKey = Buffer.from(input.ephemeralPublicKey);\n    const eciesEncryptionOutput = {\n      ciphertext : input.ciphertext as Buffer,\n      ephemPublicKey,\n      iv         : input.initializationVector as Buffer,\n      mac        : input.messageAuthenticationCode as Buffer\n    };\n\n    const plaintext = await eccrypto.decrypt(privateKeyBuffer, eciesEncryptionOutput);\n\n    return plaintext;\n  }\n}\n\nexport type EciesEncryptionOutput = {\n  initializationVector: Uint8Array;\n  ephemeralPublicKey: Uint8Array;\n  ciphertext: Uint8Array;\n  messageAuthenticationCode: Uint8Array;\n};\n\nexport type EciesEncryptionInput = EciesEncryptionOutput & {\n  privateKey: Uint8Array;\n};\n\nexport enum EncryptionAlgorithm {\n  Aes256Ctr = 'A256CTR',\n  EciesSecp256k1 = 'ECIES-ES256K'\n}", "import type { MessageStore } from '../store/message-store.js';\nimport type { RecordsRead } from '../interfaces/records/messages/records-read.js';\nimport type { Filter, TimestampedMessage } from './types.js';\nimport type { ProtocolDefinition, ProtocolRuleSet, ProtocolsConfigureMessage, ProtocolType, ProtocolTypes } from '../interfaces/protocols/types.js';\nimport type { RecordsReadMessage, RecordsWriteMessage } from '../interfaces/records/types.js';\n\nimport { RecordsWrite } from '../interfaces/records/messages/records-write.js';\nimport { DwnError, DwnErrorCode } from './dwn-error.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from './message.js';\nimport { ProtocolAction, ProtocolActor } from '../interfaces/protocols/types.js';\n\nconst methodToAllowedActionMap: Record<string, string> = {\n  [DwnMethodName.Write] : ProtocolAction.Write,\n  [DwnMethodName.Read]  : ProtocolAction.Read,\n};\n\nexport class ProtocolAuthorization {\n\n  /**\n   * Performs protocol-based authorization against the given message.\n   * @throws {Error} if authorization fails.\n   */\n  public static async authorize(\n    tenant: string,\n    incomingMessage: RecordsRead | RecordsWrite,\n    requesterDid: string | undefined,\n    messageStore: MessageStore\n  ): Promise<void> {\n    // fetch ancestor message chain\n    const ancestorMessageChain: RecordsWriteMessage[] =\n      await ProtocolAuthorization.constructAncestorMessageChain(tenant, incomingMessage, messageStore);\n\n    // fetch the protocol definition\n    const protocolDefinition = await ProtocolAuthorization.fetchProtocolDefinition(\n      tenant,\n      incomingMessage,\n      ancestorMessageChain,\n      messageStore\n    );\n\n    // validate `protocolPath`\n    ProtocolAuthorization.verifyProtocolPath(\n      incomingMessage,\n      ancestorMessageChain,\n      protocolDefinition.types\n    );\n\n    // get the rule set for the inbound message\n    const inboundMessageRuleSet = ProtocolAuthorization.getRuleSet(\n      incomingMessage.message,\n      protocolDefinition,\n      ancestorMessageChain\n    );\n\n    ProtocolAuthorization.verifyType(\n      incomingMessage.message,\n      protocolDefinition.types\n    );\n\n    // verify method invoked against the allowed actions\n    ProtocolAuthorization.verifyAllowedActions(\n      tenant,\n      requesterDid,\n      incomingMessage.message.descriptor.method,\n      inboundMessageRuleSet,\n      ancestorMessageChain,\n    );\n\n    // verify allowed condition of incoming message\n    await ProtocolAuthorization.verifyActionCondition(tenant, incomingMessage, messageStore);\n  }\n\n  /**\n   * Fetches the protocol definition based on the protocol specified in the given message.\n   */\n  private static async fetchProtocolDefinition(\n    tenant: string,\n    incomingMessage: RecordsRead | RecordsWrite,\n    ancestorMessageChain: RecordsWriteMessage[],\n    messageStore: MessageStore\n  ): Promise<ProtocolDefinition> {\n    // get the protocol URI\n    let protocolUri: string;\n    if (incomingMessage.message.descriptor.method === DwnMethodName.Write) {\n      protocolUri = (incomingMessage as RecordsWrite).message.descriptor.protocol!;\n    } else {\n      protocolUri = ancestorMessageChain[ancestorMessageChain.length-1].descriptor.protocol!;\n    }\n\n    // fetch the corresponding protocol definition\n    const query: Filter = {\n      interface : DwnInterfaceName.Protocols,\n      method    : DwnMethodName.Configure,\n      protocol  : protocolUri\n    };\n    const protocols = await messageStore.query(tenant, query) as ProtocolsConfigureMessage[];\n\n    if (protocols.length === 0) {\n      throw new Error(`unable to find protocol definition for ${protocolUri}`);\n    }\n\n    const protocolMessage = protocols[0];\n    return protocolMessage.descriptor.definition;\n  }\n\n  /**\n   * Constructs a chain of ancestor messages\n   * @returns the ancestor chain of messages where the first element is the root of the chain; returns empty array if no parent is specified.\n   */\n  private static async constructAncestorMessageChain(\n    tenant: string,\n    incomingMessage: RecordsRead | RecordsWrite,\n    messageStore: MessageStore\n  )\n    : Promise<RecordsWriteMessage[]> {\n    const ancestorMessageChain: RecordsWriteMessage[] = [];\n\n    // Get first RecordsWrite in ancestor chain, or use incoming write message\n    let recordsWrite: RecordsWrite;\n    if (incomingMessage.message.descriptor.method === DwnMethodName.Write) {\n      recordsWrite = incomingMessage as RecordsWrite;\n    } else {\n      const recordsRead = incomingMessage as RecordsRead;\n      const query = {\n        interface : DwnInterfaceName.Records,\n        method    : DwnMethodName.Write,\n        recordId  : recordsRead.message.descriptor.recordId,\n      };\n      const existingMessages = await messageStore.query(tenant, query) as TimestampedMessage[];\n      const recordsWriteMessage = await RecordsWrite.getNewestMessage(existingMessages) as RecordsWriteMessage;\n      recordsWrite = await RecordsWrite.parse(recordsWriteMessage);\n      ancestorMessageChain.push(recordsWrite.message);\n    }\n\n    const protocol = recordsWrite.message.descriptor.protocol!;\n    const contextId = recordsWrite.message.contextId!;\n\n    // keep walking up the chain from the inbound message's parent, until there is no more parent\n    let currentParentId = recordsWrite.message.descriptor.parentId;\n    while (currentParentId !== undefined) {\n      // fetch parent\n      const query: Filter = {\n        interface : DwnInterfaceName.Records,\n        method    : DwnMethodName.Write,\n        protocol,\n        contextId,\n        recordId  : currentParentId\n      };\n      const parentMessages = await messageStore.query(tenant, query) as RecordsWriteMessage[];\n\n      if (parentMessages.length === 0) {\n        throw new Error(`no parent found with ID ${currentParentId}`);\n      }\n\n      const parent = parentMessages[0];\n      ancestorMessageChain.push(parent);\n\n      currentParentId = parent.descriptor.parentId;\n    }\n\n    return ancestorMessageChain.reverse(); // root ancestor first\n  }\n\n  /**\n   * Gets the rule set corresponding to the given message chain.\n   */\n  private static getRuleSet(\n    inboundMessage: RecordsReadMessage | RecordsWriteMessage,\n    protocolDefinition: ProtocolDefinition,\n    ancestorMessageChain: RecordsWriteMessage[],\n  ): ProtocolRuleSet {\n    let protocolPath: string;\n    if (inboundMessage.descriptor.method === DwnMethodName.Write) {\n      protocolPath = (inboundMessage as RecordsWriteMessage).descriptor.protocolPath!;\n    } else {\n      protocolPath = ancestorMessageChain[ancestorMessageChain.length-1].descriptor.protocolPath!;\n    }\n    const protocolPathArray = protocolPath.split('/');\n\n    // traverse rule sets using protocolPath\n    let currentRuleSet: ProtocolRuleSet = protocolDefinition.structure;\n    let i = 0;\n    while (i < protocolPathArray.length) {\n      const currentTypeName = protocolPathArray[i];\n      const nextRuleSet: ProtocolRuleSet | undefined = currentRuleSet[currentTypeName];\n\n      if (nextRuleSet === undefined) {\n        const partialProtocolPath = protocolPathArray.slice(0, i + 1).join('/');\n        throw new DwnError(DwnErrorCode.ProtocolAuthorizationMissingRuleSet,\n          `No rule set defined for protocolPath ${partialProtocolPath}`);\n      }\n\n      currentRuleSet = nextRuleSet;\n      i++;\n    }\n\n    return currentRuleSet;\n  }\n\n  /**\n   * Verifies the `protocolPath` declared in the given message (if it is a RecordsWrite) matches the path of actual ancestor chain.\n   * @throws {DwnError} if fails verification.\n   */\n  private static verifyProtocolPath(\n    inboundMessage: RecordsRead | RecordsWrite,\n    ancestorMessageChain: RecordsWriteMessage[],\n    types: ProtocolTypes,\n  ): void {\n    // skip verification if this is not a RecordsWrite\n    if (inboundMessage.message.descriptor.method !== DwnMethodName.Write) {\n      return;\n    }\n\n    const typeNames = Object.keys(types);\n    const declaredProtocolPath = (inboundMessage as RecordsWrite).message.descriptor.protocolPath!;\n    const declaredTypeName = ProtocolAuthorization.getTypeName(declaredProtocolPath);\n    if (!typeNames.includes(declaredTypeName)) {\n      throw new DwnError(DwnErrorCode.ProtocolAuthorizationInvalidType,\n        `record with type ${declaredTypeName} not allowed in protocol`);\n    }\n\n    let ancestorProtocolPath: string = '';\n    for (const ancestor of ancestorMessageChain) {\n      const protocolPath = ancestor.descriptor.protocolPath!;\n      const ancestorTypeName = ProtocolAuthorization.getTypeName(protocolPath);\n      ancestorProtocolPath += `${ancestorTypeName}/`; // e.g. `foo/bar/`, notice the trailing slash\n    }\n\n    const actualProtocolPath = ancestorProtocolPath + declaredTypeName; // e.g. `foo/bar/baz`\n\n    if (declaredProtocolPath !== actualProtocolPath) {\n      throw new DwnError(\n        DwnErrorCode.ProtocolAuthorizationIncorrectProtocolPath,\n        `Declared protocol path '${declaredProtocolPath}' is not the same as actual protocol path '${actualProtocolPath}'.`\n      );\n    }\n  }\n\n  /**\n   * Verifies the `dataFormat` and `schema` declared in the given message (if it is a RecordsWrite) matches dataFormat\n   * and schema of the type in the given protocol.\n   * @throws {DwnError} if fails verification.\n   */\n  private static verifyType(\n    inboundMessage: RecordsReadMessage | RecordsWriteMessage,\n    protocolTypes: ProtocolTypes,\n  ): void {\n    // skip verification if this is not a RecordsWrite\n    if (inboundMessage.descriptor.method !== DwnMethodName.Write) {\n      return;\n    }\n    const recordsWriteMessage = inboundMessage as RecordsWriteMessage;\n\n    const protocolPath = recordsWriteMessage.descriptor.protocolPath!;\n    // existence of `protocolType` has already been verified\n    const typeName = ProtocolAuthorization.getTypeName(protocolPath);\n    const protocolType: ProtocolType = protocolTypes[typeName];\n\n    // no `schema` specified in protocol definition means that any schema is allowed\n    const { schema } = recordsWriteMessage.descriptor;\n    if (protocolType.schema !== undefined && protocolType.schema !== schema) {\n      throw new DwnError(\n        DwnErrorCode.ProtocolAuthorizationInvalidSchema,\n        `type '${typeName}' must have schema '${protocolType.schema}', \\\n        instead has '${schema}'`\n      );\n    }\n\n    // no `dataFormats` specified in protocol definition means that all dataFormats are allowed\n    const { dataFormat } = recordsWriteMessage.descriptor;\n    if (protocolType.dataFormats !== undefined && !protocolType.dataFormats.includes(dataFormat)) {\n      throw new DwnError(\n        DwnErrorCode.ProtocolAuthorizationIncorrectDataFormat,\n        `type '${typeName}' must have data format in (${protocolType.dataFormats}), \\\n        instead has '${dataFormat}'`\n      );\n    }\n  }\n\n  /**\n   * Verifies the actions specified in the given message matches the allowed actions in the rule set.\n   * @throws {Error} if action not allowed.\n   */\n  private static verifyAllowedActions(\n    tenant: string,\n    requesterDid: string | undefined,\n    incomingMessageMethod: DwnMethodName,\n    inboundMessageRuleSet: ProtocolRuleSet,\n    ancestorMessageChain: RecordsWriteMessage[],\n  ): void {\n    const actionRules = inboundMessageRuleSet.$actions;\n\n    if (actionRules === undefined) {\n      // if no action rule is defined, owner of DWN can do everything\n      if (requesterDid === tenant) {\n        return;\n      } else {\n        throw new Error(`no action rule defined for ${incomingMessageMethod}, ${requesterDid} is unauthorized`);\n      }\n    }\n\n    const allowedActions = new Set<string>();\n    for (const actionRule of actionRules) {\n      switch (actionRule.who) {\n      case ProtocolActor.Anyone:\n        allowedActions.add(actionRule.can);\n        break;\n      case ProtocolActor.Author:\n        const messageForAuthorCheck = ProtocolAuthorization.getMessage(\n          ancestorMessageChain,\n          actionRule.of!,\n        );\n\n        if (messageForAuthorCheck !== undefined) {\n          const expectedRequesterDid = Message.getAuthor(messageForAuthorCheck);\n\n          if (requesterDid === expectedRequesterDid) {\n            allowedActions.add(actionRule.can);\n          }\n        }\n        break;\n      case ProtocolActor.Recipient:\n        const messageForRecipientCheck = ProtocolAuthorization.getMessage(\n          ancestorMessageChain,\n            actionRule.of!,\n        );\n        if (messageForRecipientCheck !== undefined) {\n          const expectedRequesterDid = messageForRecipientCheck.descriptor.recipient;\n\n          if (requesterDid === expectedRequesterDid) {\n            allowedActions.add(actionRule.can);\n          }\n        }\n        break;\n        // default:\n        //    JSON schema validations ensure that there are no other cases\n      }\n    }\n\n    const inboundMessageAction = methodToAllowedActionMap[incomingMessageMethod];\n    if (!allowedActions.has(inboundMessageAction)) {\n      throw new Error(`inbound message action '${inboundMessageAction}' not in list of allowed actions (${new Array(...allowedActions).join(',')})`);\n    }\n  }\n\n  /**\n   * Verifies if the desired action can be taken.\n   * Currently the only check is: if the write is not the initial write, the author must be the same as the initial write\n   * @throws {Error} if fails verification\n   */\n  private static async verifyActionCondition(tenant: string, incomingMessage: RecordsRead | RecordsWrite, messageStore: MessageStore): Promise<void> {\n    if (incomingMessage.message.descriptor.method === DwnMethodName.Read) {\n      // Currently no conditions for reads\n    } else if (incomingMessage.message.descriptor.method === DwnMethodName.Write) {\n      const recordsWrite = incomingMessage as RecordsWrite;\n      const isInitialWrite = await recordsWrite.isInitialWrite();\n      if (!isInitialWrite) {\n        // fetch the initialWrite\n        const query = {\n          entryId: recordsWrite.message.recordId\n        };\n        const result = await messageStore.query(tenant, query) as RecordsWriteMessage[];\n\n        // check the author of the initial write matches the author of the incoming message\n        const initialWrite = result[0];\n        const authorOfInitialWrite = Message.getAuthor(initialWrite);\n        if (recordsWrite.author !== authorOfInitialWrite) {\n          throw new Error(`author of incoming message '${recordsWrite.author}' must match to author of initial write '${authorOfInitialWrite}'`);\n        }\n      }\n    }\n  }\n\n  /**\n   * Gets the message from the message chain based on the path specified.\n   * Returns undefined if matching message does not existing in ancestor chain\n   * @param protocolPath `/` delimited path starting from the root ancestor.\n   *                    Each path segment denotes the expected record type declared in protocol definition.\n   *                    e.g. `A/B/C` means that the root ancestor must be of type A, its child must be of type B, followed by a child of type C.\n   *                    NOTE: the path scheme use here may be temporary dependent on final protocol spec.\n   */\n  private static getMessage(\n    ancestorMessageChain: RecordsWriteMessage[],\n    protocolPath: string,\n  ): RecordsWriteMessage | undefined {\n    const expectedAncestors = protocolPath.split('/');\n\n    // consider moving this check to ProtocolsConfigure message ingestion\n    if (expectedAncestors.length > ancestorMessageChain.length) {\n      return undefined;\n    }\n\n    let i = 0;\n    while (true) {\n      const expectedDefinitionId = expectedAncestors[i];\n      const ancestorMessage = ancestorMessageChain[i];\n\n      const actualDefinitionId = ProtocolAuthorization.getTypeName(ancestorMessage.descriptor.protocolPath!);\n      if (actualDefinitionId !== expectedDefinitionId) {\n        throw new Error(`mismatching record schema: expecting ${expectedDefinitionId} but actual ${actualDefinitionId}`);\n      }\n\n      // we have found the message if we are looking at the last message specified by the path\n      if (i + 1 === expectedAncestors.length) {\n        return ancestorMessage;\n      }\n\n      i++;\n    }\n  }\n\n  private static getTypeName(protocolPath: string): string {\n    return protocolPath.split('/').slice(-1)[0];\n  }\n}", "import type { BaseMessage } from '../../core/types.js';\nimport type { DwnInterfaceName, DwnMethodName } from '../../core/message.js';\n\nexport type ProtocolsConfigureDescriptor = {\n  interface : DwnInterfaceName.Protocols;\n  method: DwnMethodName.Configure;\n  dateCreated: string;\n  definition: ProtocolDefinition;\n};\n\nexport type ProtocolDefinition = {\n  protocol: string;\n  types: ProtocolTypes;\n  structure: {\n    [key: string]: ProtocolRuleSet;\n  }\n};\n\nexport type ProtocolType = {\n  schema?: string,\n  dataFormats?: string[],\n};\n\nexport type ProtocolTypes = {\n  [key: string]: ProtocolType;\n};\n\nexport enum ProtocolActor {\n  Anyone = 'anyone',\n  Author = 'author',\n  Recipient = 'recipient'\n}\n\nexport enum ProtocolAction {\n  Read = 'read',\n  Write = 'write'\n}\n\nexport type ProtocolActionRule = {\n  who: string,\n  of?: string,\n  can: string\n};\n\nexport type ProtocolRuleSet = {\n  $actions?: ProtocolActionRule[];\n  // JSON Schema verifies that properties other than `$actions` will actually have type ProtocolRuleSet\n  [key: string]: any;\n};\n\nexport type ProtocolsConfigureMessage = BaseMessage & {\n  descriptor: ProtocolsConfigureDescriptor;\n};\n\nexport type ProtocolsQueryFilter = {\n  protocol: string,\n};\n\nexport type ProtocolsQueryDescriptor = {\n  interface : DwnInterfaceName.Protocols,\n  method: DwnMethodName.Query;\n  dateCreated: string;\n  filter?: ProtocolsQueryFilter\n};\n\nexport type ProtocolsQueryMessage = BaseMessage & {\n  descriptor: ProtocolsQueryDescriptor;\n};\n", "import type { DerivedPrivateJwk } from './hd-key.js';\nimport type { PublicJwk } from '../jose/types.js';\nimport type { Readable } from 'readable-stream';\nimport type { RecordsWriteDescriptor, UnsignedRecordsWriteMessage } from '../interfaces/records/types.js';\n\nimport { Encoder } from './encoder.js';\nimport { Encryption } from './encryption.js';\nimport { KeyDerivationScheme } from './hd-key.js';\nimport { Secp256k1 } from './secp256k1.js';\nimport { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\n/**\n * Class containing useful utilities related to the Records interface.\n */\nexport class Records {\n  /**\n   * Decrypts the encrypted data in a message reply using the given ancestor private key.\n   * @param ancestorPrivateKey Any ancestor private key in the key derivation path.\n   */\n  public static async decrypt(\n    recordsWrite: UnsignedRecordsWriteMessage,\n    ancestorPrivateKey: DerivedPrivateJwk,\n    cipherStream: Readable\n  ): Promise<Readable> {\n    const { recordId, contextId, descriptor, encryption } = recordsWrite;\n\n    // look for an encrypted symmetric key that is encrypted using the same scheme as the given derived private key\n    const matchingEncryptedKey = encryption!.keyEncryption.find(key => key.derivationScheme === ancestorPrivateKey.derivationScheme);\n    if (matchingEncryptedKey === undefined) {\n      throw new DwnError(\n        DwnErrorCode.RecordsDecryptNoMatchingKeyDerivationScheme,\n        `Unable to find symmetric key encrypted using '${ancestorPrivateKey.derivationScheme}' derivation scheme.`\n      );\n    }\n\n    const fullDerivationPath = Records.constructKeyDerivationPath(matchingEncryptedKey.derivationScheme, recordId, contextId, descriptor);\n\n    // NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n    // so we will assume that's the algorithm without additional switch/if statements\n    const leafPrivateKey = await Records.deriveLeafPrivateKey(ancestorPrivateKey, fullDerivationPath);\n    const encryptedKeyBytes = Encoder.base64UrlToBytes(matchingEncryptedKey.encryptedKey);\n    const ephemeralPublicKey = Secp256k1.publicJwkToBytes(matchingEncryptedKey.ephemeralPublicKey);\n    const keyEncryptionInitializationVector = Encoder.base64UrlToBytes(matchingEncryptedKey.initializationVector);\n    const messageAuthenticationCode = Encoder.base64UrlToBytes(matchingEncryptedKey.messageAuthenticationCode);\n    const dataEncryptionKey = await Encryption.eciesSecp256k1Decrypt({\n      ciphertext           : encryptedKeyBytes,\n      ephemeralPublicKey,\n      initializationVector : keyEncryptionInitializationVector,\n      messageAuthenticationCode,\n      privateKey           : leafPrivateKey\n    });\n\n    // NOTE: right now only `A256CTR` algorithm is supported for symmetric encryption,\n    // so we will assume that's the algorithm without additional switch/if statements\n    const dataEncryptionInitializationVector = Encoder.base64UrlToBytes(encryption!.initializationVector);\n    const plaintextStream = await Encryption.aes256CtrDecrypt(dataEncryptionKey, dataEncryptionInitializationVector, cipherStream);\n\n    return plaintextStream;\n  }\n\n  /**\n   * Constructs full key derivation path using the specified scheme.\n   */\n  public static constructKeyDerivationPath(\n    keyDerivationScheme: KeyDerivationScheme,\n    recordId: string,\n    contextId: string | undefined,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n\n    let fullDerivationPath;\n    if (keyDerivationScheme === KeyDerivationScheme.DataFormats) {\n      fullDerivationPath = Records.constructKeyDerivationPathUsingDataFormatsScheme(recordId, descriptor);\n    } else if (keyDerivationScheme === KeyDerivationScheme.Protocols) {\n      fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolsScheme(recordId, contextId, descriptor);\n    } else {\n      // `schemas` scheme\n      fullDerivationPath = Records.constructKeyDerivationPathUsingSchemasScheme(recordId, descriptor);\n    }\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Constructs the full key derivation path using `dataFormats` scheme.\n   */\n  private static constructKeyDerivationPathUsingDataFormatsScheme(\n    recordId: string,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n    const fullDerivationPath = [\n      KeyDerivationScheme.DataFormats,\n      descriptor.dataFormat,\n      recordId\n    ];\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Constructs the full key derivation path using `protocols` scheme.\n   */\n  private static constructKeyDerivationPathUsingProtocolsScheme(\n    recordId: string,\n    contextId: string | undefined,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n    // ensure `protocol` is defined\n    // NOTE: no need to check `protocolPath` and `contextId` because earlier code ensures that if `protocol` is defined, those are defined also\n    if (descriptor.protocol === undefined) {\n      throw new DwnError(\n        DwnErrorCode.RecordsProtocolsDerivationSchemeMissingProtocol,\n        'Unable to construct key derivation path using `protocols` scheme because `protocol` is missing.'\n      );\n    }\n\n    const protocolPathSegments = descriptor.protocolPath!.split('/');\n    const fullDerivationPath = [\n      KeyDerivationScheme.Protocols,\n      descriptor.protocol,\n      contextId!,\n      ...protocolPathSegments,\n      descriptor.dataFormat,\n      recordId\n    ];\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Constructs the full key derivation path using `schemas` scheme.\n   */\n  private static constructKeyDerivationPathUsingSchemasScheme(\n    recordId: string,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n    if (descriptor.schema === undefined) {\n      throw new DwnError(\n        DwnErrorCode.RecordsSchemasDerivationSchemeMissingSchema,\n        'Unable to construct key derivation path using `schemas` scheme because `schema` is missing.'\n      );\n    }\n\n    const fullDerivationPath = [\n      KeyDerivationScheme.Schemas,\n      descriptor.schema,\n      descriptor.dataFormat,\n      recordId\n    ];\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Derives a descendant public key given an ancestor public key.\n   * NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n   *       so we will assume that's the algorithm without additional switch/if statements\n   */\n  public static async deriveLeafPublicKey(rootPublicKey: PublicJwk, fullDescendantDerivationPath: string[]): Promise<Uint8Array> {\n    if (rootPublicKey.crv !== 'secp256k1') {\n      throw new DwnError(\n        DwnErrorCode.RecordsDeriveLeafPublicKeyUnSupportedCurve,\n        `Curve ${rootPublicKey.crv} is not supported.`\n      );\n    }\n\n    const ancestorPublicKeyBytes = Secp256k1.publicJwkToBytes(rootPublicKey);\n    const leafPublicKey = await Secp256k1.derivePublicKey(ancestorPublicKeyBytes, fullDescendantDerivationPath);\n\n    return leafPublicKey;\n  }\n\n  /**\n   * Derives a descendant private key given an ancestor private key.\n   * NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n   *       so we will assume that's the algorithm without additional switch/if statements\n   */\n  public static async deriveLeafPrivateKey(ancestorPrivateKey: DerivedPrivateJwk, fullDescendantDerivationPath: string[]): Promise<Uint8Array> {\n    if (ancestorPrivateKey.derivedPrivateKey.crv !== 'secp256k1') {\n      throw new DwnError(\n        DwnErrorCode.RecordsDeriveLeafPrivateKeyUnSupportedCurve,\n        `Curve ${ancestorPrivateKey.derivedPrivateKey.crv} is not supported.`\n      );\n    }\n\n    const ancestorPrivateKeyDerivationPath = ancestorPrivateKey.derivationPath ?? [];\n\n    Records.validateAncestorKeyAndDescentKeyDerivationPathsMatch(ancestorPrivateKeyDerivationPath, fullDescendantDerivationPath);\n\n    const subDerivationPath = fullDescendantDerivationPath.slice(ancestorPrivateKeyDerivationPath.length);\n    const ancestorPrivateKeyBytes = Secp256k1.privateJwkToBytes(ancestorPrivateKey.derivedPrivateKey);\n    const leafPrivateKey = await Secp256k1.derivePrivateKey(ancestorPrivateKeyBytes, subDerivationPath);\n\n    return leafPrivateKey;\n  }\n\n  /**\n   * Validates that ancestor derivation path matches the descendant derivation path completely.\n   * @throws {DwnError} with `DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment` if fails validation.\n   */\n  public static validateAncestorKeyAndDescentKeyDerivationPathsMatch(\n    ancestorKeyDerivationPath: string[],\n    descendantKeyDerivationPath: string[]\n  ): void {\n    for (let i = 0; i < ancestorKeyDerivationPath.length; i++) {\n      const ancestorSegment = ancestorKeyDerivationPath[i];\n      const descendantSegment = descendantKeyDerivationPath[i];\n      if (ancestorSegment !== descendantSegment) {\n        throw new DwnError(\n          DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment,\n          `Ancestor key derivation segment '${ancestorSegment}' mismatches against the descendant key derivation segment '${descendantSegment}'.`);\n      }\n    }\n  }\n}\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { RecordsDeleteMessage } from '../types.js';\nimport type { TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { deleteAllOlderMessagesButKeepInitialWrite } from '../records-interface.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { RecordsDelete } from '../messages/records-delete.js';\nimport { RecordsWrite } from '../messages/records-write.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport class RecordsDeleteHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore, private eventLog: EventLog) { }\n\n  public async handle({\n    tenant,\n    message\n  }: { tenant: string, message: RecordsDeleteMessage}): Promise<MessageReply> {\n\n    let recordsDelete: RecordsDelete;\n    try {\n      recordsDelete = await RecordsDelete.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication & authorization\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await recordsDelete.authorize(tenant);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // get existing records matching the `recordId`\n    const query = {\n      interface : DwnInterfaceName.Records,\n      recordId  : message.descriptor.recordId\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as TimestampedMessage[];\n\n    // find which message is the newest, and if the incoming message is the newest\n    const newestExistingMessage = await RecordsWrite.getNewestMessage(existingMessages);\n    let incomingMessageIsNewest = false;\n    let newestMessage;\n    // if incoming message is newest\n    if (newestExistingMessage === undefined || await RecordsWrite.isNewer(message, newestExistingMessage)) {\n      incomingMessageIsNewest = true;\n      newestMessage = message;\n    } else { // existing message is the same age or newer than the incoming message\n      newestMessage = newestExistingMessage;\n    }\n\n    if (!incomingMessageIsNewest) {\n      return new MessageReply({\n        status: { code: 409, detail: 'Conflict' }\n      });\n    }\n\n    // return Not Found if record does not exist or is already deleted\n    if (newestExistingMessage === undefined || newestExistingMessage.descriptor.method === DwnMethodName.Delete) {\n      return new MessageReply({\n        status: { code: 404, detail: 'Not Found' }\n      });\n    }\n\n    const indexes = await constructIndexes(tenant, recordsDelete);\n    await this.messageStore.put(tenant, message, indexes);\n\n    const messageCid = await Message.getCid(message);\n    await this.eventLog.append(tenant, messageCid);\n\n    // delete all existing messages that are not newest, except for the initial write\n    await deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, this.messageStore, this.dataStore, this.eventLog);\n\n    const messageReply = new MessageReply({\n      status: { code: 202, detail: 'Accepted' }\n    });\n    return messageReply;\n  };\n}\n\nexport async function constructIndexes(tenant: string, recordsDelete: RecordsDelete): Promise<Record<string, string>> {\n  const message = recordsDelete.message;\n  const descriptor = { ...message.descriptor };\n\n  // NOTE: the \"trick\" not may not be apparent on how a query is able to omit deleted records:\n  // we intentionally not add index for `isLatestBaseState` at all, this means that upon a successful delete,\n  // no messages with the record ID will match any query because queries by design filter by `isLatestBaseState = true`,\n  // `isLatestBaseState` for the initial delete would have been toggled to `false`\n  const indexes: Record<string, any> = {\n    // isLatestBaseState : \"true\", // intentionally showing that this index is omitted\n    author: recordsDelete.author,\n    ...descriptor\n  };\n\n  return indexes;\n}\n", "import type { RecordsDeleteDescriptor, RecordsDeleteMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Message } from '../../../core/message.js';\nimport type { SignatureInput } from '../../../jose/jws/general/types.js';\n\nimport { authorize, validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport type RecordsDeleteOptions = {\n  recordId: string;\n  dateModified?: string;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class RecordsDelete extends Message<RecordsDeleteMessage> {\n\n  public static async parse(message: RecordsDeleteMessage): Promise<RecordsDelete> {\n    await validateAuthorizationIntegrity(message);\n\n    const recordsDelete = new RecordsDelete(message);\n    return recordsDelete;\n  }\n\n  /**\n   * Creates a RecordsDelete message.\n   * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.\n   * @param options.dateModified If `undefined`, it will be auto-filled with current time.\n   */\n  public static async create(options: RecordsDeleteOptions): Promise<RecordsDelete> {\n    const recordId = options.recordId;\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    const descriptor: RecordsDeleteDescriptor = {\n      interface    : DwnInterfaceName.Records,\n      method       : DwnMethodName.Delete,\n      recordId,\n      dateModified : options.dateModified ?? currentTime\n    };\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message: RecordsDeleteMessage = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsDelete(message);\n  }\n\n  public async authorize(tenant: string): Promise<void> {\n    // TODO: #203 - implement protocol-based authorization for RecordsDelete (https://github.com/TBD54566975/dwn-sdk-js/issues/203)\n    await authorize(tenant, this);\n  }\n}\n", "import type { MethodHandler } from '../../types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\nimport type { RecordsQueryMessage, RecordsQueryReplyEntry, RecordsWriteMessage } from '../types.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { lexicographicalCompare } from '../../../utils/string.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport type { RecordsWriteMessageWithOptionalEncodedData } from '../../../store/storage-controller.js';\nimport { StorageController } from '../../../store/storage-controller.js';\n\nimport { DateSort, RecordsQuery } from '../messages/records-query.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport class RecordsQueryHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore) { }\n\n  public async handle({\n    tenant,\n    message\n  }: {tenant: string, message: RecordsQueryMessage}): Promise<MessageReply> {\n    let recordsQuery: RecordsQuery;\n    try {\n      recordsQuery = await RecordsQuery.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await recordsQuery.authorize(tenant);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    let records: RecordsWriteMessageWithOptionalEncodedData[];\n    if (recordsQuery.author === tenant) {\n      records = await this.fetchRecordsAsOwner(tenant, recordsQuery);\n    } else {\n      records = await this.fetchRecordsAsNonOwner(tenant, recordsQuery);\n    }\n\n    // sort if `dataSort` is specified\n    if (recordsQuery.message.descriptor.dateSort) {\n      records = await sortRecords(records, recordsQuery.message.descriptor.dateSort);\n    }\n\n    // strip away `authorization` property for each record before responding\n    const entries: RecordsQueryReplyEntry[] = [];\n    for (const record of records) {\n      const { authorization: _, ...objectWithRemainingProperties } = record; // a trick to stripping away `authorization`\n      entries.push(objectWithRemainingProperties);\n    }\n\n    return new MessageReply({\n      status: { code: 200, detail: 'OK' },\n      entries\n    });\n  }\n\n  /**\n   * Fetches the records as the owner of the DWN with no additional filtering.\n   */\n  private async fetchRecordsAsOwner(tenant: string, recordsQuery: RecordsQuery): Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n    // fetch all published records matching the query\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      isLatestBaseState : true\n    };\n    const records = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return records;\n  }\n\n  /**\n   * Fetches the records as a non-owner, return only:\n   * 1. published records; and\n   * 2. unpublished records intended for the requester (where `recipient` is the requester)\n   */\n  private async fetchRecordsAsNonOwner(tenant: string, recordsQuery: RecordsQuery)\n    : Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n    const publishedRecords = await this.fetchPublishedRecords(tenant, recordsQuery);\n    const unpublishedRecordsForRequester = await this.fetchUnpublishedRecordsForRequester(tenant, recordsQuery);\n    const unpublishedRecordsByRequester = await this.fetchUnpublishedRecordsByRequester(tenant, recordsQuery);\n    const records = [...publishedRecords, ...unpublishedRecordsForRequester, ...unpublishedRecordsByRequester];\n    return records;\n  }\n\n  /**\n   * Fetches only published records.\n   */\n  private async fetchPublishedRecords(tenant: string, recordsQuery: RecordsQuery): Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n    // fetch all published records matching the query\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      published         : true,\n      isLatestBaseState : true\n    };\n    const publishedRecords = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return publishedRecords;\n  }\n\n  /**\n   * Fetches only unpublished records that are intended for the requester (where `recipient` is the requester).\n   */\n  private async fetchUnpublishedRecordsForRequester(tenant: string, recordsQuery: RecordsQuery)\n    : Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n\n    // include records where recipient is requester\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      // TODO: `recordsQuery.author` cannot be undefined until #299 is implemented (https://github.com/TBD54566975/dwn-sdk-js/issues/299)\n      recipient         : recordsQuery.author!,\n      isLatestBaseState : true,\n      published         : false\n    };\n    const unpublishedRecordsForRequester = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return unpublishedRecordsForRequester;\n  }\n\n  /**\n   * Fetches only unpublished records that are authored by the requester.\n   */\n  private async fetchUnpublishedRecordsByRequester(tenant: string, recordsQuery: RecordsQuery)\n    : Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n\n    // include records where recipient is requester\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      // TODO: `recordsQuery.author` cannot be undefined until #299 is implemented (https://github.com/TBD54566975/dwn-sdk-js/issues/299)\n      author            : recordsQuery.author!,\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      isLatestBaseState : true,\n      published         : false\n    };\n    const unpublishedRecordsForRequester = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return unpublishedRecordsForRequester;\n  }\n}\n\n/**\n * Sorts the given records. There are 4 options for dateSort:\n * 1. createdAscending - Sort in ascending order based on when the message was created\n * 2. createdDescending - Sort in descending order based on when the message was created\n * 3. publishedAscending - If the message is published, sort in asc based on publish date\n * 4. publishedDescending - If the message is published, sort in desc based on publish date\n *\n * If sorting is based on date published, records that are not published are filtered out.\n * @param messages - Messages to be sorted if dateSort is present\n * @param dateSort - Sorting scheme\n * @returns Sorted Messages\n */\nasync function sortRecords(\n  messages: RecordsWriteMessage[],\n  dateSort: DateSort\n): Promise<RecordsWriteMessage[]> {\n  switch (dateSort) {\n  case DateSort.CreatedAscending:\n    return messages.sort((a, b) => lexicographicalCompare(a.descriptor.dateCreated, b.descriptor.dateCreated));\n  case DateSort.CreatedDescending:\n    return messages.sort((a, b) => lexicographicalCompare(b.descriptor.dateCreated, a.descriptor.dateCreated));\n  case DateSort.PublishedAscending:\n    return messages\n      .filter(m => m.descriptor.published)\n      .sort((a, b) => lexicographicalCompare(a.descriptor.datePublished!, b.descriptor.datePublished!));\n  case DateSort.PublishedDescending:\n    return messages\n      .filter(m => m.descriptor.published)\n      .sort((a, b) => lexicographicalCompare(b.descriptor.datePublished!, a.descriptor.datePublished!));\n  }\n}\n", "import type { MethodHandler } from '../../types.js';\nimport type { TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\nimport type { RecordsReadMessage, RecordsReadReply, RecordsWriteMessage } from '../types.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { Message } from '../../../core/message.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { RecordsRead } from '../messages/records-read.js';\nimport { RecordsWrite } from '../messages/records-write.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport class RecordsReadHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore) { }\n\n  public async handle({\n    tenant,\n    message\n  }: { tenant: string, message: RecordsReadMessage }): Promise<RecordsReadReply> {\n\n    let recordsRead: RecordsRead;\n    try {\n      recordsRead = await RecordsRead.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication\n    try {\n      if (recordsRead.author !== undefined) {\n        await authenticate(message.authorization!, this.didResolver);\n      }\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // get existing messages matching `recordId` so we can perform authorization\n    const query = {\n      interface : DwnInterfaceName.Records,\n      recordId  : message.descriptor.recordId\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as TimestampedMessage[];\n\n    const newestExistingMessage = await RecordsWrite.getNewestMessage(existingMessages);\n\n    // if no record found or it has been deleted\n    if (newestExistingMessage === undefined || newestExistingMessage.descriptor.method === DwnMethodName.Delete) {\n      return new MessageReply({\n        status: { code: 404, detail: 'Not Found' }\n      });\n    }\n\n    const newestRecordsWrite = newestExistingMessage as RecordsWriteMessage;\n    try {\n      await recordsRead.authorize(tenant, await RecordsWrite.parse(newestRecordsWrite), this.messageStore);\n    } catch (error) {\n      return MessageReply.fromError(error, 401);\n    }\n\n    const messageCid = await Message.getCid(newestRecordsWrite);\n    const result = await this.dataStore.get(tenant, messageCid, newestRecordsWrite.descriptor.dataCid);\n\n    if (result?.dataStream === undefined) {\n      return new MessageReply({\n        status: { code: 404, detail: 'Not Found' }\n      });\n    }\n\n    const { authorization: _, ...recordsWriteWithoutAuthorization } = newestRecordsWrite; // a trick to stripping away `authorization`\n    const messageReply: RecordsReadReply ={\n      status : { code: 200, detail: 'OK' },\n      record : {\n        ...recordsWriteWithoutAuthorization,\n        data: result.dataStream\n      }\n    };\n    return messageReply;\n  };\n}\n", "import type { BaseMessage } from '../../../core/types.js';\nimport type { MessageStore } from '../../../store/message-store.js';\nimport type { RecordsWrite } from './records-write.js';\nimport type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { RecordsReadDescriptor, RecordsReadMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Message } from '../../../core/message.js';\nimport { ProtocolAuthorization } from '../../../core/protocol-authorization.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport type RecordsReadOptions = {\n  recordId: string;\n  date?: string;\n  authorizationSignatureInput?: SignatureInput;\n};\n\nexport class RecordsRead extends Message<RecordsReadMessage> {\n\n  public static async parse(message: RecordsReadMessage): Promise<RecordsRead> {\n    if (message.authorization !== undefined) {\n      await validateAuthorizationIntegrity(message as BaseMessage);\n    }\n\n    const recordsRead = new RecordsRead(message);\n    return recordsRead;\n  }\n\n  /**\n   * Creates a RecordsRead message.\n   * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.\n   * @param options.date If `undefined`, it will be auto-filled with current time.\n   */\n  public static async create(options: RecordsReadOptions): Promise<RecordsRead> {\n    const { recordId, authorizationSignatureInput } = options;\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    const descriptor: RecordsReadDescriptor = {\n      interface : DwnInterfaceName.Records,\n      method    : DwnMethodName.Read,\n      recordId,\n      date      : options.date ?? currentTime\n    };\n\n    // only generate the `authorization` property if signature input is given\n    const authorization = authorizationSignatureInput ? await Message.signAsAuthorization(descriptor, authorizationSignatureInput) : undefined;\n    const message: RecordsReadMessage = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsRead(message);\n  }\n\n  public async authorize(tenant: string, newestRecordsWrite: RecordsWrite, messageStore: MessageStore): Promise<void> {\n    const { descriptor } = newestRecordsWrite.message;\n    // if author/requester is the same as the target tenant, we can directly grant access\n    if (this.author === tenant) {\n      return;\n    } else if (descriptor.published === true) {\n      // authentication is not required for published data\n      return;\n    } else if (descriptor.protocol !== undefined) {\n      await ProtocolAuthorization.authorize(tenant, this, this.author, messageStore);\n    } else {\n      throw new Error('message failed authorization');\n    }\n  }\n}\n", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { HooksWriteDescriptor, HooksWriteMessage } from '../../hooks/types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\n\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\n/**\n * Input to `HookssWrite.create()`.\n */\nexport type HooksWriteOptions = {\n  dateCreated?: string,\n  /**\n   * leave as `undefined` for customer handler.\n   * ie. DWN processing will use `undefined` check to attempt to invoke the registered handler.\n   */\n  uri?: string,\n  filter: {\n    method: string,\n  },\n  authorizationSignatureInput: SignatureInput;\n};\n\n/**\n * Class that provides `HooksWrite` related operations.\n */\nexport class HooksWrite extends Message<HooksWriteMessage> {\n\n  /**\n   * Creates a HooksWrite message\n   */\n  static async create(options: HooksWriteOptions): Promise<HooksWrite> {\n    const descriptor: HooksWriteDescriptor = {\n      interface   : DwnInterfaceName.Hooks,\n      method      : DwnMethodName.Write,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      uri         : options.uri,\n      filter      : options.filter\n    };\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    const hooksWrite = new HooksWrite(message);\n    return hooksWrite;\n  }\n}\n", "/**\n * Contains a public-private key pair and the associated key ID.\n */\nexport type KeyMaterial = {\n  keyId: string,\n  keyPair: { publicJwk: PublicJwk, privateJwk: PrivateJwk }\n};\n\nexport type Jwk = {\n  /** The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key. */\n  alg?: string;\n  /** The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key. */\n  kid?: string;\n  /** identifies the cryptographic algorithm family used with the key, such \"EC\". */\n  kty: string;\n};\n\nexport type PublicJwk = Jwk & {\n  /** The \"crv\" (curve) parameter identifies the cryptographic curve used with the key.\n   * MUST be present for all EC public keys\n   */\n  crv: 'Ed25519' | 'secp256k1';\n  /**\n   * the x coordinate for the Elliptic Curve point.\n   * Represented as the base64url encoding of the octet string representation of the coordinate.\n   * MUST be present for all EC public keys\n   */\n  x: string;\n  /**\n   * the y coordinate for the Elliptic Curve point.\n   * Represented as the base64url encoding of the octet string representation of the coordinate.\n   */\n  y?: string;\n};\n\nexport type PrivateJwk = PublicJwk & {\n  /**\n   * the Elliptic Curve private key value.\n   * It is represented as the base64url encoding of the octet string representation of the private key value\n   * MUST be present to represent Elliptic Curve private keys.\n   */\n  d: string;\n};\n\nexport interface Signer {\n  /**\n   * signs the provided payload using the provided JWK\n   * @param content - the content to sign\n   * @param privateJwk - the key to sign with\n   * @returns the signed content (aka signature)\n   */\n  sign(content: Uint8Array, privateJwk: PrivateJwk): Promise<Uint8Array>;\n\n  /**\n   * Verifies a signature against the provided payload hash and public key.\n   * @param content - the content to verify with\n   * @param signature - the signature to verify against\n   * @param publicJwk - the key to verify with\n   * @returns a boolean indicating whether the signature matches\n   */\n  verify(content: Uint8Array, signature: Uint8Array, publicJwk: PublicJwk): Promise<boolean>;\n\n  /**\n   * generates a random key pair\n   * @returns the public and private keys as JWKs\n   */\n  generateKeyPair(): Promise<{ publicJwk: PublicJwk, privateJwk: PrivateJwk }>\n\n\n  /**\n   * converts public key in bytes into a JWK\n   * @param publicKeyBytes - the public key to convert into JWK\n   * @returns the public key in JWK format\n   */\n  publicKeyToJwk(publicKeyBytes: Uint8Array): Promise<PublicJwk>\n}", "import type { BaseMessage, Filter } from '../core/types.js';\n\nexport interface MessageStoreOptions {\n  signal?: AbortSignal;\n}\n\nexport interface MessageStore {\n  /**\n   * opens a connection to the underlying store\n   */\n  open(): Promise<void>;\n\n  /**\n   * closes the connection to the underlying store\n   */\n  close(): Promise<void>;\n\n  /**\n   * adds a message to the underlying store. Uses the message's cid as the key\n   * @param indexes indexes (key-value pairs) to be included as part of this put operation\n   */\n  put(\n    tenant: string,\n    messageJson: BaseMessage,\n    indexes: Record<string, string>,\n    options?: MessageStoreOptions\n  ): Promise<void>;\n\n  /**\n   * Fetches a single message by `cid` from the underlying store.\n   * Returns `undefined` no message was found.\n   */\n  get(tenant: string, cid: string, options?: MessageStoreOptions): Promise<BaseMessage | undefined>;\n\n  /**\n   * Queries the underlying store for messages that match the provided filter.\n   */\n  query(tenant: string, filter: Filter, options?: MessageStoreOptions ): Promise<BaseMessage[]>;\n\n  /**\n   * Deletes the message associated with the id provided.\n   */\n  delete(tenant: string, cid: string, options?: MessageStoreOptions): Promise<void>;\n}", "import type { PrivateJwk } from '../../types.js';\n/**\n * General JWS definition. Payload is returned as an empty\n * string when JWS Unencoded Payload Option\n * [RFC7797](https://www.rfc-editor.org/rfc/rfc7797) is used.\n */\nexport type GeneralJws = {\n  payload: string\n  signatures: SignatureEntry[]\n};\n\n/**\n * An entry of the `signatures` array in a general JWS.\n */\nexport type SignatureEntry = {\n  /**\n   * The \"protected\" member MUST be present and contain the value\n   * BASE64URL(UTF8(JWS Protected Header)) when the JWS Protected\n   * Header value is non-empty; otherwise, it MUST be absent.  These\n   * Header Parameter values are integrity protected.\n   */\n  protected: string\n\n  /**\n   * The \"signature\" member MUST be present and contain the value\n   * BASE64URL(JWS Signature).\n   */\n  signature: string\n};\n\nexport type JwsHeaderParameters = {\n  /** JWS \"alg\" (Algorithm) Header Parameter. */\n  alg: string\n  /** JWS \"kid\" (Key ID) Parameter. */\n  kid: string\n};\n\nexport type SignatureInput = {\n  protectedHeader: JwsHeaderParameters\n  privateJwk: PrivateJwk\n};", "import type { DataStore } from './data-store.js';\nimport type { EventLog } from '../event-log/event-log.js';\nimport type { MessageStore } from './message-store.js';\nimport type { Readable } from 'readable-stream';\nimport type { BaseMessage, Filter } from '../core/types.js';\n\nimport { DwnConstant } from '../core/dwn-constant.js';\nimport { Message } from '../core/message.js';\nimport type { RecordsWriteMessage } from '../index.js';\nimport { DataStream, Encoder } from '../index.js';\nimport { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\n/**\n * A class that provides an abstraction for the usage of BlockStore and DataStore.\n */\nexport class StorageController {\n  /**\n   * Puts the given message and data in storage.\n   * @throws {DwnError} with `DwnErrorCode.StorageControllerDataCidMismatch`\n   *                    if the data stream resulted in a data CID that mismatches with `dataCid` in the given message\n   * @throws {DwnError} with `DwnErrorCode.StorageControllerDataSizeMismatch`\n   *                    if `dataSize` in `descriptor` given mismatches the actual data size\n   */\n  public static async put(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    eventLog: EventLog,\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    dataStream?: Readable\n  ): Promise<void> {\n    const messageCid = await Message.getCid(message);\n\n    // if `dataCid` is given, it means there is corresponding data associated with this message\n    if (message.descriptor.dataCid !== undefined) {\n      let result;\n      if (dataStream === undefined) {\n        // but NOTE: it is possible that a data stream is not given even when `dataCid` is given, for instance,\n        // a subsequent RecordsWrite that changes the `published` property, but the data hasn't changed,\n        // in this case requiring re-uploading of the data is extremely inefficient so we allow omission of data stream as a utility function,\n        // but this method assumes checks for the appropriate conditions already took place prior to calling this method.\n        result = await dataStore.associate(tenant, messageCid, message.descriptor.dataCid);\n      } else {\n        result = await dataStore.put(tenant, messageCid, message.descriptor.dataCid, dataStream);\n      }\n\n      // MUST verify that the size of the actual data matches with the given `dataSize`\n      // if data size is wrong, delete the data we just stored\n      if (message.descriptor.dataSize !== result.dataSize) {\n        // there is an opportunity to improve here: handle the edge cae of if the delete fails...\n        await dataStore.delete(tenant, messageCid, message.descriptor.dataCid);\n\n        throw new DwnError(\n          DwnErrorCode.StorageControllerDataSizeMismatch,\n          `actual data size ${result.dataSize} bytes does not match dataSize in descriptor: ${message.descriptor.dataSize}`\n        );\n      }\n\n      // MUST verify that the CID of the actual data matches with the given `dataCid`\n      // if data CID is wrong, delete the data we just stored\n      if (message.descriptor.dataCid !== result.dataCid) {\n        // there is an opportunity to improve here: handle the edge cae of if the delete fails...\n        await dataStore.delete(tenant, messageCid, message.descriptor.dataCid);\n\n        throw new DwnError(\n          DwnErrorCode.StorageControllerDataCidMismatch,\n          `actual data CID ${result.dataCid} does not match dataCid in descriptor: ${message.descriptor.dataCid}`\n        );\n      }\n    }\n\n    await messageStore.put(tenant, message, indexes);\n    await eventLog.append(tenant, messageCid);\n  }\n\n  public static async query(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    tenant: string,\n    filter: Filter\n  ): Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n\n    const messages: RecordsWriteMessageWithOptionalEncodedData[] = (await messageStore.query(tenant, filter)) as RecordsWriteMessage[];\n\n    // for every message, only include the data as `encodedData` if the data size is equal or smaller than the size threshold\n    for (const message of messages) {\n      const dataCid = message.descriptor.dataCid;\n      const dataSize = message.descriptor.dataSize;\n      if (dataCid !== undefined && dataSize! <= DwnConstant.maxDataSizeAllowedToBeEncoded) {\n        const messageCid = await Message.getCid(message);\n        const result = await dataStore.get(tenant, messageCid, dataCid);\n\n        if (result) {\n          const dataBytes = await DataStream.toBytes(result.dataStream);\n          message.encodedData = Encoder.bytesToBase64Url(dataBytes);\n        }\n      }\n    }\n\n    return messages;\n  }\n\n  public static async delete(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    tenant: string,\n    message: BaseMessage\n  ): Promise<void> {\n    const messageCid = await Message.getCid(message);\n\n    if (message.descriptor.dataCid !== undefined) {\n      await dataStore.delete(tenant, messageCid, message.descriptor.dataCid);\n    }\n\n    await messageStore.delete(tenant, messageCid);\n  }\n}\n\nexport type RecordsWriteMessageWithOptionalEncodedData = RecordsWriteMessage & { encodedData?: string };\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { ProtocolsConfigureMessage } from '../types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { canonicalAuth } from '../../../core/auth.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { ProtocolsConfigure } from '../messages/protocols-configure.js';\nimport { StorageController } from '../../../store/storage-controller.js';\n\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport class ProtocolsConfigureHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore, private eventLog: EventLog) { }\n\n  public async handle({\n    tenant,\n    message,\n    dataStream\n  }: {tenant: string, message: ProtocolsConfigureMessage, dataStream: _Readable.Readable}): Promise<MessageReply> {\n\n    let protocolsConfigure: ProtocolsConfigure;\n    try {\n      protocolsConfigure = await ProtocolsConfigure.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication & authorization\n    try {\n      await canonicalAuth(tenant, protocolsConfigure, this.didResolver);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // attempt to get existing protocol\n    const query = {\n      interface : DwnInterfaceName.Protocols,\n      method    : DwnMethodName.Configure,\n      protocol  : message.descriptor.definition.protocol\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as ProtocolsConfigureMessage[];\n\n    // find lexicographically the largest message, and if the incoming message is the largest\n    let newestMessage = await Message.getMessageWithLargestCid(existingMessages);\n    let incomingMessageIsNewest = false;\n    if (newestMessage === undefined || await Message.isCidLarger(message, newestMessage)) {\n      incomingMessageIsNewest = true;\n      newestMessage = message;\n    }\n\n    // write the incoming message to DB if incoming message is newest\n    let messageReply: MessageReply;\n    if (incomingMessageIsNewest) {\n      const indexes = ProtocolsConfigureHandler.constructProtocolsConfigureIndexes(protocolsConfigure);\n\n      await StorageController.put(this.messageStore, this.dataStore, this.eventLog, tenant, message, indexes, dataStream);\n\n      messageReply = new MessageReply({\n        status: { code: 202, detail: 'Accepted' }\n      });\n    } else {\n      messageReply = new MessageReply({\n        status: { code: 409, detail: 'Conflict' }\n      });\n    }\n\n    // delete all existing records that are smaller\n    const deletedMessageCids: string[] = [];\n    for (const message of existingMessages) {\n      if (await Message.isCidLarger(newestMessage, message)) {\n        const messageCid = await Message.getCid(message);\n        deletedMessageCids.push(messageCid);\n\n        await StorageController.delete(this.messageStore, this.dataStore, tenant, message);\n      }\n    }\n\n    await this.eventLog.deleteEventsByCid(tenant, deletedMessageCids);\n\n    return messageReply;\n  };\n\n  private static constructProtocolsConfigureIndexes(protocolsConfigure: ProtocolsConfigure): Record<string, string> {\n    // strip out `dataSize` and `definition` as they are not indexable\n    // retain protocol url from `definition`\n    const { dataSize, definition, ...propertiesToIndex } = protocolsConfigure.message.descriptor;\n    const { author } = protocolsConfigure;\n\n    const indexes = {\n      ...propertiesToIndex,\n      protocol : definition.protocol,\n      author   : author!\n    };\n\n    return indexes;\n  }\n}", "import type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { ProtocolsQueryDescriptor, ProtocolsQueryFilter, ProtocolsQueryMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\nimport { normalizeProtocolUrl, validateProtocolUrlNormalized } from '../../../utils/url.js';\n\nexport type ProtocolsQueryOptions = {\n  dateCreated?: string;\n  filter?: ProtocolsQueryFilter,\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class ProtocolsQuery extends Message<ProtocolsQueryMessage> {\n\n  public static async parse(message: ProtocolsQueryMessage): Promise<ProtocolsQuery> {\n    await validateAuthorizationIntegrity(message);\n\n    if (message.descriptor.filter !== undefined) {\n      validateProtocolUrlNormalized(message.descriptor.filter.protocol);\n    }\n\n    return new ProtocolsQuery(message);\n  }\n\n  public static async create(options: ProtocolsQueryOptions): Promise<ProtocolsQuery> {\n    const descriptor: ProtocolsQueryDescriptor = {\n      interface   : DwnInterfaceName.Protocols,\n      method      : DwnMethodName.Query,\n      dateCreated : options.dateCreated ?? getCurrentTimeInHighPrecision(),\n      filter      : ProtocolsQuery.normalizeFilter(options.filter),\n    };\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    const protocolsQuery = new ProtocolsQuery(message);\n    return protocolsQuery;\n  }\n\n  private static normalizeFilter(filter: ProtocolsQueryFilter | undefined): ProtocolsQueryFilter | undefined {\n    if (filter === undefined) {\n      return undefined;\n    }\n\n    return {\n      ...filter,\n      protocol: normalizeProtocolUrl(filter.protocol),\n    };\n  }\n}\n", "import type { MethodHandler } from '../../types.js';\nimport type { ProtocolsQueryMessage } from '../types.js';\nimport type { QueryResultEntry } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { canonicalAuth } from '../../../core/auth.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { ProtocolsQuery } from '../messages/protocols-query.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\n\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport class ProtocolsQueryHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore,private dataStore: DataStore) { }\n\n  public async handle({\n    tenant,\n    message\n  }: { tenant: string, message: ProtocolsQueryMessage}): Promise<MessageReply> {\n\n    let protocolsQuery: ProtocolsQuery;\n    try {\n      protocolsQuery = await ProtocolsQuery.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await canonicalAuth(tenant, protocolsQuery, this.didResolver);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    const query = {\n      interface : DwnInterfaceName.Protocols,\n      method    : DwnMethodName.Configure,\n      ...message.descriptor.filter\n    };\n    removeUndefinedProperties(query);\n\n    const messages = await this.messageStore.query(tenant, query);\n\n    // strip away `authorization` property for each record before responding\n    const entries: QueryResultEntry[] = [];\n    for (const message of messages) {\n      const { authorization: _, ...objectWithRemainingProperties } = message; // a trick to stripping away `authorization`\n      entries.push(objectWithRemainingProperties);\n    }\n\n    return new MessageReply({\n      status: { code: 200, detail: 'OK' },\n      entries\n    });\n  };\n}\n", "import * as crypto from 'crypto';\nimport * as eccrypto from 'eccrypto';\nimport { Readable } from 'readable-stream';\n\n/**\n * Utility class for performing common, non-DWN specific encryption operations.\n */\nexport class Encryption {\n  /**\n   * Encrypts the given plaintext stream using AES-256-CTR algorithm.\n   */\n  public static async aes256CtrEncrypt(key: Uint8Array, initializationVector: Uint8Array, plaintextStream: Readable): Promise<Readable> {\n    const cipher = crypto.createCipheriv('aes-256-ctr', key, initializationVector);\n\n    const cipherStream = new Readable({\n      read(): void { }\n    });\n\n    plaintextStream.on('data', (chunk) => {\n      const encryptedChunk = cipher.update(chunk);\n      cipherStream.push(encryptedChunk);\n    });\n\n    plaintextStream.on('end', () => {\n      const finalChunk = cipher.final();\n      cipherStream.push(finalChunk);\n      cipherStream.push(null);\n    });\n\n    plaintextStream.on('error', (err) => {\n      cipherStream.emit('error', err);\n    });\n\n    return cipherStream;\n  }\n\n  /**\n   * Decrypts the given cipher stream using AES-256-CTR algorithm.\n   */\n  public static async aes256CtrDecrypt(key: Uint8Array, initializationVector: Uint8Array, cipherStream: Readable): Promise<Readable> {\n    const decipher = crypto.createDecipheriv('aes-256-ctr', key, initializationVector);\n\n    const plaintextStream = new Readable({\n      read(): void { }\n    });\n\n    cipherStream.on('data', (chunk) => {\n      const decryptedChunk = decipher.update(chunk);\n      plaintextStream.push(decryptedChunk);\n    });\n\n    cipherStream.on('end', () => {\n      const finalChunk = decipher.final();\n      plaintextStream.push(finalChunk);\n      plaintextStream.push(null);\n    });\n\n    cipherStream.on('error', (err) => {\n      plaintextStream.emit('error', err);\n    });\n\n    return plaintextStream;\n  }\n\n  /**\n   * Encrypts the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme) with SECP256K1.\n   */\n  public static async eciesSecp256k1Encrypt(uncompressedPublicKey: Uint8Array, plaintext: Uint8Array): Promise<EciesEncryptionOutput> {\n    // TODO: #291 - Swap out `eccrypto` in favor of a more up-to-date ECIES library - https://github.com/TBD54566975/dwn-sdk-js/issues/291\n    const publicKey = Buffer.from(uncompressedPublicKey);\n\n    const { ciphertext, ephemPublicKey, iv, mac } = await eccrypto.encrypt(publicKey, plaintext as Buffer);\n\n    return {\n      ciphertext,\n      ephemeralPublicKey        : ephemPublicKey,\n      initializationVector      : iv,\n      messageAuthenticationCode : mac\n    };\n  }\n\n  /**\n   * Decrypt the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme) with SECP256K1.\n   */\n  public static async eciesSecp256k1Decrypt(input: EciesEncryptionInput): Promise<Uint8Array> {\n    // underlying library requires Buffer as input\n    // TODO: #291 - Swap out `eccrypto` in favor of a more up-to-date ECIES library - https://github.com/TBD54566975/dwn-sdk-js/issues/291\n    const privateKeyBuffer = Buffer.from(input.privateKey);\n    const ephemPublicKey = Buffer.from(input.ephemeralPublicKey);\n    const eciesEncryptionOutput = {\n      ciphertext : input.ciphertext as Buffer,\n      ephemPublicKey,\n      iv         : input.initializationVector as Buffer,\n      mac        : input.messageAuthenticationCode as Buffer\n    };\n\n    const plaintext = await eccrypto.decrypt(privateKeyBuffer, eciesEncryptionOutput);\n\n    return plaintext;\n  }\n}\n\nexport type EciesEncryptionOutput = {\n  initializationVector: Uint8Array;\n  ephemeralPublicKey: Uint8Array;\n  ciphertext: Uint8Array;\n  messageAuthenticationCode: Uint8Array;\n};\n\nexport type EciesEncryptionInput = EciesEncryptionOutput & {\n  privateKey: Uint8Array;\n};\n\nexport enum EncryptionAlgorithm {\n  Aes256Ctr = 'A256CTR',\n  EciesSecp256k1 = 'ECIES-ES256K'\n}", "import type { BaseMessage } from '../../core/types.js';\nimport type { DwnInterfaceName, DwnMethodName } from '../../core/message.js';\n\nexport type ProtocolsConfigureDescriptor = {\n  interface : DwnInterfaceName.Protocols;\n  method: DwnMethodName.Configure;\n  dateCreated: string;\n  definition: ProtocolDefinition;\n};\n\nexport type ProtocolDefinition = {\n  protocol: string;\n  types: ProtocolTypes;\n  structure: {\n    [key: string]: ProtocolRuleSet;\n  }\n};\n\nexport type ProtocolType = {\n  schema?: string,\n  dataFormats?: string[],\n};\n\nexport type ProtocolTypes = {\n  [key: string]: ProtocolType;\n};\n\nexport enum ProtocolActor {\n  Anyone = 'anyone',\n  Author = 'author',\n  Recipient = 'recipient'\n}\n\nexport enum ProtocolAction {\n  Read = 'read',\n  Write = 'write'\n}\n\nexport type ProtocolActionRule = {\n  who: string,\n  of?: string,\n  can: string\n};\n\nexport type ProtocolRuleSet = {\n  $actions?: ProtocolActionRule[];\n  // JSON Schema verifies that properties other than `$actions` will actually have type ProtocolRuleSet\n  [key: string]: any;\n};\n\nexport type ProtocolsConfigureMessage = BaseMessage & {\n  descriptor: ProtocolsConfigureDescriptor;\n};\n\nexport type ProtocolsQueryFilter = {\n  protocol: string,\n};\n\nexport type ProtocolsQueryDescriptor = {\n  interface : DwnInterfaceName.Protocols,\n  method: DwnMethodName.Query;\n  dateCreated: string;\n  filter?: ProtocolsQueryFilter\n};\n\nexport type ProtocolsQueryMessage = BaseMessage & {\n  descriptor: ProtocolsQueryDescriptor;\n};\n", "import type { MessageStore } from '../store/message-store.js';\nimport type { RecordsRead } from '../interfaces/records/messages/records-read.js';\nimport type { Filter, TimestampedMessage } from './types.js';\nimport type { ProtocolDefinition, ProtocolRuleSet, ProtocolsConfigureMessage, ProtocolType, ProtocolTypes } from '../interfaces/protocols/types.js';\nimport type { RecordsReadMessage, RecordsWriteMessage } from '../interfaces/records/types.js';\n\nimport { RecordsWrite } from '../interfaces/records/messages/records-write.js';\nimport { DwnError, DwnErrorCode } from './dwn-error.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from './message.js';\nimport { ProtocolAction, ProtocolActor } from '../interfaces/protocols/types.js';\n\nconst methodToAllowedActionMap: Record<string, string> = {\n  [DwnMethodName.Write] : ProtocolAction.Write,\n  [DwnMethodName.Read]  : ProtocolAction.Read,\n};\n\nexport class ProtocolAuthorization {\n\n  /**\n   * Performs protocol-based authorization against the given message.\n   * @throws {Error} if authorization fails.\n   */\n  public static async authorize(\n    tenant: string,\n    incomingMessage: RecordsRead | RecordsWrite,\n    requesterDid: string | undefined,\n    messageStore: MessageStore\n  ): Promise<void> {\n    // fetch ancestor message chain\n    const ancestorMessageChain: RecordsWriteMessage[] =\n      await ProtocolAuthorization.constructAncestorMessageChain(tenant, incomingMessage, messageStore);\n\n    // fetch the protocol definition\n    const protocolDefinition = await ProtocolAuthorization.fetchProtocolDefinition(\n      tenant,\n      incomingMessage,\n      ancestorMessageChain,\n      messageStore\n    );\n\n    // validate `protocolPath`\n    ProtocolAuthorization.verifyProtocolPath(\n      incomingMessage,\n      ancestorMessageChain,\n      protocolDefinition.types\n    );\n\n    // get the rule set for the inbound message\n    const inboundMessageRuleSet = ProtocolAuthorization.getRuleSet(\n      incomingMessage.message,\n      protocolDefinition,\n      ancestorMessageChain\n    );\n\n    ProtocolAuthorization.verifyType(\n      incomingMessage.message,\n      protocolDefinition.types\n    );\n\n    // verify method invoked against the allowed actions\n    ProtocolAuthorization.verifyAllowedActions(\n      tenant,\n      requesterDid,\n      incomingMessage.message.descriptor.method,\n      inboundMessageRuleSet,\n      ancestorMessageChain,\n    );\n\n    // verify allowed condition of incoming message\n    await ProtocolAuthorization.verifyActionCondition(tenant, incomingMessage, messageStore);\n  }\n\n  /**\n   * Fetches the protocol definition based on the protocol specified in the given message.\n   */\n  private static async fetchProtocolDefinition(\n    tenant: string,\n    incomingMessage: RecordsRead | RecordsWrite,\n    ancestorMessageChain: RecordsWriteMessage[],\n    messageStore: MessageStore\n  ): Promise<ProtocolDefinition> {\n    // get the protocol URI\n    let protocolUri: string;\n    if (incomingMessage.message.descriptor.method === DwnMethodName.Write) {\n      protocolUri = (incomingMessage as RecordsWrite).message.descriptor.protocol!;\n    } else {\n      protocolUri = ancestorMessageChain[ancestorMessageChain.length-1].descriptor.protocol!;\n    }\n\n    // fetch the corresponding protocol definition\n    const query: Filter = {\n      interface : DwnInterfaceName.Protocols,\n      method    : DwnMethodName.Configure,\n      protocol  : protocolUri\n    };\n    const protocols = await messageStore.query(tenant, query) as ProtocolsConfigureMessage[];\n\n    if (protocols.length === 0) {\n      throw new Error(`unable to find protocol definition for ${protocolUri}`);\n    }\n\n    const protocolMessage = protocols[0];\n    return protocolMessage.descriptor.definition;\n  }\n\n  /**\n   * Constructs a chain of ancestor messages\n   * @returns the ancestor chain of messages where the first element is the root of the chain; returns empty array if no parent is specified.\n   */\n  private static async constructAncestorMessageChain(\n    tenant: string,\n    incomingMessage: RecordsRead | RecordsWrite,\n    messageStore: MessageStore\n  )\n    : Promise<RecordsWriteMessage[]> {\n    const ancestorMessageChain: RecordsWriteMessage[] = [];\n\n    // Get first RecordsWrite in ancestor chain, or use incoming write message\n    let recordsWrite: RecordsWrite;\n    if (incomingMessage.message.descriptor.method === DwnMethodName.Write) {\n      recordsWrite = incomingMessage as RecordsWrite;\n    } else {\n      const recordsRead = incomingMessage as RecordsRead;\n      const query = {\n        interface : DwnInterfaceName.Records,\n        method    : DwnMethodName.Write,\n        recordId  : recordsRead.message.descriptor.recordId,\n      };\n      const existingMessages = await messageStore.query(tenant, query) as TimestampedMessage[];\n      const recordsWriteMessage = await RecordsWrite.getNewestMessage(existingMessages) as RecordsWriteMessage;\n      recordsWrite = await RecordsWrite.parse(recordsWriteMessage);\n      ancestorMessageChain.push(recordsWrite.message);\n    }\n\n    const protocol = recordsWrite.message.descriptor.protocol!;\n    const contextId = recordsWrite.message.contextId!;\n\n    // keep walking up the chain from the inbound message's parent, until there is no more parent\n    let currentParentId = recordsWrite.message.descriptor.parentId;\n    while (currentParentId !== undefined) {\n      // fetch parent\n      const query: Filter = {\n        interface : DwnInterfaceName.Records,\n        method    : DwnMethodName.Write,\n        protocol,\n        contextId,\n        recordId  : currentParentId\n      };\n      const parentMessages = await messageStore.query(tenant, query) as RecordsWriteMessage[];\n\n      if (parentMessages.length === 0) {\n        throw new Error(`no parent found with ID ${currentParentId}`);\n      }\n\n      const parent = parentMessages[0];\n      ancestorMessageChain.push(parent);\n\n      currentParentId = parent.descriptor.parentId;\n    }\n\n    return ancestorMessageChain.reverse(); // root ancestor first\n  }\n\n  /**\n   * Gets the rule set corresponding to the given message chain.\n   */\n  private static getRuleSet(\n    inboundMessage: RecordsReadMessage | RecordsWriteMessage,\n    protocolDefinition: ProtocolDefinition,\n    ancestorMessageChain: RecordsWriteMessage[],\n  ): ProtocolRuleSet {\n    let protocolPath: string;\n    if (inboundMessage.descriptor.method === DwnMethodName.Write) {\n      protocolPath = (inboundMessage as RecordsWriteMessage).descriptor.protocolPath!;\n    } else {\n      protocolPath = ancestorMessageChain[ancestorMessageChain.length-1].descriptor.protocolPath!;\n    }\n    const protocolPathArray = protocolPath.split('/');\n\n    // traverse rule sets using protocolPath\n    let currentRuleSet: ProtocolRuleSet = protocolDefinition.structure;\n    let i = 0;\n    while (i < protocolPathArray.length) {\n      const currentTypeName = protocolPathArray[i];\n      const nextRuleSet: ProtocolRuleSet | undefined = currentRuleSet[currentTypeName];\n\n      if (nextRuleSet === undefined) {\n        const partialProtocolPath = protocolPathArray.slice(0, i + 1).join('/');\n        throw new DwnError(DwnErrorCode.ProtocolAuthorizationMissingRuleSet,\n          `No rule set defined for protocolPath ${partialProtocolPath}`);\n      }\n\n      currentRuleSet = nextRuleSet;\n      i++;\n    }\n\n    return currentRuleSet;\n  }\n\n  /**\n   * Verifies the `protocolPath` declared in the given message (if it is a RecordsWrite) matches the path of actual ancestor chain.\n   * @throws {DwnError} if fails verification.\n   */\n  private static verifyProtocolPath(\n    inboundMessage: RecordsRead | RecordsWrite,\n    ancestorMessageChain: RecordsWriteMessage[],\n    types: ProtocolTypes,\n  ): void {\n    // skip verification if this is not a RecordsWrite\n    if (inboundMessage.message.descriptor.method !== DwnMethodName.Write) {\n      return;\n    }\n\n    const typeNames = Object.keys(types);\n    const declaredProtocolPath = (inboundMessage as RecordsWrite).message.descriptor.protocolPath!;\n    const declaredTypeName = ProtocolAuthorization.getTypeName(declaredProtocolPath);\n    if (!typeNames.includes(declaredTypeName)) {\n      throw new DwnError(DwnErrorCode.ProtocolAuthorizationInvalidType,\n        `record with type ${declaredTypeName} not allowed in protocol`);\n    }\n\n    let ancestorProtocolPath: string = '';\n    for (const ancestor of ancestorMessageChain) {\n      const protocolPath = ancestor.descriptor.protocolPath!;\n      const ancestorTypeName = ProtocolAuthorization.getTypeName(protocolPath);\n      ancestorProtocolPath += `${ancestorTypeName}/`; // e.g. `foo/bar/`, notice the trailing slash\n    }\n\n    const actualProtocolPath = ancestorProtocolPath + declaredTypeName; // e.g. `foo/bar/baz`\n\n    if (declaredProtocolPath !== actualProtocolPath) {\n      throw new DwnError(\n        DwnErrorCode.ProtocolAuthorizationIncorrectProtocolPath,\n        `Declared protocol path '${declaredProtocolPath}' is not the same as actual protocol path '${actualProtocolPath}'.`\n      );\n    }\n  }\n\n  /**\n   * Verifies the `dataFormat` and `schema` declared in the given message (if it is a RecordsWrite) matches dataFormat\n   * and schema of the type in the given protocol.\n   * @throws {DwnError} if fails verification.\n   */\n  private static verifyType(\n    inboundMessage: RecordsReadMessage | RecordsWriteMessage,\n    protocolTypes: ProtocolTypes,\n  ): void {\n    // skip verification if this is not a RecordsWrite\n    if (inboundMessage.descriptor.method !== DwnMethodName.Write) {\n      return;\n    }\n    const recordsWriteMessage = inboundMessage as RecordsWriteMessage;\n\n    const protocolPath = recordsWriteMessage.descriptor.protocolPath!;\n    // existence of `protocolType` has already been verified\n    const typeName = ProtocolAuthorization.getTypeName(protocolPath);\n    const protocolType: ProtocolType = protocolTypes[typeName];\n\n    // no `schema` specified in protocol definition means that any schema is allowed\n    const { schema } = recordsWriteMessage.descriptor;\n    if (protocolType.schema !== undefined && protocolType.schema !== schema) {\n      throw new DwnError(\n        DwnErrorCode.ProtocolAuthorizationInvalidSchema,\n        `type '${typeName}' must have schema '${protocolType.schema}', \\\n        instead has '${schema}'`\n      );\n    }\n\n    // no `dataFormats` specified in protocol definition means that all dataFormats are allowed\n    const { dataFormat } = recordsWriteMessage.descriptor;\n    if (protocolType.dataFormats !== undefined && !protocolType.dataFormats.includes(dataFormat)) {\n      throw new DwnError(\n        DwnErrorCode.ProtocolAuthorizationIncorrectDataFormat,\n        `type '${typeName}' must have data format in (${protocolType.dataFormats}), \\\n        instead has '${dataFormat}'`\n      );\n    }\n  }\n\n  /**\n   * Verifies the actions specified in the given message matches the allowed actions in the rule set.\n   * @throws {Error} if action not allowed.\n   */\n  private static verifyAllowedActions(\n    tenant: string,\n    requesterDid: string | undefined,\n    incomingMessageMethod: DwnMethodName,\n    inboundMessageRuleSet: ProtocolRuleSet,\n    ancestorMessageChain: RecordsWriteMessage[],\n  ): void {\n    const actionRules = inboundMessageRuleSet.$actions;\n\n    if (actionRules === undefined) {\n      // if no action rule is defined, owner of DWN can do everything\n      if (requesterDid === tenant) {\n        return;\n      } else {\n        throw new Error(`no action rule defined for ${incomingMessageMethod}, ${requesterDid} is unauthorized`);\n      }\n    }\n\n    const allowedActions = new Set<string>();\n    for (const actionRule of actionRules) {\n      switch (actionRule.who) {\n      case ProtocolActor.Anyone:\n        allowedActions.add(actionRule.can);\n        break;\n      case ProtocolActor.Author:\n        const messageForAuthorCheck = ProtocolAuthorization.getMessage(\n          ancestorMessageChain,\n          actionRule.of!,\n        );\n\n        if (messageForAuthorCheck !== undefined) {\n          const expectedRequesterDid = Message.getAuthor(messageForAuthorCheck);\n\n          if (requesterDid === expectedRequesterDid) {\n            allowedActions.add(actionRule.can);\n          }\n        }\n        break;\n      case ProtocolActor.Recipient:\n        const messageForRecipientCheck = ProtocolAuthorization.getMessage(\n          ancestorMessageChain,\n            actionRule.of!,\n        );\n        if (messageForRecipientCheck !== undefined) {\n          const expectedRequesterDid = messageForRecipientCheck.descriptor.recipient;\n\n          if (requesterDid === expectedRequesterDid) {\n            allowedActions.add(actionRule.can);\n          }\n        }\n        break;\n        // default:\n        //    JSON schema validations ensure that there are no other cases\n      }\n    }\n\n    const inboundMessageAction = methodToAllowedActionMap[incomingMessageMethod];\n    if (!allowedActions.has(inboundMessageAction)) {\n      throw new Error(`inbound message action '${inboundMessageAction}' not in list of allowed actions (${new Array(...allowedActions).join(',')})`);\n    }\n  }\n\n  /**\n   * Verifies if the desired action can be taken.\n   * Currently the only check is: if the write is not the initial write, the author must be the same as the initial write\n   * @throws {Error} if fails verification\n   */\n  private static async verifyActionCondition(tenant: string, incomingMessage: RecordsRead | RecordsWrite, messageStore: MessageStore): Promise<void> {\n    if (incomingMessage.message.descriptor.method === DwnMethodName.Read) {\n      // Currently no conditions for reads\n    } else if (incomingMessage.message.descriptor.method === DwnMethodName.Write) {\n      const recordsWrite = incomingMessage as RecordsWrite;\n      const isInitialWrite = await recordsWrite.isInitialWrite();\n      if (!isInitialWrite) {\n        // fetch the initialWrite\n        const query = {\n          entryId: recordsWrite.message.recordId\n        };\n        const result = await messageStore.query(tenant, query) as RecordsWriteMessage[];\n\n        // check the author of the initial write matches the author of the incoming message\n        const initialWrite = result[0];\n        const authorOfInitialWrite = Message.getAuthor(initialWrite);\n        if (recordsWrite.author !== authorOfInitialWrite) {\n          throw new Error(`author of incoming message '${recordsWrite.author}' must match to author of initial write '${authorOfInitialWrite}'`);\n        }\n      }\n    }\n  }\n\n  /**\n   * Gets the message from the message chain based on the path specified.\n   * Returns undefined if matching message does not existing in ancestor chain\n   * @param protocolPath `/` delimited path starting from the root ancestor.\n   *                    Each path segment denotes the expected record type declared in protocol definition.\n   *                    e.g. `A/B/C` means that the root ancestor must be of type A, its child must be of type B, followed by a child of type C.\n   *                    NOTE: the path scheme use here may be temporary dependent on final protocol spec.\n   */\n  private static getMessage(\n    ancestorMessageChain: RecordsWriteMessage[],\n    protocolPath: string,\n  ): RecordsWriteMessage | undefined {\n    const expectedAncestors = protocolPath.split('/');\n\n    // consider moving this check to ProtocolsConfigure message ingestion\n    if (expectedAncestors.length > ancestorMessageChain.length) {\n      return undefined;\n    }\n\n    let i = 0;\n    while (true) {\n      const expectedDefinitionId = expectedAncestors[i];\n      const ancestorMessage = ancestorMessageChain[i];\n\n      const actualDefinitionId = ProtocolAuthorization.getTypeName(ancestorMessage.descriptor.protocolPath!);\n      if (actualDefinitionId !== expectedDefinitionId) {\n        throw new Error(`mismatching record schema: expecting ${expectedDefinitionId} but actual ${actualDefinitionId}`);\n      }\n\n      // we have found the message if we are looking at the last message specified by the path\n      if (i + 1 === expectedAncestors.length) {\n        return ancestorMessage;\n      }\n\n      i++;\n    }\n  }\n\n  private static getTypeName(protocolPath: string): string {\n    return protocolPath.split('/').slice(-1)[0];\n  }\n}", "import type { DerivedPrivateJwk } from './hd-key.js';\nimport type { PublicJwk } from '../jose/types.js';\nimport type { Readable } from 'readable-stream';\nimport type { RecordsWriteDescriptor, UnsignedRecordsWriteMessage } from '../interfaces/records/types.js';\n\nimport { Encoder } from './encoder.js';\nimport { Encryption } from './encryption.js';\nimport { KeyDerivationScheme } from './hd-key.js';\nimport { Secp256k1 } from './secp256k1.js';\nimport { DwnError, DwnErrorCode } from '../core/dwn-error.js';\n\n/**\n * Class containing useful utilities related to the Records interface.\n */\nexport class Records {\n  /**\n   * Decrypts the encrypted data in a message reply using the given ancestor private key.\n   * @param ancestorPrivateKey Any ancestor private key in the key derivation path.\n   */\n  public static async decrypt(\n    recordsWrite: UnsignedRecordsWriteMessage,\n    ancestorPrivateKey: DerivedPrivateJwk,\n    cipherStream: Readable\n  ): Promise<Readable> {\n    const { recordId, contextId, descriptor, encryption } = recordsWrite;\n\n    // look for an encrypted symmetric key that is encrypted using the same scheme as the given derived private key\n    const matchingEncryptedKey = encryption!.keyEncryption.find(key => key.derivationScheme === ancestorPrivateKey.derivationScheme);\n    if (matchingEncryptedKey === undefined) {\n      throw new DwnError(\n        DwnErrorCode.RecordsDecryptNoMatchingKeyDerivationScheme,\n        `Unable to find symmetric key encrypted using '${ancestorPrivateKey.derivationScheme}' derivation scheme.`\n      );\n    }\n\n    const fullDerivationPath = Records.constructKeyDerivationPath(matchingEncryptedKey.derivationScheme, recordId, contextId, descriptor);\n\n    // NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n    // so we will assume that's the algorithm without additional switch/if statements\n    const leafPrivateKey = await Records.deriveLeafPrivateKey(ancestorPrivateKey, fullDerivationPath);\n    const encryptedKeyBytes = Encoder.base64UrlToBytes(matchingEncryptedKey.encryptedKey);\n    const ephemeralPublicKey = Secp256k1.publicJwkToBytes(matchingEncryptedKey.ephemeralPublicKey);\n    const keyEncryptionInitializationVector = Encoder.base64UrlToBytes(matchingEncryptedKey.initializationVector);\n    const messageAuthenticationCode = Encoder.base64UrlToBytes(matchingEncryptedKey.messageAuthenticationCode);\n    const dataEncryptionKey = await Encryption.eciesSecp256k1Decrypt({\n      ciphertext           : encryptedKeyBytes,\n      ephemeralPublicKey,\n      initializationVector : keyEncryptionInitializationVector,\n      messageAuthenticationCode,\n      privateKey           : leafPrivateKey\n    });\n\n    // NOTE: right now only `A256CTR` algorithm is supported for symmetric encryption,\n    // so we will assume that's the algorithm without additional switch/if statements\n    const dataEncryptionInitializationVector = Encoder.base64UrlToBytes(encryption!.initializationVector);\n    const plaintextStream = await Encryption.aes256CtrDecrypt(dataEncryptionKey, dataEncryptionInitializationVector, cipherStream);\n\n    return plaintextStream;\n  }\n\n  /**\n   * Constructs full key derivation path using the specified scheme.\n   */\n  public static constructKeyDerivationPath(\n    keyDerivationScheme: KeyDerivationScheme,\n    recordId: string,\n    contextId: string | undefined,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n\n    let fullDerivationPath;\n    if (keyDerivationScheme === KeyDerivationScheme.DataFormats) {\n      fullDerivationPath = Records.constructKeyDerivationPathUsingDataFormatsScheme(recordId, descriptor);\n    } else if (keyDerivationScheme === KeyDerivationScheme.Protocols) {\n      fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolsScheme(recordId, contextId, descriptor);\n    } else {\n      // `schemas` scheme\n      fullDerivationPath = Records.constructKeyDerivationPathUsingSchemasScheme(recordId, descriptor);\n    }\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Constructs the full key derivation path using `dataFormats` scheme.\n   */\n  private static constructKeyDerivationPathUsingDataFormatsScheme(\n    recordId: string,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n    const fullDerivationPath = [\n      KeyDerivationScheme.DataFormats,\n      descriptor.dataFormat,\n      recordId\n    ];\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Constructs the full key derivation path using `protocols` scheme.\n   */\n  private static constructKeyDerivationPathUsingProtocolsScheme(\n    recordId: string,\n    contextId: string | undefined,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n    // ensure `protocol` is defined\n    // NOTE: no need to check `protocolPath` and `contextId` because earlier code ensures that if `protocol` is defined, those are defined also\n    if (descriptor.protocol === undefined) {\n      throw new DwnError(\n        DwnErrorCode.RecordsProtocolsDerivationSchemeMissingProtocol,\n        'Unable to construct key derivation path using `protocols` scheme because `protocol` is missing.'\n      );\n    }\n\n    const protocolPathSegments = descriptor.protocolPath!.split('/');\n    const fullDerivationPath = [\n      KeyDerivationScheme.Protocols,\n      descriptor.protocol,\n      contextId!,\n      ...protocolPathSegments,\n      descriptor.dataFormat,\n      recordId\n    ];\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Constructs the full key derivation path using `schemas` scheme.\n   */\n  private static constructKeyDerivationPathUsingSchemasScheme(\n    recordId: string,\n    descriptor: RecordsWriteDescriptor\n  ): string[] {\n    if (descriptor.schema === undefined) {\n      throw new DwnError(\n        DwnErrorCode.RecordsSchemasDerivationSchemeMissingSchema,\n        'Unable to construct key derivation path using `schemas` scheme because `schema` is missing.'\n      );\n    }\n\n    const fullDerivationPath = [\n      KeyDerivationScheme.Schemas,\n      descriptor.schema,\n      descriptor.dataFormat,\n      recordId\n    ];\n\n    return fullDerivationPath;\n  }\n\n  /**\n   * Derives a descendant public key given an ancestor public key.\n   * NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n   *       so we will assume that's the algorithm without additional switch/if statements\n   */\n  public static async deriveLeafPublicKey(rootPublicKey: PublicJwk, fullDescendantDerivationPath: string[]): Promise<Uint8Array> {\n    if (rootPublicKey.crv !== 'secp256k1') {\n      throw new DwnError(\n        DwnErrorCode.RecordsDeriveLeafPublicKeyUnSupportedCurve,\n        `Curve ${rootPublicKey.crv} is not supported.`\n      );\n    }\n\n    const ancestorPublicKeyBytes = Secp256k1.publicJwkToBytes(rootPublicKey);\n    const leafPublicKey = await Secp256k1.derivePublicKey(ancestorPublicKeyBytes, fullDescendantDerivationPath);\n\n    return leafPublicKey;\n  }\n\n  /**\n   * Derives a descendant private key given an ancestor private key.\n   * NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n   *       so we will assume that's the algorithm without additional switch/if statements\n   */\n  public static async deriveLeafPrivateKey(ancestorPrivateKey: DerivedPrivateJwk, fullDescendantDerivationPath: string[]): Promise<Uint8Array> {\n    if (ancestorPrivateKey.derivedPrivateKey.crv !== 'secp256k1') {\n      throw new DwnError(\n        DwnErrorCode.RecordsDeriveLeafPrivateKeyUnSupportedCurve,\n        `Curve ${ancestorPrivateKey.derivedPrivateKey.crv} is not supported.`\n      );\n    }\n\n    const ancestorPrivateKeyDerivationPath = ancestorPrivateKey.derivationPath ?? [];\n\n    Records.validateAncestorKeyAndDescentKeyDerivationPathsMatch(ancestorPrivateKeyDerivationPath, fullDescendantDerivationPath);\n\n    const subDerivationPath = fullDescendantDerivationPath.slice(ancestorPrivateKeyDerivationPath.length);\n    const ancestorPrivateKeyBytes = Secp256k1.privateJwkToBytes(ancestorPrivateKey.derivedPrivateKey);\n    const leafPrivateKey = await Secp256k1.derivePrivateKey(ancestorPrivateKeyBytes, subDerivationPath);\n\n    return leafPrivateKey;\n  }\n\n  /**\n   * Validates that ancestor derivation path matches the descendant derivation path completely.\n   * @throws {DwnError} with `DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment` if fails validation.\n   */\n  public static validateAncestorKeyAndDescentKeyDerivationPathsMatch(\n    ancestorKeyDerivationPath: string[],\n    descendantKeyDerivationPath: string[]\n  ): void {\n    for (let i = 0; i < ancestorKeyDerivationPath.length; i++) {\n      const ancestorSegment = ancestorKeyDerivationPath[i];\n      const descendantSegment = descendantKeyDerivationPath[i];\n      if (ancestorSegment !== descendantSegment) {\n        throw new DwnError(\n          DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment,\n          `Ancestor key derivation segment '${ancestorSegment}' mismatches against the descendant key derivation segment '${descendantSegment}'.`);\n      }\n    }\n  }\n}\n", "import type { BaseMessage } from '../../../core/types.js';\nimport type { KeyDerivationScheme } from '../../../index.js';\nimport type { MessageStore } from '../../../store/message-store.js';\nimport type { PublicJwk } from '../../../jose/types.js';\nimport type {\n  EncryptedKey,\n  EncryptionProperty,\n  RecordsWriteAttestationPayload,\n  RecordsWriteAuthorizationPayload,\n  RecordsWriteDescriptor,\n  RecordsWriteMessage,\n  UnsignedRecordsWriteMessage\n} from '../types.js';\nimport type { GeneralJws, SignatureInput } from '../../../jose/jws/general/types.js';\n\nimport { Encoder } from '../../../utils/encoder.js';\nimport { Encryption } from '../../../utils/encryption.js';\nimport { EncryptionAlgorithm } from '../../../utils/encryption.js';\nimport { GeneralJwsSigner } from '../../../jose/jws/general/signer.js';\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Jws } from '../../../utils/jws.js';\nimport { Message } from '../../../core/message.js';\nimport { ProtocolAuthorization } from '../../../core/protocol-authorization.js';\nimport { Records } from '../../../utils/records.js';\nimport { removeUndefinedProperties } from '../../../utils/object.js';\nimport { Secp256k1 } from '../../../utils/secp256k1.js';\nimport { authorize, validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { Cid, computeCid } from '../../../utils/cid.js';\nimport { DwnError, DwnErrorCode } from '../../../core/dwn-error.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\nimport { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../../../utils/url.js';\n\nexport type RecordsWriteOptions = {\n  recipient?: string;\n  protocol?: string;\n  protocolPath?: string;\n  contextId?: string;\n  schema?: string;\n  recordId?: string;\n  parentId?: string;\n  data?: Uint8Array;\n  dataCid?: string;\n  dataSize?: number;\n  dateCreated?: string;\n  dateModified?: string;\n  published?: boolean;\n  datePublished?: string;\n  dataFormat: string;\n  authorizationSignatureInput: SignatureInput;\n  attestationSignatureInputs?: SignatureInput[];\n  encryptionInput?: EncryptionInput;\n};\n\n/**\n * Input that describes how data is encrypted as spec-ed in TP18 (https://github.com/TBD54566975/technical-proposals/pull/6).\n */\nexport type EncryptionInput = {\n  /**\n   * Algorithm used for encrypting the Data. Uses {EncryptionAlgorithm.Aes256Ctr} if not given.\n   */\n  algorithm?: EncryptionAlgorithm;\n\n  /**\n   * Initialization vector used for encrypting the data.\n   */\n  initializationVector: Uint8Array;\n\n  /**\n   * Symmetric key used to encrypt the data.\n   */\n  key: Uint8Array;\n\n  /**\n   * Array of input that specifies how the symmetric key is encrypted.\n   * Each entry in the array will result in a unique ciphertext of the symmetric key.\n   */\n  keyEncryptionInputs: KeyEncryptionInput[];\n};\n\n/**\n * Input that specifies how a symmetric key is encrypted.\n */\nexport type KeyEncryptionInput = {\n  /**\n   * Key derivation scheme to derive the descendant public key to encrypt the symmetric key.\n   */\n  derivationScheme: KeyDerivationScheme;\n\n  /**\n   * Root public key used derive the descendant public key to encrypt the symmetric key.\n   */\n  publicKey: PublicJwk;\n\n  /**\n   * Algorithm used for encrypting the symmetric key. Uses {EncryptionAlgorithm.EciesSecp256k1} if not given.\n   */\n  algorithm?: EncryptionAlgorithm;\n};\n\nexport type CreateFromOptions = {\n  unsignedRecordsWriteMessage: UnsignedRecordsWriteMessage,\n  data?: Uint8Array;\n  published?: boolean;\n  dateModified?: string;\n  datePublished?: string;\n  authorizationSignatureInput: SignatureInput;\n  attestationSignatureInputs?: SignatureInput[];\n  encryptionInput?: EncryptionInput;\n};\n\nexport class RecordsWrite extends Message<RecordsWriteMessage> {\n\n  readonly attesters: string[];\n\n  private constructor(message: RecordsWriteMessage) {\n    super(message);\n\n    this.attesters = RecordsWrite.getAttesters(message);\n\n    // consider converting isInitialWrite() & getEntryId() into properties for performance and convenience\n  }\n\n  public static async parse(message: RecordsWriteMessage): Promise<RecordsWrite> {\n    // asynchronous checks that are required by the constructor to initialize members properly\n    await validateAuthorizationIntegrity(message, { allowedProperties: new Set(['recordId', 'contextId', 'attestationCid', 'encryptionCid']) });\n    await RecordsWrite.validateAttestationIntegrity(message);\n\n    const recordsWrite = new RecordsWrite(message);\n\n    await recordsWrite.validateIntegrity(); // RecordsWrite specific data integrity check\n\n    return recordsWrite;\n  }\n\n  /**\n   * Creates a RecordsWrite message.\n   * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.\n   * @param options.data Data used to compute the `dataCid`, must be the encrypted data bytes if `options.encryptionInput` is given.\n   *                     Must specify `options.dataCid` if `undefined`.\n   * @param options.dataCid CID of the data that is already stored in the DWN. Must specify `options.data` if `undefined`.\n   * @param options.dataSize Size of data in number of bytes. Must be defined if `options.dataCid` is defined; must be `undefined` otherwise.\n   * @param options.dateCreated If `undefined`, it will be auto-filled with current time.\n   * @param options.dateModified If `undefined`, it will be auto-filled with current time.\n   */\n  public static async create(options: RecordsWriteOptions): Promise<RecordsWrite> {\n    if ((options.protocol === undefined && options.protocolPath !== undefined) ||\n        (options.protocol !== undefined && options.protocolPath === undefined)) {\n      throw new Error('`protocol` and `protocolPath` must both be defined or undefined at the same time');\n    }\n\n    if ((options.data === undefined && options.dataCid === undefined) ||\n        (options.data !== undefined && options.dataCid !== undefined)) {\n      throw new Error('one and only one parameter between `data` and `dataCid` is allowed');\n    }\n\n    if ((options.dataCid === undefined && options.dataSize !== undefined) ||\n        (options.dataCid !== undefined && options.dataSize === undefined)) {\n      throw new Error('`dataCid` and `dataSize` must both be defined or undefined at the same time');\n    }\n\n    const dataCid = options.dataCid ?? await Cid.computeDagPbCidFromBytes(options.data!);\n    const dataSize = options.dataSize ?? options.data!.length;\n\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    const descriptor: RecordsWriteDescriptor = {\n      interface     : DwnInterfaceName.Records,\n      method        : DwnMethodName.Write,\n      protocol      : options.protocol !== undefined ? normalizeProtocolUrl(options.protocol) : undefined,\n      protocolPath  : options.protocolPath,\n      recipient     : options.recipient!,\n      schema        : options.schema !== undefined ? normalizeSchemaUrl(options.schema) : undefined,\n      parentId      : options.parentId,\n      dataCid,\n      dataSize,\n      dateCreated   : options.dateCreated ?? currentTime,\n      dateModified  : options.dateModified ?? currentTime,\n      published     : options.published,\n      datePublished : options.datePublished,\n      dataFormat    : options.dataFormat\n    };\n\n    // generate `datePublished` if the message is to be published but `datePublished` is not given\n    if (options.published === true &&\n      options.datePublished === undefined) {\n      descriptor.datePublished = currentTime;\n    }\n\n    // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:\n    // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded\n    removeUndefinedProperties(descriptor);\n\n    const author = Jws.extractDid(options.authorizationSignatureInput.protectedHeader.kid);\n\n    // `recordId` computation\n    const recordId = options.recordId ?? await RecordsWrite.getEntryId(author, descriptor);\n\n    // `contextId` computation\n    let contextId: string | undefined;\n    if (options.contextId !== undefined) {\n      contextId = options.contextId;\n    } else { // `contextId` is undefined\n      // we compute the contextId for the caller if `protocol` is specified (this is the case of the root message of a protocol context)\n      if (descriptor.protocol !== undefined) {\n        contextId = await RecordsWrite.getEntryId(author, descriptor);\n      }\n    }\n\n    // `attestation` generation\n    const descriptorCid = await computeCid(descriptor);\n    const attestation = await RecordsWrite.createAttestation(descriptorCid, options.attestationSignatureInputs);\n    const encryption = await RecordsWrite.createEncryptionProperty(recordId, contextId, descriptor, options.encryptionInput);\n\n    // `authorization` generation\n    const authorization = await RecordsWrite.createAuthorization(\n      recordId,\n      contextId,\n      descriptorCid,\n      attestation,\n      encryption,\n      options.authorizationSignatureInput\n    );\n\n    const message: RecordsWriteMessage = {\n      recordId,\n      descriptor,\n      authorization\n    };\n\n    if (contextId !== undefined) { message.contextId = contextId; } // assign `contextId` only if it is defined\n    if (attestation !== undefined) { message.attestation = attestation; } // assign `attestation` only if it is defined\n    if (encryption !== undefined) { message.encryption = encryption; } // assign `encryption` only if it is defined\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsWrite(message);\n  }\n\n  /**\n   * Convenience method that creates a message by:\n   * 1. Copying over immutable properties from the given unsigned message\n   * 2. Copying over mutable properties that are not overwritten from the given unsigned message\n   * 3. Replace the mutable properties that are given new value\n   * @param options.unsignedRecordsWriteMessage Unsigned message that the new RecordsWrite will be based from.\n   * @param options.dateModified The new date the record is modified. If not given, current time will be used .\n   * @param options.data The new data or the record. If not given, data from given message will be used.\n   * @param options.published The new published state. If not given, then will be set to `true` if {options.dateModified} is given;\n   * else the state from given message will be used.\n   * @param options.publishedDate The new date the record is modified. If not given, then:\n   * - will not be set if the record will be unpublished as the result of this RecordsWrite; else\n   * - will be set to the same published date as the given message if it wss already published; else\n   * - will be set to current time (because this is a toggle from unpublished to published)\n   */\n  public static async createFrom(options: CreateFromOptions): Promise<RecordsWrite> {\n    const unsignedMessage = options.unsignedRecordsWriteMessage;\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    // inherit published value from parent if neither published nor datePublished is specified\n    const published = options.published ?? (options.datePublished ? true : unsignedMessage.descriptor.published);\n    // use current time if published but no explicit time given\n    let datePublished: string | undefined = undefined;\n    // if given explicitly published dated\n    if (options.datePublished) {\n      datePublished = options.datePublished;\n    } else {\n      // if this RecordsWrite will publish the record\n      if (published) {\n        // the parent was already published, inherit the same published date\n        if (unsignedMessage.descriptor.published) {\n          datePublished = unsignedMessage.descriptor.datePublished;\n        } else {\n          // this is a toggle from unpublished to published, use current time\n          datePublished = currentTime;\n        }\n      }\n    }\n\n    const createOptions: RecordsWriteOptions = {\n      // immutable properties below, just inherit from the message given\n      recipient                   : unsignedMessage.descriptor.recipient,\n      recordId                    : unsignedMessage.recordId,\n      dateCreated                 : unsignedMessage.descriptor.dateCreated,\n      contextId                   : unsignedMessage.contextId,\n      protocol                    : unsignedMessage.descriptor.protocol,\n      protocolPath                : unsignedMessage.descriptor.protocolPath,\n      parentId                    : unsignedMessage.descriptor.parentId,\n      schema                      : unsignedMessage.descriptor.schema,\n      dataFormat                  : unsignedMessage.descriptor.dataFormat,\n      // mutable properties below\n      dateModified                : options.dateModified ?? currentTime,\n      published,\n      datePublished,\n      data                        : options.data,\n      dataCid                     : options.data ? undefined : unsignedMessage.descriptor.dataCid, // if data not given, use base message dataCid\n      dataSize                    : options.data ? undefined : unsignedMessage.descriptor.dataSize, // if data not given, use base message dataSize\n      // finally still need input for signing\n      authorizationSignatureInput : options.authorizationSignatureInput,\n      attestationSignatureInputs  : options.attestationSignatureInputs\n    };\n\n    const recordsWrite = await RecordsWrite.create(createOptions);\n    return recordsWrite;\n  }\n\n  public async authorize(tenant: string, messageStore: MessageStore): Promise<void> {\n    if (this.message.descriptor.protocol !== undefined) {\n      // NOTE: `author` definitely exists because of the earlier `authenticate()` call\n      await ProtocolAuthorization.authorize(tenant, this, this.author!, messageStore);\n    } else {\n      await authorize(tenant, this);\n    }\n  }\n\n  /**\n   * Validates the integrity of the RecordsWrite message assuming the message passed basic schema validation.\n   * There is opportunity to integrate better with `validateSchema(...)`\n   */\n  private async validateIntegrity(): Promise<void> {\n    // make sure the same `recordId` in message is the same as the `recordId` in `authorization`\n    if (this.message.recordId !== this.authorizationPayload.recordId) {\n      throw new Error(\n        `recordId in message ${this.message.recordId} does not match recordId in authorization: ${this.authorizationPayload.recordId}`\n      );\n    }\n\n    // if the new message is the initial write\n    const isInitialWrite = await this.isInitialWrite();\n    if (isInitialWrite) {\n      // `dateModified` and `dateCreated` equality check\n      const dateCreated = this.message.descriptor.dateCreated;\n      const dateModified = this.message.descriptor.dateModified;\n      if (dateModified !== dateCreated) {\n        throw new Error(`dateModified ${dateModified} must match dateCreated ${dateCreated} for the initial write`);\n      }\n\n      // if the message is also a protocol context root, the `contextId` must match the expected deterministic value\n      if (this.message.descriptor.protocol !== undefined &&\n        this.message.descriptor.parentId === undefined) {\n        const expectedContextId = await this.getEntryId();\n\n        if (this.message.contextId !== expectedContextId) {\n          throw new Error(`contextId in message: ${this.message.contextId} does not match deterministic contextId: ${expectedContextId}`);\n        }\n      }\n    }\n\n    // if `contextId` is given in message, make sure the same `contextId` is in the `authorization`\n    if (this.message.contextId !== this.authorizationPayload.contextId) {\n      throw new Error(\n        `contextId in message ${this.message.contextId} does not match contextId in authorization: ${this.authorizationPayload.contextId}`\n      );\n    }\n\n    // if `attestation` is given in message, make sure the correct `attestationCid` is in the `authorization`\n    if (this.authorizationPayload.attestationCid !== undefined) {\n      const expectedAttestationCid = await computeCid(this.message.attestation);\n      const actualAttestationCid = this.authorizationPayload.attestationCid;\n      if (actualAttestationCid !== expectedAttestationCid) {\n        throw new Error(\n          `CID ${expectedAttestationCid} of attestation property in message does not match attestationCid in authorization: ${actualAttestationCid}`\n        );\n      }\n    }\n\n    // if `encryption` is given in message, make sure the correct `encryptionCid` is in the `authorization`\n    if (this.authorizationPayload.encryptionCid !== undefined) {\n      const expectedEncryptionCid = await computeCid(this.message.encryption);\n      const actualEncryptionCid = this.authorizationPayload.encryptionCid;\n      if (actualEncryptionCid !== expectedEncryptionCid) {\n        throw new DwnError(\n          DwnErrorCode.RecordsWriteValidateIntegrityEncryptionCidMismatch,\n          `CID ${expectedEncryptionCid} of encryption property in message does not match encryptionCid in authorization: ${actualEncryptionCid}`\n        );\n      }\n    }\n\n    if (this.message.descriptor.protocol !== undefined) {\n      validateProtocolUrlNormalized(this.message.descriptor.protocol);\n    }\n    if (this.message.descriptor.schema !== undefined) {\n      validateSchemaUrlNormalized(this.message.descriptor.schema);\n    }\n  }\n\n  /**\n   * Validates the structural integrity of the `attestation` property.\n   * NOTE: signature is not verified.\n   */\n  private static async validateAttestationIntegrity(message: RecordsWriteMessage): Promise<void> {\n    if (message.attestation === undefined) {\n      return;\n    }\n\n    // TODO: multi-attesters to be unblocked by #205 - Revisit database interfaces (https://github.com/TBD54566975/dwn-sdk-js/issues/205)\n    if (message.attestation.signatures.length !== 1) {\n      throw new Error(`Currently implementation only supports 1 attester, but got ${message.attestation.signatures.length}`);\n    }\n\n    const payloadJson = Jws.decodePlainObjectPayload(message.attestation);\n    const { descriptorCid } = payloadJson;\n\n    // `descriptorCid` validation - ensure that the provided descriptorCid matches the CID of the actual message\n    const expectedDescriptorCid = await computeCid(message.descriptor);\n    if (descriptorCid !== expectedDescriptorCid) {\n      throw new Error(`descriptorCid ${descriptorCid} does not match expected descriptorCid ${expectedDescriptorCid}`);\n    }\n\n    // check to ensure that no other unexpected properties exist in payload.\n    const propertyCount = Object.keys(payloadJson).length;\n    if (propertyCount > 1) {\n      throw new Error(`Only 'descriptorCid' is allowed in attestation payload, but got ${propertyCount} properties.`);\n    }\n  };\n\n  /**\n   * Computes the deterministic Entry ID of this message.\n   */\n  public async getEntryId(): Promise<string> {\n    const entryId = await RecordsWrite.getEntryId(this.author, this.message.descriptor);\n    return entryId;\n  };\n\n  /**\n   * Computes the deterministic Entry ID of this message.\n   */\n  public static async getEntryId(author: string | undefined, descriptor: RecordsWriteDescriptor): Promise<string> {\n    // TODO: this paves the way to allow unsigned RecordsWrite as suggested in #206 (https://github.com/TBD54566975/dwn-sdk-js/issues/206)\n    if (author === undefined) {\n      throw new DwnError(DwnErrorCode.RecordsWriteGetEntryIdUndefinedAuthor, 'Property `author` is needed to compute entry ID.');\n    }\n\n    const entryIdInput = { ...descriptor };\n    (entryIdInput as any).author = author;\n\n    const cid = await computeCid(entryIdInput);\n    return cid;\n  };\n\n  /**\n   * Checks if the given message is the initial entry of a record.\n   */\n  public async isInitialWrite(): Promise<boolean> {\n    const entryId = await this.getEntryId();\n    return (entryId === this.message.recordId);\n  }\n\n  /**\n   * Checks if the given message is the initial entry of a record.\n   */\n  public static async isInitialWrite(message: BaseMessage): Promise<boolean> {\n    // can't be the initial write if the message is not a Records Write\n    if (message.descriptor.interface !== DwnInterfaceName.Records ||\n        message.descriptor.method !== DwnMethodName.Write) {\n      return false;\n    }\n\n    const recordsWriteMessage = message as RecordsWriteMessage;\n    const author = Message.getAuthor(message);\n    const entryId = await RecordsWrite.getEntryId(author, recordsWriteMessage.descriptor);\n    return (entryId === recordsWriteMessage.recordId);\n  }\n\n  /**\n   * Creates the `encryption` property if encryption input is given. Else `undefined` is returned.\n   */\n  private static async createEncryptionProperty(\n    recordId: string,\n    contextId: string | undefined,\n    descriptor: RecordsWriteDescriptor,\n    encryptionInput: EncryptionInput | undefined\n  ): Promise<EncryptionProperty | undefined> {\n    if (encryptionInput === undefined) {\n      return undefined;\n    }\n\n    // encrypt the data encryption key once per key derivation scheme\n    const keyEncryption: EncryptedKey[] = [];\n    for (const keyEncryptionInput of encryptionInput.keyEncryptionInputs) {\n\n      const fullDerivationPath = Records.constructKeyDerivationPath(keyEncryptionInput.derivationScheme, recordId, contextId, descriptor);\n\n      // NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,\n      // so we will assume that's the algorithm without additional switch/if statements\n      const leafPublicKey = await Records.deriveLeafPublicKey(keyEncryptionInput.publicKey, fullDerivationPath);\n      const keyEncryptionOutput = await Encryption.eciesSecp256k1Encrypt(leafPublicKey, encryptionInput.key);\n\n      const encryptedKey = Encoder.bytesToBase64Url(keyEncryptionOutput.ciphertext);\n      const ephemeralPublicKey = await Secp256k1.publicKeyToJwk(keyEncryptionOutput.ephemeralPublicKey);\n      const keyEncryptionInitializationVector = Encoder.bytesToBase64Url(keyEncryptionOutput.initializationVector);\n      const messageAuthenticationCode = Encoder.bytesToBase64Url(keyEncryptionOutput.messageAuthenticationCode);\n      const encryptedKeyData: EncryptedKey = {\n        algorithm            : keyEncryptionInput.algorithm ?? EncryptionAlgorithm.EciesSecp256k1,\n        derivationScheme     : keyEncryptionInput.derivationScheme,\n        encryptedKey,\n        ephemeralPublicKey,\n        initializationVector : keyEncryptionInitializationVector,\n        messageAuthenticationCode\n      };\n\n      keyEncryption.push(encryptedKeyData);\n    }\n\n    const encryption: EncryptionProperty = {\n      algorithm            : encryptionInput.algorithm ?? EncryptionAlgorithm.Aes256Ctr,\n      initializationVector : Encoder.bytesToBase64Url(encryptionInput.initializationVector),\n      keyEncryption\n    };\n\n    return encryption;\n  }\n\n  /**\n   * Creates the `attestation` property of a RecordsWrite message if given signature inputs; returns `undefined` otherwise.\n   */\n  public static async createAttestation(descriptorCid: string, signatureInputs?: SignatureInput[]): Promise<GeneralJws | undefined> {\n    if (signatureInputs === undefined || signatureInputs.length === 0) {\n      return undefined;\n    }\n\n    const attestationPayload: RecordsWriteAttestationPayload = { descriptorCid };\n    const attestationPayloadBytes = Encoder.objectToBytes(attestationPayload);\n\n    const signer = await GeneralJwsSigner.create(attestationPayloadBytes, signatureInputs);\n    return signer.getJws();\n  }\n\n  /**\n   * Creates the `authorization` property of a RecordsWrite message.\n   */\n  public static async createAuthorization(\n    recordId: string,\n    contextId: string | undefined,\n    descriptorCid: string,\n    attestation: GeneralJws | undefined,\n    encryption: EncryptionProperty | undefined,\n    signatureInput: SignatureInput\n  ): Promise<GeneralJws> {\n    const authorizationPayload: RecordsWriteAuthorizationPayload = {\n      recordId,\n      descriptorCid\n    };\n\n    const attestationCid = attestation ? await computeCid(attestation) : undefined;\n    const encryptionCid = encryption ? await computeCid(encryption) : undefined;\n\n    if (contextId !== undefined) { authorizationPayload.contextId = contextId; } // assign `contextId` only if it is defined\n    if (attestationCid !== undefined) { authorizationPayload.attestationCid = attestationCid; } // assign `attestationCid` only if it is defined\n    if (encryptionCid !== undefined) { authorizationPayload.encryptionCid = encryptionCid; } // assign `encryptionCid` only if it is defined\n\n    const authorizationPayloadBytes = Encoder.objectToBytes(authorizationPayload);\n\n    const signer = await GeneralJwsSigner.create(authorizationPayloadBytes, [signatureInput]);\n    return signer.getJws();\n  }\n\n  /**\n   * Gets the initial write from the given list or record write.\n   */\n  public static async getInitialWrite(messages: BaseMessage[]): Promise<RecordsWriteMessage>{\n    for (const message of messages) {\n      if (await RecordsWrite.isInitialWrite(message)) {\n        return message as RecordsWriteMessage;\n      }\n    }\n\n    throw new Error(`initial write is not found`);\n  }\n\n  /**\n   * Verifies that immutable properties of the two given messages are identical.\n   * @throws {Error} if immutable properties between two RecordsWrite message\n   */\n  public static verifyEqualityOfImmutableProperties(existingWriteMessage: RecordsWriteMessage, newMessage: RecordsWriteMessage): boolean {\n    const mutableDescriptorProperties = ['dataCid', 'dataSize', 'datePublished', 'published', 'dateModified'];\n\n    // get distinct property names that exist in either the existing message given or new message\n    let descriptorPropertyNames: string[] = [];\n    descriptorPropertyNames.push(...Object.keys(existingWriteMessage.descriptor));\n    descriptorPropertyNames.push(...Object.keys(newMessage.descriptor));\n    descriptorPropertyNames = [...new Set(descriptorPropertyNames)]; // step to remove duplicates\n\n    // ensure all immutable properties are not modified\n    for (const descriptorPropertyName of descriptorPropertyNames) {\n      // if property is supposed to be immutable\n      if (mutableDescriptorProperties.indexOf(descriptorPropertyName) === -1) {\n        const valueInExistingWrite = (existingWriteMessage.descriptor as any)[descriptorPropertyName];\n        const valueInNewMessage = (newMessage.descriptor as any)[descriptorPropertyName];\n        if (valueInNewMessage !== valueInExistingWrite) {\n          throw new Error(`${descriptorPropertyName} is an immutable property: cannot change '${valueInExistingWrite}' to '${valueInNewMessage}'`);\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Gets the DID of the author of the given message.\n   */\n  public static getAttesters(message: RecordsWriteMessage): string[] {\n    const attestationSignatures = message.attestation?.signatures ?? [];\n    const attesters = attestationSignatures.map((signature) => Jws.getSignerDid(signature));\n    return attesters;\n  }\n}\n", "import type { DataStore } from '../../store/data-store.js';\nimport type { EventLog } from '../../event-log/event-log.js';\nimport type { MessageStore } from '../../store/message-store.js';\nimport type { RecordsWriteMessage } from '../../interfaces/records/types.js';\nimport type { TimestampedMessage } from '../../core/types.js';\n\nimport { constructRecordsWriteIndexes } from './handlers/records-write.js';\nimport { Message } from '../../core/message.js';\nimport { RecordsWrite } from './messages/records-write.js';\nimport { StorageController } from '../../store/storage-controller.js';\n\n/**\n * Deletes all messages in `existingMessages` that are older than the `comparedToMessage` in the given tenant,\n * but keep the initial write write for future processing by ensuring its `isLatestBaseState` index is \"false\".\n */\nexport async function deleteAllOlderMessagesButKeepInitialWrite(\n  tenant: string,\n  existingMessages: TimestampedMessage[],\n  comparedToMessage: TimestampedMessage,\n  messageStore: MessageStore,\n  dataStore: DataStore,\n  eventLog: EventLog\n): Promise<void> {\n  const deletedMessageCids: string[] = [];\n\n  // NOTE: under normal operation, there should only be at most two existing records per `recordId` (initial + a potential subsequent write/delete),\n  // but the DWN may crash before `delete()` is called below, so we use a loop as a tactic to clean up lingering data as needed\n  for (const message of existingMessages) {\n    const messageIsOld = await Message.isOlder(message, comparedToMessage);\n    if (messageIsOld) {\n      // the easiest implementation here is delete each old messages\n      // and re-create it with the right index (isLatestBaseState = 'false') if the message is the initial write,\n      // but there is room for better/more efficient implementation here\n      await StorageController.delete(messageStore, dataStore, tenant, message);\n\n      // if the existing message is the initial write\n      // we actually need to keep it BUT, need to ensure the message is no longer marked as the latest state\n      const existingMessageIsInitialWrite = await RecordsWrite.isInitialWrite(message);\n      if (existingMessageIsInitialWrite) {\n        const existingRecordsWrite = await RecordsWrite.parse(message as RecordsWriteMessage);\n        const isLatestBaseState = false;\n        const indexes = await constructRecordsWriteIndexes(existingRecordsWrite, isLatestBaseState);\n        await messageStore.put(tenant, message, indexes);\n      } else {\n        const messageCid = await Message.getCid(message);\n        deletedMessageCids.push(messageCid);\n      }\n    }\n\n    await eventLog.deleteEventsByCid(tenant, deletedMessageCids);\n  }\n}\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { Readable } from 'readable-stream';\nimport type { RecordsWriteMessage } from '../types.js';\nimport type { BaseMessage, TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { deleteAllOlderMessagesButKeepInitialWrite } from '../records-interface.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { RecordsWrite } from '../messages/records-write.js';\nimport { StorageController } from '../../../store/storage-controller.js';\nimport { DwnError, DwnErrorCode } from '../../../core/dwn-error.js';\nimport { DwnInterfaceName, Message } from '../../../core/message.js';\n\nexport class RecordsWriteHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore,private dataStore: DataStore, private eventLog: EventLog) { }\n\n  public async handle({\n    tenant,\n    message,\n    dataStream\n  }: { tenant: string, message: RecordsWriteMessage, dataStream?: _Readable.Readable}): Promise<MessageReply> {\n\n    let recordsWrite: RecordsWrite;\n    try {\n      recordsWrite = await RecordsWrite.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication & authorization\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await recordsWrite.authorize(tenant, this.messageStore);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // get existing messages matching the `recordId`\n    const query = {\n      interface : DwnInterfaceName.Records,\n      recordId  : message.recordId\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as TimestampedMessage[];\n\n    // if the incoming write is not the initial write, then it must not modify any immutable properties defined by the initial write\n    const newMessageIsInitialWrite = await recordsWrite.isInitialWrite();\n    if (!newMessageIsInitialWrite) {\n      try {\n        const initialWrite = await RecordsWrite.getInitialWrite(existingMessages);\n        RecordsWrite.verifyEqualityOfImmutableProperties(initialWrite, message);\n      } catch (e) {\n        return MessageReply.fromError(e, 400);\n      }\n    }\n\n    const newestExistingMessage = await Message.getNewestMessage(existingMessages);\n\n    let incomingMessageIsNewest = false;\n    let newestMessage; // keep reference of newest message for pruning later\n    if (newestExistingMessage === undefined || await Message.isNewer(message, newestExistingMessage)) {\n      incomingMessageIsNewest = true;\n      newestMessage = message;\n    } else { // existing message is the same age or newer than the incoming message\n      newestMessage = newestExistingMessage;\n    }\n\n    if (!incomingMessageIsNewest) {\n      return new MessageReply({\n        status: { code: 409, detail: 'Conflict' }\n      });\n    }\n\n    const isLatestBaseState = true;\n    const indexes = await constructRecordsWriteIndexes(recordsWrite, isLatestBaseState);\n\n    try {\n      this.validateUndefinedDataStream(dataStream, newestExistingMessage, message);\n\n      await this.storeMessage(this.messageStore, this.dataStore, this.eventLog, tenant, message, indexes, dataStream);\n    } catch (error) {\n      const e = error as any;\n      if (e.code === DwnErrorCode.StorageControllerDataCidMismatch ||\n          e.code === DwnErrorCode.StorageControllerDataSizeMismatch ||\n          e.code === DwnErrorCode.RecordsWriteMissingDataStream) {\n        return MessageReply.fromError(error, 400);\n      }\n\n      // else throw\n      throw error;\n    }\n\n    const messageReply = new MessageReply({\n      status: { code: 202, detail: 'Accepted' }\n    });\n\n    // delete all existing messages that are not newest, except for the initial write\n    await deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, this.messageStore, this.dataStore, this.eventLog);\n\n    return messageReply;\n  };\n\n  /**\n   * Further validation if data stream is undefined.\n   * NOTE: if data stream is not be provided but `dataCid` is provided,\n   * then we need to make sure that the existing record state is referencing the same data as the incoming message.\n   * Without this check will lead to unauthorized access of data (https://github.com/TBD54566975/dwn-sdk-js/issues/359)\n   */\n  protected validateUndefinedDataStream(\n    dataStream: _Readable.Readable | undefined,\n    newestExistingMessage: TimestampedMessage | undefined,\n    incomingMessage: RecordsWriteMessage): void {\n    if (dataStream === undefined && incomingMessage.descriptor.dataCid !== undefined) {\n      if (newestExistingMessage?.descriptor.dataCid !== incomingMessage.descriptor.dataCid) {\n        throw new DwnError(\n          DwnErrorCode.RecordsWriteMissingDataStream,\n          'Data stream is not provided.'\n        );\n      }\n    }\n  }\n\n  /**\n   * Stores the given message and its data in the underlying database(s).\n   * NOTE: this method was created to allow a child class to override the default behavior for sync feature to work:\n   * ie. allow `RecordsWrite` to be written even if data stream is not provided to handle the case that:\n   * a `RecordsDelete` has happened, as a result a DWN would have pruned the data associated with the original write.\n   * This approach avoids the need to duplicate the entire handler.\n   */\n  protected async storeMessage(\n    messageStore: MessageStore,\n    dataStore: DataStore,\n    eventLog: EventLog,\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    dataStream?: Readable): Promise<void> {\n    await StorageController.put(messageStore, dataStore, eventLog, tenant, message, indexes, dataStream);\n  }\n}\n\nexport async function constructRecordsWriteIndexes(\n  recordsWrite: RecordsWrite,\n  isLatestBaseState: boolean\n): Promise<Record<string, string>> {\n  const message = recordsWrite.message;\n  const descriptor = { ...message.descriptor };\n  delete descriptor.published; // handle `published` specifically further down\n\n  const indexes: Record<string, any> = {\n    ...descriptor,\n    isLatestBaseState,\n    published : !!message.descriptor.published,\n    author    : recordsWrite.author,\n    recordId  : message.recordId,\n    entryId   : await RecordsWrite.getEntryId(recordsWrite.author, recordsWrite.message.descriptor)\n  };\n\n  // add additional indexes to optional values if given\n  // TODO: index multi-attesters to be unblocked by #205 - Revisit database interfaces (https://github.com/TBD54566975/dwn-sdk-js/issues/205)\n  if (recordsWrite.attesters.length > 0) { indexes.attester = recordsWrite.attesters[0]; }\n  if (message.contextId !== undefined) { indexes.contextId = message.contextId; }\n\n  return indexes;\n}\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { Readable } from 'readable-stream';\nimport type { BaseMessage, TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, MessageStore, RecordsWriteMessage } from '../../../index.js';\n\nimport { Message } from '../../../core/message.js';\nimport { RecordsWriteHandler } from './records-write.js';\n\n/**\n * Handler for initial `RecordsWrite` that already have its data pruned thus cannot supply data stream for it.\n * NOTE: This is intended to be ONLY used by sync.\n */\nexport class PrunedInitialRecordsWriteHandler extends RecordsWriteHandler {\n  /**\n   * Overriding parent behavior, `undefined` data stream is allowed.\n   */\n  protected validateUndefinedDataStream(\n    _dataStream: Readable | undefined,\n    _newestExistingMessage: TimestampedMessage | undefined,\n    _incomingMessage: RecordsWriteMessage): void { }\n\n  /**\n   * Stores the given message without storing the associated data.\n   * Requires `dataCid` to exist in the `RecordsWrite` message given.\n   */\n  protected async storeMessage(\n    messageStore: MessageStore,\n    _dataStore: DataStore,\n    eventLog: EventLog,\n    tenant: string,\n    message: BaseMessage,\n    indexes: Record<string, string>,\n    _dataStream?: Readable): Promise<void> {\n\n    const messageCid = await Message.getCid(message);\n    await messageStore.put(tenant, message, indexes);\n    await eventLog.append(tenant, messageCid);\n  }\n}\n\n", "import type { RecordsDeleteDescriptor, RecordsDeleteMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Message } from '../../../core/message.js';\nimport type { SignatureInput } from '../../../jose/jws/general/types.js';\n\nimport { authorize, validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport type RecordsDeleteOptions = {\n  recordId: string;\n  dateModified?: string;\n  authorizationSignatureInput: SignatureInput;\n};\n\nexport class RecordsDelete extends Message<RecordsDeleteMessage> {\n\n  public static async parse(message: RecordsDeleteMessage): Promise<RecordsDelete> {\n    await validateAuthorizationIntegrity(message);\n\n    const recordsDelete = new RecordsDelete(message);\n    return recordsDelete;\n  }\n\n  /**\n   * Creates a RecordsDelete message.\n   * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.\n   * @param options.dateModified If `undefined`, it will be auto-filled with current time.\n   */\n  public static async create(options: RecordsDeleteOptions): Promise<RecordsDelete> {\n    const recordId = options.recordId;\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    const descriptor: RecordsDeleteDescriptor = {\n      interface    : DwnInterfaceName.Records,\n      method       : DwnMethodName.Delete,\n      recordId,\n      dateModified : options.dateModified ?? currentTime\n    };\n\n    const authorization = await Message.signAsAuthorization(descriptor, options.authorizationSignatureInput);\n    const message: RecordsDeleteMessage = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsDelete(message);\n  }\n\n  public async authorize(tenant: string): Promise<void> {\n    // TODO: #203 - implement protocol-based authorization for RecordsDelete (https://github.com/TBD54566975/dwn-sdk-js/issues/203)\n    await authorize(tenant, this);\n  }\n}\n", "import type { EventLog } from '../../../event-log/event-log.js';\nimport type { MethodHandler } from '../../types.js';\nimport type { RecordsDeleteMessage } from '../types.js';\nimport type { TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { deleteAllOlderMessagesButKeepInitialWrite } from '../records-interface.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { RecordsDelete } from '../messages/records-delete.js';\nimport { RecordsWrite } from '../messages/records-write.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from '../../../core/message.js';\n\nexport class RecordsDeleteHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore, private eventLog: EventLog) { }\n\n  public async handle({\n    tenant,\n    message\n  }: { tenant: string, message: RecordsDeleteMessage}): Promise<MessageReply> {\n\n    let recordsDelete: RecordsDelete;\n    try {\n      recordsDelete = await RecordsDelete.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication & authorization\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await recordsDelete.authorize(tenant);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // get existing records matching the `recordId`\n    const query = {\n      interface : DwnInterfaceName.Records,\n      recordId  : message.descriptor.recordId\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as TimestampedMessage[];\n\n    // find which message is the newest, and if the incoming message is the newest\n    const newestExistingMessage = await RecordsWrite.getNewestMessage(existingMessages);\n    let incomingMessageIsNewest = false;\n    let newestMessage;\n    // if incoming message is newest\n    if (newestExistingMessage === undefined || await RecordsWrite.isNewer(message, newestExistingMessage)) {\n      incomingMessageIsNewest = true;\n      newestMessage = message;\n    } else { // existing message is the same age or newer than the incoming message\n      newestMessage = newestExistingMessage;\n    }\n\n    if (!incomingMessageIsNewest) {\n      return new MessageReply({\n        status: { code: 409, detail: 'Conflict' }\n      });\n    }\n\n    // return Not Found if record does not exist or is already deleted\n    if (newestExistingMessage === undefined || newestExistingMessage.descriptor.method === DwnMethodName.Delete) {\n      return new MessageReply({\n        status: { code: 404, detail: 'Not Found' }\n      });\n    }\n\n    const indexes = await constructIndexes(tenant, recordsDelete);\n    await this.messageStore.put(tenant, message, indexes);\n\n    const messageCid = await Message.getCid(message);\n    await this.eventLog.append(tenant, messageCid);\n\n    // delete all existing messages that are not newest, except for the initial write\n    await deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, this.messageStore, this.dataStore, this.eventLog);\n\n    const messageReply = new MessageReply({\n      status: { code: 202, detail: 'Accepted' }\n    });\n    return messageReply;\n  };\n}\n\nexport async function constructIndexes(tenant: string, recordsDelete: RecordsDelete): Promise<Record<string, string>> {\n  const message = recordsDelete.message;\n  const descriptor = { ...message.descriptor };\n\n  // NOTE: the \"trick\" not may not be apparent on how a query is able to omit deleted records:\n  // we intentionally not add index for `isLatestBaseState` at all, this means that upon a successful delete,\n  // no messages with the record ID will match any query because queries by design filter by `isLatestBaseState = true`,\n  // `isLatestBaseState` for the initial delete would have been toggled to `false`\n  const indexes: Record<string, any> = {\n    // isLatestBaseState : \"true\", // intentionally showing that this index is omitted\n    author: recordsDelete.author,\n    ...descriptor\n  };\n\n  return indexes;\n}\n", "import type { MethodHandler } from '../../types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\nimport type { RecordsQueryMessage, RecordsQueryReplyEntry, RecordsWriteMessage } from '../types.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { lexicographicalCompare } from '../../../utils/string.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport type { RecordsWriteMessageWithOptionalEncodedData } from '../../../store/storage-controller.js';\nimport { StorageController } from '../../../store/storage-controller.js';\n\nimport { DateSort, RecordsQuery } from '../messages/records-query.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport class RecordsQueryHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore) { }\n\n  public async handle({\n    tenant,\n    message\n  }: {tenant: string, message: RecordsQueryMessage}): Promise<MessageReply> {\n    let recordsQuery: RecordsQuery;\n    try {\n      recordsQuery = await RecordsQuery.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    try {\n      await authenticate(message.authorization, this.didResolver);\n      await recordsQuery.authorize(tenant);\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    let records: RecordsWriteMessageWithOptionalEncodedData[];\n    if (recordsQuery.author === tenant) {\n      records = await this.fetchRecordsAsOwner(tenant, recordsQuery);\n    } else {\n      records = await this.fetchRecordsAsNonOwner(tenant, recordsQuery);\n    }\n\n    // sort if `dataSort` is specified\n    if (recordsQuery.message.descriptor.dateSort) {\n      records = await sortRecords(records, recordsQuery.message.descriptor.dateSort);\n    }\n\n    // strip away `authorization` property for each record before responding\n    const entries: RecordsQueryReplyEntry[] = [];\n    for (const record of records) {\n      const { authorization: _, ...objectWithRemainingProperties } = record; // a trick to stripping away `authorization`\n      entries.push(objectWithRemainingProperties);\n    }\n\n    return new MessageReply({\n      status: { code: 200, detail: 'OK' },\n      entries\n    });\n  }\n\n  /**\n   * Fetches the records as the owner of the DWN with no additional filtering.\n   */\n  private async fetchRecordsAsOwner(tenant: string, recordsQuery: RecordsQuery): Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n    // fetch all published records matching the query\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      isLatestBaseState : true\n    };\n    const records = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return records;\n  }\n\n  /**\n   * Fetches the records as a non-owner, return only:\n   * 1. published records; and\n   * 2. unpublished records intended for the requester (where `recipient` is the requester)\n   */\n  private async fetchRecordsAsNonOwner(tenant: string, recordsQuery: RecordsQuery)\n    : Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n    const publishedRecords = await this.fetchPublishedRecords(tenant, recordsQuery);\n    const unpublishedRecordsForRequester = await this.fetchUnpublishedRecordsForRequester(tenant, recordsQuery);\n    const unpublishedRecordsByRequester = await this.fetchUnpublishedRecordsByRequester(tenant, recordsQuery);\n    const records = [...publishedRecords, ...unpublishedRecordsForRequester, ...unpublishedRecordsByRequester];\n    return records;\n  }\n\n  /**\n   * Fetches only published records.\n   */\n  private async fetchPublishedRecords(tenant: string, recordsQuery: RecordsQuery): Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n    // fetch all published records matching the query\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      published         : true,\n      isLatestBaseState : true\n    };\n    const publishedRecords = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return publishedRecords;\n  }\n\n  /**\n   * Fetches only unpublished records that are intended for the requester (where `recipient` is the requester).\n   */\n  private async fetchUnpublishedRecordsForRequester(tenant: string, recordsQuery: RecordsQuery)\n    : Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n\n    // include records where recipient is requester\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      // TODO: `recordsQuery.author` cannot be undefined until #299 is implemented (https://github.com/TBD54566975/dwn-sdk-js/issues/299)\n      recipient         : recordsQuery.author!,\n      isLatestBaseState : true,\n      published         : false\n    };\n    const unpublishedRecordsForRequester = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return unpublishedRecordsForRequester;\n  }\n\n  /**\n   * Fetches only unpublished records that are authored by the requester.\n   */\n  private async fetchUnpublishedRecordsByRequester(tenant: string, recordsQuery: RecordsQuery)\n    : Promise<RecordsWriteMessageWithOptionalEncodedData[]> {\n\n    // include records where recipient is requester\n    const filter = {\n      ...RecordsQuery.convertFilter(recordsQuery.message.descriptor.filter),\n      // TODO: `recordsQuery.author` cannot be undefined until #299 is implemented (https://github.com/TBD54566975/dwn-sdk-js/issues/299)\n      author            : recordsQuery.author!,\n      interface         : DwnInterfaceName.Records,\n      method            : DwnMethodName.Write,\n      isLatestBaseState : true,\n      published         : false\n    };\n    const unpublishedRecordsForRequester = await StorageController.query(this.messageStore, this.dataStore, tenant, filter);\n    return unpublishedRecordsForRequester;\n  }\n}\n\n/**\n * Sorts the given records. There are 4 options for dateSort:\n * 1. createdAscending - Sort in ascending order based on when the message was created\n * 2. createdDescending - Sort in descending order based on when the message was created\n * 3. publishedAscending - If the message is published, sort in asc based on publish date\n * 4. publishedDescending - If the message is published, sort in desc based on publish date\n *\n * If sorting is based on date published, records that are not published are filtered out.\n * @param messages - Messages to be sorted if dateSort is present\n * @param dateSort - Sorting scheme\n * @returns Sorted Messages\n */\nasync function sortRecords(\n  messages: RecordsWriteMessage[],\n  dateSort: DateSort\n): Promise<RecordsWriteMessage[]> {\n  switch (dateSort) {\n  case DateSort.CreatedAscending:\n    return messages.sort((a, b) => lexicographicalCompare(a.descriptor.dateCreated, b.descriptor.dateCreated));\n  case DateSort.CreatedDescending:\n    return messages.sort((a, b) => lexicographicalCompare(b.descriptor.dateCreated, a.descriptor.dateCreated));\n  case DateSort.PublishedAscending:\n    return messages\n      .filter(m => m.descriptor.published)\n      .sort((a, b) => lexicographicalCompare(a.descriptor.datePublished!, b.descriptor.datePublished!));\n  case DateSort.PublishedDescending:\n    return messages\n      .filter(m => m.descriptor.published)\n      .sort((a, b) => lexicographicalCompare(b.descriptor.datePublished!, a.descriptor.datePublished!));\n  }\n}\n", "import type { BaseMessage } from '../../../core/types.js';\nimport type { MessageStore } from '../../../store/message-store.js';\nimport type { RecordsWrite } from './records-write.js';\nimport type { SignatureInput } from '../../../jose/jws/general/types.js';\nimport type { RecordsReadDescriptor, RecordsReadMessage } from '../types.js';\n\nimport { getCurrentTimeInHighPrecision } from '../../../utils/time.js';\nimport { Message } from '../../../core/message.js';\nimport { ProtocolAuthorization } from '../../../core/protocol-authorization.js';\nimport { validateAuthorizationIntegrity } from '../../../core/auth.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport type RecordsReadOptions = {\n  recordId: string;\n  date?: string;\n  authorizationSignatureInput?: SignatureInput;\n};\n\nexport class RecordsRead extends Message<RecordsReadMessage> {\n\n  public static async parse(message: RecordsReadMessage): Promise<RecordsRead> {\n    if (message.authorization !== undefined) {\n      await validateAuthorizationIntegrity(message as BaseMessage);\n    }\n\n    const recordsRead = new RecordsRead(message);\n    return recordsRead;\n  }\n\n  /**\n   * Creates a RecordsRead message.\n   * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.\n   * @param options.date If `undefined`, it will be auto-filled with current time.\n   */\n  public static async create(options: RecordsReadOptions): Promise<RecordsRead> {\n    const { recordId, authorizationSignatureInput } = options;\n    const currentTime = getCurrentTimeInHighPrecision();\n\n    const descriptor: RecordsReadDescriptor = {\n      interface : DwnInterfaceName.Records,\n      method    : DwnMethodName.Read,\n      recordId,\n      date      : options.date ?? currentTime\n    };\n\n    // only generate the `authorization` property if signature input is given\n    const authorization = authorizationSignatureInput ? await Message.signAsAuthorization(descriptor, authorizationSignatureInput) : undefined;\n    const message: RecordsReadMessage = { descriptor, authorization };\n\n    Message.validateJsonSchema(message);\n\n    return new RecordsRead(message);\n  }\n\n  public async authorize(tenant: string, newestRecordsWrite: RecordsWrite, messageStore: MessageStore): Promise<void> {\n    const { descriptor } = newestRecordsWrite.message;\n    // if author/requester is the same as the target tenant, we can directly grant access\n    if (this.author === tenant) {\n      return;\n    } else if (descriptor.published === true) {\n      // authentication is not required for published data\n      return;\n    } else if (descriptor.protocol !== undefined) {\n      await ProtocolAuthorization.authorize(tenant, this, this.author, messageStore);\n    } else {\n      throw new Error('message failed authorization');\n    }\n  }\n}\n", "import type { MethodHandler } from '../../types.js';\nimport type { TimestampedMessage } from '../../../core/types.js';\nimport type { DataStore, DidResolver, MessageStore } from '../../../index.js';\nimport type { RecordsReadMessage, RecordsReadReply, RecordsWriteMessage } from '../types.js';\n\nimport { authenticate } from '../../../core/auth.js';\nimport { Message } from '../../../core/message.js';\nimport { MessageReply } from '../../../core/message-reply.js';\nimport { RecordsRead } from '../messages/records-read.js';\nimport { RecordsWrite } from '../messages/records-write.js';\nimport { DwnInterfaceName, DwnMethodName } from '../../../core/message.js';\n\nexport class RecordsReadHandler implements MethodHandler {\n\n  constructor(private didResolver: DidResolver, private messageStore: MessageStore, private dataStore: DataStore) { }\n\n  public async handle({\n    tenant,\n    message\n  }: { tenant: string, message: RecordsReadMessage }): Promise<RecordsReadReply> {\n\n    let recordsRead: RecordsRead;\n    try {\n      recordsRead = await RecordsRead.parse(message);\n    } catch (e) {\n      return MessageReply.fromError(e, 400);\n    }\n\n    // authentication\n    try {\n      if (recordsRead.author !== undefined) {\n        await authenticate(message.authorization!, this.didResolver);\n      }\n    } catch (e) {\n      return MessageReply.fromError(e, 401);\n    }\n\n    // get existing messages matching `recordId` so we can perform authorization\n    const query = {\n      interface : DwnInterfaceName.Records,\n      recordId  : message.descriptor.recordId\n    };\n    const existingMessages = await this.messageStore.query(tenant, query) as TimestampedMessage[];\n\n    const newestExistingMessage = await RecordsWrite.getNewestMessage(existingMessages);\n\n    // if no record found or it has been deleted\n    if (newestExistingMessage === undefined || newestExistingMessage.descriptor.method === DwnMethodName.Delete) {\n      return new MessageReply({\n        status: { code: 404, detail: 'Not Found' }\n      });\n    }\n\n    const newestRecordsWrite = newestExistingMessage as RecordsWriteMessage;\n    try {\n      await recordsRead.authorize(tenant, await RecordsWrite.parse(newestRecordsWrite), this.messageStore);\n    } catch (error) {\n      return MessageReply.fromError(error, 401);\n    }\n\n    const messageCid = await Message.getCid(newestRecordsWrite);\n    const result = await this.dataStore.get(tenant, messageCid, newestRecordsWrite.descriptor.dataCid);\n\n    if (result?.dataStream === undefined) {\n      return new MessageReply({\n        status: { code: 404, detail: 'Not Found' }\n      });\n    }\n\n    const { authorization: _, ...recordsWriteWithoutAuthorization } = newestRecordsWrite; // a trick to stripping away `authorization`\n    const messageReply: RecordsReadReply ={\n      status : { code: 200, detail: 'OK' },\n      record : {\n        ...recordsWriteWithoutAuthorization,\n        data: result.dataStream\n      }\n    };\n    return messageReply;\n  };\n}\n", "import type { BaseMessage } from './core/types.js';\nimport type { DataStore } from './store/data-store.js';\nimport type { EventLog } from './event-log/event-log.js';\nimport type { MessageStore } from './store/message-store.js';\nimport type { MethodHandler } from './interfaces/types.js';\nimport type { Readable } from 'readable-stream';\nimport type { TenantGate } from './core/tenant-gate.js';\nimport type { MessagesGetMessage, MessagesGetReply } from './interfaces/messages/types.js';\nimport type { RecordsReadMessage, RecordsReadReply, RecordsWriteMessage } from './interfaces/records/types.js';\n\nimport { AllowAllTenantGate } from './core/tenant-gate.js';\nimport { DataStoreLevel } from './store/data-store-level.js';\nimport { DidResolver } from './did/did-resolver.js';\nimport { EventLogLevel } from './event-log/event-log-level.js';\nimport { EventsGetHandler } from './interfaces/events/handlers/events-get.js';\nimport { MessageReply } from './core/message-reply.js';\nimport { MessagesGetHandler } from './interfaces/messages/handlers/messages-get.js';\nimport { MessageStoreLevel } from './store/message-store-level.js';\nimport { ProtocolsConfigureHandler } from './interfaces/protocols/handlers/protocols-configure.js';\nimport { ProtocolsQueryHandler } from './interfaces/protocols/handlers/protocols-query.js';\nimport { PrunedInitialRecordsWriteHandler } from './interfaces/records/handlers/pruned-initial-records-write.js';\nimport { RecordsDeleteHandler } from './interfaces/records/handlers/records-delete.js';\nimport { RecordsQueryHandler } from './interfaces/records/handlers/records-query.js';\nimport { RecordsReadHandler } from './interfaces/records/handlers/records-read.js';\nimport { RecordsWriteHandler } from './interfaces/records/handlers/records-write.js';\nimport { DwnInterfaceName, DwnMethodName, Message } from './core/message.js';\n\nexport class Dwn {\n  private methodHandlers: { [key:string]: MethodHandler };\n  private didResolver: DidResolver;\n  private messageStore: MessageStore;\n  private dataStore: DataStore;\n  private eventLog: EventLog;\n  private tenantGate: TenantGate;\n\n  // used by sync\n  private prunedInitialRecordsWriteHandler: PrunedInitialRecordsWriteHandler;\n\n  private constructor(config: DwnConfig) {\n    this.didResolver = config.didResolver!;\n    this.messageStore = config.messageStore!;\n    this.dataStore = config.dataStore!;\n    this.eventLog = config.eventLog!;\n    this.tenantGate = config.tenantGate!;\n\n    this.methodHandlers = {\n      [DwnInterfaceName.Events + DwnMethodName.Get]          : new EventsGetHandler(this.didResolver, this.eventLog),\n      [DwnInterfaceName.Messages + DwnMethodName.Get]        : new MessagesGetHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Protocols + DwnMethodName.Configure] : new ProtocolsConfigureHandler(\n        this.didResolver, this.messageStore, this.dataStore, this.eventLog),\n      [DwnInterfaceName.Protocols + DwnMethodName.Query] : new ProtocolsQueryHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Records + DwnMethodName.Delete]  : new RecordsDeleteHandler(\n        this.didResolver, this.messageStore, this.dataStore, this.eventLog),\n      [DwnInterfaceName.Records + DwnMethodName.Query] : new RecordsQueryHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Records + DwnMethodName.Read]  : new RecordsReadHandler(this.didResolver, this.messageStore, this.dataStore),\n      [DwnInterfaceName.Records + DwnMethodName.Write] : new RecordsWriteHandler(this.didResolver, this.messageStore, this.dataStore, this.eventLog),\n    };\n\n    this.prunedInitialRecordsWriteHandler = new PrunedInitialRecordsWriteHandler(this.didResolver, this.messageStore, this.dataStore, this.eventLog);\n  }\n\n  /**\n   * Creates an instance of the DWN.\n   */\n  public static async create(config?: DwnConfig): Promise<Dwn> {\n    config ??= { };\n    config.didResolver ??= new DidResolver();\n    config.tenantGate ??= new AllowAllTenantGate();\n    config.messageStore ??= new MessageStoreLevel();\n    config.dataStore ??= new DataStoreLevel();\n    config.eventLog ??= new EventLogLevel();\n\n    const dwn = new Dwn(config);\n    await dwn.open();\n\n    return dwn;\n  }\n\n  private async open(): Promise<void> {\n    await this.messageStore.open();\n    await this.dataStore.open();\n    await this.eventLog.open();\n  }\n\n  public async close(): Promise<void> {\n    this.messageStore.close();\n    this.dataStore.close();\n    this.eventLog.close();\n  }\n\n  /**\n   * Processes the given DWN message and returns with a reply.\n   * @param tenant The tenant DID to route the given message to.\n   */\n  public async processMessage(tenant: string, rawMessage: any, dataStream?: Readable): Promise<MessageReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, rawMessage);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const handlerKey = rawMessage.descriptor.interface + rawMessage.descriptor.method;\n    const methodHandlerReply = await this.methodHandlers[handlerKey].handle({\n      tenant,\n      message: rawMessage as BaseMessage,\n      dataStream\n    });\n\n    return methodHandlerReply;\n  }\n\n  /**\n   * Handles a `RecordsRead` message.\n   */\n  public async handleRecordsRead(tenant: string, message: RecordsReadMessage): Promise<RecordsReadReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, message, DwnInterfaceName.Records, DwnMethodName.Read);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const handler = new RecordsReadHandler(this.didResolver, this.messageStore, this.dataStore);\n    return handler.handle({ tenant, message });\n  }\n\n  /**\n   * Handles a `MessagesGet` message.\n   */\n  public async handleMessagesGet(tenant: string, message: MessagesGetMessage): Promise<MessagesGetReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, message, DwnInterfaceName.Messages, DwnMethodName.Get);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const handler = new MessagesGetHandler(this.didResolver, this.messageStore, this.dataStore);\n    return handler.handle({ tenant, message });\n  }\n\n  /**\n   * Privileged method for writing a pruned initial `RecordsWrite` to a DWN without needing to supply associated data.\n   */\n  public async synchronizePrunedInitialRecordsWrite(tenant: string, message: RecordsWriteMessage): Promise<MessagesGetReply> {\n    const errorMessageReply = await this.preprocessingChecks(tenant, message, DwnInterfaceName.Records, DwnMethodName.Write);\n    if (errorMessageReply !== undefined) {\n      return errorMessageReply;\n    }\n\n    const methodHandlerReply = await this.prunedInitialRecordsWriteHandler.handle({ tenant, message });\n    return methodHandlerReply;\n  }\n\n  /**\n   * Common checks for handlers.\n   */\n  private async preprocessingChecks(\n    tenant: string,\n    rawMessage: any,\n    expectedInterface?: DwnInterfaceName,\n    expectedMethod?: DwnMethodName\n  ): Promise<MessageReply | undefined> {\n    const isTenant = await this.tenantGate.isTenant(tenant);\n    if (!isTenant) {\n      return new MessageReply({\n        status: { code: 401, detail: `${tenant} is not a tenant` }\n      });\n    }\n\n    // Verify interface and method\n    const dwnInterface = rawMessage?.descriptor?.interface;\n    const dwnMethod = rawMessage?.descriptor?.method;\n    if (dwnInterface === undefined || dwnMethod === undefined) {\n      return new MessageReply({\n        status: { code: 400, detail: `Both interface and method must be present, interface: ${dwnInterface}, method: ${dwnMethod}` }\n      });\n    }\n    if (expectedInterface !== undefined && expectedInterface !== dwnInterface) {\n      return new MessageReply({\n        status: { code: 400, detail: `Expected interface ${expectedInterface}, received ${dwnInterface}` }\n      });\n    }\n    if (expectedMethod !== undefined && expectedMethod !== dwnMethod) {\n      return new MessageReply({\n        status: { code: 400, detail: `Expected method ${expectedInterface}${expectedMethod}, received ${dwnInterface}${dwnMethod}` }\n      });\n    }\n\n    // validate message structure\n    try {\n      // consider to push this down to individual handlers\n      Message.validateJsonSchema(rawMessage);\n    } catch (error) {\n      return MessageReply.fromError(error, 400);\n    }\n\n    return undefined;\n  }\n\n  public async dump(): Promise<void> {\n    console.group('didResolver');\n    await this.didResolver['dump']?.();\n    console.groupEnd();\n\n    console.group('messageStore');\n    // @ts-ignore\n    await this.messageStore['dump']?.();\n    console.groupEnd();\n\n    console.group('dataStore');\n    // @ts-ignore\n    await this.dataStore['dump']?.();\n    console.groupEnd();\n\n    console.group('eventLog');\n    await this.eventLog['dump']?.();\n    console.groupEnd();\n  }\n};\n\nexport type DwnConfig = {\n  didResolver?: DidResolver,\n  messageStore?: MessageStore;\n  dataStore?: DataStore;\n  tenantGate?: TenantGate;\n  eventLog?: EventLog\n};\n", "import type { PublicKeyJwk, PrivateKeyJwk } from '@tbd54566975/crypto';\nimport type { DidResolutionResult, DidMethodResolver, DidMethodCreator, DidState, DwnServiceEndpoint, DidDocument } from './types.js';\n\nimport { DID, generateKeyPair } from '@decentralized-identity/ion-tools';\n\nexport type DidIonCreateOptions = {\n  keys?: KeyOption[];\n  services?: ServiceOption[];\n};\n\nexport type ServiceOption = {\n  id: string;\n  type: string;\n  serviceEndpoint: string | DwnServiceEndpoint;\n}\n\nexport type KeyOption = {\n  id: string;\n  type: string;\n  keyPair: {\n    publicJwk: PublicKeyJwk;\n    privateJwk: PrivateKeyJwk;\n  },\n  purposes: string[];\n}\n\nexport class DidIonApi implements DidMethodResolver, DidMethodCreator {\n  /**\n   * @param resolutionEndpoint optional custom URL to send DID resolution request to\n   */\n  constructor (private resolutionEndpoint: string = 'https://discover.did.msidentity.com/1.0/identifiers/') {}\n\n  get methodName() {\n    return 'ion';\n  }\n\n  // TODO: discuss. need to normalize what's returned from `create`. DidIon.create and DidKey.create return different things.\n  async create(options: DidIonCreateOptions = {}): Promise<DidState> {\n    options.keys ||= [\n      {\n        id       : 'dwn',\n        type     : 'JsonWebKey2020',\n        keyPair  : await generateKeyPair(),\n        purposes : ['authentication'],\n      },\n    ];\n\n    const didOptions: any = { publicKeys: [] };\n    if (options.services) {\n      didOptions.services = options.services;\n    }\n\n    for (let key of options.keys) {\n      const publicKey: any = { ...key };\n\n      publicKey.publicKeyJwk = key.keyPair.publicJwk;\n      delete publicKey.keyPair;\n\n      didOptions.publicKeys.push(publicKey);\n    }\n\n    const did = new DID({ content: didOptions });\n    const didState = {\n      id         : await did.getURI(),\n      internalId : await did.getURI('short'),\n      methodData : await did.getAllOperations(),\n    };\n\n    // TODO: Migrate this to a utility function that generates a DID document given DidState.\n    // TODO: Add tests to DID Document generation function to ensure that it produces results identical to DidResolver.\n    // TODO: Ensure both DID ION and KEY do this consistently.\n    const didDocument: DidDocument = {\n      '@context'         : 'https://www.w3.org/ns/did/v1',\n      id                 : didState.id,\n      verificationMethod : [],\n    };\n\n    for (let key of didState.methodData[0].content.publicKeys) {\n      const verificationMethod = {\n        id           : `#${key.id}`,\n        controller   : didState.id,\n        type         : key.type,\n        publicKeyJwk : key.publicKeyJwk\n      };\n      didDocument.verificationMethod.push(verificationMethod);\n\n      for (let purpose of key.purposes) {\n        if (didDocument[purpose]) {\n          didDocument[purpose].push(key.id);\n        } else {\n          didDocument[purpose] = [`#${key.id}`];\n        }\n      }\n    }\n\n    for (let service of didState.methodData[0]?.content?.services || []) {\n      const serviceEntry = {\n        id              : `#${service.id}`,\n        type            : service.type,\n        serviceEndpoint : { ...service.serviceEndpoint }\n      };\n      if (didDocument.service) {\n        didDocument.service.push(serviceEntry);\n      } else {\n        didDocument.service = [serviceEntry];\n      }\n    }\n\n    const keys = [];\n    for (let keyOption of options.keys) {\n      const key = {\n        id            : `${didState.id}#${keyOption.id}`,\n        type          : keyOption.type,\n        controller    : didState.id,\n        publicKeyJwk  : keyOption.keyPair.publicJwk,\n        privateKeyJwk : keyOption.keyPair.privateJwk\n      };\n\n      keys.push(key);\n    }\n\n    return {\n      id          : didState.id,\n      internalId  : didState.internalId,\n      didDocument : didDocument,\n      methodData  : didState.methodData,\n      keys        : keys  // TODO: Remove keys once KeyManager/KeyStore implemented since everything BUT privateKeyJwk is already in the returned didDocument.\n    };\n  }\n\n  async resolve(did: string): Promise<DidResolutionResult> {\n    // TODO: Support resolutionOptions as defined in https://www.w3.org/TR/did-core/#did-resolution\n    // using `URL` constructor to handle both existence and absence of trailing slash '/' in resolution endpoint\n    // appending './' to DID so 'did' in 'did:ion:abc' doesn't get interpreted as a URL scheme (e.g. like 'http') due to the colon\n    // TODO: Add tests to ensure that the scenarios this contemplated are checked.\n    const resolutionUrl = new URL('./' + did, this.resolutionEndpoint).toString();\n    const response = await fetch(resolutionUrl);\n\n    // TODO: Replace with check of resonse.ok to catch other 2XX codes.\n    if (response.status !== 200) {\n      throw new Error(`unable to resolve ${did}, got http status ${response.status}`);\n    }\n\n    const didResolutionResult = await response.json();\n    return didResolutionResult;\n  }\n}", "import { ed25519, utils } from '@tbd54566975/crypto';\nimport { DidKeyResolver } from '@tbd54566975/dwn-sdk-js';\nimport { createVerificationMethodWithPrivateKeyJwk } from './utils.js';\nimport { DidMethodCreator, DidMethodResolver, DidState } from './types.js';\n\nconst didKeyResolver = new DidKeyResolver();\n\nexport type DidKeyOptions = never;\n\n//! i know dwn-sdk-js has a resolver that includes both creation and resolving. but they're slightly different and we really\n//! need to settle on what the normalized result of did creation is.\n\nexport class DidKeyApi implements DidMethodResolver, DidMethodCreator {\n  get methodName() {\n    return 'key';\n  }\n\n  async create(_options: any = {}): Promise<DidState> {\n    // Generate new sign key pair.\n    const verificationKeyPair = ed25519.generateKeyPair();\n    const keyAgreementKeyPair = ed25519.deriveX25519KeyPair(verificationKeyPair);\n\n    const verificationKeyId = utils.bytesToBase58btcMultibase(utils.MULTICODEC_HEADERS.ED25519.PUB, verificationKeyPair.publicKey);\n    const keyAgreementKeyId = utils.bytesToBase58btcMultibase(utils.MULTICODEC_HEADERS.X25519.PUB, keyAgreementKeyPair.publicKey);\n\n    const id = `did:key:${verificationKeyId}`;\n\n    const verificationJwkPair = ed25519.keyPairToJwk(verificationKeyPair, verificationKeyId);\n    const verificationKey = createVerificationMethodWithPrivateKeyJwk(id, verificationJwkPair);\n\n    const keyAgreementJwkPair = ed25519.keyPairToJwk(keyAgreementKeyPair, keyAgreementKeyId, { crv: 'X25519' });\n    const keyAgreementKey = createVerificationMethodWithPrivateKeyJwk(id, keyAgreementJwkPair);\n\n    return {\n      id,\n      internalId : id,\n      // didDocument : {},  //! TODO: Add DidDocument to object returned.\n      keys       : [verificationKey, keyAgreementKey],\n      methodData : {}\n    };\n  }\n\n  resolve(did: string) {\n    // TODO: Support resolutionOptions as defined in https://www.w3.org/TR/did-core/#did-resolution\n    // TODO: move did:key resolving logic to this package. resolved Did Doc does **not** include keyAgreement\n    return didKeyResolver.resolve(did);\n  }\n}\n\n", "import type { KeyPairJwk } from '@tbd54566975/crypto';\nimport type { DidDocument, VerificationMethodWithPrivateKeyJwk, ServiceEndpoint } from './types.js';\n\nexport type ParsedDid = {\n  method: string;\n  id: string;\n}\n\nexport function parseDid(did: string): ParsedDid {\n  if (!DID_REGEX.test(did)) {\n    throw new Error('Invalid DID');\n  }\n\n  const [didString,] = did.split('#');\n  const [, method, id] = didString.split(':', 3);\n\n  return { method, id };\n}\n\nexport function createVerificationMethodWithPrivateKeyJwk(id: string, keyPairJwk: KeyPairJwk): VerificationMethodWithPrivateKeyJwk {\n  const { publicKeyJwk, privateKeyJwk } = keyPairJwk;\n\n  return {\n    id         : `${id}#${keyPairJwk.publicKeyJwk.kid}`,\n    type       : 'JsonWebKey2020',\n    controller : id,\n    publicKeyJwk,\n    privateKeyJwk\n  };\n}\n\nexport type GetServicesOptions = {\n  id?: string;\n  type?: string;\n};\n\n/**\n * returns services from the provided DID Document based on the filter. will return all services if no filter is provided\n * @param didDocument the did document to search\n * @param options search filter\n * @returns matched services\n */\nexport function getServices(didDocument: DidDocument, options: GetServicesOptions = {}): ServiceEndpoint[] {\n  return didDocument?.service?.filter(service => {\n    if (options?.id && service.id !== options.id) return false;\n    if (options?.type && service.type !== options.type) return false;\n    return true;\n  }) ?? [ ];\n}\n\nexport const DID_REGEX = /^did:([a-z0-9]+):((?:(?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))*:)*((?:[a-zA-Z0-9._-]|(?:%[0-9a-fA-F]{2}))+))((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(\\/[^#?]*)?([?][^#]*)?(#.*)?$/;\n", "import type { DidResolutionResult, DidResolverCache } from './types.js';\n\n/**\n * no-op cache that is used as the default cache for did-resolver.\n * The motivation behind using a no-op cache as the default stems from\n * the desire to maximize the potential for this library to be used\n * in as many JS runtimes as possible\n */\nexport const nopCache: DidResolverCache = {\n  get: function (_key: string): Promise<DidResolutionResult> {\n    return;\n  },\n  set: function (_key: string, _value: DidResolutionResult): Promise<void> {\n    return;\n  },\n  delete: function (_key: string): Promise<void> {\n    return;\n  },\n  clear: function (): Promise<void> {\n    return;\n  },\n  close: function (): Promise<void> {\n    return;\n  }\n};", "import type { DidResolutionResult, DidMethodResolver, DidResolverCache } from './types.js';\n\nimport { parseDid } from './utils.js';\nimport { nopCache } from './nop-cache.js';\n\nexport type DidResolverOptions = {\n  methodResolvers: DidMethodResolver[];\n  cache?: DidResolverCache;\n}\n\nexport class DidResolver {\n  cache: DidResolverCache;\n  methodResolverMap: Map<string, DidMethodResolver> = new Map();\n\n  constructor(options: DidResolverOptions) {\n    this.cache = options.cache || nopCache;\n\n    for (let methodResolver of options.methodResolvers) {\n      this.methodResolverMap.set(methodResolver.methodName, methodResolver);\n    }\n  }\n\n  async resolve(did: string): Promise<DidResolutionResult> {\n    // TODO: Support resolutionOptions as defined in https://www.w3.org/TR/did-core/#did-resolution\n    const { method } = parseDid(did);\n    const resolver = this.methodResolverMap.get(method);\n\n    if (!resolver) {\n      throw new Error(`no resolver for ${method}`);\n    }\n\n    const cachedResolution = await this.cache.get(did);\n\n    if (cachedResolution) {\n      return cachedResolution;\n    } else {\n      return resolver.resolve(did);\n    }\n  }\n}", "import type { DwnServiceEndpoint } from '@tbd54566975/dids';\nimport {\n  SignatureInput,\n  RecordsWriteOptions,\n  RecordsWriteMessage,\n  PrivateJwk as DwnPrivateKeyJwk,\n  MessagesGetReply,\n  DataStream,\n  RecordsReadReply,\n} from '@tbd54566975/dwn-sdk-js';\n\nimport { Readable } from 'readable-stream';\nimport {\n  DwnRpc,\n  Web5Agent,\n  DwnRpcRequest,\n  ProcessDwnRequest,\n  DwnResponse,\n  SendDwnRequest,\n} from '@tbd54566975/web5-agent';\n\nimport {\n  Cid,\n  Encoder,\n  Message\n} from '@tbd54566975/dwn-sdk-js';\n\nimport type { ProfileManager } from './profile-manager.js';\n\nimport { DidResolver, DidIonApi, DidKeyApi, utils as didUtils } from '@tbd54566975/dids';\nimport {\n  Dwn,\n  EventsGet,\n  RecordsRead,\n  MessagesGet,\n  RecordsWrite,\n  RecordsQuery,\n  RecordsDelete,\n  DwnMethodName,\n  ProtocolsQuery,\n  DwnInterfaceName,\n  ProtocolsConfigure,\n} from '@tbd54566975/dwn-sdk-js';\n\nimport { ProfileApi } from './profile-api.js';\nimport { DwnRpcClient } from './dwn-rpc-client.js';\nimport { blobToIsomorphicNodeReadable, webReadableToIsomorphicNodeReadable } from './utils.js';\n\n// TODO: allow user to provide optional array of DwnRpc implementations once DwnRpc has been moved out of this package\nexport type Web5UserAgentOptions = {\n  dwn: Dwn;\n  profileManager: ProfileManager;\n  didResolver: DidResolver;\n};\n\ntype DwnMessage = {\n  message: any;\n  data?: Blob;\n}\n\nconst dwnMessageCreators = {\n  [DwnInterfaceName.Events + DwnMethodName.Get]          : EventsGet,\n  [DwnInterfaceName.Messages + DwnMethodName.Get]        : MessagesGet,\n  [DwnInterfaceName.Records + DwnMethodName.Read]        : RecordsRead,\n  [DwnInterfaceName.Records + DwnMethodName.Query]       : RecordsQuery,\n  [DwnInterfaceName.Records + DwnMethodName.Write]       : RecordsWrite,\n  [DwnInterfaceName.Records + DwnMethodName.Delete]      : RecordsDelete,\n  [DwnInterfaceName.Protocols + DwnMethodName.Query]     : ProtocolsQuery,\n  [DwnInterfaceName.Protocols + DwnMethodName.Configure] : ProtocolsConfigure,\n};\n\nexport class Web5UserAgent implements Web5Agent {\n  private dwn: Dwn;\n  private profileManager: ProfileManager;\n  private didResolver: DidResolver;\n  private dwnRpcClient: DwnRpc;\n\n  constructor(options: Web5UserAgentOptions) {\n    this.dwn = options.dwn;\n    this.didResolver = options.didResolver;\n    this.profileManager = options.profileManager;\n\n    this.dwnRpcClient = new DwnRpcClient();\n  }\n\n  /**\n   * TODO: add jsdoc\n   * @param options\n   * @returns\n   */\n  static async create(options: Partial<Web5UserAgentOptions>) {\n    options.dwn ||= await Dwn.create();\n    options.profileManager ||= new ProfileApi();\n    options.didResolver ||= new DidResolver({ methodResolvers: [new DidIonApi(), new DidKeyApi()] });\n\n    return new Web5UserAgent(options as Web5UserAgentOptions);\n  }\n\n  /**\n   * TODO: add jsdoc\n   * @param message\n   * @returns\n   */\n  async processDwnRequest(request: ProcessDwnRequest): Promise<DwnResponse> {\n    const { message, dataStream }= await this.#constructDwnMessage(request);\n    const reply = await this.dwn.processMessage(request.target, message, dataStream as any);\n\n    return {\n      reply,\n      message    : message,\n      messageCid : await Message.getCid(message)\n    };\n  }\n\n  async sendDwnRequest(request: SendDwnRequest): Promise<DwnResponse> {\n    const dwnRpcRequest: Partial<DwnRpcRequest> = { targetDid: request.target };\n    let messageData;\n\n    if ('messageCid' in request) {\n      const { message, data } =  await this.#getDwnMessage(request.author, request.messageType, request.messageCid);\n\n      dwnRpcRequest.message = message;\n      messageData = data;\n    } else {\n      const { message } = await this.#constructDwnMessage(request);\n      dwnRpcRequest.message = message;\n      messageData = request.dataStream;\n    }\n\n    if (messageData) {\n      dwnRpcRequest.data = messageData;\n    }\n\n    const didResolution = await this.didResolver.resolve(request.target);\n    if (!didResolution.didDocument) {\n      if (didResolution.didResolutionMetadata?.error) {\n        throw new Error(`DID resolution error: ${didResolution.didResolutionMetadata.error}`);\n      } else {\n        throw new Error('DID resolution error: figure out error message');\n      }\n    }\n\n    const [ service ] = didUtils.getServices(didResolution.didDocument, { id: '#dwn' });\n    if (!service) {\n      throw new Error(`${request.target} has no dwn service endpoints`);\n    }\n\n    const { serviceEndpoint } = service;\n    if (!serviceEndpoint['nodes']) {\n      throw new Error('malformed dwn service endpoint. expected nodes array');\n    }\n\n    const { nodes } = serviceEndpoint as DwnServiceEndpoint;\n    let dwnReply;\n    let errorMessages = [];\n\n    // try sending to author's publicly addressable dwn's until first request succeeds.\n    for (let node of nodes) {\n      dwnRpcRequest.dwnUrl = node;\n\n      try {\n        dwnReply = await this.dwnRpcClient.sendDwnRequest(dwnRpcRequest as DwnRpcRequest);\n        break;\n      } catch(e) {\n        errorMessages.push({ url: node, message: e.message });\n      }\n    }\n\n    if (!dwnReply) {\n      throw new Error(JSON.stringify(errorMessages));\n    }\n\n    return {\n      message    : dwnRpcRequest.message,\n      messageCid : await Message.getCid(dwnRpcRequest.message),\n      reply      : dwnReply,\n    };\n  }\n\n  async #getDwnMessage(author: string, messageType: string, messageCid: string): Promise<DwnMessage> {\n    const dwnSignatureInput = await this.#getAuthorSignatureInput(author);\n    const messagesGet = await MessagesGet.create({\n      authorizationSignatureInput : dwnSignatureInput,\n      messageCids                 : [messageCid]\n    });\n\n    const result: MessagesGetReply = await this.dwn.processMessage(author, messagesGet.toJSON());\n    const [ messageEntry ] = result.messages;\n\n    if (!messageEntry) {\n      throw new Error('TODO: figure out error message');\n    }\n\n    let { message } = messageEntry;\n    if (!message) {\n      throw new Error('TODO: message not found');\n    }\n\n    let dwnMessage: DwnMessage = { message };\n\n    // if the message is a RecordsWrite, either data will be present, OR we have to fetch it using a RecordsRead\n    if (messageType === 'RecordsWrite') {\n      const { encodedData } = messageEntry;\n      message = message as RecordsWriteMessage;\n\n      if (encodedData) {\n        const dataBytes = Encoder.base64UrlToBytes(encodedData);\n        dwnMessage.data = new Blob([dataBytes]);\n      } else {\n        const recordsRead = await RecordsRead.create({\n          authorizationSignatureInput : dwnSignatureInput,\n          recordId                    : message['recordId']\n        });\n\n        const reply = await this.dwn.processMessage(author, recordsRead.toJSON()) as RecordsReadReply;\n\n        if (reply.status.code >= 400) {\n          const { status: { code, detail } } = reply;\n          throw new Error(`(${code}) Failed to read data associated with record ${message['recordId']}. ${detail}}`);\n        } else {\n          const dataBytes = await DataStream.toBytes(reply.record.data);\n          dwnMessage.data = new Blob([dataBytes]);\n        }\n      }\n    }\n\n    return dwnMessage;\n  }\n\n  async #constructDwnMessage(request: ProcessDwnRequest) {\n    // TODO: show henry the consequence of him choosing Readable\n\n    const dwnSignatureInput = await this.#getAuthorSignatureInput(request.author);\n    let readableStream: Readable;\n\n    // TODO: MOVE ALL THIS TO HTTP TRANSPORT LAND BECAUSE THATS WHY WE HAVE TO DO IT\n    // THANKS A LOT BROWSER NECKBEARDS\n    if (request.messageType === 'RecordsWrite') {\n      const messageOptions = request.messageOptions as RecordsWriteOptions;\n\n      if (request.dataStream && !messageOptions.data) {\n        const { dataStream } = request;\n        let isomorphicNodeReadable: Readable;\n\n        if (dataStream instanceof Blob) {\n          isomorphicNodeReadable = blobToIsomorphicNodeReadable(dataStream);\n\n          readableStream = blobToIsomorphicNodeReadable(dataStream);\n        } else if (dataStream instanceof ReadableStream) {\n          const [ forCid, forProcessMessage ] = dataStream.tee();\n\n          isomorphicNodeReadable = webReadableToIsomorphicNodeReadable(forCid);\n          readableStream = webReadableToIsomorphicNodeReadable(forProcessMessage);\n        }\n\n        messageOptions.dataCid = await Cid.computeDagPbCidFromStream(isomorphicNodeReadable);\n        messageOptions.dataSize ??= isomorphicNodeReadable['bytesRead'];\n      }\n    }\n\n    // TODO: if we ever find time, figure out how to narrow this type. may have figured something out in `web5.DidInterface`\n    const messageCreateInput = {\n      ...<any>request.messageOptions,\n      authorizationSignatureInput: dwnSignatureInput\n    };\n\n    const messageCreator = dwnMessageCreators[request.messageType];\n    const dwnMessage = await messageCreator.create(messageCreateInput as any);\n\n    return { message: dwnMessage.toJSON(), dataStream: readableStream };\n  }\n\n  /**\n   * constructs signature input required to sign DWeb Messages\n   * @param authorDid\n   * @returns {SignatureInput}\n   */\n  async #getAuthorSignatureInput(authorDid: string): Promise<SignatureInput> {\n    const profile = await this.profileManager.getProfile(authorDid);\n\n    if (!profile) {\n      throw new Error('profile not found for author.');\n    }\n\n    const { keys } = profile.did;\n    const [ key ] = keys;\n    const { privateKeyJwk } = key;\n\n    // TODO: make far less naive\n    const kidFragment = privateKeyJwk.kid || key.id;\n    const kid = `${profile.did.id}#${kidFragment}`;\n\n    const dwnSignatureInput: SignatureInput = {\n      privateJwk      : <DwnPrivateKeyJwk>privateKeyJwk,\n      protectedHeader : { alg: privateKeyJwk.crv, kid }\n    };\n\n    return dwnSignatureInput;\n  }\n}", "import type { Filter, QueryStore } from '@tbd54566975/web5-agent';\nimport type { Profile } from './profile-manager.js';\n\nimport { Level } from 'level';\n\nimport { ProfileIndex } from './profile-index.js';\n// TODO: refactor to use another underlying datastore\n\nexport type ProfileStoreOptions = {\n  location?: string;\n  indexLocation?: string;\n};\nexport class ProfileStore implements QueryStore<Profile> {\n  private db: Level;\n  private index: ProfileIndex;\n\n  private static _defaultOptions = {\n    location      : 'data/agent/profiles',\n    indexLocation : 'data/agent/profiles-index'\n  };\n\n  constructor(options: ProfileStoreOptions = {}) {\n    options = { ...ProfileStore._defaultOptions, ...options };\n\n    this.db = new Level(options.location);\n    this.index = new ProfileIndex(options.indexLocation);\n  }\n\n  async put(entry: Profile): Promise<void> {\n    const key = this.generateKey(entry.id);\n    const value = JSON.stringify(entry);\n\n    await this.db.put(key, value);\n    await this.index.put(entry);\n  }\n\n  async get(id: string): Promise<Profile | undefined> {\n    const key = this.generateKey(id);\n\n    try {\n      const value = await this.db.get(key);\n\n      return JSON.parse(value);\n    } catch(e: any) {\n      if (e.code === 'LEVEL_NOT_FOUND') {\n        return undefined;\n      }\n    }\n  }\n\n  async query(filter: Filter): Promise<Profile[]> {\n    const results = await this.index.query(filter);\n    const profiles = [];\n\n    const serializedProfiles = await this.db.getMany(results);\n    for (let serializedProfile of serializedProfiles) {\n      profiles.push(JSON.parse(serializedProfile));\n    }\n\n    return profiles;\n  }\n\n  async all(): Promise<Profile[]> {\n    const serializedProfiles = await this.db.values().all();\n    const profiles = [];\n\n    for (let serializedProfile of serializedProfiles) {\n      profiles.push(JSON.parse(serializedProfile));\n    }\n\n    return profiles;\n  }\n\n  async delete(): Promise<void> {\n    throw new Error('Method not implemented.');\n  }\n\n  async clear(): Promise<void> {\n    await this.index.clear();\n    await this.db.clear();\n\n    return;\n  }\n\n  async close(): Promise<void> {\n    await this.index.close();\n    await this.db.close();\n\n    return;\n  }\n\n  private generateKey(id: string) {\n    return `PROFILE_${id}`;\n  }\n\n}", "import type { AbstractBatchOperation, AbstractBatchDelOperation } from 'abstract-level';\n\nimport { Level } from 'level';\nimport flat from 'flat';\n\nconst { flatten } = flat;\n\nexport type Record = {\n  id: string,\n  [prop: string]: unknown\n};\n\nexport type RangeFilter = {\n  gt?: any,\n  gte?: any,\n  lt?: any,\n  lte?: any\n};\n\nexport type TermFilter = string | number | boolean\n\nexport type Filter = {\n  [prop: string]: TermFilter | TermFilter[] | RangeFilter\n}\n\nexport class ProfileIndex {\n  level: Level<string, string>;\n\n  constructor(private location = 'data/agent/profiles-index') {\n    this.level = new Level(location);\n  }\n\n  async delete(id: string): Promise<void> {\n    const ops: AbstractBatchDelOperation<typeof this.level, string>[] = [];\n\n    let keyPrefixes: string | string[] = await this.level.get(`__${id}__meta`);\n    if (!keyPrefixes) {\n      return;\n    }\n\n    keyPrefixes = keyPrefixes.split('@');\n\n    for (let keyPrefix of keyPrefixes) {\n      const op = { type: 'del' as const, key: `${keyPrefix}~${id}` };\n      ops.push(op);\n    }\n\n    ops.push({ type: 'del' as const, key: `__${id}__meta` });\n\n    await this.level.batch(ops);\n  }\n\n  async put(record: Record): Promise<void> {\n    const flattenedRecord: Record = flatten(record);\n    let { id } = flattenedRecord;\n\n    let keyPrefixes: string[] = [];\n    const ops: AbstractBatchOperation<typeof this.level, string, string>[] = [];\n    for (let property in flattenedRecord) {\n      if (property === 'id') {\n        continue;\n      }\n\n      const propVal = flattenedRecord[property];\n      const keyPrefix = `${property}~${propVal}`;\n      const key = `${keyPrefix}~${id}`;\n\n      ops.push({ type: 'put', key, value: id });\n      keyPrefixes.push(keyPrefix);\n    }\n\n    ops.push({ type: 'put', key: `__${id}__meta`, value: keyPrefixes.join('@')  });\n\n    await this.level.batch(ops);\n  }\n\n  async query(filter: Filter): Promise<Array<string>> {\n    const matches: { [docId: string]: number } = {};\n    const promises: Promise<void>[] = [];\n\n    for (let propertyName in filter) {\n      const propertyValue = filter[propertyName];\n\n      if (typeof propertyValue === 'object' && propertyValue !== null) {\n        if (Array.isArray(propertyValue)) {\n          // OR query\n          for (let value of propertyValue) {\n            const promise = this.buildTermQuery(propertyName, value, matches);\n            promises.push(promise);\n          }\n        } else {\n          const promise = this.buildRangeQuery(propertyName, propertyValue, matches);\n          promises.push(promise);\n        }\n      } else {\n        const promise = this.buildTermQuery(propertyName, propertyValue, matches);\n        promises.push(promise);\n      }\n    }\n\n    const numFilters = Object.keys(filter).length;\n    const docIds: string[] = [];\n    await Promise.all(promises);\n\n    for (let docId in matches) {\n      if (matches[docId] === numFilters) {\n        docIds.push(docId);\n      }\n    }\n\n    return docIds;\n  }\n\n  async buildTermQuery(propertyName: string, propertyValue: unknown, matches: { [docId: string]: number }): Promise<void> {\n    const key = `${propertyName}~${propertyValue}`;\n    const iteratorOptions = {\n      gt: `${key}~`\n    };\n\n    for await (let doc of this.level.iterator(iteratorOptions)) {\n      const [k, val] = doc;\n      if (!k.includes(key)) {\n        break;\n      }\n\n      if (val in matches) {\n        matches[val] += 1;\n      } else {\n        matches[val] = 1;\n      }\n    }\n  }\n\n  async buildRangeQuery(propertyName: string, range: RangeFilter, matches: { [docId: string]: number }): Promise<void> {\n    const key = `${propertyName}`;\n    const iteratorOptions: { [key: string]: any } = {};\n\n    for (let inequality in range) {\n      iteratorOptions[inequality] = `${propertyName}~${range[inequality as keyof RangeFilter]}`;\n    }\n\n    for await (let doc of this.level.iterator(iteratorOptions)) {\n      const [k, val] = doc;\n      if (!k.includes(key)) {\n        break;\n      }\n\n      if (val in matches) {\n        matches[val] += 1;\n      } else {\n        matches[val] = 1;\n      }\n    }\n  }\n\n  async clear(): Promise<void> {\n    this.level.clear();\n  }\n\n  async close(): Promise<void> {\n    return this.level.close();\n  }\n}", "import type { QueryStore } from '@tbd54566975/web5-agent';\nimport type { CreateProfileOptions, Profile, ProfileManager } from './profile-manager.js';\n\nimport { ProfileStore } from './profile-store.js';\n\nexport class ProfileApi implements ProfileManager {\n  private store: QueryStore<Profile>;\n\n  constructor(store?: QueryStore<Profile>) {\n    this.store = store ||= new ProfileStore();\n  }\n\n  async createProfile(options: CreateProfileOptions): Promise<Profile> {\n    if (!options.did && !options.didMethod) {\n      throw new Error('must provide did or didMethod');\n    }\n\n    const profile: Partial<Profile> = {\n      name        : options.name,\n      icon        : options.icon,\n      dateCreated : new Date(),\n    };\n\n    if (options.did) {\n      profile.did = options.did;\n    } else {\n      // TODO: create DID based on didMethod\n    }\n\n    profile.id = options.did?.id;\n    await this.store.put(profile as Profile);\n\n    return profile as Profile;\n  }\n\n  getProfile(id: string): Promise<Profile | undefined> {\n    return this.store.get(id);\n  }\n\n  // TODO: discuss whether we want to rename this to getProfiles instead\n  listProfiles(): Promise<Profile[]> {\n    return this.store.all();\n  }\n}", "import type { DwnRpc, DwnRpcRequest, DwnRpcResponse, JsonRpcResponse } from '@tbd54566975/web5-agent';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { createJsonRpcRequest, parseJson } from '@tbd54566975/web5-agent';\n\n// TODO: move what's below to dwn-server repo. i wrote this here for expediency\n\n/**\n * Client used to communicate with Dwn Servers\n */\nexport class DwnRpcClient implements DwnRpc {\n  #transportClients: Map<string, DwnRpc>;\n\n  constructor(clients: DwnRpc[] = []) {\n    this.#transportClients = new Map();\n\n    // include http client as default. can be overwritten for 'http:' or 'https:' if instantiator provides\n    // their own.\n    clients = [new HttpDwnRpcClient(), ...clients];\n\n    for (let client of clients) {\n      for (let transportScheme of client.transportProtocols) {\n        this.#transportClients.set(transportScheme, client);\n      }\n    }\n  }\n\n  get transportProtocols(): string[] {\n    return Array.from(this.#transportClients.keys());\n  }\n\n  sendDwnRequest(request: DwnRpcRequest): Promise<DwnRpcResponse> {\n    // will throw if url is invalid\n    const url = new URL(request.dwnUrl);\n\n    const transportClient = this.#transportClients.get(url.protocol);\n    if (!transportClient) {\n      const error = new Error(`no ${url.protocol} transport client available`);\n      error.name = 'NO_TRANSPORT_CLIENT';\n\n      throw error;\n    }\n\n    return transportClient.sendDwnRequest(request);\n  }\n}\n\n// TODO: move to dwn-server repo. i wrote this here for expediency\n\n/**\n * Http client that can be used to communicate with Dwn Servers\n */\nclass HttpDwnRpcClient implements DwnRpc {\n  get transportProtocols() { return ['http:', 'https:']; }\n\n  async sendDwnRequest(request: DwnRpcRequest): Promise<DwnRpcResponse> {\n    const requestId = uuidv4();\n    const jsonRpcRequest = createJsonRpcRequest(requestId, 'dwn.processMessage', {\n      target  : request.targetDid,\n      message : request.message\n    });\n\n    const fetchOpts = {\n      method  : 'POST',\n      headers : {\n        'dwn-request': JSON.stringify(jsonRpcRequest)\n      }\n    };\n\n    if (request.data) {\n      fetchOpts.headers['content-type'] = 'application/octet-stream';\n      fetchOpts['body'] = request.data;\n    }\n\n    const resp = await fetch(request.dwnUrl, fetchOpts);\n    let dwnRpcResponse: DwnRpcResponse;\n\n    // check to see if response is in header first. if it is, that means the response is a ReadableStream\n    let dataStream;\n    const { headers } = resp;\n    if (headers.has('dwn-response')) {\n      const jsonRpcResponse = parseJson(headers.get('dwn-response')) as JsonRpcResponse;\n\n      if (jsonRpcResponse == null) {\n        throw new Error(`failed to parse json rpc response. dwn url: ${request.dwnUrl}`);\n      }\n\n      dataStream = resp.body;\n      dwnRpcResponse = jsonRpcResponse;\n    } else {\n      // TODO: wonder if i need to try/catch this?\n      dwnRpcResponse = await resp.json() as JsonRpcResponse;\n    }\n\n    if (dwnRpcResponse.error) {\n      const { code, message } = dwnRpcResponse.error;\n      throw new Error(`(${code}) - ${message}`);\n    }\n\n    const { reply } = dwnRpcResponse.result;\n    if (dataStream) {\n      reply['record']['data'] = dataStream;\n    }\n\n    return reply;\n  }\n}", "import type { Readable } from 'readable-stream';\nimport { ReadableWebToNodeStream } from 'readable-web-to-node-stream';\n\nexport function blobToIsomorphicNodeReadable(blob: Blob): Readable {\n  return webReadableToIsomorphicNodeReadable(blob.stream());\n}\n\nexport function webReadableToIsomorphicNodeReadable(webReadable: ReadableStream) {\n  return new ReadableWebToNodeStream(webReadable);\n}", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", "// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};", "export type JsonRpcId = string | number | null;\nexport type JsonRpcParams = any;\nexport type JsonRpcVersion = '2.0';\n\nexport interface JsonRpcRequest {\n  jsonrpc: JsonRpcVersion;\n  id?: JsonRpcId;\n  method: string;\n  params?: any;\n}\n\nexport interface JsonRpcError {\n  code: JsonRpcErrorCodes;\n  message: string;\n  data?: any;\n}\n\nexport enum JsonRpcErrorCodes {\n  // JSON-RPC 2.0 pre-defined errors\n  InvalidRequest = -32600,\n  MethodNotFound = -32601,\n  InvalidParams = -32602,\n  InternalError = -32603,\n  ParseError = -32700,\n  TransportError = -32300,\n\n  // App defined errors\n  BadRequest = -50400, // equivalent to HTTP Status 400\n  Unauthorized = -50401, // equivalent to HTTP Status 401\n  Forbidden = -50403, // equivalent to HTTP Status 403\n}\n\nexport type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse;\n\nexport interface JsonRpcSuccessResponse {\n  jsonrpc: JsonRpcVersion;\n  id: JsonRpcId;\n  result: any;\n  error?: never;\n}\n\nexport interface JsonRpcErrorResponse {\n  jsonrpc: JsonRpcVersion;\n  id: JsonRpcId;\n  result?: never;\n  error: JsonRpcError;\n}\n\nexport const createJsonRpcErrorResponse = (\n  id: JsonRpcId,\n  code: JsonRpcErrorCodes,\n  message: string,\n  data?: any,\n): JsonRpcErrorResponse => {\n  const error: JsonRpcError = { code, message };\n  if (data != undefined) {\n    error.data = data;\n  }\n  return {\n    jsonrpc: '2.0',\n    id,\n    error,\n  };\n};\n\nexport const createJsonRpcNotification = (\n  method: string,\n  params?: JsonRpcParams,\n): JsonRpcRequest => {\n  return {\n    jsonrpc: '2.0',\n    method,\n    params,\n  };\n};\n\nexport const createJsonRpcRequest = (\n  id: JsonRpcId,\n  method: string,\n  params?: JsonRpcParams,\n): JsonRpcRequest => {\n  return {\n    jsonrpc: '2.0',\n    id,\n    method,\n    params,\n  };\n};\n\nexport const createJsonRpcSuccessResponse = (\n  id: JsonRpcId,\n  result?: any,\n): JsonRpcSuccessResponse => {\n  return {\n    jsonrpc : '2.0',\n    id,\n    result  : result ?? null,\n  };\n};\n\nexport function parseJson(text: string): object | null {\n  try {\n    return JSON.parse(text);\n  } catch {\n    return null;\n  }\n}", "import type { Web5Agent } from '@tbd54566975/web5-agent';\nimport type {\n  MessageReply,\n  ProtocolDefinition,\n  ProtocolsConfigureOptions,\n  ProtocolsQueryOptions,\n  RecordsDeleteOptions,\n  RecordsQueryOptions,\n  RecordsReadOptions,\n  RecordsWriteDescriptor,\n  RecordsWriteMessage,\n  RecordsWriteOptions,\n  ProtocolsConfigureMessage\n} from '@tbd54566975/dwn-sdk-js';\n\nimport { DwnInterfaceName, DwnMethodName } from '@tbd54566975/dwn-sdk-js';\n\nimport { Record } from './record.js';\nimport { Protocol } from './protocol.js';\nimport { dataToBlob, isDataSizeUnderCacheLimit, isEmptyObject } from './utils.js';\n\n// TODO: Export type ProtocolsConfigureDescriptor from dwn-sdk-js.\nexport type ProtocolsConfigureDescriptor = {\n  dateCreated: string;\n  definition: ProtocolDefinition;\n  interface : DwnInterfaceName.Protocols;\n  method: DwnMethodName.Configure;\n  protocol: string;\n};\n\nexport type ProtocolsConfigureRequest = {\n  message: Omit<ProtocolsConfigureOptions, 'authorizationSignatureInput'>;\n}\n\nexport type ProtocolsConfigureResponse = {\n  status: MessageReply['status'];\n  protocol?: Protocol;\n}\n\nexport type ProtocolsQueryReplyEntry = {\n  descriptor: ProtocolsConfigureDescriptor;\n};\n\nexport type ProtocolsQueryRequest = {\n  from?: string;\n  message: Omit<ProtocolsQueryOptions, 'authorizationSignatureInput'>\n}\n\nexport type ProtocolsQueryResponse = {\n  protocols: ProtocolsQueryReplyEntry[];\n  status: MessageReply['status'];\n}\n\nexport type RecordsCreateRequest = RecordsWriteRequest;\n\nexport type RecordsCreateResponse = RecordsWriteResponse;\n\nexport type RecordsCreateFromRequest = {\n  author: string;\n  data: unknown;\n  message?: Omit<RecordsWriteOptions, 'authorizationSignatureInput'>;\n  record: Record;\n}\n\nexport type RecordsDeleteRequest = {\n  from?: string;\n  message: Omit<RecordsDeleteOptions, 'authorizationSignatureInput'>;\n}\n\nexport type RecordsDeleteResponse = {\n  status: MessageReply['status'];\n};\n\n// TODO: Export type RecordsQueryReplyEntry and EncryptionProperty from dwn-sdk-js.\nexport type RecordsQueryReplyEntry = {\n  recordId: string,\n  contextId?: string;\n  descriptor: RecordsWriteDescriptor;\n  encryption?: RecordsWriteMessage['encryption'];\n  encodedData?: string;\n};\n\n\nexport type RecordsQueryRequest = {\n  /** The from property indicates the DID to query from and return results. */\n  from?: string;\n  message: Omit<RecordsQueryOptions, 'authorizationSignatureInput'>;\n}\n\nexport type RecordsQueryResponse = {\n  status: MessageReply['status'];\n  records?: Record[]\n};\n\nexport type RecordsReadRequest = {\n  /** The from property indicates the DID to read from and return results fro. */\n  from?: string;\n  message: Omit<RecordsReadOptions, 'authorizationSignatureInput'>;\n}\n\nexport type RecordsReadResponse = {\n  status: MessageReply['status'];\n  record: Record;\n};\n\nexport type RecordsWriteRequest = {\n  data: unknown;\n  message?: Omit<Partial<RecordsWriteOptions>, 'authorizationSignatureInput'>;\n}\n\nexport type RecordsWriteResponse = {\n  status: MessageReply['status'];\n  record?: Record\n};\n\n/**\n * TODO: Document class.\n */\nexport class DwnApi {\n  constructor(private web5Agent: Web5Agent, private connectedDid: string) {}\n\n  /**\n * TODO: Document namespace.\n */\n  get protocols() {\n    return {\n      /**\n       * TODO: Document method.\n       */\n      configure: async (request: ProtocolsConfigureRequest): Promise<ProtocolsConfigureResponse> => {\n        const agentResponse = await this.web5Agent.processDwnRequest({\n          target         : this.connectedDid,\n          author         : this.connectedDid,\n          messageOptions : request.message,\n          messageType    : DwnInterfaceName.Protocols + DwnMethodName.Configure\n        });\n\n        const { message, messageCid, reply: { status }} = agentResponse;\n        const response: ProtocolsConfigureResponse = { status };\n\n        if (status.code < 300) {\n          const metadata = { author: this.connectedDid, messageCid };\n          response.protocol = new Protocol(this.web5Agent, message as ProtocolsConfigureMessage, metadata);\n        }\n\n        return response;\n      },\n\n      /**\n       * TODO: Document method.\n       */\n      query: async (request: ProtocolsQueryRequest): Promise<ProtocolsQueryResponse> => {\n        const agentResponse = await this.web5Agent.processDwnRequest({\n          author         : this.connectedDid,\n          messageOptions : request.message,\n          messageType    : DwnInterfaceName.Protocols + DwnMethodName.Query,\n          target         : this.connectedDid\n        });\n\n        const { reply: { entries, status } } = agentResponse;\n        const protocols = entries as ProtocolsQueryReplyEntry[];\n\n        return { protocols, status };\n      }\n    };\n  }\n\n  /**\n   * TODO: Document namespace.\n   */\n  get records() {\n    return {\n      /**\n       * TODO: Document method.\n       */\n      create: async (request: RecordsCreateRequest): Promise<RecordsCreateResponse> => {\n        return this.records.write(request);\n      },\n\n      /**\n       * TODO: Document method.\n       */\n      createFrom: async (request: RecordsCreateFromRequest): Promise<RecordsWriteResponse> => {\n        const { author: inheritedAuthor, ...inheritedProperties } = request.record.toJSON();\n\n        // Remove target from inherited properties since target is being explicitly defined in method parameters.\n        delete inheritedProperties.target;\n\n\n        // If `data` is being updated then `dataCid` and `dataSize` must not be present.\n        if (request.data !== undefined) {\n          delete inheritedProperties.dataCid;\n          delete inheritedProperties.dataSize;\n        }\n\n        // If `published` is set to false, ensure that `datePublished` is undefined. Otherwise, DWN SDK's schema validation\n        // will throw an error if `published` is false but `datePublished` is set.\n        if (request.message?.published === false && inheritedProperties.datePublished !== undefined) {\n          delete inheritedProperties.datePublished;\n          delete inheritedProperties.published;\n        }\n\n        // If the request changes the `author` or message `descriptor` then the deterministic `recordId` will change.\n        // As a result, we will discard the `recordId` if either of these changes occur.\n        if (!isEmptyObject(request.message) || (request.author && request.author !== inheritedAuthor)) {\n          delete inheritedProperties.recordId;\n        }\n\n        return this.records.write({\n          data    : request.data,\n          message : {\n            ...inheritedProperties,\n            ...request.message,\n          },\n        });\n      },\n\n      /**\n       * TODO: Document method.\n       */\n      delete: async (request: RecordsDeleteRequest): Promise<RecordsDeleteResponse> => {\n        const agentRequest = {\n          author         : this.connectedDid,\n          messageOptions : request.message,\n          messageType    : DwnInterfaceName.Records + DwnMethodName.Delete,\n          target         : request.from || this.connectedDid\n        };\n\n        let agentResponse;\n\n        if (request.from) {\n          agentResponse = await this.web5Agent.sendDwnRequest(agentRequest);\n        } else {\n          agentResponse = await this.web5Agent.processDwnRequest(agentRequest);\n        }\n\n        //! TODO: (Frank -> Moe): This quirk is the result of how 4XX errors are being returned by `dwn-server`\n        //!                       When DWN SDK returns 404, agentResponse is { status: { code: 404 }} and that's it.\n        //!                       Need to decide how to resolve.\n        let status;\n        if (agentResponse.reply) {\n          ({ reply: { status } } = agentResponse);\n        } else {\n          ({ status } = agentResponse);\n        }\n\n        return { status };\n      },\n\n      /**\n       * TODO: Document method.\n       */\n      query: async (request: RecordsQueryRequest): Promise<RecordsQueryResponse> => {\n        const agentRequest = {\n          author         : this.connectedDid,\n          messageOptions : request.message,\n          messageType    : DwnInterfaceName.Records + DwnMethodName.Query,\n          target         : request.from || this.connectedDid\n        };\n\n        let agentResponse;\n\n        if (request.from) {\n          agentResponse = await this.web5Agent.sendDwnRequest(agentRequest);\n        } else {\n          agentResponse = await this.web5Agent.processDwnRequest(agentRequest);\n        }\n\n        const { reply: { entries, status } } = agentResponse;\n\n        const records = entries.map((entry: RecordsQueryReplyEntry) => {\n          const recordOptions = {\n            author : this.connectedDid,\n            target : this.connectedDid,\n            ...entry as RecordsWriteMessage\n          };\n          const record = new Record(this.web5Agent, recordOptions);\n          return record;\n        });\n\n        return { records, status };\n      },\n\n      /**\n       * TODO: Document method.\n       */\n      read: async (request: RecordsReadRequest): Promise<RecordsReadResponse> => {\n        const agentRequest = {\n          author         : this.connectedDid,\n          messageOptions : request.message,\n          messageType    : DwnInterfaceName.Records + DwnMethodName.Read,\n          target         : request.from || this.connectedDid\n        };\n\n        let agentResponse;\n\n        if (request.from) {\n          agentResponse = await this.web5Agent.sendDwnRequest(agentRequest);\n        } else {\n          agentResponse = await this.web5Agent.processDwnRequest(agentRequest);\n        }\n\n        //! TODO: (Frank -> Moe): This quirk is the result of how 4XX errors are being returned by `dwn-server`\n        //!                       When DWN SDK returns 404, agentResponse is { status: { code: 404 }} and that's it.\n        //!                       Need to decide how to resolve.\n        let responseRecord;\n        let status;\n        if (agentResponse.reply) {\n          ({ reply: { record: responseRecord, status } } = agentResponse);\n        } else {\n          ({ status } = agentResponse);\n        }\n\n        let record: Record;\n        if (200 <= status.code && status.code <= 299) {\n          const recordOptions = {\n            author : this.connectedDid,\n            target : this.connectedDid,\n            ...responseRecord,\n          };\n\n          record = new Record(this.web5Agent, recordOptions);\n        }\n\n        return { record, status };\n      },\n\n      /**\n       * TODO: Document method.\n       *\n       * As a convenience, the Record instance returned will cache a copy of the data if the\n       * data size, in bytes, is less than the DWN 'max data size allowed to be encoded'\n       * parameter of 10KB. This is done to maintain consistency with other DWN methods,\n       * like RecordsQuery, that include relatively small data payloads when returning\n       * RecordsWrite message properties. Regardless of data size, methods such as\n       * `record.data.stream()` will return the data when called even if it requires fetching\n       * from the DWN datastore.\n       */\n      write: async (request: RecordsWriteRequest): Promise<RecordsWriteResponse> => {\n        const messageOptions: Partial<RecordsWriteOptions> = {\n          ...request.message\n        };\n\n        const { dataBlob, dataFormat } = dataToBlob(request.data, messageOptions.dataFormat);\n        messageOptions.dataFormat = dataFormat;\n\n        const agentResponse = await this.web5Agent.processDwnRequest({\n          author      : this.connectedDid,\n          dataStream  : dataBlob,\n          messageOptions,\n          messageType : DwnInterfaceName.Records + DwnMethodName.Write,\n          target      : this.connectedDid\n        });\n\n        const { message, reply: { status } } = agentResponse;\n        const responseMessage = message as RecordsWriteMessage;\n\n        let record: Record;\n        if (200 <= status.code && status.code <= 299) {\n          const recordOptions = {\n            author      : this.connectedDid,\n            encodedData : dataBlob,\n            target      : this.connectedDid,\n            ...responseMessage,\n          };\n\n          record = new Record(this.web5Agent, recordOptions);\n        }\n\n        return { record, status };\n      },\n    };\n  }\n}", "import type { Readable } from 'readable-stream';\nimport type { Web5Agent } from '@tbd54566975/web5-agent';\nimport type { RecordsReadReply, RecordsWriteDescriptor, RecordsWriteMessage, RecordsWriteOptions } from '@tbd54566975/dwn-sdk-js';\n\nimport { ReadableWebToNodeStream } from 'readable-web-to-node-stream';\nimport { DataStream, DwnInterfaceName, DwnMethodName, Encoder } from '@tbd54566975/dwn-sdk-js';\n\nimport { dataToBlob, isDataSizeUnderCacheLimit } from './utils.js';\nimport type { RecordsDeleteResponse } from './dwn-api.js';\n\nexport type RecordOptions = RecordsWriteMessage & {\n  author: string;\n  target: string;\n  encodedData?: string | Blob;\n  data?: Readable | ReadableStream;\n};\n\nexport type RecordModel = RecordsWriteDescriptor & Omit<RecordsWriteMessage, 'descriptor' | 'recordId'> & {\n  author: string;\n  recordId?: string;\n  target: string;\n}\n\nexport type RecordUpdateOptions = {\n  data?: unknown;\n  dataCid?: RecordsWriteDescriptor['dataCid'];\n  dataSize?: RecordsWriteDescriptor['dataSize'];\n  dateModified?: RecordsWriteDescriptor['dateModified'];\n  datePublished?: RecordsWriteDescriptor['datePublished'];\n  published?: RecordsWriteDescriptor['published'];\n}\n\n/**\n   * TODO: Document class.\n   */\nexport class Record implements RecordModel {\n  // mutable properties\n  author: string;\n  target: string;\n  isDeleted = false;\n\n  #attestation?: RecordsWriteMessage['attestation'];\n  #contextId?: string;\n  #descriptor: RecordsWriteDescriptor;\n  #encodedData?: string | Blob | null;\n  #encryption?: RecordsWriteMessage['encryption'];\n  #readableStream?: Readable | Promise<Readable>;\n  #recordId: string;\n  #web5Agent: Web5Agent;\n\n  // Immutable DWN Record properties.\n  get attestation(): RecordsWriteMessage['attestation'] { return this.#attestation; }\n  get contextId() { return this.#contextId; }\n  get dataFormat() { return this.#descriptor.dataFormat; }\n  get dateCreated() { return this.#descriptor.dateCreated; }\n  get encryption(): RecordsWriteMessage['encryption'] { return this.#encryption; }\n  get id() { return this.#recordId; }\n  get interface() { return this.#descriptor.interface; }\n  get method() { return this.#descriptor.method; }\n  get parentId() { return this.#descriptor.parentId; }\n  get protocol() { return this.#descriptor.protocol; }\n  get protocolPath() { return this.#descriptor.protocolPath; }\n  get recipient() { return this.#descriptor.recipient; }\n  get schema() { return this.#descriptor.schema; }\n\n  // Mutable DWN Record properties.\n  get dataCid() { return this.#descriptor.dataCid; }\n  get dataSize() { return this.#descriptor.dataSize; }\n  get dateModified() { return this.#descriptor.dateModified; }\n  get datePublished() { return this.#descriptor.datePublished; }\n  get published() { return this.#descriptor.published; }\n\n  constructor(web5Agent: Web5Agent, options: RecordOptions) {\n    this.#web5Agent = web5Agent;\n\n    // Store the target and author DIDs that were used to create the message to use for subsequent reads, etc.\n    this.author = options.author;\n    this.target = options.target;\n\n    // RecordsWriteMessage properties.\n    this.#attestation = options.attestation;\n    this.#contextId = options.contextId;\n    this.#descriptor = options.descriptor;\n    this.#encryption = options.encryption;\n    this.#recordId = options.recordId;\n\n\n    // options.encodedData will either be a base64url encoded string (in the case of RecordsQuery)\n    // OR a Blob in the case of a RecordsWrite.\n    this.#encodedData = options.encodedData ?? null;\n\n    // If the record was created from a RecordsRead reply then it will have a `data` property.\n    if (options.data) {\n      this.#readableStream = Record.isReadableWebStream(options.data) ?\n        new ReadableWebToNodeStream(<ReadableStream>options.data) as Readable : options.data as Readable;\n    }\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  get data() {\n    if (this.isDeleted) throw new Error(`Error: Record with ID '${this.id}' was previously deleted.`);\n\n    if (!this.#encodedData && !this.#readableStream) {\n      // `encodedData` will be set if `dataSize` <= DwnConstant.maxDataSizeAllowedToBeEncoded. (10KB as of April 2023)\n      // `readableStream` will be set if Record was instantiated from a RecordsRead reply.\n      // If neither of the above are true, then the record must be fetched from the DWN.\n      this.#readableStream = this.#web5Agent.processDwnRequest({\n        author         : this.author,\n        messageOptions : { recordId: this.id },\n        messageType    : DwnInterfaceName.Records + DwnMethodName.Read,\n        target         : this.target,\n      })\n        .then(response => response.reply as RecordsReadReply)\n        .then(reply => reply.record.data as Readable)\n        .catch(error => { throw new Error(`Error encountered while attempting to read data: ${error.message}`); });\n    }\n\n    if (typeof this.#encodedData === 'string') {\n      // If `encodedData` is set, then it is expected that:\n      // `dataSize` <= DwnConstant.maxDataSizeAllowedToBeEncoded (10KB as of April 2023)\n      // type is Uint8Array bytes if the Record object was instantiated from a RecordsWrite response\n      // type is Base64 URL encoded string if the Record object was instantiated from a RecordsQuery response\n      // If it is a string, we need to Base64 URL decode to bytes\n      const dataBytes = Encoder.base64UrlToBytes(this.#encodedData);\n      this.#encodedData = new Blob([dataBytes]);\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this; // Capture the context of the `Record` instance.\n    const dataBlob = this.#encodedData as Blob;\n    const dataObj = {\n      async blob(): Promise<Blob> {\n        if (self.#encodedData) return self.#encodedData as Blob;\n        if (self.#readableStream) return new Blob([this.stream().then(DataStream.toBytes)]);\n      },\n      async json() {\n        if (self.#encodedData) return this.text().then(JSON.parse);\n        if (self.#readableStream) return this.text().then(JSON.parse);\n        return null;\n      },\n      async text() {\n        if (self.#encodedData) return dataBlob.text();\n        if (self.#readableStream) return this.stream().then(DataStream.toBytes).then(Encoder.bytesToString);\n        return null;\n      },\n      async stream() {\n        if (self.#encodedData) return new ReadableWebToNodeStream(dataBlob.stream());\n        if (self.#readableStream) return self.#readableStream;\n        return null;\n      },\n      then(...callbacks) {\n        return this.stream().then(...callbacks);\n      },\n      catch(callback) {\n        return dataObj.then().catch(callback);\n      },\n    };\n    return dataObj;\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  async delete(): Promise<RecordsDeleteResponse> {\n    if (this.isDeleted) throw new Error(`Record with ID '${this.id}' was previously deleted.`);\n\n    // Attempt to delete the record from the DWN.\n    const agentResponse = await this.#web5Agent.processDwnRequest({\n      author         : this.author,\n      messageOptions : { recordId: this.id },\n      messageType    : DwnInterfaceName.Records + DwnMethodName.Delete,\n      target         : this.target,\n    });\n\n    const { reply: { status } } = agentResponse;\n\n    if (status.code === 202) {\n      // If the record was successfully deleted, mark the instance as deleted to prevent further modifications.\n      this.#setDeletedStatus(true);\n    }\n\n    return { status };\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  async send(target: string): Promise<any> {\n    if (this.isDeleted) throw new Error(`Record with ID '${this.id}' was previously deleted.`);\n\n    const { reply: { status } } = await this.#web5Agent.sendDwnRequest({\n      messageType    : DwnInterfaceName.Records + DwnMethodName.Write,\n      author         : this.author,\n      dataStream     : await this.data.blob(),\n      target         : target,\n      messageOptions : this.toJSON(),\n    });\n\n    return { status };\n\n    // console.log(JSON.stringify(agentResponse, null, 2));\n  }\n\n  /**\n   * TODO: Document method.\n   *\n   * Called by `JSON.stringify(...)` automatically.\n   */\n  toJSON(): RecordModel {\n    return {\n      attestation   : this.attestation,\n      author        : this.author,\n      contextId     : this.contextId,\n      dataCid       : this.dataCid,\n      dataFormat    : this.dataFormat,\n      dataSize      : this.dataSize,\n      dateCreated   : this.dateCreated,\n      dateModified  : this.dateModified,\n      datePublished : this.datePublished,\n      encryption    : this.encryption,\n      interface     : this.interface,\n      method        : this.method,\n      parentId      : this.parentId,\n      protocol      : this.protocol,\n      protocolPath  : this.protocolPath,\n      published     : this.published,\n      recipient     : this.recipient,\n      recordId      : this.id,\n      schema        : this.schema,\n      target        : this.target,\n    };\n  }\n\n  /**\n   * TODO: Document method.\n   *\n   * Called automatically in string concatenation, String() type conversion, and template literals.\n   */\n  toString() {\n    let str = `Record: {\\n`;\n    str += `  ID: ${this.id}\\n`;\n    str += this.contextId ? `  Context ID: ${this.contextId}\\n` : '';\n    str += this.protocol ? `  Protocol: ${this.protocol}\\n` : '';\n    str += this.schema ? `  Schema: ${this.schema}\\n` : '';\n    str += `  Data CID: ${this.dataCid}\\n`;\n    str += `  Data Format: ${this.dataFormat}\\n`;\n    str += `  Data Size: ${this.dataSize}\\n`;\n    str += `  Created: ${this.dateCreated}\\n`;\n    str += `  Modified: ${this.dateModified}\\n`;\n    str += `}`;\n    return str;\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  async update(options: RecordUpdateOptions = {}) {\n    if (this.isDeleted) throw new Error(`Error: Record with ID '${this.id}' was previously deleted.`);\n\n    // Begin assembling update message.\n    let updateMessage = { ...this.#descriptor, ...options } as Partial<RecordsWriteOptions>;\n\n    let dataBlob: Blob;\n    if (options.data !== undefined) {\n      // If `data` is being updated then `dataCid` and `dataSize` must be undefined and the `data` property is passed as\n      // a top-level property to `web5Agent.processDwnRequest()`.\n      delete updateMessage.dataCid;\n      delete updateMessage.dataSize;\n      delete updateMessage.data;\n\n      ({ dataBlob } = dataToBlob(options.data, updateMessage.dataFormat));\n    }\n\n    // Throw an error if an attempt is made to modify immutable properties. `data` has already been handled.\n    const mutableDescriptorProperties = new Set(['data', 'dataCid', 'dataSize', 'dateModified', 'datePublished', 'published']);\n    Record.#verifyPermittedMutation(Object.keys(options), mutableDescriptorProperties);\n\n    // If a new `dateModified` was not provided, remove it from the updateMessage to let the DWN SDK auto-fill.\n    // This is necessary because otherwise DWN SDK throws an Error 409 Conflict due to attempting to overwrite a record\n    // when the `dateModified` timestamps are identical.\n    if (options.dateModified === undefined) {\n      delete updateMessage.dateModified;\n    }\n\n    // If `published` is set to false, ensure that `datePublished` is undefined. Otherwise, DWN SDK's schema validation\n    // will throw an error if `published` is false but `datePublished` is set.\n    if (options.published === false && updateMessage.datePublished !== undefined) {\n      delete updateMessage.datePublished;\n    }\n\n    // Set the record ID and context ID, if any.\n    updateMessage.recordId = this.#recordId;\n    updateMessage.contextId = this.#contextId;\n\n    const messageOptions: Partial<RecordsWriteOptions> = {\n      ...updateMessage\n    };\n\n    const agentResponse = await this.#web5Agent.processDwnRequest({\n      author      : this.author,\n      dataStream  : dataBlob,\n      messageOptions,\n      messageType : DwnInterfaceName.Records + DwnMethodName.Write,\n      target      : this.target,\n    });\n\n    const { message, reply: { status } } = agentResponse;\n    const responseMessage = message as RecordsWriteMessage;\n\n    if (200 <= status.code && status.code <= 299) {\n      // Only update the local Record instance mutable properties if the record was successfully (over)written.\n      mutableDescriptorProperties.forEach(property => {\n        this.#descriptor[property] = responseMessage.descriptor[property];\n      });\n      // Only cache data if `dataSize` is less than DWN 'max data size allowed to be encoded'.\n      if (options.data !== undefined) {\n        this.#encodedData = dataBlob; // Clear `encodedData` in case it was previously set.\n      }\n    }\n\n    return { status };\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  #setDeletedStatus(status: boolean): void {\n    this.isDeleted = status;\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  static isReadableWebStream(stream) {\n    // TODO: Improve robustness of the check modeled after node:stream.\n    return typeof stream._read !== 'function';\n  }\n\n  /**\n   * TODO: Document method.\n   */\n  static #verifyPermittedMutation(propertiesToMutate: Iterable<string>, mutableDescriptorProperties: Set<string>) {\n    for (const property of propertiesToMutate) {\n      if (!mutableDescriptorProperties.has(property)) {\n        throw new Error(`${property} is an immutable property. Its value cannot be changed.`);\n      }\n    }\n  }\n}", "import { DwnConstant, Encoder } from '@tbd54566975/dwn-sdk-js';\n\nconst textDecoder = new TextDecoder();\n\n// TODO: Remove if this method is ever added to the DWN SDK Encoder class\nexport function base64UrlToString(base64urlString) {\n  const bytes = Encoder.base64UrlToBytes(base64urlString);\n  return Encoder.bytesToString(bytes);\n}\n\n// TODO: Remove if this method is ever added to the DWN SDK Encoder class\nexport function bytesToObject(bytes) {\n  const objectString = textDecoder.decode(bytes);\n  return JSON.parse(objectString);\n}\n\n/**\n * Checks if the provided data size is under the cache limit.\n * The cache limit is based on the maxDataSizeAllowedToBeEncoded defined in the DWN SDK.\n *\n * @export\n * @param {number} dataSize - The size of the data to be checked, in bytes.\n * @returns {boolean} True if the data size is less than or equal to the maximum allowed data size, false otherwise.\n *\n * @example\n * // Returns: true\n * isDataSizeUnderCacheLimit(5000);\n *\n * @example\n * // Returns: false\n * isDataSizeUnderCacheLimit(15000);\n */\nexport function isDataSizeUnderCacheLimit(dataSize: number): boolean {\n  return dataSize <= DwnConstant.maxDataSizeAllowedToBeEncoded;\n}\n\n/**\n * Set/detect the media type and return the data as bytes.\n */\nexport const dataToBlob = (data: any, dataFormat?: string) => {\n  let dataBlob: Blob;\n\n  // Check for Object or String, and if neither, assume bytes.\n  const detectedType = toType(data);\n  if (dataFormat === 'text/plain' || detectedType === 'string') {\n    dataBlob = new Blob([data], { type: 'text/plain' });\n  } else if (dataFormat === 'application/json' || detectedType === 'object') {\n    const dataBytes = Encoder.objectToBytes(data);\n    dataBlob = new Blob([dataBytes], { type: 'application/json' });\n  } else if (data instanceof Uint8Array || data instanceof ArrayBuffer) {\n    dataBlob = new Blob([data], { type: 'application/octet-stream' });\n  } else if (data instanceof Blob) {\n    dataBlob = data;\n  } else {\n    throw new Error('data type not supported.');\n  }\n\n  dataFormat = dataFormat || dataBlob.type || 'application/octet-stream';\n\n  return { dataBlob, dataFormat };\n};\n\nexport function isEmptyObject(obj) {\n  if (typeof obj === 'object' && obj !== null) {\n    return Object.keys(obj).length === 0;\n  }\n  return false;\n}\n\n/**\n * Simplistic initial implementation to check whether messages that are being routed\n * to process locally or be transported to a remote DWN are already signed.\n *\n * TODO: Consider whether cryptographic signature verification is warranted or if\n *       the naive check is sufficient given that DWNs already verify authenticity\n *       and integrity of every message.\n * @param {{}} message\n * @returns boolean\n */\nexport function isUnsignedMessage(message) {\n  return message?.message?.authorization ? false : true;\n}\n\nexport function objectValuesBase64UrlToBytes(obj) {\n  return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, Encoder.base64UrlToBytes(value as string)]));\n}\n\nexport function objectValuesBytesToBase64Url(obj) {\n  return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, Encoder.bytesToBase64Url(value as Uint8Array)]));\n}\n\nexport function parseJson(str) {\n  try {\n    return JSON.parse(str);\n  } catch {\n    return null;\n  }\n}\n\nexport function parseUrl(str) {\n  try {\n    return new URL(str);\n  } catch {\n    return null;\n  }\n}\n\nexport function pascalToKebabCase(str) {\n  return str\n    .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n    .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\n    .toLowerCase();\n}\n\n/**\n * Credit for toType() function:\n *   Angus Croll\n *   https://github.com/angus-c\n *   https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/\n */\nconst toType = (obj) => {\n  return ({}).toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n};", "import type { Web5Agent } from '@tbd54566975/web5-agent';\nimport type { ProtocolsConfigure } from '@tbd54566975/dwn-sdk-js';\n\n// TODO: export ProtocolsConfigureMessage from dwn-sdk-js\nexport type ProtocolsConfigureMessage = ProtocolsConfigure['message'];\ntype ProtocolMetadata = {\n  author: string;\n  messageCid: string;\n};\n\nexport class Protocol {\n  #metadata: ProtocolMetadata;\n  #web5Agent: Web5Agent;\n  #protocolsConfigureMessage: ProtocolsConfigureMessage;\n\n  constructor(web5Agent: Web5Agent, protocolsConfigureMessage: ProtocolsConfigureMessage, metadata: ProtocolMetadata) {\n    this.#metadata = metadata;\n    this.#web5Agent = web5Agent;\n    this.#protocolsConfigureMessage = protocolsConfigureMessage;\n  }\n\n  toJSON() {\n    return this.#protocolsConfigureMessage;\n  }\n\n  async send() {\n    const { reply } = await this.#web5Agent.sendDwnRequest({\n      messageType : 'ProtocolsConfigure',\n      author      : this.#metadata.author,\n      target      : this.#metadata.author,\n      messageCid  : this.#metadata.messageCid\n    });\n\n    return { status: reply.status };\n  }\n}", "import type {\n  DidKeyOptions,\n  DidIonCreateOptions,\n  DidMethodApi,\n  DidMethodCreator,\n  DidMethodResolver,\n  DidResolverCache,\n  DidResolutionResult,\n  DidState\n} from '@tbd54566975/dids';\n\n\nimport { DidResolver } from '@tbd54566975/dids';\n\n// Map method names to option types\ntype CreateMethodOptions = {\n  ion: DidIonCreateOptions;\n  key: DidKeyOptions;\n};\n\n// A conditional type for inferring options based on the method name\ntype CreateOptions<M extends keyof CreateMethodOptions> = CreateMethodOptions[M];\n\nexport type DidApiOptions = {\n  didMethodApis: DidMethodApi[];\n  // TODO: implement cache in DidResolver\n  cache?: DidResolverCache;\n}\nexport class DidApi {\n  private didResolver: DidResolver;\n  private methodCreatorMap: Map<string, DidMethodCreator> = new Map();\n\n  /**\n   * returns the DID resolver created by this api. useful in scenarios where you want to pass around\n   * the same resolver so that you can leverage the resolver's cache\n   */\n  get resolver() {\n    return this.didResolver;\n  }\n\n  constructor(options: DidApiOptions) {\n    const { didMethodApis, cache } = options;\n\n    this.didResolver = new DidResolver({ methodResolvers: options.didMethodApis, cache });\n\n    for (let methodApi of didMethodApis) {\n      this.methodCreatorMap.set(methodApi.methodName, methodApi);\n    }\n  }\n  // TODO: discuss whether we want this approach or would rather just go with options being unknown. this approach\n  //       leads to a better devex because intellisense will work based on what was provided for method\n  create<M extends keyof CreateMethodOptions>(method: M, options?: CreateOptions<M>): Promise<DidState> {\n    const didMethodCreator = this.methodCreatorMap.get(method);\n    if (!didMethodCreator) {\n      throw new Error(`no creator available for ${method}`);\n    }\n\n    return didMethodCreator.create(options);\n  }\n\n  resolve(did: string): Promise<DidResolutionResult> {\n    return this.didResolver.resolve(did);\n  }\n\n  /**\n   * can be used to add different did method resolvers\n   * @param _resolver\n   */\n  addMethodResolver(_resolver: DidMethodResolver) {\n    throw new Error('not yet implemented');\n  }\n\n  /**\n   * can be used to add differed did method creators\n   * @param _creator\n   */\n  addMethodCreator(_creator: DidMethodCreator) {\n    throw new Error('not yet implemented');\n  }\n}", "import { Level } from 'level';\n\n// simple isomorphic key/value store\n// TODO: create KeyValueStore interface that this class implements\nexport class AppStorage {\n  private store: Level<string, string>;\n\n  constructor(location = 'data/app/storage') {\n    this.store = new Level(location);\n  }\n\n  async get(key: string): Promise<string | undefined> {\n    try {\n      return await this.store.get(key);\n    } catch(e: any) {\n      if (e.code === 'LEVEL_NOT_FOUND') {\n        return;\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  set(key: string, value: string): Promise<void> {\n    return this.store.put(key, value);\n  }\n\n  async delete(key: string): Promise<void> {\n    return this.store.del(key);\n  }\n\n  async clear(): Promise<void> {\n    return this.store.clear();\n  }\n\n  async close(): Promise<void> {\n    return this.store.close();\n  }\n}"],
  "mappings": "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IAAO,IACP,2BAA4B,KAC5B,aAAc,KACd,aAAc,KACd,aAAc,KACd,aAAc,KACd,IAAO,KACP,eAAkB,KAClB,UAAW,MACX,YAAa,MACb,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAa,MACb,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB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,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,GAAAC,KAAA,cAAAC,IAEA,IAAIC,GAASF,IAETG,GAAO,KACPC,GAAQ,KACRC,IAAQ,KAERC,IAASD,IAAM,OAEnB,SAASE,IAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAIJ,GAAM,QAAQI,CAAO,EAEtC,KAAK,MAAQ,IAAIJ,GAAM,KAAKI,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAAOA,EAAQ,KAEpBF,IAAO,KAAK,EAAE,SAAS,EAAG,eAAe,EACzCA,IAAO,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,WAAW,EAAG,yBAAyB,CACnE,CACAJ,GAAO,YAAcK,IAErB,SAASE,GAAYC,EAAMF,EAAS,CAClC,OAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACd,IAAIN,EAAQ,IAAI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F,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,CAAA,CAAA,EC3wBAshF,GAAA1sF,GAAAC,GAAA,CAAA,aAAAC,GAAAA,EAEA,IAAIysF,EAAS1sF,EAET6R,EAAO86E,GAAA,EACP9L,EAAQ+L,IAAA,EACRlwC,EAAQkjC,GAAA,EAERhgD,EAAS8c,EAAM,OAEnB,SAASmwC,EAAY5hE,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAI41D,EAAM,MAAM51D,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAI41D,EAAM,QAAQ51D,CAAO,EAEtC,KAAK,MAAQ,IAAI41D,EAAM,KAAK51D,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAAOA,EAAQ,KAEpB2U,EAAO,KAAK,EAAE,SAAS,EAAG,eAAe,EACzCA,EAAO,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,WAAW,EAAG,yBAAyB,CACnE,CACA8sD,EAAO,YAAcG,EAErB,SAASC,EAAYvgF,EAAM0e,EAAS,CAClC,OAAO,eAAeyhE,EAAQngF,EAAM,CAC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EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,ECrNAvkH,GAAAA,EAOA,IAAMwkH,IAAmB,C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",
  "names": ["require_base64_js", "__commonJSMin", "exports", "init_shim", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_shim", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_shim", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "i", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "checkInt", "min", "maxBytes", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "hi", "lo", "src", "dst", "type", "alphabet", "table", "i16", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "process", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "len", "args", "i", "Item", "array", "noop", "name", "dir", "import_buffer", "import_process", "_globalThis", "init_shim", "__esmMin", "Object", "get", "_global", "exports", "IonError", "code", "message", "exports", "init_base_x", "__esmMin", "init_shim", "empty", "init_bytes", "__esmMin", "init_shim", "Encoder", "Decoder", "ComposedDecoder", "or", "Codec", "from", "decode", "encode", "rfc4648", "init_base", "__esmMin", "init_shim", "init_base_x", "init_bytes", "name", "prefix", "baseEncode", "bytes", "baseDecode", "text", "decoder", "decoders", "input", "left", "right", "string", "alphabet", "bitsPerChar", "codes", "i", "end", "out", "bits", "buffer", "written", "value", "data", "pad", "mask", "base64_exports", "__export", "base64", "base64pad", "base64url", "base64urlpad", "init_base64", "__esmMin", "init_shim", "init_base", "rfc4648", "ErrorCode_1", "IonError_1", "base64_1", "Encoder", "content", "encodedContent", "inputContextForErrorLogging", "rawBytes", "input", "exports", "merge", "sets", "_len", "_key", "length", "slice", "xl", "x", "join", "subexp", "str", "typeOf", "o", "undefined", "Object", "prototype", "toString", "call", "split", "pop", "shift", "toLowerCase", "toUpperCase", "toArray", "obj", "Array", "setInterval", "assign", "target", "source", "key", "buildExps", "isIRI", "ALPHA$$", "CR$", "DIGIT$$", "DQUOTE$$", "HEXDIG$$", "SP$$", "PCT_ENCODED$", "SUB_DELIMS$$", "RESERVED$$", "GEN_DELIMS$$", "UCSCHAR$$", "SCHEME$", "USERINFO$", "UNRESERVED$$", "DEC_OCTET$", "DEC_OCTET_RELAXED$", "H16$", "LS32$", "IPV4ADDRESS$", "IPV6ADDRESS1$", "IPV6ADDRESS2$", "IPV6ADDRESS3$", "IPV6ADDRESS4$", "IPV6ADDRESS5$", "IPV6ADDRESS6$", "IPV6ADDRESS7$", "IPV6ADDRESS8$", "IPV6ADDRESS9$", "ZONEID$", "IPV6ADDRESS$", "IP_LITERAL$", "IPV6ADDRZ_RELAXED$", "IPVFUTURE$", "HOST$", "REG_NAME$", "PORT$", "AUTHORITY$", "PCHAR$", "SEGMENT$", "SEGMENT_NZ$", "SEGMENT_NZ_NC$", "PATH_ABEMPTY$", "PATH_ABSOLUTE$", "PATH$", "PATH_NOSCHEME$", "PATH_ROOTLESS$", "PATH_EMPTY$", "QUERY$", "IPRIVATE$$", "FRAGMENT$", "HIER_PART$", "URI$", "RELATIVE_PART$", "RELATIVE$", "URI_REFERENCE$", "ABSOLUTE_URI$", "GENERIC_REF$", "RELATIVE_REF$", "ABSOLUTE_REF$", "SAMEDOC_REF$", "AUTHORITY_REF$", "RegExp", "URI_PROTOCOL", "IRI_PROTOCOL", "maxInt", "base", "tMin", "tMax", "skew", "damp", "initialBias", "initialN", "delimiter", "regexPunycode", "regexNonASCII", "regexSeparators", "errors", "baseMinusTMin", "floor", "Math", "stringFromCharCode", "String", "fromCharCode", "error", "type", "RangeError", "map", "array", "fn", "result", "mapDomain", "string", "parts", "replace", "labels", "encoded", "ucs2decode", "output", "counter", "value", "charCodeAt", "extra", "push", "ucs2encode", "fromCodePoint", "toConsumableArray", "basicToDigit", "codePoint", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "k", "decode", "input", "inputLength", "i", "n", "bias", "basic", "lastIndexOf", "j", "index", "oldi", "w", "t", "baseMinusT", "out", "splice", "encode", "_step", "_iteratorNormalCompletion", "_iterator", "currentValue", "basicLength", "handledCPCount", "m", "_step2", "_iteratorNormalCompletion2", "_iterator2", "handledCPCountPlusOne", "_step3", "_iteratorNormalCompletion3", "_iterator3", "q", "qMinusT", "toUnicode", "test", "toASCII", "punycode", "SCHEMES", "pctEncChar", "chr", "c", "e", "pctDecChars", "newStr", "il", "parseInt", "substr", "c2", "c3", "_normalizeComponentEncoding", "components", "protocol", "decodeUnreserved", "decStr", "match", "UNRESERVED", "scheme", "PCT_ENCODED", "NOT_SCHEME", "userinfo", "NOT_USERINFO", "host", "NOT_HOST", "path", "NOT_PATH", "NOT_PATH_NOSCHEME", "query", "NOT_QUERY", "fragment", "NOT_FRAGMENT", "_stripLeadingZeros", "_normalizeIPv4", "matches", "IPV4ADDRESS", "address", "_matches", "_normalizeIPv6", "IPV6ADDRESS", "_matches2", "zone", "reverse", "last", "_address$toLowerCase$2", "first", "firstFields", "lastFields", "isLastFieldIPv4Address", "fieldCount", "lastFieldsStart", "fields", "allZeroFields", "reduce", "acc", "field", "lastLongest", "longestZeroFields", "sort", "a", "b", "newHost", "newFirst", "newLast", "URI_PARSE", "NO_MATCH_IS_UNDEFINED", "parse", "uriString", "options", "iri", "reference", "port", "isNaN", "indexOf", "schemeHandler", "unicodeSupport", "domainHost", "_recomposeAuthority", "uriTokens", "_", "$1", "$2", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "Error", "serialize", "authority", "charAt", "absolutePath", "resolveComponents", "relative", "skipNormalization", "tolerant", "resolve", "baseURI", "relativeURI", "schemelessOptions", "normalize", "uri", "equal", "uriA", "uriB", "escapeComponent", "ESCAPE", "unescapeComponent", "handler", "secure", "http", "isSecure", "wsComponents", "resourceName", "_wsComponents$resourc2", "ws", "O", "ATEXT$$", "QTEXT$$", "VCHAR$$", "SOME_DELIMS$$", "NOT_LOCAL_PART", "NOT_HFNAME", "NOT_HFVALUE", "mailtoComponents", "to", "unknownHeaders", "headers", "hfields", "hfield", "toAddrs", "subject", "body", "addr", "toAddr", "atIdx", "localPart", "domain", "name", "URN_PARSE", "urnComponents", "nid", "nss", "urnScheme", "uriComponents", "UUID", "uuidComponents", "uuid", "https", "wss", "mailto", "urn", "OperationKeyType", "exports", "Encoder_1", "ErrorCode_1", "IonError_1", "OperationKeyType_1", "InputValidator", "operationKeyJwk", "operationKeyType", "allowedProperties", "property", "id", "purposes", "processedPurposes", "purpose", "exports", "IonSdkConfig", "exports", "require_canonicalize", "__commonJSMin", "exports", "module", "init_shim", "object", "serialize", "t", "cv", "ci", "keys", "Encoder_1", "canonicalize", "JsonCanonicalizer", "content", "contentWithoutUndefinedProperties", "canonicalizedString", "key", "exports", "require_src", "__commonJSMin", "exports", "module", "init_shim", "base", "ALPHABET", "BASE_MAP", "j", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "i", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "require_util", "__commonJSMin", "exports", "module", "init_shim", "textDecoder", "decodeText", "bytes", "textEncoder", "encodeText", "text", "concat", "arrs", "length", "output", "offset", "arr", "require_base", "__commonJSMin", "exports", "module", "init_shim", "encodeText", "Base", "name", "code", "factory", "alphabet", "buf", "string", "char", "require_rfc4648", "__commonJSMin", "exports", "module", "init_shim", "decode", "string", "alphabet", "bitsPerChar", "codes", "i", "end", "out", "bits", "buffer", "written", "value", "encode", "data", "pad", "mask", "rfc4648", "input", "require_constants", "__commonJSMin", "exports", "module", "init_shim", "baseX", "Base", "rfc4648", "decodeText", "encodeText", "identity", "constants", "names", "prev", "tupple", "codes", "require_src", "__commonJSMin", "exports", "module", "init_shim", "constants", "encodeText", "decodeText", "concat", "multibase", "nameOrCode", "buf", "name", "codeBuf", "encoding", "validEncode", "encode", "enc", "data", "decode", "prefix", "isEncoded", "encodingFromData", "names", "codes", "require_encode", "__commonJSMin", "exports", "module", "init_shim", "encode", "MSB", "REST", "MSBALL", "INT", "num", "out", "offset", "oldOffset", "require_decode", "__commonJSMin", "exports", "module", "init_shim", "read", "MSB", "REST", "buf", "offset", "res", "shift", "counter", "b", "l", "require_length", "__commonJSMin", "exports", "module", "init_shim", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "value", "require_varint", "__commonJSMin", "exports", "module", "init_shim", "require_constants", "__commonJSMin", "exports", "module", "init_shim", "names", "base", "ALPHABET", "name", "BASE_MAP", "j", "i", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "src", "_brrp__multiformats_scope_baseX", "base_x_default", "init_base_x", "__esmMin", "init_shim", "empty", "equals", "coerce", "fromString", "toString", "init_bytes", "__esmMin", "init_shim", "aa", "bb", "ii", "o", "str", "b", "Encoder", "Decoder", "ComposedDecoder", "or", "Codec", "from", "baseX", "decode", "encode", "rfc4648", "init_base", "__esmMin", "init_shim", "init_base_x", "init_bytes", "name", "prefix", "baseEncode", "bytes", "baseDecode", "text", "decoder", "decoders", "input", "left", "right", "alphabet", "base_x_default", "coerce", "string", "bitsPerChar", "codes", "i", "end", "out", "bits", "buffer", "written", "value", "data", "pad", "mask", "identity_exports", "__export", "identity", "init_identity", "__esmMin", "init_shim", "init_base", "init_bytes", "from", "buf", "toString", "str", "fromString", "base2_exports", "__export", "base2", "init_base2", "__esmMin", "init_shim", "init_base", "rfc4648", "base8_exports", "__export", "base8", "init_base8", "__esmMin", "init_shim", "init_base", "rfc4648", "base10_exports", "__export", "base10", "init_base10", "__esmMin", "init_shim", "init_base", "baseX", "base16_exports", "__export", "base16", "base16upper", "init_base16", "__esmMin", "init_shim", "init_base", "rfc4648", "base32_exports", "__export", "base32", "base32hex", "base32hexpad", "base32hexpadupper", "base32hexupper", "base32pad", "base32padupper", "base32upper", "base32z", "init_base32", "__esmMin", "init_shim", "init_base", "rfc4648", "base36_exports", "__export", "base36", "base36upper", "init_base36", "__esmMin", "init_shim", "init_base", "baseX", "base58_exports", "__export", "base58btc", "base58flickr", "init_base58", "__esmMin", "init_shim", "init_base", "baseX", "base64_exports", "__export", "base64", "base64pad", "base64url", "base64urlpad", "init_base64", "__esmMin", "init_shim", "init_base", "rfc4648", "base256emoji_exports", "__export", "base256emoji", "encode", "data", "p", "c", "alphabetBytesToChars", "decode", "str", "byts", "char", "byt", "alphabetCharsToBytes", "alphabet", "init_base256emoji", "__esmMin", "init_shim", "init_base", "i", "from", "encode", "num", "out", "offset", "oldOffset", "INT", "MSB", "MSBALL", "read", "buf", "res", "shift", "counter", "b", "l", "REST$1", "MSB$1", "encode_1", "REST", "decode", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "varint", "_brrp_varint", "varint_default", "init_varint", "__esmMin", "init_shim", "value", "decode", "encodeTo", "encodingLength", "init_varint", "__esmMin", "init_shim", "data", "offset", "varint_default", "int", "target", "create", "decode", "equals", "Digest", "init_digest", "__esmMin", "init_shim", "init_bytes", "init_varint", "code", "digest", "size", "sizeOffset", "encodingLength", "digestOffset", "bytes", "encodeTo", "multihash", "coerce", "a", "b", "from", "Hasher", "init_hasher", "__esmMin", "init_shim", "init_digest", "name", "code", "encode", "input", "result", "create", "digest", "sha2_browser_exports", "__export", "sha256", "sha512", "sha", "init_sha2_browser", "__esmMin", "init_shim", "init_hasher", "name", "data", "from", "identity_exports", "__export", "identity", "code", "name", "encode", "digest", "init_identity", "__esmMin", "init_shim", "init_bytes", "init_digest", "coerce", "input", "create", "init_raw", "__esmMin", "init_shim", "init_bytes", "textEncoder", "textDecoder", "init_json", "__esmMin", "init_shim", "CID", "parseCIDtoBytes", "toStringV0", "toStringV1", "DAG_PB_CODE", "SHA_256_CODE", "encodeCID", "cidSymbol", "readonly", "hidden", "version", "deprecate", "IS_CID_DEPRECATION", "init_cid", "__esmMin", "init_shim", "init_varint", "init_digest", "init_base58", "init_base32", "init_bytes", "code", "multihash", "bytes", "digest", "create", "other", "equals", "base", "_baseCache", "base58btc", "base32", "value", "decode", "cid", "remainder", "specs", "prefixSize", "multihashBytes", "coerce", "digestBytes", "Digest", "initialBytes", "offset", "next", "i", "length", "codec", "multihashCode", "digestSize", "size", "multihashSize", "source", "prefix", "decoder", "cache", "codeOffset", "encodingLength", "hashOffset", "encodeTo", "range", "message", "init_src", "__esmMin", "init_shim", "init_cid", "init_varint", "init_bytes", "init_hasher", "init_digest", "bases", "hashes", "init_basics", "__esmMin", "init_shim", "init_identity", "init_base2", "init_base8", "init_base10", "init_base16", "init_base32", "init_base36", "init_base58", "init_base64", "init_base256emoji", "init_sha2_browser", "init_raw", "init_json", "init_src", "identity_exports", "base2_exports", "base8_exports", "base10_exports", "base16_exports", "base32_exports", "base36_exports", "base58_exports", "base64_exports", "base256emoji_exports", "sha2_browser_exports", "asUint8Array", "buf", "init_as_uint8array", "__esmMin", "init_shim", "allocUnsafe", "size", "asUint8Array", "init_alloc", "__esmMin", "init_shim", "init_as_uint8array", "createCodec", "name", "prefix", "encode", "decode", "string", "ascii", "BASES", "bases_default", "init_bases", "__esmMin", "init_shim", "init_basics", "init_alloc", "buf", "str", "i", "allocUnsafe", "bases", "to_string_exports", "__export", "toString", "array", "encoding", "base", "bases_default", "init_to_string", "__esmMin", "init_shim", "init_bases", "from_string_exports", "__export", "fromString", "string", "encoding", "base", "bases_default", "asUint8Array", "init_from_string", "__esmMin", "init_shim", "init_bases", "init_as_uint8array", "concat_exports", "__export", "concat", "arrays", "length", "acc", "curr", "output", "allocUnsafe", "offset", "arr", "asUint8Array", "init_concat", "__esmMin", "init_shim", "init_alloc", "init_as_uint8array", "require_src", "__commonJSMin", "exports", "module", "init_shim", "multibase", "varint", "names", "uint8ArrayToString", "uint8ArrayFromString", "uint8ArrayConcat", "codes", "key", "name", "toHexString", "hash", "fromHexString", "toB58String", "fromB58String", "encoded", "decode", "bytes", "code", "isValidCode", "len", "encode", "digest", "length", "hashfn", "coerceCode", "isAppCode", "validate", "multihash", "prefix", "encode", "num", "out", "offset", "oldOffset", "INT", "MSB", "MSBALL", "read", "buf", "res", "shift", "counter", "b", "l", "REST$1", "MSB$1", "encode_1", "REST", "decode", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "varint", "_brrp_varint", "varint_default", "init_varint", "__esmMin", "init_shim", "value", "encodeTo", "encodingLength", "init_varint", "__esmMin", "init_shim", "int", "target", "offset", "varint_default", "create", "Digest", "init_digest", "__esmMin", "init_shim", "init_bytes", "init_varint", "code", "digest", "size", "sizeOffset", "encodingLength", "digestOffset", "bytes", "encodeTo", "from", "Hasher", "init_hasher", "__esmMin", "init_shim", "init_digest", "name", "code", "encode", "input", "result", "create", "digest", "sha2_browser_exports", "__export", "sha256", "sha512", "sha", "init_sha2_browser", "__esmMin", "init_shim", "init_hasher", "name", "data", "from", "multihashes", "Encoder_1", "ErrorCode_1", "IonError_1", "IonSdkConfig_1", "JsonCanonicalizer_1", "sha2_1", "Multihash", "content", "hashAlgorithmInMultihashCode", "conventionalHash", "hash", "canonicalizedStringBytes", "contentBytes", "intermediateHashBytes", "multihashBytes", "encodedMultihash", "inputContextForErrorLogging", "multihash", "exports", "OperationType", "exports", "PatchAction", "exports", "URI", "ErrorCode_1", "InputValidator_1", "IonError_1", "IonSdkConfig_1", "JsonCanonicalizer_1", "Multihash_1", "OperationKeyType_1", "OperationType_1", "PatchAction_1", "IonRequest", "input", "recoveryKey", "updateKey", "didDocumentKeys", "services", "hashAlgorithmInMultihashCode", "patches", "delta", "suffixData", "revealValue", "dataToBeSigned", "compactJws", "nextUpdateCommitmentHash", "deltaHash", "id", "servicesToAdd", "patch", "idsOfServicesToRemove", "publicKeysToAdd", "idsOfPublicKeysToRemove", "didSuffix", "publicKeys", "publicKeyIdSet", "publicKey", "serviceIdSet", "service", "maxTypeLength", "errorMessage", "deltaBytes", "exports", "Encoder_1", "IonRequest_1", "IonSdkConfig_1", "JsonCanonicalizer_1", "Multihash_1", "IonDid", "input", "createRequest", "didUniqueSuffix", "shortFormDid", "initialState", "canonicalizedInitialStateBytes", "encodedCanonicalizedInitialStateString", "suffixData", "canonicalizedStringBytes", "multihash", "exports", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_shim", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Buffer", "crypto", "randomBytes", "size", "cb", "bytes", "generated", "process", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_shim", "ctor", "superCtor", "TempCtor", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_shim", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_events", "__commonJSMin", "exports", "module", "init_shim", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "i", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_stream_browser", "__commonJSMin", "exports", "module", "init_shim", "require_shams", "__commonJSMin", "exports", "module", "init_shim", "obj", "sym", "symObj", "symVal", "syms", "descriptor", "require_shams", "__commonJSMin", "exports", "module", "init_shim", "hasSymbols", "require_has_symbols", "__commonJSMin", "exports", "module", "init_shim", "origSymbol", "hasSymbolSham", "require_implementation", "__commonJSMin", "exports", "module", "init_shim", "ERROR_MESSAGE", "slice", "toStr", "funcType", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "i", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "init_shim", "implementation", "require_src", "__commonJSMin", "exports", "module", "init_shim", "bind", "require_get_intrinsic", "__commonJSMin", "exports", "module", "init_shim", "undefined", "$SyntaxError", "$Function", "$TypeError", "getEvalledConstructor", "expressionSyntax", "$gOPD", "throwTypeError", "ThrowTypeError", "hasSymbols", "getProto", "x", "needsEval", "TypedArray", "INTRINSICS", "e", "errorProto", "doEval", "name", "value", "fn", "gen", "LEGACY_ALIASES", "bind", "hasOwn", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "string", "first", "last", "result", "match", "number", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "i", "isOwn", "part", "desc", "require_call_bind", "__commonJSMin", "exports", "module", "init_shim", "bind", "GetIntrinsic", "$apply", "$call", "$reflectApply", "$gOPD", "$defineProperty", "$max", "originalFunction", "func", "desc", "applyBind", "require_callBound", "__commonJSMin", "exports", "module", "init_shim", "GetIntrinsic", "callBind", "$indexOf", "name", "allowMissing", "intrinsic", "require_is_arguments", "__commonJSMin", "exports", "module", "init_shim", "hasToStringTag", "callBound", "$toString", "isStandardArguments", "value", "isLegacyArguments", "supportsStandardArguments", "require_is_generator_function", "__commonJSMin", "exports", "module", "init_shim", "toStr", "fnToStr", "isFnRegex", "hasToStringTag", "getProto", "getGeneratorFunc", "GeneratorFunction", "fn", "str", "generatorFunc", "require_is_callable", "__commonJSMin", "exports", "module", "init_shim", "fnToStr", "reflectApply", "badArrayLike", "isCallableMarker", "_", "constructorRegex", "isES6ClassFn", "value", "fnStr", "tryFunctionObject", "toStr", "objectClass", "fnClass", "genClass", "ddaClass", "ddaClass2", "ddaClass3", "hasToStringTag", "isIE68", "isDDA", "all", "str", "e", "strClass", "require_for_each", "__commonJSMin", "exports", "module", "init_shim", "isCallable", "toStr", "hasOwnProperty", "forEachArray", "array", "iterator", "receiver", "i", "len", "forEachString", "string", "forEachObject", "object", "k", "forEach", "list", "thisArg", "require_available_typed_arrays", "__commonJSMin", "exports", "module", "init_shim", "possibleNames", "g", "out", "i", "require_gopd", "__commonJSMin", "exports", "module", "init_shim", "GetIntrinsic", "$gOPD", "require_is_typed_array", "__commonJSMin", "exports", "module", "init_shim", "forEach", "availableTypedArrays", "callBound", "$toString", "hasToStringTag", "gOPD", "g", "typedArrays", "$indexOf", "array", "value", "$slice", "toStrTags", "getPrototypeOf", "typedArray", "arr", "proto", "descriptor", "superProto", "tryTypedArrays", "anyTrue", "getter", "tag", "require_which_typed_array", "__commonJSMin", "exports", "module", "init_shim", "forEach", "availableTypedArrays", "callBound", "gOPD", "$toString", "hasToStringTag", "g", "typedArrays", "$slice", "toStrTags", "getPrototypeOf", "typedArray", "arr", "proto", "descriptor", "superProto", "tryTypedArrays", "value", "foundName", "getter", "name", "isTypedArray", "require_types", "__commonJSMin", "exports", "init_shim", "isArgumentsObject", "isGeneratorFunction", "whichTypedArray", "isTypedArray", "uncurryThis", "f", "BigIntSupported", "SymbolSupported", "ObjectToString", "numberValue", "stringValue", "booleanValue", "bigIntValue", "symbolValue", "checkBoxedPrimitive", "value", "prototypeValueOf", "isPromise", "input", "isArrayBufferView", "isDataView", "isUint8Array", "isUint8ClampedArray", "isUint16Array", "isUint32Array", "isInt8Array", "isInt16Array", "isInt32Array", "isFloat32Array", "isFloat64Array", "isBigInt64Array", "isBigUint64Array", "isMapToString", "isMap", "isSetToString", "isSet", "isWeakMapToString", "isWeakMap", "isWeakSetToString", "isWeakSet", "isArrayBufferToString", "isArrayBuffer", "isDataViewToString", "SharedArrayBufferCopy", "isSharedArrayBufferToString", "isSharedArrayBuffer", "isAsyncFunction", "isMapIterator", "isSetIterator", "isGeneratorObject", "isWebAssemblyCompiledModule", "isNumberObject", "isStringObject", "isBooleanObject", "isBigIntObject", "isSymbolObject", "isBoxedPrimitive", "isAnyArrayBuffer", "method", "require_isBufferBrowser", "__commonJSMin", "exports", "module", "init_shim", "arg", "require_util", "__commonJSMin", "exports", "init_shim", "getOwnPropertyDescriptors", "obj", "keys", "descriptors", "i", "formatRegExp", "f", "isString", "objects", "inspect", "args", "len", "str", "x", "isNull", "isObject", "fn", "msg", "process", "warned", "deprecated", "debugs", "debugEnvRegex", "debugEnv", "set", "pid", "opts", "ctx", "stylizeNoColor", "isBoolean", "isUndefined", "stylizeWithColor", "formatValue", "styleType", "style", "arrayToHash", "array", "hash", "val", "idx", "value", "recurseTimes", "isFunction", "ret", "primitive", "formatPrimitive", "visibleKeys", "isError", "formatError", "name", "isRegExp", "isDate", "base", "braces", "isArray", "n", "output", "formatArray", "key", "formatProperty", "reduceToSingleString", "simple", "isNumber", "l", "hasOwnProperty", "desc", "line", "numLinesEst", "length", "prev", "cur", "ar", "arg", "isNullOrUndefined", "isSymbol", "re", "objectToString", "d", "e", "isPrimitive", "o", "pad", "months", "timestamp", "time", "origin", "add", "prop", "kCustomPromisifiedSymbol", "original", "promiseResolve", "promiseReject", "promise", "resolve", "reject", "err", "callbackifyOnRejected", "reason", "cb", "newReason", "callbackify", "callbackified", "maybeCb", "self", "rej", "require_buffer_list", "__commonJSMin", "exports", "module", "init_shim", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_toPropertyKey", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "arg", "_toPrimitive", "input", "hint", "prim", "res", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_shim", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "process", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_shim", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_shim", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "deprecate", "fn", "msg", "config", "warned", "deprecated", "name", "val", "require_stream_writable", "__commonJSMin", "exports", "module", "init_shim", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "process", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_shim", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "process", "onEndNT", "self", "value", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_shim", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_string_decoder", "__commonJSMin", "exports", "init_shim", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_shim", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_shim", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "arg", "_toPrimitive", "input", "hint", "prim", "res", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "process", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_shim", "require_stream_readable", "__commonJSMin", "exports", "module", "init_shim", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "process", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_shim", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_shim", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_shim", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_shim", "require_hash_base", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "i", "j", "carry", "digest", "require_md5", "__commonJSMin", "exports", "module", "init_shim", "inherits", "HashBase", "Buffer", "ARRAY16", "MD5", "M", "i", "a", "b", "c", "d", "fnF", "fnG", "fnH", "fnI", "buffer", "rotl", "x", "n", "m", "k", "s", "require_ripemd160", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "require_hash", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "init_shim", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "init_shim", "algorithm", "Algorithm", "require_stream_browser", "__commonJSMin", "exports", "module", "init_shim", "require_buffer_list", "__commonJSMin", "exports", "module", "init_shim", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_toPropertyKey", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "arg", "_toPrimitive", "input", "hint", "prim", "res", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_shim", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "process", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_shim", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_shim", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_stream_writable", "__commonJSMin", "exports", "module", "init_shim", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "process", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_shim", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "process", "onEndNT", "self", "value", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_shim", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_shim", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "arg", "_toPrimitive", "input", "hint", "prim", "res", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "process", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_shim", "require_stream_readable", "__commonJSMin", "exports", "module", "init_shim", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "process", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_shim", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_shim", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_shim", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_stream_browserify", "__commonJSMin", "exports", "module", "init_shim", "Stream", "EE", "inherits", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "require_cipher_base", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "Transform", "StringDecoder", "inherits", "CipherBase", "hashMode", "data", "inputEnc", "outputEnc", "outData", "_", "next", "err", "e", "done", "value", "enc", "fin", "out", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "inherits", "MD5", "RIPEMD160", "sha", "Base", "Hash", "hash", "data", "alg", "require_legacy", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Buffer", "Base", "ZEROS", "blocksize", "Hmac", "alg", "key", "ipad", "opad", "i", "data", "h", "require_md5", "__commonJSMin", "exports", "module", "init_shim", "MD5", "buffer", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Legacy", "Base", "Buffer", "md5", "RIPEMD160", "sha", "ZEROS", "Hmac", "alg", "key", "blocksize", "hash", "ipad", "opad", "i", "data", "h", "require_algorithms", "__commonJSMin", "exports", "module", "require_algos", "__commonJSMin", "exports", "module", "init_shim", "require_precondition", "__commonJSMin", "exports", "module", "init_shim", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "__commonJSMin", "exports", "module", "init_shim", "defaultEncoding", "pVersionMajor", "process", "require_to_buffer", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "thing", "encoding", "name", "require_sync_browser", "__commonJSMin", "exports", "module", "init_shim", "md5", "RIPEMD160", "sha", "Buffer", "checkParameters", "defaultEncoding", "toBuffer", "ZEROS", "sizes", "Hmac", "alg", "key", "saltLen", "hash", "getDigest", "blocksize", "ipad", "opad", "i", "ipad1", "data", "h", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "iterations", "keylen", "digest", "hmac", "DK", "block1", "destPos", "hLen", "l", "T", "U", "j", "k", "require_async", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "checkParameters", "defaultEncoding", "sync", "toBuffer", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "nextTick", "getNextTick", "password", "salt", "iterations", "length", "key", "res", "resolvePromise", "promise", "callback", "out", "e", "keylen", "digest", "resp", "require_browser", "__commonJSMin", "exports", "init_shim", "require_utils", "__commonJSMin", "exports", "init_shim", "bytes", "off", "res", "value", "inL", "inR", "out", "outL", "outR", "i", "j", "num", "shift", "pc2table", "len", "r", "sTable", "b", "sb", "permuteTable", "size", "group", "str", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_shim", "assert", "val", "msg", "l", "require_cipher", "__commonJSMin", "exports", "module", "init_shim", "assert", "Cipher", "options", "data", "off", "min", "i", "out", "inputOff", "outputOff", "count", "max", "buffer", "first", "last", "require_des", "__commonJSMin", "exports", "module", "init_shim", "assert", "inherits", "utils", "Cipher", "DESState", "DES", "options", "state", "shiftTable", "key", "kL", "kR", "i", "shift", "inp", "inOff", "out", "outOff", "l", "r", "buffer", "off", "value", "pad", "lStart", "rStart", "keyL", "keyR", "s", "f", "t", "require_cbc", "__commonJSMin", "exports", "init_shim", "assert", "inherits", "proto", "CBCState", "iv", "i", "instantiate", "Base", "CBC", "options", "keys", "key", "state", "inp", "inOff", "out", "outOff", "superProto", "require_ede", "__commonJSMin", "exports", "module", "init_shim", "assert", "inherits", "Cipher", "DES", "EDEState", "type", "key", "k1", "k2", "k3", "EDE", "options", "state", "inp", "inOff", "out", "outOff", "require_des", "__commonJSMin", "exports", "init_shim", "require_browserify_des", "__commonJSMin", "exports", "module", "init_shim", "CipherBase", "des", "inherits", "Buffer", "modes", "DES", "opts", "modeName", "mode", "type", "key", "iv", "data", "require_ecb", "__commonJSMin", "exports", "init_shim", "self", "block", "require_buffer_xor", "__commonJSMin", "exports", "module", "init_shim", "a", "b", "length", "buffer", "i", "require_cbc", "__commonJSMin", "exports", "init_shim", "xor", "self", "block", "data", "pad", "out", "require_cfb", "__commonJSMin", "exports", "init_shim", "Buffer", "xor", "encryptStart", "self", "data", "decrypt", "len", "out", "require_cfb8", "__commonJSMin", "exports", "init_shim", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "out", "chunk", "len", "i", "require_cfb1", "__commonJSMin", "exports", "init_shim", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "i", "len", "out", "bit", "value", "shiftIn", "buffer", "chunk", "require_ofb", "__commonJSMin", "exports", "init_shim", "xor", "getBlock", "self", "chunk", "pad", "require_incr32", "__commonJSMin", "exports", "module", "init_shim", "incr32", "iv", "len", "item", "require_ctr", "__commonJSMin", "exports", "init_shim", "xor", "Buffer", "incr32", "getBlock", "self", "out", "blockSize", "chunk", "chunkNum", "start", "i", "offset", "pad", "require_list", "__commonJSMin", "exports", "module", "require_modes", "__commonJSMin", "exports", "module", "init_shim", "modeModules", "modes", "key", "require_aes", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "asUInt32Array", "buf", "len", "out", "scrubVec", "v", "i", "cryptBlock", "M", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "d", "j", "INV_SBOX", "INV_SUB_MIX", "x", "xi", "sx", "x2", "x4", "x8", "t", "AES", "key", "keyWords", "keySize", "ksRows", "k", "invKeySchedule", "ik", "ksR", "tt", "m1", "require_ghash", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "ZEROES", "toArray", "buf", "fromArray", "out", "GHASH", "key", "block", "i", "Vi", "Zi", "j", "xi", "lsbVi", "chunk", "abl", "bl", "require_authCipher", "__commonJSMin", "exports", "module", "init_shim", "aes", "Buffer", "Transform", "inherits", "GHASH", "xor", "incr32", "xorTest", "a", "b", "out", "len", "i", "calcIv", "self", "iv", "ck", "ghash", "toPad", "ivBits", "tail", "StreamCipher", "mode", "key", "decrypt", "h", "chunk", "rump", "tag", "buf", "require_streamCipher", "__commonJSMin", "exports", "module", "init_shim", "aes", "Buffer", "Transform", "inherits", "StreamCipher", "mode", "key", "iv", "decrypt", "chunk", "require_evp_bytestokey", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "MD5", "EVP_BytesToKey", "password", "salt", "keyBits", "ivLen", "keyLen", "key", "iv", "tmp", "hash", "used", "keyStart", "ivStart", "length", "require_encrypter", "__commonJSMin", "exports", "init_shim", "MODES", "AuthCipher", "Buffer", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Cipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "PADDING", "setTo", "len", "padBuff", "i", "createCipheriv", "suite", "password", "config", "createCipher", "keys", "require_decrypter", "__commonJSMin", "exports", "init_shim", "AuthCipher", "Buffer", "MODES", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Decipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "unpad", "setTo", "autoPadding", "last", "padded", "i", "createDecipheriv", "suite", "password", "config", "createDecipher", "keys", "require_browser", "__commonJSMin", "exports", "init_shim", "ciphers", "deciphers", "modes", "getCiphers", "require_modes", "__commonJSMin", "exports", "init_shim", "require_browser", "__commonJSMin", "exports", "init_shim", "DES", "aes", "aesModes", "desModes", "ebtk", "createCipher", "suite", "password", "keyLen", "ivLen", "keys", "createCipheriv", "createDecipher", "createDecipheriv", "key", "iv", "getCiphers", "require_bn", "__commonJSMin", "exports", "module", "init_shim", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "q", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_brorand", "__commonJSMin", "exports", "module", "init_shim", "r", "len", "Rand", "rand", "n", "res", "arr", "crypto", "require_mr", "__commonJSMin", "exports", "module", "init_shim", "bn", "brorand", "MillerRabin", "rand", "n", "len", "min_bytes", "a", "start", "stop", "size", "k", "cb", "red", "rone", "n1", "s", "d", "rn1", "prime", "x", "i", "g", "require_generatePrime", "__commonJSMin", "exports", "module", "init_shim", "randomBytes", "findPrime", "simpleSieve", "fermatTest", "BN", "TWENTYFOUR", "MillerRabin", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "primes", "_getPrimes", "limit", "res", "i", "k", "sqrt", "j", "p", "red", "bits", "gen", "num", "n2", "require_primes", "__commonJSMin", "exports", "module", "require_dh", "__commonJSMin", "exports", "module", "init_shim", "BN", "MillerRabin", "millerRabin", "TWENTYFOUR", "ELEVEN", "TEN", "THREE", "SEVEN", "primes", "randomBytes", "DH", "setPublicKey", "pub", "enc", "setPrivateKey", "priv", "primeCache", "checkPrime", "prime", "generator", "gen", "hex", "error", "rem", "malleable", "other", "secret", "out", "front", "formatReturnValue", "bn", "buf", "require_browser", "__commonJSMin", "exports", "init_shim", "generatePrime", "primes", "DH", "getDiffieHellman", "mod", "prime", "gen", "ENCODINGS", "createDiffieHellman", "enc", "generator", "genc", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_shim", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_stream_browser", "__commonJSMin", "exports", "module", "init_shim", "require_buffer_list", "__commonJSMin", "exports", "module", "init_shim", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_toPropertyKey", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "arg", "_toPrimitive", "input", "hint", "prim", "res", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_shim", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "process", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_shim", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_shim", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_stream_writable", "__commonJSMin", "exports", "module", "init_shim", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "process", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_shim", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "process", "onEndNT", "self", "value", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_shim", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_shim", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "arg", "_toPrimitive", "input", "hint", "prim", "res", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "process", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_shim", "require_stream_readable", "__commonJSMin", "exports", "module", "init_shim", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "process", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_shim", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_shim", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_shim", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_shim", "require_bn", "__commonJSMin", "exports", "module", "init_shim", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "w", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_browserify_rsa", "__commonJSMin", "exports", "module", "init_shim", "BN", "randomBytes", "blind", "priv", "r", "getr", "blinder", "len", "crt", "msg", "blinds", "blinded", "c1", "c2", "qinv", "p", "q", "m1", "m2", "h", "require_package", "__commonJSMin", "exports", "module", "require_utils", "__commonJSMin", "exports", "init_shim", "utils", "toArray", "msg", "enc", "res", "c", "hi", "lo", "zero2", "word", "toHex", "i", "arr", "require_utils", "__commonJSMin", "exports", "init_shim", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_base", "__commonJSMin", "exports", "module", "init_shim", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "init_shim", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_shim", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_shim", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_shim", "curve", "require_utils", "__commonJSMin", "exports", "init_shim", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_shim", "utils", "assert", "BlockHash", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "init_shim", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_shim", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "i", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_shim", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "i", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_shim", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_shim", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_shim", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_shim", "require_ripemd", "__commonJSMin", "exports", "init_shim", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_shim", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_shim", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_shim", "require_curves", "__commonJSMin", "exports", "init_shim", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_shim", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_shim", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_shim", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_shim", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "i", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_shim", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_shim", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_shim", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_shim", "elliptic", "require_bn", "__commonJSMin", "exports", "module", "init_shim", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "w", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_safer", "__commonJSMin", "exports", "module", "init_shim", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "process", "require_reporter", "__commonJSMin", "exports", "init_shim", "inherits", "Reporter", "options", "obj", "ReporterError", "state", "data", "key", "index", "value", "prev", "now", "msg", "err", "inherited", "elem", "result", "path", "e", "require_buffer", "__commonJSMin", "exports", "init_shim", "inherits", "Reporter", "Buffer", "DecoderBuffer", "base", "options", "data", "save", "res", "fail", "bytes", "EncoderBuffer", "value", "reporter", "item", "out", "offset", "require_node", "__commonJSMin", "exports", "module", "init_shim", "Reporter", "EncoderBuffer", "DecoderBuffer", "assert", "tags", "methods", "overrided", "Node", "enc", "parent", "name", "state", "stateProps", "cstate", "prop", "res", "method", "clone", "body", "child", "args", "children", "arg", "key", "value", "tag", "item", "val", "num", "newKey", "obj", "input", "options", "result", "present", "prevKey", "save", "prevObj", "explicit", "start", "data", "entity", "match", "node", "reporter", "content", "primitive", "cls", "str", "require_der", "__commonJSMin", "exports", "init_shim", "reverse", "map", "res", "key", "value", "require_der", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Buffer", "Node", "der", "DEREncoder", "entity", "DERNode", "data", "reporter", "parent", "tag", "primitive", "cls", "content", "encodedTag", "encodeTag", "header", "lenOctets", "i", "j", "str", "buf", "id", "values", "relative", "size", "ident", "objid", "offset", "two", "num", "time", "date", "numArray", "out", "value", "obj", "dataBuffer", "state", "res", "require_pem", "__commonJSMin", "exports", "module", "init_shim", "inherits", "DEREncoder", "PEMEncoder", "entity", "data", "options", "p", "out", "i", "require_encoders", "__commonJSMin", "exports", "init_shim", "encoders", "require_der", "__commonJSMin", "exports", "module", "init_shim", "inherits", "bignum", "DecoderBuffer", "Node", "der", "DERDecoder", "entity", "DERNode", "data", "options", "parent", "buffer", "tag", "any", "state", "decodedTag", "derDecodeTag", "len", "derDecodeLen", "res", "fail", "decoder", "result", "possibleEnd", "unused", "raw", "str", "i", "numstr", "printstr", "values", "relative", "identifiers", "ident", "subident", "first", "second", "tmp", "year", "mon", "day", "hour", "min", "sec", "obj", "buf", "cls", "primitive", "oct", "tagStr", "num", "j", "require_pem", "__commonJSMin", "exports", "module", "init_shim", "inherits", "Buffer", "DERDecoder", "PEMDecoder", "entity", "data", "options", "lines", "label", "re", "start", "end", "i", "match", "base64", "input", "require_decoders", "__commonJSMin", "exports", "init_shim", "decoders", "require_api", "__commonJSMin", "exports", "init_shim", "encoders", "decoders", "inherits", "api", "name", "body", "Entity", "Base", "Generated", "entity", "enc", "data", "options", "reporter", "require_base", "__commonJSMin", "exports", "init_shim", "base", "require_constants", "__commonJSMin", "exports", "init_shim", "constants", "map", "res", "key", "value", "require_asn1", "__commonJSMin", "exports", "init_shim", "asn1", "require_certificate", "__commonJSMin", "exports", "module", "init_shim", "asn", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "require_asn1", "__commonJSMin", "exports", "init_shim", "asn1", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "AlgorithmIdentifier", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_aesid", "__commonJSMin", "exports", "module", "require_fixProc", "__commonJSMin", "exports", "module", "init_shim", "findProc", "startRegex", "fullRegex", "evp", "ciphers", "Buffer", "okey", "password", "key", "match", "decrypted", "suite", "iv", "cipherText", "cipherKey", "out", "cipher", "match2", "tag", "require_parse_asn1", "__commonJSMin", "exports", "module", "init_shim", "asn1", "aesid", "fixProc", "ciphers", "compat", "Buffer", "parseKeys", "buffer", "password", "stripped", "type", "data", "subtype", "ndata", "decrypt", "salt", "iters", "algo", "iv", "cipherText", "keylen", "key", "cipher", "out", "require_curves", "__commonJSMin", "exports", "module", "require_sign", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "createHmac", "crt", "EC", "BN", "parseKeys", "curves", "sign", "hash", "key", "hashType", "signType", "tag", "priv", "ecSign", "dsaSign", "len", "pad", "i", "out", "curveId", "curve", "algo", "x", "p", "q", "g", "r", "k", "H", "bits2int", "s", "kv", "getKey", "makeKey", "makeR", "toDER", "total", "res", "zeros", "hlen", "hbits", "bits2octets", "v", "obits", "bits", "shift", "t", "require_verify", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "BN", "EC", "parseKeys", "curves", "verify", "sig", "hash", "key", "signType", "tag", "pub", "ecVerify", "dsaVerify", "len", "pad", "padNum", "i", "red", "out", "curveId", "curve", "pubkey", "p", "q", "g", "y", "unpacked", "s", "r", "checkValue", "montp", "w", "v", "b", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "createHash", "stream", "inherits", "sign", "verify", "algorithms", "key", "Sign", "algorithm", "data", "_", "done", "enc", "hash", "sig", "Verify", "createSign", "createVerify", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "elliptic", "BN", "curve", "ECDH", "aliases", "enc", "format", "other", "inenc", "otherPub", "out", "formatReturnValue", "key", "pub", "priv", "_priv", "bn", "len", "buf", "zeros", "require_mgf", "__commonJSMin", "exports", "module", "init_shim", "createHash", "Buffer", "seed", "len", "t", "c", "i2ops", "out", "require_xor", "__commonJSMin", "exports", "module", "init_shim", "a", "b", "len", "i", "require_withPublic", "__commonJSMin", "exports", "module", "init_shim", "BN", "Buffer", "withPublic", "paddedMsg", "key", "require_publicEncrypt", "__commonJSMin", "exports", "module", "init_shim", "parseKeys", "randomBytes", "createHash", "mgf", "xor", "BN", "withPublic", "crt", "Buffer", "publicKey", "msg", "reverse", "padding", "key", "paddedMsg", "oaep", "pkcs1", "k", "mLen", "iHash", "hLen", "hLen2", "ps", "dblen", "seed", "maskedDb", "maskedSeed", "nonZero", "len", "out", "i", "cache", "cur", "num", "require_privateDecrypt", "__commonJSMin", "exports", "module", "init_shim", "parseKeys", "mgf", "xor", "BN", "crt", "createHash", "withPublic", "Buffer", "privateKey", "enc", "reverse", "padding", "key", "k", "msg", "zBuffer", "oaep", "pkcs1", "iHash", "hLen", "maskedSeed", "maskedDb", "seed", "db", "compare", "i", "p1", "status", "ps", "a", "b", "dif", "len", "require_browser", "__commonJSMin", "exports", "init_shim", "key", "buf", "require_browser", "__commonJSMin", "exports", "init_shim", "oldBrowser", "safeBuffer", "randombytes", "Buffer", "kBufferMaxLength", "crypto", "kMaxUint32", "assertOffset", "offset", "length", "assertSize", "size", "process", "randomFill", "randomFillSync", "buf", "cb", "actualFill", "ourBuf", "uint", "err", "bytes", "require_crypto_browserify", "__commonJSMin", "exports", "init_shim", "algos", "algoKeys", "hashes", "p", "aes", "dh", "sign", "publicEncrypt", "rf", "require_lib", "__commonJSMin", "exports", "init_shim", "nodeCrypto", "_0n", "_1n", "_2n", "CU_O", "CURVE", "POW_2_256", "SQRT_M1", "SQRT_D", "SQRT_AD_MINUS_ONE", "INVSQRT_A_MINUS_D", "ONE_MINUS_D_SQ", "D_MINUS_ONE_SQ", "ExtendedPoint", "x", "y", "z", "t", "p", "Point", "mod", "points", "toInv", "invertBatch", "i", "other", "assertExtPoint", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "X1Z2", "X2Z1", "Y1Z2", "Y2Z1", "a", "A", "B", "C", "D", "x1y1", "E", "G", "F", "H", "X3", "Y3", "T3", "Z3", "T1", "T2", "W", "windows", "base", "window", "n", "affinePoint", "precomputes", "pointPrecomputes", "f", "windowSize", "mask", "maxNumber", "shiftBy", "offset", "wbits", "pr", "cached", "scalar", "normalizeScalar", "P0", "d", "invZ", "invert", "ax", "ay", "legacyRist", "assertRstPoint", "RistrettoPoint", "ep", "r0", "r", "Ns", "c", "Ns_D_is_sq", "s", "uvRatio", "s_", "edIsNegative", "Nt", "s2", "W0", "W1", "W2", "W3", "hex", "ensureBytes", "r1", "bytes255ToNumberLE", "R1", "r2", "R2", "emsg", "equalBytes", "numberTo32BytesLE", "u1", "u2", "u1_2", "u2_2", "v", "isValid", "I", "invertSqrt", "Dx", "Dy", "u2sq", "invsqrt", "D1", "D2", "zInv", "_x", "_y", "bytesToHex", "b", "one", "two", "strict", "P", "normed", "bytesToNumberLE", "y2", "u", "isXOdd", "privateKey", "getExtendedPublicKey", "bytes", "Signature", "u8", "concatBytes", "arrays", "length", "arr", "result", "pad", "hexes", "uint8a", "hexToBytes", "array", "j", "hexByte", "byte", "numberTo32BytesBE", "num", "MAX_255B", "res", "number", "modulo", "q", "m", "nums", "tmp", "lastMultiplied", "acc", "inverted", "pow2", "power", "pow_2_252_3", "_5n", "_10n", "_20n", "_40n", "_80n", "b2", "b4", "b5", "b10", "b20", "b40", "b80", "b160", "b240", "b250", "v3", "v7", "pow", "vx2", "root1", "root2", "useRoot1", "useRoot2", "noRoot", "modlLE", "hash", "b1", "expectedLength", "max", "adjustBytes25519", "decodeScalar25519", "checkPrivateKey", "key", "getKeyFromHash", "hashed", "head", "prefix", "point", "pointBytes", "_sha512Sync", "sha512s", "getExtendedPublicKeySync", "getPublicKey", "getPublicKeySync", "sign", "message", "R", "k", "signSync", "prepareVerification", "sig", "publicKey", "SB", "finishVerification", "kA", "verify", "msg", "pub", "verifySync", "getSharedSecret", "cswap", "swap", "x_2", "x_3", "dummy", "montgomeryLadder", "pointU", "a24", "x_1", "z_2", "z_3", "sw", "k_t", "AA", "BB", "DA", "CB", "dacb", "da_cb", "pow_p_5_8", "xp2", "encodeUCoordinate", "decodeUCoordinate", "uEnc", "pu", "crypto", "bytesLength", "randomBytes", "messages", "buffer", "val", "require_lib", "__commonJSMin", "exports", "init_shim", "nodeCrypto", "_0n", "_1n", "_2n", "_3n", "_8n", "CURVE", "weistrass", "x", "a", "b", "x2", "mod", "x3", "USE_ENDOMORPHISM", "ShaError", "message", "JacobianPoint", "y", "z", "p", "Point", "points", "toInv", "invertBatch", "i", "other", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "Z1Z1", "Z2Z2", "U1", "U2", "S1", "S2", "A", "B", "C", "x1b", "D", "E", "F", "X3", "Y3", "Z3", "H", "r", "HH", "HHH", "V", "scalar", "P0", "n", "normalizeScalar", "d", "k1neg", "k1", "k2neg", "k2", "splitScalarEndo", "k1p", "k2p", "W", "windows", "base", "window", "affinePoint", "precomputes", "pointPrecomputes", "f", "windowSize", "mask", "maxNumber", "shiftBy", "offset", "wbits", "pr", "cached", "point", "fake", "f1p", "f2p", "invZ", "invert", "iz1", "iz2", "iz3", "ax", "ay", "bytes", "isShort", "bytesToNumber", "isValidFieldElement", "y2", "sqrtMod", "isYOdd", "hex", "ensureBytes", "len", "header", "privateKey", "normalizePrivateKey", "msgHash", "signature", "recovery", "h", "truncateHash", "s", "normalizeSignature", "prefix", "R", "numTo32bStr", "rinv", "u1", "u2", "Q", "isCompressed", "hexToBytes", "msg", "left", "right", "P", "aP", "bQ", "sum", "sliceDER", "parseDERInt", "data", "bytesToHex", "res", "parseDERSignature", "sBytes", "rBytesLeft", "Signature", "arr", "name", "str", "hexToNumber", "isWithinCurveOrder", "HALF", "sHex", "numberToHexUnpadded", "rHex", "rLen", "sLen", "concatBytes", "arrays", "length", "result", "pad", "hexes", "v", "uint8a", "POW_2_256", "num", "numTo32b", "array", "j", "hexByte", "byte", "pow2", "power", "_6n", "_11n", "_22n", "_23n", "_44n", "_88n", "b2", "b3", "b6", "b9", "b11", "b22", "b44", "b88", "b176", "b220", "b223", "t1", "t2", "number", "modulo", "u", "q", "m", "nums", "scratch", "lastMultiplied", "acc", "inverted", "divNearest", "ENDO", "k", "a1", "b1", "a2", "POW_2_128", "c1", "c2", "hash", "delta", "_sha256Sync", "_hmacSha256Sync", "HmacDrbg", "values", "seed", "kmdToSig", "kBytes", "sig", "key", "normalizePublicKey", "publicKey", "getPublicKey", "recoverPublicKey", "isProbPub", "item", "getSharedSecret", "privateA", "publicB", "bits2int", "slice", "bits2octets", "z1", "z2", "int2octets", "initSigArgs", "extraEntropy", "h1", "seedArgs", "e", "finalizeSig", "recSig", "opts", "canonical", "der", "recovered", "hashed", "sign", "privKey", "drbg", "signSync", "vopts", "verify", "sinv", "schnorrChallengeFinalize", "ch", "SchnorrSignature", "schnorrGetPublicKey", "InternalSchnorrSignature", "auxRand", "priv", "t0h", "k0h", "k0", "rx", "px", "rand", "tag", "t", "TAGS", "schnorrVerify", "schnorrVerifySync", "schnorrSign", "schnorrSignSync", "initSchnorrVerify", "raw", "finalizeSchnorrVerify", "error", "crypto", "TAGGED_HASH_PREFIXES", "bytesLength", "randomBytes", "messages", "buffer", "createHash", "ckey", "createHmac", "tagP", "tagH", "c", "val", "Ed25519", "Secp256k1", "InputValidator_1", "base64_1", "IonKey", "input", "id", "purposes", "publicKey", "privateKey", "publicKeyModel", "privateKeyBytes", "publicKeyBytes", "d", "x", "y", "publicJwk", "privateJwk", "key", "exports", "IonNetwork", "exports", "IonPublicKeyPurpose", "exports", "Secp256k1", "Encoder_1", "InputValidator_1", "OperationKeyType_1", "base64_1", "sha2_1", "LocalSigner", "privateKey", "header", "content", "headerString", "headerBytes", "encodedHeader", "payloadString", "payloadBytes", "encodedPayload", "signingContentString", "signingContentBytes", "contentHash", "privateKeyBytes", "signature", "encodedSignature", "exports", "IonDid_1", "exports", "IonKey_1", "IonNetwork_1", "IonPublicKeyPurpose_1", "IonRequest_1", "IonSdkConfig_1", "LocalSigner_1", "require_browser_ponyfill", "__commonJSMin", "exports", "module", "init_shim", "global", "__self__", "F", "self", "irrelevant", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "error", "fetch", "init", "request", "xhr", "abortXhr", "ctx", "require_index_umd", "__commonJSMin", "exports", "module", "init_shim", "global", "factory", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "Mutex", "begin", "res", "fn", "unlock", "_a", "getGlobal", "globalObject", "nodeBuffer", "textEncoder", "intArrayToString", "arr", "len", "hexCharCodesToInt", "a", "b", "writeHexToUInt8", "buf", "str", "size", "i", "index", "hexStringEqualsUInt8", "strIndex", "alpha", "digit", "getDigestHex", "tmpBuffer", "input", "hashLength", "p", "nibble", "getUInt8Buffer", "data", "base64Chars", "base64Lookup", "encodeBase64", "pad", "extraBytes", "parts", "len2", "tmp", "triplet", "c", "getDecodeBase64Length", "bufferLength", "decodeBase64", "bytes", "encoded1", "encoded2", "encoded3", "encoded4", "MAX_HEAP", "WASM_FUNC_HASH_LENGTH", "wasmMutex", "wasmModuleCache", "WASMInterface", "binary", "wasmInstance", "memoryView", "initialized", "writeMemory", "offset", "getMemory", "getExports", "setMemorySize", "totalSize", "arrayOffset", "memoryBuffer", "getStateSize", "loadWASMPromise", "asm", "promise", "setupInterface", "init", "bits", "updateUInt8Array", "read", "chunk", "update", "Uint8Buffer", "digestChars", "digest", "outputType", "padding", "save", "stateOffset", "stateLength", "internalState", "prefixedState", "load", "state", "overallLength", "isDataShort", "canSimplify", "initParam", "calculate", "digestParam", "buffer", "name$k", "data$k", "hash$k", "wasmJson$k", "lockedCreate", "mutex", "wasm", "mutex$l", "wasmCache$l", "adler32", "hash", "err", "createAdler32", "obj", "name$j", "data$j", "hash$j", "wasmJson$j", "mutex$k", "wasmCache$k", "validateBits$4", "getInitParam$1", "outputBits", "keyBits", "blake2b", "key", "keyBuffer", "createBLAKE2b", "outputSize", "name$i", "data$i", "hash$i", "wasmJson$i", "encodeResult", "salt", "options", "parameters", "uint32View", "int32LE", "x", "hashFunc", "blake512", "blake", "r", "ret", "vp", "partialBytesNeeded", "blakeSmall", "getHashType", "type", "argon2Internal", "parallelism", "iterations", "password", "version", "hashType", "memorySize", "argon2Interface", "initVector", "initVectorView", "lanes", "param", "H0", "lane", "position", "C", "validateOptions$3", "argon2i", "argon2id", "argon2d", "getHashParameters", "encoded", "regex", "match", "parsedParameters", "paramMap", "n", "v", "validateVerifyOptions$1", "argon2Verify", "params", "hashStart", "name$h", "data$h", "hash$h", "wasmJson$h", "mutex$j", "wasmCache$j", "validateBits$3", "getInitParam", "blake2s", "createBLAKE2s", "name$g", "data$g", "hash$g", "wasmJson$g", "mutex$i", "wasmCache$i", "validateBits$2", "blake3", "createBLAKE3", "name$f", "data$f", "hash$f", "wasmJson$f", "mutex$h", "wasmCache$h", "crc32", "createCRC32", "mutex$g", "wasmCache$g", "crc32c", "createCRC32C", "name$e", "data$e", "hash$e", "wasmJson$e", "mutex$f", "wasmCache$f", "md4", "createMD4", "name$d", "data$d", "hash$d", "wasmJson$d", "mutex$e", "wasmCache$e", "md5", "createMD5", "name$c", "data$c", "hash$c", "wasmJson$c", "mutex$d", "wasmCache$d", "sha1", "createSHA1", "name$b", "data$b", "hash$b", "wasmJson$b", "mutex$c", "wasmCache$c", "validateBits$1", "sha3", "createSHA3", "mutex$b", "wasmCache$b", "validateBits", "keccak", "createKeccak", "name$a", "data$a", "hash$a", "wasmJson$a", "mutex$a", "wasmCache$a", "sha224", "createSHA224", "mutex$9", "wasmCache$9", "sha256", "createSHA256", "name$9", "data$9", "hash$9", "wasmJson$9", "mutex$8", "wasmCache$8", "sha384", "createSHA384", "mutex$7", "wasmCache$7", "sha512", "createSHA512", "name$8", "data$8", "hash$8", "wasmJson$8", "mutex$6", "wasmCache$6", "validateSeed$3", "seed", "xxhash32", "createXXHash32", "name$7", "data$7", "hash$7", "wasmJson$7", "mutex$5", "wasmCache$5", "seedBuffer$2", "validateSeed$2", "writeSeed$2", "low", "high", "xxhash64", "seedLow", "seedHigh", "createXXHash64", "instanceBuffer", "name$6", "data$6", "hash$6", "wasmJson$6", "mutex$4", "wasmCache$4", "seedBuffer$1", "validateSeed$1", "writeSeed$1", "xxhash3", "createXXHash3", "name$5", "data$5", "hash$5", "wasmJson$5", "mutex$3", "wasmCache$3", "seedBuffer", "validateSeed", "writeSeed", "xxhash128", "createXXHash128", "name$4", "data$4", "hash$4", "wasmJson$4", "mutex$2", "wasmCache$2", "ripemd160", "createRIPEMD160", "calculateKeyBuffer", "hasher", "blockSize", "uintArr", "calculateHmac", "keyBuf", "opad", "createHMAC", "calculatePBKDF2", "DK", "block1", "block1View", "saltBuffer", "saltUIntBuffer", "destPos", "hLen", "l", "T", "U", "j", "k", "validateOptions$2", "pbkdf2", "hmac", "name$3", "data$3", "hash$3", "wasmJson$3", "scryptInternal", "costFactor", "SHA256Hasher", "blockData", "scryptInterface", "VSize", "XYSize", "expensiveSalt", "outputData", "isPowerOfTwo", "validateOptions$1", "scrypt", "name$2", "data$2", "hash$2", "wasmJson$2", "bcryptInternal", "bcryptInterface", "passwordBuffer", "shouldEncode", "memory", "validateOptions", "bcrypt", "validateHashCharacters", "validateVerifyOptions", "bcryptVerify", "name$1", "data$1", "hash$1", "wasmJson$1", "mutex$1", "wasmCache$1", "whirlpool", "createWhirlpool", "name", "wasmJson", "wasmCache", "sm3", "createSM3", "require_buffer", "__commonJSMin", "exports", "init_shim", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "i", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "require_src", "__commonJSMin", "exports", "module", "init_shim", "fetch", "hash", "buffer", "size", "randomString", "getChallengeUri", "solveChallengeUri", "requestBody", "result", "getChallengeResponse", "challengeBody", "challengeNonce", "largestAllowedHash", "validDuration", "answerHash", "answerNonce", "startTime", "response", "responseText", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_shim", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_shim", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_err_code", "__commonJSMin", "exports", "module", "init_shim", "assign", "obj", "props", "key", "createError", "err", "code", "ErrClass", "require_aspromise", "__commonJSMin", "exports", "module", "init_shim", "asPromise", "fn", "ctx", "params", "offset", "index", "pending", "resolve", "reject", "err", "require_base64", "__commonJSMin", "exports", "init_shim", "base64", "string", "p", "n", "b64", "s64", "i", "buffer", "start", "end", "parts", "chunk", "j", "t", "b", "invalidEncoding", "offset", "c", "require_eventemitter", "__commonJSMin", "exports", "module", "init_shim", "EventEmitter", "evt", "fn", "ctx", "listeners", "i", "args", "require_float", "__commonJSMin", "exports", "module", "init_shim", "factory", "f32", "f8b", "le", "writeFloat_f32_cpy", "val", "buf", "pos", "writeFloat_f32_rev", "readFloat_f32_cpy", "readFloat_f32_rev", "writeFloat_ieee754", "writeUint", "sign", "exponent", "mantissa", "writeUintLE", "writeUintBE", "readFloat_ieee754", "readUint", "uint", "readUintLE", "readUintBE", "f64", "writeDouble_f64_cpy", "writeDouble_f64_rev", "readDouble_f64_cpy", "readDouble_f64_rev", "writeDouble_ieee754", "off0", "off1", "readDouble_ieee754", "lo", "hi", "require_inquire", "__commonJSMin", "init_shim", "e", "require_utf8", "__commonJSMin", "exports", "init_shim", "utf8", "string", "len", "c", "i", "buffer", "start", "end", "parts", "chunk", "t", "offset", "c1", "c2", "require_pool", "__commonJSMin", "exports", "module", "init_shim", "pool", "alloc", "slice", "size", "SIZE", "MAX", "slab", "offset", "buf", "require_longbits", "__commonJSMin", "exports", "module", "init_shim", "LongBits", "util", "lo", "hi", "zero", "zeroHash", "value", "sign", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "__commonJSMin", "exports", "init_shim", "util", "value", "obj", "prop", "Buffer", "sizeOrArray", "hash", "unsigned", "bits", "merge", "dst", "src", "ifNotSet", "keys", "i", "str", "newError", "name", "CustomError", "message", "properties", "fieldNames", "fieldMap", "encoding", "size", "require_reader", "__commonJSMin", "exports", "module", "init_shim", "Reader", "util", "BufferReader", "LongBits", "utf8", "indexOutOfRange", "reader", "writeLength", "buffer", "create_array", "create", "value", "readLongVarint", "bits", "i", "readFixed32_end", "buf", "end", "readFixed64", "length", "start", "bytes", "wireType", "BufferReader_", "fn", "require_reader_buffer", "__commonJSMin", "exports", "module", "init_shim", "BufferReader", "Reader", "util", "buffer", "len", "require_writer", "__commonJSMin", "exports", "module", "init_shim", "Writer", "util", "BufferWriter", "LongBits", "base64", "utf8", "Op", "fn", "len", "val", "noop", "State", "writer", "create", "size", "writeByte", "buf", "pos", "writeVarint32", "VarintOp", "value", "writeVarint64", "bits", "writeFixed32", "writeBytes", "i", "head", "tail", "BufferWriter_", "require_writer_buffer", "__commonJSMin", "exports", "module", "init_shim", "BufferWriter", "Writer", "util", "val", "buf", "pos", "i", "value", "len", "writeStringBuffer", "require_sparse_array", "__commonJSMin", "exports", "module", "init_shim", "index", "value", "pos", "needsSort", "last", "iterator", "i", "mapped", "reducer", "initialValue", "acc", "finder", "found", "noCreate", "bytePos", "byte", "bitPos", "previousPopCount", "popCountReduce", "mask", "bytePopCount", "popCount", "targetLength", "data", "elem", "randomIndex", "sortInternal", "bytes", "pendingBitsForResultingByte", "pendingBitsForNewByte", "resultingByte", "newByte", "pending", "usingBits", "masked", "valueOnly", "count", "_v", "v", "a", "b", "require_murmurHash3js", "__commonJSMin", "exports", "module", "init_shim", "root", "undefined", "library", "_validBytes", "bytes", "i", "_x86Multiply", "m", "n", "_x86Rotl", "_x86Fmix", "h", "_x64Add", "o", "_x64Multiply", "_x64Rotl", "_x64LeftShift", "_x64Xor", "_x64Fmix", "seed", "remainder", "blocks", "h1", "k1", "c1", "c2", "h2", "h3", "h4", "k2", "k3", "k4", "c3", "c4", "require_murmurhash3js_revisited", "__commonJSMin", "exports", "module", "init_shim", "Math", "imul", "clz32", "JSBI", "abs", "max", "floor", "length", "sign", "i", "_", "a", "u", "setPrototypeOf", "prototype", "__kMaxLength", "RangeError", "g", "e", "c", "l", "result", "B", "digit", "t", "push", "toString", "join", "radix", "__toStringGeneric", "__toStringBasePowerOfTwo", "Error", "newLength", "last", "pop", "__clz30", "__digit", "multiplier", "summand", "mLow", "mHigh", "carry", "high", "d", "dLow", "dHigh", "pLow", "__imul", "pMid1", "pMid2", "pHigh", "v", "o", "__setDigit", "startIndex", "halfDigits", "sum", "__halfDigit", "__setHalfDigit", "subtrahend", "borrow", "current", "r0", "sub", "r15", "n", "D", "shift", "len", "__unsignedDigit", "value", "digitIndex", "previous", "updated", "arg", "Number", "isFinite", "__zero", "__isOneDigitInt", "__oneDigit", "__fromDouble", "__fromString", "SyntaxError", "_typeof", "constructor", "primitive", "__toPrimitive", "BigInt", "TypeError", "x", "xLength", "xMsd", "msdLeadingZeros", "xBitLength", "exponent", "currentDigit", "mantissaHigh", "r", "mantissaHighBitsUnset", "mantissaLow", "mantissaLowBitsUnset", "h", "b", "rounding", "__decideRounding", "signBit", "__kBitConversionInts", "__kBitConversionDouble", "__copy", "__absoluteSubOne", "__trim", "__absoluteAddOne", "y", "unaryMinus", "expValue", "__kMaxLengthBits", "neededDigits", "__initializeDigits", "msd", "runningSquare", "multiply", "resultLength", "__clzmsd", "__multiplyAccumulate", "__absoluteCompare", "quotient", "resultSign", "divisor", "__absoluteDivSmall", "__absoluteDivLarge", "remainderDigit", "__absoluteModSmall", "remainder", "__absoluteAdd", "__absoluteSub", "__rightShiftByAbsolute", "__leftShiftByAbsolute", "__compareToBigInt", "equal", "__absoluteAnd", "y1", "__absoluteOr", "__absoluteAndNot", "__absoluteXor", "neededLength", "topDigit", "compareDigit", "__truncateToNBits", "__truncateAndSubFromPowerOfTwo", "bitsInTopDigit", "__toNumeric", "__isBigInt", "add", "__compare", "EQ", "__equalToNumber", "dataview", "byteOffset", "littleEndian", "asIntN", "DataViewGetBigUint64", "getUint32", "low", "s", "DataViewSetBigUint64", "asUintN", "d1", "setUint32", "mantissaBitsUnset", "topUnconsumedBit", "mask", "rawExponent", "digits", "kMantissaHighTopBit", "msdTopBit", "remainingMantissaBits", "string", "cursor", "charCodeAt", "__isWhitespace", "chars", "bitsPerChar", "__kMaxBitsPerChar", "roundup", "__kBitsPerCharTableMultiplier", "bitsMin", "__kBitsPerCharTableShift", "limDigit", "limAlpha", "done", "charsSoFar", "part", "S", "k", "m", "I", "digitsSoFar", "__inplaceMultiplyAdd", "parts", "partsBits", "bits", "f", "p", "__fillFromParts", "bitsInDigit", "partBits", "charMask", "charsRequired", "Array", "pos", "availableBits", "newDigit", "__kConversionChars", "consumedBits", "isRecursiveCall", "bitLength", "maxBitsPerChar", "minBitsPerChar", "secondHalf", "secondHalfChars", "conqueror", "exponentiate", "input", "divisionResult", "firstHalf", "leftNegative", "bothNegative", "xSign", "__unequalSign", "__absoluteGreater", "__absoluteLess", "ySign", "yAbs", "xDigit", "__compareToDouble", "yBitLength", "compareMantissa", "op", "__comparisonResultToBool", "__compareToNumber", "inputLength", "__setDigitGrow", "yLength", "numPairs", "tmp", "tmpLength", "diff", "multiplicand", "accumulator", "accumulatorIndex", "m2Low", "m2High", "acc", "m1", "m1Low", "m1High", "rLow", "rMid1", "rMid2", "rHigh", "source", "factor", "rx", "ry", "upperHalf", "lowerHalf", "dividend", "wantQuotient", "wantRemainder", "__halfDigitLength", "n2", "q", "qhatv", "__clz15", "__specialLeftShift", "vn1", "halfDigitBuffer", "j", "qhat", "ujn", "rhat", "vn2", "ujn2", "__internalMultiplyAdd", "__inplaceSub", "__inplaceAdd", "__inplaceRightShift", "addDigit", "__toShiftAmount", "digitShift", "bitsShift", "grow", "__rightShiftByMaximum", "mustRoundDown", "obj", "hint", "Symbol", "toPrimitive", "exoticToPrim", "valueOf", "call", "drop", "min", "limit", "resultMsd", "msdBitsConsumed", "minuendMsd", "base", "ArrayBuffer", "Float64Array", "__kBitConversionBuffer", "Int32Array", "LN2", "log", "require_level_supports", "__commonJSMin", "exports", "init_shim", "manifests", "manifest", "acc", "m", "require_module_error", "__commonJSMin", "exports", "module", "init_shim", "message", "options", "require_text_endec", "__commonJSMin", "exports", "module", "init_shim", "lazy", "require_encoding", "__commonJSMin", "exports", "init_shim", "ModuleError", "formats", "Encoding", "options", "require_formats", "__commonJSMin", "exports", "init_shim", "Buffer", "Encoding", "textEndec", "BufferFormat", "options", "ViewFormat", "data", "view", "UTF8Format", "textEncoder", "textDecoder", "require_encodings", "__commonJSMin", "exports", "init_shim", "Buffer", "textEncoder", "textDecoder", "BufferFormat", "ViewFormat", "UTF8Format", "identity", "v", "data", "buffer", "require_level_transcoder", "__commonJSMin", "exports", "init_shim", "ModuleError", "encodings", "Encoding", "BufferFormat", "ViewFormat", "UTF8Format", "kFormats", "kEncodings", "validFormats", "Transcoder", "formats", "f", "k", "err", "encoding", "resolved", "lookup", "from", "name", "format", "options", "maybeType", "anonymousCount", "detectFormat", "aliases", "require_next_tick_browser", "__commonJSMin", "exports", "module", "init_shim", "fn", "require_catering", "__commonJSMin", "exports", "init_shim", "nextTick", "callback", "symbol", "promise", "resolve", "reject", "err", "res", "require_common", "__commonJSMin", "exports", "init_shim", "options", "callback", "def", "require_abstract_iterator", "__commonJSMin", "exports", "init_shim", "fromCallback", "ModuleError", "getOptions", "getCallback", "kPromise", "kCallback", "kWorking", "kHandleOne", "kHandleMany", "kAutoClose", "kFinishWork", "kReturnMany", "kClosing", "kHandleClose", "kClosed", "kCloseCallbacks", "kKeyEncoding", "kValueEncoding", "kAbortOnClose", "kLegacy", "kKeys", "kValues", "kLimit", "kCount", "emptyOptions", "noop", "warnedEnd", "CommonIterator", "db", "options", "legacy", "hint", "callback", "promise", "resolve", "reject", "err", "key", "value", "size", "acc", "onnext", "count", "nextv", "onnextv", "items", "cb", "target", "keyEncoding", "keyFormat", "mapped", "callbacks", "item", "AbstractIterator", "IteratorDecodeError", "entries", "entry", "AbstractKeyIterator", "keys", "i", "AbstractValueIterator", "values", "subject", "cause", "k", "require_default_kv_iterator", "__commonJSMin", "exports", "init_shim", "AbstractKeyIterator", "AbstractValueIterator", "kIterator", "kCallback", "kHandleOne", "kHandleMany", "DefaultKeyIterator", "db", "options", "DefaultValueIterator", "Iterator", "keys", "mapEntry", "entry", "callback", "err", "key", "value", "size", "entries", "target", "require_deferred_iterator", "__commonJSMin", "exports", "init_shim", "AbstractIterator", "AbstractKeyIterator", "AbstractValueIterator", "ModuleError", "kNut", "kUndefer", "kFactory", "DeferredIterator", "db", "options", "DeferredKeyIterator", "DeferredValueIterator", "Iterator", "callback", "size", "target", "require_abstract_chained_batch", "__commonJSMin", "exports", "init_shim", "fromCallback", "ModuleError", "getCallback", "getOptions", "kPromise", "kStatus", "kOperations", "kFinishClose", "kCloseCallbacks", "AbstractChainedBatch", "db", "hint", "key", "value", "options", "err", "original", "keyEncoding", "valueEncoding", "keyFormat", "mappedKey", "mappedValue", "callback", "callbacks", "cb", "require_default_chained_batch", "__commonJSMin", "exports", "init_shim", "AbstractChainedBatch", "ModuleError", "kEncoded", "DefaultChainedBatch", "db", "key", "value", "options", "callback", "require_range_options", "__commonJSMin", "exports", "module", "init_shim", "ModuleError", "hasOwnProperty", "rangeOptions", "options", "keyEncoding", "result", "k", "require_queue_microtask", "__commonJSMin", "exports", "module", "init_shim", "promise", "cb", "err", "require_next_tick_browser", "__commonJSMin", "exports", "module", "init_shim", "queueMicrotask", "fn", "args", "require_abstract_sublevel_iterator", "__commonJSMin", "exports", "init_shim", "AbstractIterator", "AbstractKeyIterator", "AbstractValueIterator", "kUnfix", "kIterator", "kHandleOne", "kHandleMany", "kCallback", "AbstractSublevelIterator", "db", "options", "iterator", "unfix", "err", "key", "value", "callback", "entries", "entry", "AbstractSublevelKeyIterator", "keys", "i", "AbstractSublevelValueIterator", "Iterator", "size", "target", "require_abstract_sublevel", "__commonJSMin", "exports", "module", "init_shim", "ModuleError", "Buffer", "AbstractSublevelIterator", "AbstractSublevelKeyIterator", "AbstractSublevelValueIterator", "kPrefix", "kUpperBound", "kPrefixRange", "kParent", "kUnfix", "textEncoder", "defaults", "AbstractLevel", "AbstractSublevel", "options", "db", "name", "separator", "manifest", "forward", "trim", "reserved", "parent", "x", "mergeManifests", "prefix", "upperBound", "MultiFormat", "Unfixer", "key", "keyFormat", "view", "result", "buffer", "range", "callback", "value", "keys", "operations", "iterator", "unfix", "supportsEncoding", "encoding", "prefixLength", "str", "char", "start", "end", "require_abstract_level", "__commonJSMin", "exports", "init_shim", "supports", "Transcoder", "EventEmitter", "fromCallback", "ModuleError", "AbstractIterator", "DefaultKeyIterator", "DefaultValueIterator", "DeferredIterator", "DeferredKeyIterator", "DeferredValueIterator", "DefaultChainedBatch", "getCallback", "getOptions", "rangeOptions", "kPromise", "kLanded", "kResources", "kCloseResources", "kOperations", "kUndefer", "kDeferOpen", "kOptions", "kStatus", "kDefaultOptions", "kTranscoder", "kKeyEncoding", "kValueEncoding", "noop", "AbstractLevel", "manifest", "options", "keyEncoding", "valueEncoding", "passive", "forward", "formats", "encoding", "callback", "maybeOpened", "err", "maybeClosed", "cancel", "pending", "sync", "next", "resource", "key", "maybeError", "keyFormat", "valueFormat", "value", "keys", "mappedKeys", "i", "values", "mappedKey", "mappedValue", "operations", "mapped", "ke", "ve", "op", "db", "valueErr", "name", "AbstractSublevel", "original", "fn", "k", "require_abstract_level", "__commonJSMin", "exports", "init_shim", "require_run_parallel_limit", "__commonJSMin", "exports", "module", "init_shim", "runParallelLimit", "queueMicrotask", "tasks", "limit", "cb", "results", "len", "pending", "keys", "isErrored", "isSync", "next", "done", "err", "end", "each", "i", "result", "key", "task", "require_key_range", "__commonJSMin", "exports", "module", "init_shim", "options", "lower", "upper", "lowerExclusive", "upperExclusive", "require_deserialize", "__commonJSMin", "exports", "module", "init_shim", "textEncoder", "data", "require_iterator", "__commonJSMin", "exports", "init_shim", "AbstractIterator", "createKeyRange", "deserialize", "kCache", "kFinished", "kOptions", "kCurrentOptions", "kPosition", "kLocation", "kFirst", "emptyOptions", "Iterator", "db", "location", "options", "size", "callback", "keyRange", "transaction", "store", "entries", "method", "ev", "cursor", "key", "value", "maybeCommit", "keys", "values", "complete", "length", "i", "err", "cache", "target", "require_clear", "__commonJSMin", "exports", "module", "init_shim", "db", "location", "keyRange", "options", "callback", "transaction", "store", "count", "method", "direction", "ev", "cursor", "require_browser_level", "__commonJSMin", "exports", "init_shim", "AbstractLevel", "ModuleError", "parallel", "fromCallback", "Iterator", "deserialize", "clear", "createKeyRange", "DEFAULT_PREFIX", "kIDB", "kNamePrefix", "kLocation", "kVersion", "kStore", "kOnComplete", "kPromise", "BrowserLevel", "location", "options", "_", "prefix", "version", "forward", "callback", "req", "ev", "db", "mode", "request", "transaction", "key", "store", "err", "value", "keys", "tasks", "next", "operations", "index", "error", "loop", "op", "keyRange", "require_browser", "__commonJSMin", "exports", "init_shim", "require_eventemitter3", "__commonJSMin", "exports", "module", "init_shim", "has", "prefix", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter", "names", "events", "name", "handlers", "i", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_primordials", "__commonJSMin", "exports", "module", "init_shim", "self", "el", "sep", "fn", "start", "end", "thisArgs", "args", "instance", "props", "name", "prop", "obj", "target", "proto", "thenFn", "catchFn", "err", "value", "buf", "len", "require_util", "__commonJSMin", "exports", "module", "init_shim", "bufferModule", "AsyncFunction", "Blob", "isBlob", "b", "AggregateError", "errors", "message", "callback", "called", "args", "resolve", "reject", "res", "rej", "fn", "err", "format", "_unused", "type", "replacement", "value", "arr", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "AbortController", "AbortSignal", "require_errors", "__commonJSMin", "exports", "module", "init_shim", "format", "inspect", "CustomAggregateError", "AggregateError", "kIsNodeError", "kTypes", "classRegExp", "nodeInternalPrefix", "codes", "assert", "value", "message", "addNumericalSeparator", "val", "res", "i", "start", "getMessage", "key", "msg", "args", "expectedLength", "E", "code", "Base", "NodeError", "hideStackFrames", "fn", "hidden", "aggregateTwoErrors", "innerError", "outerError", "err", "AbortError", "options", "name", "expected", "actual", "types", "instances", "other", "pos", "last", "_actual$constructor", "inspected", "reason", "input", "_value$constructor", "type", "len", "a", "str", "range", "received", "require_validators", "__commonJSMin", "exports", "module", "init_shim", "ArrayIsArray", "ArrayPrototypeIncludes", "ArrayPrototypeJoin", "ArrayPrototypeMap", "NumberIsInteger", "NumberIsNaN", "NumberMAX_SAFE_INTEGER", "NumberMIN_SAFE_INTEGER", "NumberParseInt", "ObjectPrototypeHasOwnProperty", "RegExpPrototypeExec", "String", "StringPrototypeToUpperCase", "StringPrototypeTrim", "hideStackFrames", "ERR_SOCKET_BAD_PORT", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_ARG_VALUE", "ERR_OUT_OF_RANGE", "ERR_UNKNOWN_SIGNAL", "normalizeEncoding", "isAsyncFunction", "isArrayBufferView", "signals", "isInt32", "value", "isUint32", "octalReg", "modeDesc", "parseFileMode", "name", "def", "validateUint32", "validateInteger", "min", "max", "validateInt32", "positive", "validateString", "validateNumber", "validateOneOf", "oneOf", "reason", "v", "validateBoolean", "getOwnPropertyValueOrDefault", "options", "key", "defaultValue", "validateObject", "allowArray", "allowFunction", "validateArray", "minLength", "validateSignalName", "signal", "validateBuffer", "buffer", "validateEncoding", "data", "encoding", "normalizedEncoding", "length", "validatePort", "port", "allowZero", "validateAbortSignal", "validateFunction", "validatePlainFunction", "validateUndefined", "validateUnion", "union", "require_utils", "__commonJSMin", "exports", "module", "init_shim", "Symbol", "SymbolAsyncIterator", "SymbolIterator", "kDestroyed", "kIsErrored", "kIsReadable", "kIsDisturbed", "isReadableNodeStream", "obj", "strict", "_obj$_readableState", "isWritableNodeStream", "_obj$_writableState", "isDuplexNodeStream", "isNodeStream", "isIterable", "isAsync", "isDestroyed", "stream", "wState", "rState", "state", "isWritableEnded", "isWritableFinished", "isReadableEnded", "isReadableFinished", "isReadable", "isWritable", "isFinished", "opts", "isWritableErrored", "_stream$_writableStat", "_stream$_writableStat2", "isReadableErrored", "_stream$_readableStat", "_stream$_readableStat2", "isClosed", "isOutgoingMessage", "isServerResponse", "isServerRequest", "_stream$req", "willEmitClose", "isDisturbed", "_stream$kIsDisturbed", "isErrored", "_ref", "_ref2", "_ref3", "_ref4", "_ref5", "_stream$kIsErrored", "_stream$_readableStat3", "_stream$_writableStat3", "_stream$_readableStat4", "_stream$_writableStat4", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_shim", "process", "AbortError", "codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PREMATURE_CLOSE", "kEmptyObject", "once", "validateAbortSignal", "validateFunction", "validateObject", "Promise", "isClosed", "isReadable", "isReadableNodeStream", "isReadableFinished", "isReadableErrored", "isWritable", "isWritableNodeStream", "isWritableFinished", "isWritableErrored", "isNodeStream", "_willEmitClose", "isRequest", "stream", "nop", "eos", "options", "callback", "_options$readable", "_options$writable", "readable", "writable", "wState", "rState", "onlegacyfinish", "onfinish", "willEmitClose", "writableFinished", "readableFinished", "onend", "onerror", "err", "closed", "onclose", "errored", "onrequest", "cleanup", "abort", "endCallback", "originalCallback", "args", "finished", "opts", "resolve", "reject", "require_operators", "__commonJSMin", "exports", "module", "init_shim", "AbortController", "ERR_INVALID_ARG_TYPE", "ERR_MISSING_ARGS", "ERR_OUT_OF_RANGE", "AbortError", "validateAbortSignal", "validateInteger", "validateObject", "kWeakHandler", "finished", "ArrayPrototypePush", "MathFloor", "Number", "NumberIsNaN", "Promise", "PromiseReject", "PromisePrototypeThen", "Symbol", "kEmpty", "kEof", "map", "fn", "options", "concurrency", "_options$signal", "_options$signal2", "ac", "stream", "queue", "signal", "signalOpt", "abort", "next", "resume", "done", "onDone", "pump", "val", "_val", "err", "resolve", "_options$signal3", "asIndexedPairs", "index", "_options$signal4", "some", "unused", "filter", "every", "args", "find", "result", "forEach", "forEachFn", "value", "filterFn", "ReduceAwareErrMissingArgs", "reduce", "reducer", "initialValue", "_options$signal5", "hasInitialValue", "opts", "gotAnyItemFromStream", "_options$signal6", "toArray", "_options$signal7", "flatMap", "values", "toIntegerOrInfinity", "number", "drop", "_options$signal8", "_options$signal9", "take", "_options$signal10", "_options$signal11", "require_destroy", "__commonJSMin", "exports", "module", "init_shim", "process", "aggregateTwoErrors", "ERR_MULTIPLE_CALLBACK", "AbortError", "Symbol", "kDestroyed", "isDestroyed", "isFinished", "isServerRequest", "kDestroy", "kConstruct", "checkError", "err", "w", "destroy", "cb", "s", "_destroy", "er", "self", "called", "onDestroy", "r", "emitErrorCloseNT", "emitCloseNT", "emitErrorNT", "undestroy", "errorOrDestroy", "stream", "sync", "construct", "constructNT", "onConstruct", "emitConstructNT", "isRequest", "emitCloseLegacy", "emitErrorCloseLegacy", "destroyer", "require_legacy", "__commonJSMin", "exports", "module", "init_shim", "ArrayIsArray", "ObjectSetPrototypeOf", "EE", "Stream", "opts", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "prependListener", "emitter", "event", "fn", "require_add_abort_signal", "__commonJSMin", "exports", "module", "init_shim", "AbortError", "codes", "eos", "ERR_INVALID_ARG_TYPE", "validateAbortSignal", "signal", "name", "isNodeStream", "obj", "stream", "onAbort", "require_buffer_list", "__commonJSMin", "exports", "module", "init_shim", "StringPrototypeSlice", "SymbolIterator", "TypedArrayPrototypeSet", "Uint8Array", "Buffer", "inspect", "v", "entry", "ret", "s", "p", "n", "i", "hasStrings", "data", "slice", "c", "str", "retLen", "buf", "_", "options", "require_state", "__commonJSMin", "exports", "module", "init_shim", "MathFloor", "NumberIsInteger", "ERR_INVALID_ARG_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getDefaultHighWaterMark", "objectMode", "getHighWaterMark", "state", "hwm", "name", "require_from", "__commonJSMin", "exports", "module", "init_shim", "process", "PromisePrototypeThen", "SymbolAsyncIterator", "SymbolIterator", "Buffer", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_NULL_VALUES", "from", "Readable", "iterable", "opts", "iterator", "isAsync", "readable", "reading", "next", "error", "cb", "close", "e", "hadError", "hasThrow", "value", "done", "res", "err", "require_readable", "__commonJSMin", "exports", "module", "init_shim", "process", "ArrayPrototypeIndexOf", "NumberIsInteger", "NumberIsNaN", "NumberParseInt", "ObjectDefineProperties", "ObjectKeys", "ObjectSetPrototypeOf", "Promise", "SafeSet", "SymbolAsyncIterator", "Symbol", "Readable", "ReadableState", "EE", "Stream", "prependListener", "Buffer", "addAbortSignal", "eos", "debug", "fn", "BufferList", "destroyImpl", "getHighWaterMark", "getDefaultHighWaterMark", "aggregateTwoErrors", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_OUT_OF_RANGE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "validateObject", "kPaused", "StringDecoder", "from", "nop", "errorOrDestroy", "options", "stream", "isDuplex", "maybeReadMore", "err", "cb", "chunk", "encoding", "readableAddChunk", "addToFront", "state", "onEofChunk", "addChunk", "emitReadable", "enc", "decoder", "buffer", "content", "data", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "pause", "pipeOnDrain", "er", "s", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "paused", "streamKeys", "j", "streamToAsyncIterator", "iter", "createAsyncIterator", "callback", "next", "resolve", "error", "r", "val", "value", "endReadableNT", "endWritableNT", "wState", "iterable", "opts", "webStreamsAdapters", "lazyWebStreams", "readableStream", "streamReadable", "_ref", "_src$readableObjectMo", "require_writable", "__commonJSMin", "exports", "module", "init_shim", "process", "ArrayPrototypeSlice", "Error", "FunctionPrototypeSymbolHasInstance", "ObjectDefineProperty", "ObjectDefineProperties", "ObjectSetPrototypeOf", "StringPrototypeToLowerCase", "Symbol", "SymbolHasInstance", "Writable", "WritableState", "EE", "Stream", "Buffer", "destroyImpl", "addAbortSignal", "getHighWaterMark", "getDefaultHighWaterMark", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_ALREADY_FINISHED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "kOnFinished", "options", "stream", "isDuplex", "noDecode", "onwrite", "resetBuffer", "state", "clearBuffer", "finishMaybe", "object", "_write", "chunk", "encoding", "cb", "err", "writeOrBuffer", "callback", "len", "ret", "doWrite", "writev", "onwriteError", "er", "errorBuffer", "sync", "afterWriteTick", "afterWrite", "count", "_state$errored", "onfinishCallbacks", "i", "_state$errored2", "buffered", "bufferedIndex", "objectMode", "bufferedLength", "n", "chunks", "needFinish", "callFinal", "called", "onFinish", "finish", "prefinish", "rState", "value", "w", "val", "wState", "destroy", "webStreamsAdapters", "lazyWebStreams", "writableStream", "streamWritable", "require_duplexify", "__commonJSMin", "exports", "module", "init_shim", "process", "bufferModule", "isReadable", "isWritable", "isIterable", "isNodeStream", "isReadableNodeStream", "isWritableNodeStream", "isDuplexNodeStream", "eos", "AbortError", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_RETURN_VALUE", "destroyer", "Duplex", "Readable", "createDeferredPromise", "from", "Blob", "isBlob", "b", "AbortController", "FunctionPrototypeCall", "Duplexify", "options", "duplexify", "body", "name", "_duplexify", "value", "write", "final", "destroy", "fromAsyncGen", "then", "d", "promise", "val", "err", "cb", "readable", "writable", "fn", "resolve", "ac", "signal", "_promise", "chunk", "done", "encoding", "_resolve", "pair", "r", "w", "ondrain", "onfinish", "onreadable", "onclose", "onfinished", "callback", "buf", "require_duplex", "__commonJSMin", "exports", "module", "init_shim", "ObjectDefineProperties", "ObjectGetOwnPropertyDescriptor", "ObjectKeys", "ObjectSetPrototypeOf", "Duplex", "Readable", "Writable", "keys", "i", "method", "options", "value", "webStreamsAdapters", "lazyWebStreams", "pair", "duplex", "duplexify", "body", "require_transform", "__commonJSMin", "exports", "module", "init_shim", "ObjectSetPrototypeOf", "Symbol", "Transform", "ERR_METHOD_NOT_IMPLEMENTED", "Duplex", "getHighWaterMark", "kCallback", "options", "readableHighWaterMark", "prefinish", "final", "cb", "er", "data", "chunk", "encoding", "callback", "rState", "wState", "length", "err", "val", "require_passthrough", "__commonJSMin", "exports", "module", "init_shim", "ObjectSetPrototypeOf", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_shim", "process", "ArrayIsArray", "Promise", "SymbolAsyncIterator", "eos", "once", "destroyImpl", "Duplex", "aggregateTwoErrors", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_RETURN_VALUE", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "ERR_STREAM_PREMATURE_CLOSE", "AbortError", "validateFunction", "validateAbortSignal", "isIterable", "isReadable", "isReadableNodeStream", "isNodeStream", "AbortController", "PassThrough", "Readable", "destroyer", "stream", "reading", "writing", "finished", "cleanup", "err", "popCallback", "streams", "makeAsyncIterable", "val", "fromReadable", "pump", "iterable", "writable", "finish", "end", "error", "onresolve", "resume", "callback", "wait", "resolve", "reject", "chunk", "pipeline", "pipelineImpl", "opts", "ac", "signal", "outerSignal", "lastStreamCleanup", "abort", "finishImpl", "value", "destroys", "finishCount", "final", "fn", "ret", "i", "isLastStream", "onError", "destroy", "_ret", "pt", "then", "pipe", "src", "dst", "ended", "rState", "require_compose", "__commonJSMin", "exports", "module", "init_shim", "pipeline", "Duplex", "destroyer", "isNodeStream", "isReadable", "isWritable", "AbortError", "ERR_INVALID_ARG_VALUE", "ERR_MISSING_ARGS", "streams", "orgStreams", "idx", "n", "ondrain", "onfinish", "onreadable", "onclose", "d", "onfinished", "err", "cb", "readable", "writable", "head", "tail", "chunk", "encoding", "callback", "buf", "require_promises", "__commonJSMin", "exports", "module", "init_shim", "ArrayPrototypePop", "Promise", "isIterable", "isNodeStream", "pl", "finished", "pipeline", "streams", "resolve", "reject", "signal", "end", "lastArg", "options", "err", "value", "require_stream", "__commonJSMin", "exports", "module", "init_shim", "Buffer", "ObjectDefineProperty", "ObjectKeys", "ReflectApply", "customPromisify", "streamReturningOperators", "promiseReturningOperators", "ERR_ILLEGAL_CONSTRUCTOR", "compose", "pipeline", "destroyer", "eos", "promises", "utils", "Stream", "key", "fn", "args", "op", "addAbortSignal", "value", "chunk", "require_browser", "__commonJSMin", "exports", "module", "init_shim", "CustomStream", "promises", "originalDestroy", "require_lib", "__commonJSMin", "exports", "module", "init_shim", "errors", "assert", "cond", "msg", "isUint8Array", "name", "value", "length", "numbers", "isCompressed", "toTypeString", "getAssertedOutput", "output", "len", "secp256k1", "seed", "seckey", "tweak", "pubkey", "compressed", "pubkeys", "sig", "obj", "msg32", "options", "recid", "require_elliptic", "__commonJSMin", "exports", "module", "init_shim", "EC", "ec", "ecparams", "BN", "loadCompressedPublicKey", "first", "xbuf", "x", "y", "loadUncompressedPublicKey", "ybuf", "x3", "loadPublicKey", "pubkey", "savePublicKey", "output", "point", "seckey", "bn", "negate", "tweak", "tweaked", "pair", "pubkeys", "pairs", "i", "sig", "r", "s", "obj", "sigR", "sigS", "lenR", "posR", "lenS", "posS", "message", "data", "noncefn", "_noncefn", "counter", "nonce", "d", "msg32", "sigObj", "sigr", "sigs", "recid", "hashfn", "scalar", "sha256", "hash", "require_elliptic", "__commonJSMin", "exports", "module", "init_shim", "require_freeGlobal", "__commonJSMin", "exports", "module", "init_shim", "freeGlobal", "require_root", "__commonJSMin", "exports", "module", "init_shim", "freeGlobal", "freeSelf", "root", "require_Symbol", "__commonJSMin", "exports", "module", "init_shim", "root", "Symbol", "require_getRawTag", "__commonJSMin", "exports", "module", "init_shim", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "require_objectToString", "__commonJSMin", "exports", "module", "init_shim", "objectProto", "nativeObjectToString", "objectToString", "value", "require_baseGetTag", "__commonJSMin", "exports", "module", "init_shim", "Symbol", "getRawTag", "objectToString", "nullTag", "undefinedTag", "symToStringTag", "baseGetTag", "value", "require_overArg", "__commonJSMin", "exports", "module", "init_shim", "overArg", "func", "transform", "arg", "require_getPrototype", "__commonJSMin", "exports", "module", "init_shim", "overArg", "getPrototype", "require_isObjectLike", "__commonJSMin", "exports", "module", "init_shim", "isObjectLike", "value", "require_isPlainObject", "__commonJSMin", "exports", "module", "init_shim", "baseGetTag", "getPrototype", "isObjectLike", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "isPlainObject", "value", "proto", "Ctor", "require_flat", "__commonJSMin", "exports", "module", "init_shim", "flatten", "unflatten", "isBuffer", "obj", "keyIdentity", "key", "target", "opts", "delimiter", "maxDepth", "transformKey", "output", "step", "object", "prev", "currentDepth", "value", "isarray", "type", "isbuffer", "isobject", "newKey", "overwrite", "result", "getkey", "parsedKey", "addKeys", "keyPrefix", "recipient", "isEmpty", "val", "isArray", "isObject", "split", "key1", "key2", "require_lru_cache", "__commonJSMin", "exports", "module", "init_shim", "perf", "hasAbortController", "AC", "AS", "hasAbortSignal", "hasACAbortSignal", "type", "e", "f", "ev", "fn", "warned", "deprecatedOption", "opt", "instead", "code", "shouldWarn", "warn", "LRUCache", "deprecatedMethod", "method", "prototype", "get", "deprecatedProperty", "field", "emitWarning", "a", "process", "what", "msg", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "UintArray", "options", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "sizeCalculation", "fetchMethod", "fetchContext", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "length", "maxAge", "stale", "key", "index", "start", "t", "cachedNow", "getNow", "k", "v", "i", "getOptions", "thisp", "deleted", "arr", "entry", "age", "reason", "oldVal", "val", "free", "head", "context", "ac", "fetchOpts", "cb", "eb", "er", "p", "pcall", "res", "value", "fetching", "require_encode", "__commonJSMin", "exports", "module", "init_shim", "encode", "MSB", "REST", "MSBALL", "INT", "num", "out", "offset", "oldOffset", "require_decode", "__commonJSMin", "exports", "module", "init_shim", "read", "MSB", "REST", "buf", "offset", "res", "shift", "counter", "b", "l", "require_length", "__commonJSMin", "exports", "module", "init_shim", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "value", "require_varint", "__commonJSMin", "exports", "module", "init_shim", "require_browser", "__commonJSMin", "exports", "init_shim", "EC", "ec", "browserCrypto", "subtle", "nodeCrypto", "EC_GROUP_ORDER", "ZERO32", "assert", "condition", "message", "isScalar", "x", "isValidPrivateKey", "privateKey", "equalConstTime", "b1", "b2", "res", "randomBytes", "size", "arr", "sha512", "msg", "resolve", "hash", "result", "getAes", "op", "iv", "key", "data", "importAlgorithm", "keyp", "cryptoKey", "encAlgorithm", "cipher", "firstChunk", "secondChunk", "decipher", "aesCbcEncrypt", "aesCbcDecrypt", "hmacSha256Sign", "hmac", "hmacSha256Verify", "sig", "expectedSig", "getPublic", "getPublicCompressed", "compressed", "publicKey", "reject", "derive", "privateKeyA", "publicKeyB", "keyA", "keyB", "Px", "publicKeyTo", "opts", "ephemPublicKey", "ciphertext", "macKey", "ephemPrivateKey", "encryptionKey", "dataToMac", "mac", "macGood", "require_stream_browser", "__commonJSMin", "exports", "module", "init_shim", "require_buffer_list", "__commonJSMin", "exports", "module", "init_shim", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_toPropertyKey", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "arg", "_toPrimitive", "input", "hint", "prim", "res", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_shim", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "process", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_shim", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_shim", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_stream_writable", "__commonJSMin", "exports", "module", "init_shim", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "process", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_shim", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "process", "onEndNT", "self", "value", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_shim", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_shim", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "arg", "_toPrimitive", "input", "hint", "prim", "res", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "process", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_shim", "require_stream_readable", "__commonJSMin", "exports", "module", "init_shim", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "process", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_shim", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_shim", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_shim", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_shim", "require_lib", "__commonJSMin", "exports", "init_shim", "readable_stream_1", "ReadableWebToNodeStream", "stream", "data", "init_shim", "init_shim", "init_shim", "init_shim", "import_ion_sdk", "init_shim", "import_cross_fetch", "import_ion_pow_sdk", "init_shim", "import_crypto", "_0n", "_1n", "_2n", "_255n", "CURVE_ORDER", "CURVE", "MAX_256B", "_2n", "SQRT_M1", "SQRT_D", "SQRT_AD_MINUS_ONE", "INVSQRT_A_MINUS_D", "ONE_MINUS_D_SQ", "D_MINUS_ONE_SQ", "ExtendedPoint", "x", "y", "z", "t", "p", "Point", "_1n", "mod", "points", "toInv", "invertBatch", "i", "other", "assertExtPoint", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "X1Z2", "X2Z1", "Y1Z2", "Y2Z1", "a", "CURVE", "A", "B", "C", "D", "E", "G", "F", "H", "X3", "Y3", "T3", "Z3", "T1", "T2", "_0n", "W", "windows", "base", "window", "n", "affinePoint", "precomputes", "pointPrecomputes", "f", "windowSize", "mask", "maxNumber", "shiftBy", "offset", "wbits", "pr", "cached", "scalar", "normalizeScalar", "P0", "d", "invZ", "invert", "ax", "ay", "legacyRist", "assertRstPoint", "RistrettoPoint", "ep", "r0", "r", "Ns", "c", "Ns_D_is_sq", "s", "uvRatio", "s_", "edIsNegative", "Nt", "s2", "W0", "W1", "W2", "W3", "hex", "ensureBytes", "r1", "bytes255ToNumberLE", "R1", "r2", "R2", "emsg", "equalBytes", "numberTo32BytesLE", "u1", "u2", "u1_2", "u2_2", "v", "isValid", "I", "invertSqrt", "Dx", "Dy", "invsqrt", "D1", "D2", "zInv", "_x", "_y", "bytesToHex", "b", "one", "two", "strict", "P", "normed", "bytesToNumberLE", "y2", "u", "isXOdd", "privateKey", "getExtendedPublicKey", "bytes", "hexes", "v", "i", "bytesToHex", "uint8a", "hex", "hexToBytes", "array", "j", "hexByte", "byte", "numberTo32BytesBE", "num", "numberTo32BytesLE", "edIsNegative", "mod", "_1n", "bytesToNumberLE", "bytes255ToNumberLE", "bytes", "_2n", "_255n", "a", "b", "CURVE", "res", "_0n", "invert", "number", "modulo", "x", "y", "u", "q", "r", "m", "n", "invertBatch", "nums", "p", "tmp", "lastMultiplied", "acc", "inverted", "pow2", "power", "P", "pow_2_252_3", "_5n", "_10n", "_20n", "_40n", "_80n", "b2", "b4", "b5", "b10", "b20", "b40", "b80", "b160", "b240", "b250", "uvRatio", "v3", "v7", "pow", "vx2", "root1", "root2", "SQRT_M1", "useRoot1", "useRoot2", "noRoot", "invertSqrt", "equalBytes", "b1", "b2", "i", "ensureBytes", "hex", "expectedLength", "bytes", "hexToBytes", "normalizeScalar", "num", "max", "strict", "_0n", "adjustBytes25519", "getExtendedPublicKey", "key", "numberTo32BytesBE", "normalizeScalar", "MAX_256B", "ensureBytes", "hashed", "utils", "head", "adjustBytes25519", "prefix", "scalar", "mod", "bytesToNumberLE", "CURVE", "point", "Point", "pointBytes", "Point", "crypto", "nodeCrypto", "utils", "bytesToHex", "getExtendedPublicKey", "mod", "invert", "hash", "ensureBytes", "num", "bytesToNumberLE", "CURVE", "_0n", "_1n", "bytesLength", "randomBytes", "message", "buffer", "windowSize", "point", "Point", "cached", "_2n", "init_shim", "import_crypto", "_0n", "_1n", "_2n", "_3n", "_8n", "POW_2_256", "CURVE", "weistrass", "x", "a", "b", "CURVE", "x2", "mod", "x3", "USE_ENDOMORPHISM", "_0n", "JacobianPoint", "y", "z", "p", "Point", "_1n", "points", "toInv", "invertBatch", "i", "other", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "Z1Z1", "_2n", "Z2Z2", "U1", "U2", "S1", "S2", "A", "B", "C", "D", "E", "_3n", "F", "X3", "Y3", "_8n", "Z3", "H", "r", "HH", "HHH", "V", "scalar", "n", "normalizeScalar", "G", "P0", "d", "k1neg", "k1", "k2neg", "k2", "splitScalarEndo", "k1p", "k2p", "W", "windows", "base", "window", "affinePoint", "precomputes", "pointPrecomputes", "f", "windowSize", "mask", "maxNumber", "shiftBy", "offset", "wbits", "pr", "cached", "point", "fake", "f1p", "f2p", "invZ", "invert", "iz1", "iz2", "iz3", "ax", "ay", "bytes", "isShort", "bytesToNumber", "isValidFieldElement", "y2", "sqrtMod", "isYOdd", "hex", "ensureBytes", "len", "header", "privateKey", "normalizePrivateKey", "msgHash", "signature", "recovery", "h", "truncateHash", "s", "normalizeSignature", "prefix", "R", "numTo32bStr", "rinv", "u1", "u2", "Q", "isCompressed", "hexToBytes", "msg", "left", "right", "aP", "bQ", "sum", "sliceDER", "parseDERInt", "data", "bytesToHex", "res", "parseDERSignature", "sBytes", "rBytesLeft", "Signature", "arr", "isUint8a", "name", "str", "hexToNumber", "isWithinCurveOrder", "HALF", "sHex", "numberToHexUnpadded", "rHex", "rLen", "sLen", "isUint8a", "bytes", "hexes", "v", "i", "bytesToHex", "uint8a", "hex", "numTo32bStr", "num", "POW_2_256", "numberToHexUnpadded", "num", "hex", "hexToNumber", "hexToBytes", "array", "i", "j", "hexByte", "byte", "bytesToNumber", "bytes", "bytesToHex", "ensureBytes", "normalizeScalar", "isWithinCurveOrder", "mod", "a", "b", "CURVE", "result", "_0n", "pow2", "x", "power", "P", "res", "sqrtMod", "_6n", "_11n", "_22n", "_23n", "_44n", "_88n", "b2", "b3", "b6", "_3n", "b9", "b11", "_2n", "b22", "b44", "b88", "b176", "b220", "b223", "t1", "t2", "invert", "number", "modulo", "y", "_1n", "u", "v", "q", "r", "m", "n", "invertBatch", "nums", "p", "scratch", "lastMultiplied", "acc", "inverted", "divNearest", "POW_2_128", "splitScalarEndo", "k", "a1", "b1", "a2", "c1", "c2", "k1", "k2", "k1neg", "k2neg", "truncateHash", "hash", "delta", "h", "isWithinCurveOrder", "num", "_0n", "CURVE", "isValidFieldElement", "normalizePrivateKey", "key", "num", "hexToNumber", "isUint8a", "bytesToNumber", "isWithinCurveOrder", "normalizeSignature", "signature", "Signature", "Point", "crypto", "nodeCrypto", "init_shim", "init_shim", "init_shim", "init_shim", "empty", "Encoder", "name", "prefix", "baseEncode", "bytes", "Decoder", "baseDecode", "text", "decoder", "or", "ComposedDecoder", "decoders", "input", "left", "right", "Codec", "from", "encode", "decode", "decode", "string", "alphabet", "bitsPerChar", "name", "codes", "i", "end", "out", "bits", "buffer", "written", "value", "encode", "data", "pad", "mask", "rfc4648", "prefix", "from", "input", "base64", "rfc4648", "base64pad", "base64url", "base64urlpad", "import_ion_sdk", "init_shim", "init_shim", "init_shim", "init_shim", "init_shim", "encode_1", "encode", "MSB", "REST", "MSBALL", "INT", "num", "out", "offset", "oldOffset", "decode", "read", "MSB$1", "REST$1", "buf", "res", "shift", "counter", "b", "l", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "value", "varint", "_brrp_varint", "varint_default", "encodeTo", "int", "target", "offset", "varint_default", "encodingLength", "create", "code", "digest", "size", "sizeOffset", "encodingLength", "digestOffset", "bytes", "encodeTo", "Digest", "Digest", "code", "size", "digest", "bytes", "from", "name", "code", "encode", "Hasher", "input", "result", "create", "digest", "sha", "name", "data", "sha256", "from", "sha512", "fetch", "crossFetch", "keyGenerators", "generateKeyPair", "type", "keyGeneratorFn", "publicJwk", "privateJwk", "DID", "#ops", "#opQueue", "#longForm", "#longFormPromise", "#generateKeyPair", "options", "generateKeyPair", "type", "content", "commit", "#addToOpQueue", "#generateOperation", "callback", "opQueue", "resolve", "reject", "lastOp", "op", "last", "payload", "index", "shortForm", "longForm", "ops", "form", "create", "import_tweetnacl", "import_ed2curve", "base64_exports", "__export", "base64", "base64pad", "base64url", "base64urlpad", "init_shim", "init_shim", "init_shim", "base", "ALPHABET", "name", "BASE_MAP", "j", "i", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "src", "_brrp__multiformats_scope_baseX", "base_x_default", "bytes_exports", "__export", "coerce", "empty", "equals", "fromHex", "fromString", "isBinary", "toHex", "toString", "init_shim", "d", "hex", "byte", "hexes", "b", "aa", "bb", "ii", "o", "str", "init_shim", "Encoder", "name", "prefix", "baseEncode", "bytes", "Decoder", "baseDecode", "text", "decoder", "or", "ComposedDecoder", "decoders", "input", "left", "right", "Codec", "from", "encode", "decode", "baseX", "alphabet", "base_x_default", "coerce", "string", "bitsPerChar", "codes", "i", "end", "out", "bits", "buffer", "written", "value", "data", "pad", "mask", "rfc4648", "base64", "rfc4648", "base64pad", "base64url", "base64urlpad", "base58_exports", "__export", "base58btc", "base58flickr", "init_shim", "base58btc", "baseX", "base58flickr", "ed25519_exports", "__export", "deriveX25519KeyPair", "generateKeyPair", "keyPairToJwk", "sign", "verify", "utils_exports", "MULTICODEC_HEADERS", "base64UrlToBytes", "bytesToBase58btcMultibase", "bytesToBase64Url", "bytes", "base64url", "base64urlString", "header", "multibaseBytes", "base58btc", "ed25519KeyPair", "nacl", "x25519KeyPair", "ed2curve", "keyPair", "kid", "overrides", "jwk", "encodedPublicKey", "publicKeyJwk", "__spreadProps", "__spreadValues", "encodedSecretKey", "privateKeyJwk", "options", "payload", "privateKeyBytes", "__async", "signature", "publicKeyBytes", "signedData", "init_shim", "AllowAllTenantGate", "_did", "src_exports", "__export", "code", "decode", "encode", "name", "init_shim", "init_shim", "init_shim", "init_shim", "typeofs", "objectTypeNames", "is", "value", "typeOf", "isBuffer", "objectType", "getObjectType", "objectTypeName", "init_shim", "Type", "major", "name", "terminal", "typ", "Token", "type", "value", "encodedLength", "init_shim", "init_shim", "useBuffer", "textDecoder", "textEncoder", "isBuffer", "buf", "asU8A", "toString", "bytes", "start", "end", "utf8Slice", "fromString", "string", "utf8ToBytes", "fromArray", "arr", "slice", "concat", "chunks", "length", "c", "out", "off", "b", "alloc", "size", "compare", "b1", "b2", "isBuffer", "i", "utf8ToBytes", "string", "units", "codePoint", "length", "leadSurrogate", "bytes", "utf8Slice", "buf", "offset", "end", "res", "firstByte", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "len", "defaultChunkSize", "Bl", "chunkSize", "bytes", "topChunk", "chunkPos", "alloc", "reset", "byts", "chunk", "slice", "concat", "init_shim", "decodeErrPrefix", "encodeErrPrefix", "uintMinorPrefixBytes", "assertEnoughData", "data", "pos", "need", "init_shim", "init_shim", "uintBoundaries", "readUint8", "data", "offset", "options", "assertEnoughData", "value", "decodeErrPrefix", "readUint16", "readUint32", "readUint64", "hi", "lo", "decodeUint8", "pos", "_minor", "Token", "Type", "decodeUint16", "decodeUint32", "decodeUint64", "encodeUint", "buf", "token", "encodeUintValue", "major", "uint", "nuint", "buint", "set", "tok1", "tok2", "init_shim", "decodeNegint8", "data", "pos", "_minor", "options", "Token", "Type", "readUint8", "decodeNegint16", "readUint16", "decodeNegint32", "readUint32", "neg1b", "pos1b", "decodeNegint64", "int", "readUint64", "value", "decodeErrPrefix", "encodeNegint", "buf", "token", "negint", "unsigned", "encodeUintValue", "uintBoundaries", "tok1", "tok2", "init_shim", "toToken", "data", "pos", "prefix", "length", "assertEnoughData", "buf", "slice", "Token", "Type", "decodeBytesCompact", "minor", "_options", "decodeBytes8", "_minor", "options", "readUint8", "decodeBytes16", "readUint16", "decodeBytes32", "readUint32", "decodeBytes64", "l", "readUint64", "decodeErrPrefix", "tokenBytes", "token", "fromString", "encodeBytes", "bytes", "encodeUintValue", "tok1", "tok2", "compareBytes", "b1", "b2", "compare", "init_shim", "toToken", "data", "pos", "prefix", "length", "options", "totLength", "assertEnoughData", "tok", "Token", "Type", "toString", "slice", "decodeStringCompact", "minor", "decodeString8", "_minor", "readUint8", "decodeString16", "readUint16", "decodeString32", "readUint32", "decodeString64", "l", "readUint64", "decodeErrPrefix", "encodeString", "encodeBytes", "init_shim", "toToken", "_data", "_pos", "prefix", "length", "Token", "Type", "decodeArrayCompact", "data", "pos", "minor", "_options", "decodeArray8", "_minor", "options", "readUint8", "decodeArray16", "readUint16", "decodeArray32", "readUint32", "decodeArray64", "l", "readUint64", "decodeErrPrefix", "decodeArrayIndefinite", "encodeArray", "buf", "token", "encodeUintValue", "encodeUint", "init_shim", "toToken", "_data", "_pos", "prefix", "length", "Token", "Type", "decodeMapCompact", "data", "pos", "minor", "_options", "decodeMap8", "_minor", "options", "readUint8", "decodeMap16", "readUint16", "decodeMap32", "readUint32", "decodeMap64", "l", "readUint64", "decodeErrPrefix", "decodeMapIndefinite", "encodeMap", "buf", "token", "encodeUintValue", "encodeUint", "init_shim", "decodeTagCompact", "_data", "_pos", "minor", "_options", "Token", "Type", "decodeTag8", "data", "pos", "_minor", "options", "readUint8", "decodeTag16", "readUint16", "decodeTag32", "readUint32", "decodeTag64", "readUint64", "encodeTag", "buf", "token", "encodeUintValue", "encodeUint", "init_shim", "MINOR_FALSE", "MINOR_TRUE", "MINOR_NULL", "MINOR_UNDEFINED", "decodeUndefined", "_data", "_pos", "_minor", "options", "decodeErrPrefix", "Token", "Type", "decodeBreak", "createToken", "value", "bytes", "decodeFloat16", "data", "pos", "readFloat16", "decodeFloat32", "readFloat32", "decodeFloat64", "readFloat64", "encodeFloat", "buf", "token", "float", "decoded", "success", "encodeFloat16", "ui8a", "encodeFloat32", "encodeFloat64", "buffer", "dataView", "inp", "valu32", "exponent", "mantissa", "logicalExponent", "half", "exp", "mant", "val", "offset", "encodeUint", "invalidMinor", "data", "pos", "minor", "decodeErrPrefix", "errorer", "msg", "jump", "i", "decodeUint8", "decodeUint16", "decodeUint32", "decodeUint64", "decodeNegint8", "decodeNegint16", "decodeNegint32", "decodeNegint64", "decodeBytesCompact", "decodeBytes8", "decodeBytes16", "decodeBytes32", "decodeBytes64", "decodeStringCompact", "decodeString8", "decodeString16", "decodeString32", "decodeString64", "decodeArrayCompact", "decodeArray8", "decodeArray16", "decodeArray32", "decodeArray64", "decodeArrayIndefinite", "decodeMapCompact", "decodeMap8", "decodeMap16", "decodeMap32", "decodeMap64", "decodeMapIndefinite", "decodeTagCompact", "decodeTag8", "decodeTag16", "decodeTag32", "decodeTag64", "decodeUndefined", "decodeFloat16", "decodeFloat32", "decodeFloat64", "decodeBreak", "quick", "Token", "Type", "quickEncodeToken", "token", "fromArray", "defaultEncodeOptions", "mapSorter", "quickEncodeToken", "makeCborEncoders", "encoders", "Type", "encodeUint", "encodeNegint", "encodeBytes", "encodeString", "encodeArray", "encodeMap", "encodeTag", "encodeFloat", "cborEncoders", "buf", "Bl", "Ref", "obj", "parent", "p", "stack", "encodeErrPrefix", "simpleTokens", "Token", "typeEncoders", "_typ", "_options", "_refStack", "_obj", "options", "refStack", "entries", "i", "e", "objectToTokens", "typ", "isMap", "keys", "length", "key", "sortMapEntries", "is", "customTypeEncoder", "tokens", "typeEncoder", "e1", "e2", "keyToken1", "keyToken2", "major", "tcmp", "tokensToEncoded", "token", "encodeCustom", "data", "quickBytes", "encoder", "size", "asU8A", "encode", "init_shim", "defaultDecodeOptions", "Tokeniser", "data", "options", "byt", "token", "quick", "decoder", "jump", "decodeErrPrefix", "minor", "DONE", "BREAK", "tokenToArray", "tokeniser", "arr", "i", "value", "tokensToObject", "tokenToMap", "useMaps", "obj", "m", "key", "Type", "tagged", "decode", "decoded", "init_shim", "init_shim", "init_shim", "encode_1", "encode", "MSB", "REST", "MSBALL", "INT", "num", "out", "offset", "oldOffset", "decode", "read", "MSB$1", "REST$1", "buf", "res", "shift", "counter", "b", "l", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "value", "varint", "_brrp_varint", "varint_default", "decode", "data", "offset", "varint_default", "encodeTo", "int", "target", "encodingLength", "init_shim", "create", "code", "digest", "size", "sizeOffset", "encodingLength", "digestOffset", "bytes", "encodeTo", "Digest", "decode", "multihash", "coerce", "equals", "a", "b", "data", "base32_exports", "__export", "base32", "base32hex", "base32hexpad", "base32hexpadupper", "base32hexupper", "base32pad", "base32padupper", "base32upper", "base32z", "init_shim", "base32", "rfc4648", "base32upper", "base32pad", "base32padupper", "base32hex", "base32hexupper", "base32hexpad", "base32hexpadupper", "base32z", "init_shim", "format", "link", "base", "bytes", "version", "toStringV0", "baseCache", "base58btc", "toStringV1", "base32", "cache", "baseCache", "cid", "CID", "version", "code", "multihash", "bytes", "DAG_PB_CODE", "SHA_256_CODE", "digest", "create", "other", "self", "unknown", "equals", "base", "format", "input", "value", "encodeCID", "cidSymbol", "decode", "remainder", "specs", "prefixSize", "multihashBytes", "coerce", "digestBytes", "Digest", "initialBytes", "offset", "next", "i", "length", "codec", "multihashCode", "digestSize", "size", "multihashSize", "source", "prefix", "parseCIDtoBytes", "decoder", "base58btc", "base32", "toStringV0", "toStringV1", "codeOffset", "encodingLength", "hashOffset", "encodeTo", "CID_CBOR_TAG", "cidEncoder", "obj", "cid", "CID", "bytes", "Token", "Type", "undefinedEncoder", "numberEncoder", "num", "encodeOptions", "cidDecoder", "decodeOptions", "name", "code", "encode", "node", "decode", "data", "init_shim", "init_shim", "init_shim", "isAsyncIterable", "thing", "batch", "source", "size", "things", "src_default", "parallelBatch", "source", "size", "tasks", "src_default", "things", "p", "value", "err", "i", "result", "init_shim", "init_shim", "init_shim", "import_err_code", "init_shim", "init_shim", "init_shim", "init_shim", "import_reader", "import_reader_buffer", "import_minimal", "import_writer", "import_writer_buffer", "configure", "util", "ReaderClass", "ReaderBufferClass", "WriterClass", "WriterBufferClass", "methods", "patchReader", "obj", "method", "original", "reader", "buf", "patchWriter", "val", "writer", "decodeMessage", "buf", "codec", "reader", "init_shim", "encodeMessage", "message", "codec", "w", "writer", "init_shim", "init_shim", "CODEC_TYPES", "createCodec", "name", "type", "encode", "decode", "enumeration", "v", "findValue", "val", "encode", "writer", "enumValue", "decode", "reader", "createCodec", "CODEC_TYPES", "init_shim", "message", "encode", "decode", "createCodec", "CODEC_TYPES", "Data", "DataType", "__DataTypeValues", "enumeration", "_codec", "message", "obj", "w", "opts", "value", "UnixTime", "reader", "length", "end", "tag", "encodeMessage", "buf", "decodeMessage", "Metadata", "types", "dirTypes", "DEFAULT_FILE_MODE", "DEFAULT_DIRECTORY_MODE", "UnixFS", "marshaled", "message", "Data", "data", "options", "type", "blockSizes", "hashType", "fanout", "mtime", "mode", "errcode", "size", "index", "sum", "init_shim", "src_exports", "__export", "code", "createLink", "createNode", "decode", "encode", "name", "prepare", "validate", "init_shim", "init_shim", "textDecoder", "decodeVarint", "bytes", "offset", "v", "shift", "b", "decodeBytes", "byteLen", "postOffset", "decodeKey", "index", "wire", "decodeLink", "link", "l", "wireType", "fieldNum", "byts", "decodeNode", "links", "linksBeforeData", "data", "node", "init_shim", "textEncoder", "maxInt32", "maxUInt32", "encodeLink", "link", "bytes", "i", "encodeVarint", "nameBytes", "encodeNode", "node", "size", "sizeNode", "index", "sizeLink", "n", "l", "sov", "offset", "v", "base", "x", "len64", "len8tab", "init_shim", "pbNodeProperties", "pbLinkProperties", "textEncoder", "linkComparator", "a", "b", "abuf", "bbuf", "x", "y", "i", "len", "hasOnlyProperties", "node", "properties", "p", "asLink", "link", "Hash", "CID", "pbl", "cid", "e", "prepare", "pbn", "validate", "createNode", "data", "links", "createLink", "name", "size", "name", "code", "encode", "node", "validate", "pbn", "l", "link", "encodeNode", "decode", "bytes", "decodeNode", "CID", "sha2_browser_exports", "__export", "sha256", "sha512", "init_shim", "init_shim", "from", "name", "code", "encode", "Hasher", "input", "result", "create", "digest", "sha", "name", "data", "sha256", "from", "sha512", "persist", "buffer", "blockstore", "options", "src_exports", "multihash", "sha256", "cid", "CID", "dirBuilder", "dir", "blockstore", "options", "unixfs", "UnixFS", "block", "encode", "prepare", "cid", "persist", "path", "init_shim", "raw_exports", "__export", "code", "decode", "encode", "name", "init_shim", "name", "code", "encode", "node", "coerce", "decode", "data", "init_shim", "CustomProgressEvent", "type", "detail", "buildFileBatch", "file", "blockstore", "options", "count", "previous", "entry", "parallelBatch", "isSingleBlockImport", "result", "reduce", "leaves", "leaf", "node", "UnixFS", "encode", "prepare", "persist", "CustomProgressEvent", "f", "links", "code", "block", "cid", "acc", "curr", "fileBuilder", "import_err_code", "isIterable", "thing", "isAsyncIterable", "contentAsAsyncIterable", "content", "errCode", "defaultDagBuilder", "options", "source", "blockstore", "entry", "originalPath", "path", "isFileCandidate", "file", "bytesRead", "chunk", "currentChunkSize", "CustomProgressEvent", "fileBuilder", "dir", "dirBuilder", "init_shim", "init_shim", "init_shim", "Dir", "props", "options", "CID_V0", "CID", "CID_V1", "DirFlat", "Dir", "props", "options", "name", "value", "key", "child", "CID_V1", "CID_V0", "block", "links", "result", "entry", "unixfs", "UnixFS", "node", "buffer", "encode", "prepare", "cid", "persist", "size", "acc", "curr", "init_shim", "init_shim", "init_shim", "init_shim", "import_sparse_array", "init_shim", "init_shim", "init_shim", "identity_exports", "__export", "identity", "init_shim", "identity", "from", "buf", "toString", "str", "fromString", "base2_exports", "__export", "base2", "init_shim", "base2", "rfc4648", "base8_exports", "__export", "base8", "init_shim", "base8", "rfc4648", "base10_exports", "__export", "base10", "init_shim", "base10", "baseX", "base16_exports", "__export", "base16", "base16upper", "init_shim", "base16", "rfc4648", "base16upper", "base36_exports", "__export", "base36", "base36upper", "init_shim", "base36", "baseX", "base36upper", "base256emoji_exports", "__export", "base256emoji", "init_shim", "alphabet", "alphabetBytesToChars", "p", "c", "i", "alphabetCharsToBytes", "encode", "data", "decode", "str", "byts", "char", "byt", "base256emoji", "from", "identity_exports", "__export", "identity", "init_shim", "code", "name", "encode", "coerce", "digest", "input", "create", "identity", "init_shim", "textEncoder", "textDecoder", "init_shim", "init_shim", "bases", "identity_exports", "base2_exports", "base8_exports", "base10_exports", "base16_exports", "base32_exports", "base36_exports", "base58_exports", "base64_exports", "base256emoji_exports", "hashes", "sha2_browser_exports", "init_shim", "init_shim", "asUint8Array", "buf", "allocUnsafe", "size", "asUint8Array", "createCodec", "name", "prefix", "encode", "decode", "string", "buf", "str", "ascii", "i", "allocUnsafe", "BASES", "bases", "bases_default", "fromString", "string", "encoding", "base", "bases_default", "asUint8Array", "Bucket", "options", "parent", "posAtParent", "SparseArray", "key", "value", "place", "child", "acc", "children", "map", "reduce", "index", "asyncMap", "asyncReduce", "asyncTransformBucket", "mapNode", "reduceNodes", "result", "hashValue", "fromString", "bucket", "newPlace", "pos", "object", "onlyChild", "exists", "hash", "o", "node", "_", "nodes", "output", "mappedChildren", "init_shim", "init_shim", "START_MASKS", "STOP_MASKS", "ConsumableBuffer", "value", "bits", "pendingBits", "result", "byte", "availableBits", "taking", "byteBitsToInt", "start", "length", "mask", "maskFor", "init_shim", "concat", "arrays", "length", "acc", "curr", "output", "allocUnsafe", "offset", "arr", "asUint8Array", "wrapHash", "hashFn", "hashing", "value", "InfiniteHash", "bits", "pendingBits", "result", "hash", "available", "took", "availableForUntake", "concat", "hashValue", "buffer", "ConsumableBuffer", "createHAMT", "options", "bucketOptions", "wrapHash", "Bucket", "init_shim", "import_murmurhash3js_revisited", "fromNumberTo32BitBuf", "number", "bytes", "i", "murmur332", "from", "input", "mur", "murmur3128", "bytes_exports", "murmur364", "hamtHashFn", "buf", "murmur3128", "HAMT_HASH_CODE", "DirSharded", "Dir", "props", "options", "createHAMT", "name", "value", "key", "calculateSize", "blockstore", "entry", "flush", "dir_sharded_default", "bucket", "shardRoot", "children", "links", "childrenSize", "i", "child", "labelPrefix", "Bucket", "shard", "subShard", "isDir", "dir", "flushedDir", "label", "size", "data", "UnixFS", "node", "buffer", "encode", "prepare", "cid", "persist", "obj", "CID_V0", "CID_V1", "flatToShard", "child", "dir", "threshold", "options", "newDir", "DirFlat", "convertToShard", "parent", "oldDir", "dir_sharded_default", "key", "init_shim", "toPathComponents", "path", "addToTree", "elem", "tree", "options", "pathElems", "toPathComponents", "lastIndex", "parent", "currentPath", "i", "pathElem", "last", "flatToShard", "dir", "Dir", "DirFlat", "flushAndYield", "blockstore", "defaultTreeBuilder", "source", "block", "rootDir", "singleRoot", "entry", "unwrapped", "init_shim", "import_err_code", "init_shim", "init_shim", "init_shim", "init_shim", "asUint8Array", "buf", "allocUnsafe", "size", "asUint8Array", "createCodec", "name", "prefix", "encode", "decode", "string", "buf", "str", "ascii", "i", "allocUnsafe", "BASES", "bases", "bases_default", "fromString", "string", "encoding", "base", "bases_default", "asUint8Array", "defaultChunkValidator", "source", "content", "errCode", "fromString", "init_shim", "init_shim", "init_shim", "init_shim", "init_shim", "asUint8Array", "buf", "alloc", "size", "asUint8Array", "allocUnsafe", "concat", "arrays", "length", "acc", "curr", "output", "allocUnsafe", "offset", "arr", "asUint8Array", "init_shim", "equals", "a", "b", "i", "symbol", "findBufAndOffset", "bufs", "index", "offset", "buf", "bufEnd", "isUint8ArrayList", "value", "Uint8ArrayList", "data", "length", "res", "bytes", "beginInclusive", "endExclusive", "concat", "list", "i", "bufStart", "sliceStartInBuf", "sliceEndsInBuf", "start", "search", "needle", "M", "radix", "rightmostPositions", "c", "j", "right", "lastIndex", "lastPatIndex", "skip", "char", "byteOffset", "allocUnsafe", "littleEndian", "alloc", "other", "equals", "acc", "curr", "DEFAULT_CHUNK_SIZE", "fixedSize", "options", "chunkSize", "source", "list", "Uint8ArrayList", "currentLength", "emitted", "buffer", "newBl", "init_shim", "init_shim", "DEFAULT_MAX_CHILDREN_PER_NODE", "balanced", "options", "maxChildrenPerNode", "balancedLayout", "source", "reduce", "roots", "chunked", "src_default", "init_shim", "init_shim", "init_shim", "init_shim", "defaultBufferImporter", "options", "file", "blockstore", "bytesWritten", "block", "unixfs", "opts", "src_exports", "raw_exports", "UnixFS", "encode", "cid", "persist", "CustomProgressEvent", "init_shim", "import_err_code", "importer", "source", "blockstore", "options", "candidates", "wrapWithDirectory", "shardSplitThresholdBytes", "cidVersion", "rawLeaves", "leafType", "fileImportConcurrency", "blockWriteConcurrency", "reduceSingleLeafToSelf", "chunker", "fixedSize", "chunkValidator", "defaultChunkValidator", "buildDag", "defaultDagBuilder", "balanced", "defaultBufferImporter", "buildTree", "defaultTreeBuilder", "entry", "parallelBatch", "init_shim", "errors_exports", "__export", "abortedError", "closeFailedError", "deleteFailedError", "getFailedError", "hasFailedError", "notFoundError", "openFailedError", "putFailedError", "init_shim", "import_err_code", "err", "errCode", "init_shim", "BaseBlockstore", "key", "options", "val", "source", "cid", "block", "init_shim", "MemoryBlockstore", "BaseBlockstore", "key", "val", "base32", "buf", "notFoundError", "value", "CID", "code", "decode", "Errors", "errors_exports", "hashers", "sha256", "codecs", "code", "src_exports", "computeCid", "payload", "codecCode", "multihashCode", "codec", "hasher", "payloadBytes", "payloadHash", "CID", "parseCid", "str", "cid", "Cid", "content", "asyncDataBlocks", "importer", "MemoryBlockstore", "block", "asyncDataBlocks_1", "__asyncValues", "asyncDataBlocks_1_1", "dataStream", "asyncDataBlocks_2", "asyncDataBlocks_2_1", "promisifySignal", "signal", "resolve", "reject", "abortOr", "promise", "init_shim", "INTRINSICS", "MakeIntrinsicClass", "Class", "name", "Object", "defineProperty", "prototype", "Symbol", "toStringTag", "value", "writable", "enumerable", "configurable", "prop", "getOwnPropertyNames", "desc", "getOwnPropertyDescriptor", "DefineIntrinsic", "key", "Error", "GetIntrinsic", "intrinsic", "EPOCHNANOSECONDS", "TIMEZONE_ID", "ISO_YEAR", "ISO_MONTH", "ISO_DAY", "ISO_HOUR", "ISO_MINUTE", "ISO_SECOND", "ISO_MILLISECOND", "ISO_MICROSECOND", "ISO_NANOSECOND", "CALENDAR", "INSTANT", "TIME_ZONE", "YEARS", "MONTHS", "WEEKS", "DAYS", "HOURS", "MINUTES", "SECONDS", "MILLISECONDS", "MICROSECONDS", "NANOSECONDS", "CALENDAR_ID", "slots", "WeakMap", "CreateSlots", "container", "set", "create", "GetSlots", "get", "HasSlot", "ids", "myslots", "reduce", "all", "id", "GetSlot", "TypeError", "SetSlot", "tzComponent", "timeZoneID", "RegExp", "source", "calComponent", "calendarID", "yearpart", "monthpart", "daypart", "datesplit", "timesplit", "offset", "zonesplit", "calendar", "zoneddatetime", "time", "yearmonth", "monthday", "fraction", "durationTime", "duration", "ArrayIncludes", "Array", "includes", "ArrayPrototypePush", "push", "IntlDateTimeFormat", "globalThis", "Intl", "DateTimeFormat", "MathMin", "Math", "min", "MathMax", "max", "MathAbs", "abs", "MathFloor", "floor", "MathSign", "sign", "MathTrunc", "trunc", "NumberIsNaN", "Number", "isNaN", "NumberIsFinite", "isFinite", "NumberCtor", "StringCtor", "String", "NumberMaxSafeInteger", "MAX_SAFE_INTEGER", "ObjectAssign", "assign", "ObjectCreate", "ObjectGetOwnPropertyDescriptor", "ObjectIs", "is", "ReflectApply", "Reflect", "apply", "ZERO", "JSBI", "BigInt", "ONE", "SIXTY", "THOUSAND", "MILLION", "BILLION", "NEGATIVE_ONE", "DAY_NANOS", "multiply", "NS_MIN", "NS_MAX", "BEFORE_FIRST_OFFSET_TRANSITION", "ABOUT_TEN_YEARS_NANOS", "ABOUT_ONE_YEAR_NANOS", "TWO_WEEKS_NANOS", "BUILTIN_CALENDAR_IDS", "IsInteger", "IsObject", "ToNumber", "ToInteger", "num", "integer", "ToString", "ToIntegerThrowOnInfinity", "RangeError", "ToPositiveInteger", "valueParam", "property", "ToIntegerWithoutRounding", "divmod", "x", "y", "quotient", "divide", "remainder", "lessThan", "ArrayPush", "arr", "newItem", "BUILTIN_CASTS", "Map", "BUILTIN_DEFAULTS", "SINGULAR_PLURAL_UNITS", "SINGULAR_FOR", "map", "e", "PLURAL_FOR", "p", "s", "UNITS_DESCENDING", "DURATION_FIELDS", "from", "keys", "sort", "IntlDateTimeFormatEnUsCache", "getIntlDateTimeFormatEnUsForTimeZone", "timeZoneIdentifier", "instance", "timeZone", "hour12", "era", "year", "month", "day", "hour", "minute", "second", "IsTemporalInstant", "item", "IsTemporalTimeZone", "IsTemporalCalendar", "IsTemporalDuration", "IsTemporalDate", "IsTemporalTime", "IsTemporalDateTime", "IsTemporalYearMonth", "IsTemporalMonthDay", "IsTemporalZonedDateTime", "RejectObjectWithCalendarOrTimeZone", "ParseTemporalTimeZone", "stringIdent", "ianaName", "z", "canonicalIdent", "GetCanonicalTimeZoneIdentifier", "toString", "result", "ParseISODateTime", "FormatCalendarAnnotation", "showCalendar", "isoString", "match", "PARSE.zoneddatetime", "exec", "yearString", "slice", "hasTime", "millisecond", "microsecond", "nanosecond", "offsetSign", "offsetHours", "offsetMinutes", "offsetSeconds", "offsetFraction", "endsWith", "RejectDateTime", "ParseTemporalYearMonthString", "PARSE.yearmonth", "referenceISODay", "ParseTemporalMonthDayString", "PARSE.monthday", "referenceISOYear", "ParseTemporalDurationString", "PARSE.duration", "every", "element", "years", "months", "weeks", "days", "hours", "fHours", "minutes", "fMinutes", "seconds", "fSeconds", "milliseconds", "microseconds", "nanoseconds", "length", "fHoursParam", "minutesParam", "fMinutesParam", "secondsParam", "millisecondsParam", "microsecondsParam", "nanosecondsParam", "forEach", "val", "mins", "secs", "mils", "fMilliseconds", "mics", "fMicroseconds", "RejectDuration", "ParseTemporalInstant", "offsetNs", "ParseTimeZoneOffsetString", "BalanceISODateTime", "epochNs", "GetEpochFromISOParts", "RegulateISODate", "yearParam", "monthParam", "dayParam", "overflow", "RejectISODate", "ConstrainISODate", "RegulateTime", "hourParam", "minuteParam", "secondParam", "millisecondParam", "microsecondParam", "nanosecondParam", "RejectTime", "ConstrainToRange", "ToTemporalDurationRecord", "partial", "temporalDurationLike", "undefined", "any", "ToTemporalOverflow", "options", "GetOption", "ToTemporalDisambiguation", "ToTemporalRoundingMode", "fallback", "NegateTemporalRoundingMode", "roundingMode", "ToTemporalOffset", "ToShowCalendarOption", "ToTemporalRoundingIncrement", "dividend", "inclusive", "maximum", "Infinity", "increment", "minimum", "valueRaw", "ToTemporalDateTimeRoundingIncrement", "smallestUnit", "week", "ToSecondsStringPrecision", "GetTemporalUnit", "ALLOWED_UNITS", "allowed", "c", "join", "precision", "unit", "digits", "fractionalSecondDigits", "stringDigits", "REQUIRED", "unitGroup", "requiredOrDefault", "extraValues", "allowedSingular", "singular", "category", "defaultVal", "allowedValues", "plural", "retval", "has", "ToRelativeTemporalObject", "relativeTo", "offsetBehaviour", "matchMinutes", "TemporalDateTimeToDate", "GetTemporalCalendarWithISODefault", "fields", "PrepareTemporalFields", "CalendarFields", "dateOptions", "InterpretTemporalDateTimeFields", "GetISO8601Calendar", "ToTemporalCalendar", "ToTemporalTimeZone", "CreateTemporalZonedDateTime", "InterpretISODateTimeOffset", "CreateTemporalDate", "DefaultTemporalLargestUnit", "v", "LargerOfTwoTemporalUnits", "unit1", "unit2", "indexOf", "MergeLargestUnitOption", "optionsParam", "largestUnit", "bag", "requiredFields", "emptySourceErrorMessage", "call", "eraYear", "ToTemporalTimeRecord", "completeness", "field", "valueDesc", "ToTemporalDate", "itemParam", "BuiltinTimeZoneGetPlainDateTimeFor", "CalendarDateFromFields", "date", "ToTemporalDateTime", "CreateTemporalDateTime", "ToTemporalDuration", "ToTemporalInstant", "ns", "ToTemporalMonthDay", "calendarAbsent", "maybeStringCalendar", "monthCode", "CalendarMonthDayFromFields", "CreateTemporalMonthDay", "ToTemporalTime", "PARSE.time", "test", "ToTemporalYearMonth", "CalendarYearMonthFromFields", "CreateTemporalYearMonth", "disambiguation", "offsetOpt", "matchMinute", "dt", "BuiltinTimeZoneGetInstantFor", "subtract", "possibleInstants", "GetPossibleInstantsFor", "candidate", "candidateOffset", "GetOffsetNanosecondsFor", "roundedCandidateOffset", "toNumber", "RoundNumberToIncrement", "offsetStr", "FormatTimeZoneOffsetString", "timeZoneString", "DisambiguatePossibleInstants", "ToTemporalZonedDateTime", "CreateTemporalDateSlots", "isoYear", "isoMonth", "isoDay", "RejectDateRange", "TemporalPlainDate", "CreateTemporalDateTimeSlots", "h", "ms", "S", "RejectDateTimeRange", "TemporalPlainDateTime", "CreateTemporalMonthDaySlots", "TemporalPlainMonthDay", "CreateTemporalYearMonthSlots", "RejectToRange", "TemporalPlainYearMonth", "CreateTemporalZonedDateTimeSlots", "epochNanoseconds", "ValidateEpochNanoseconds", "instant", "TemporalZonedDateTime", "fieldNamesParam", "fieldNames", "CalendarMergeFields", "additionalFields", "calMergeFields", "mergeFields", "CalendarDateAdd", "dateAddParam", "dateAdd", "CalendarDateUntil", "otherDate", "dateUntilParam", "dateUntil", "CalendarYear", "dateLike", "CalendarMonth", "CalendarMonthCode", "CalendarDay", "CalendarEra", "CalendarEraYear", "CalendarDayOfWeek", "dayOfWeek", "CalendarDayOfYear", "dayOfYear", "CalendarWeekOfYear", "weekOfYear", "CalendarDaysInWeek", "daysInWeek", "CalendarDaysInMonth", "daysInMonth", "CalendarDaysInYear", "daysInYear", "CalendarMonthsInYear", "monthsInYear", "CalendarInLeapYear", "inLeapYear", "calendarLikeParam", "calendarLike", "identifier", "TemporalCalendar", "IsBuiltinCalendar", "CalendarEquals", "one", "two", "ConsolidateCalendars", "sOne", "sTwo", "dateFromFields", "yearMonthFromFields", "monthDayFromFields", "temporalTimeZoneLikeParam", "temporalTimeZoneLike", "TimeZoneEquals", "dateTime", "TemporalDateTimeToTime", "getOffsetNanosecondsFor", "BuiltinTimeZoneGetOffsetStringFor", "GetISOPartsFromEpoch", "Instant", "numInstants", "utcns", "dayBefore", "dayAfter", "add", "offsetBefore", "PlainDateTime", "earlier", "AddDateTime", "later", "possible", "getPossibleInstantsFor", "ISOYearString", "ISODateTimePartString", "part", "FormatSecondsStringPart", "fractionNumber", "padStart", "TemporalInstantToString", "outputTimeZone", "FormatISOTimeZoneOffsetString", "TemporalDurationToString", "formatNumber", "DurationSign", "RoundDuration", "dateParts", "timeParts", "secondParts", "nsBigInt", "M", "msBigInt", "secondsBigInt", "total", "TotalDurationNanoseconds", "decimalPart", "unshift", "equal", "TemporalDateToString", "TemporalDateTimeToString", "RoundISODateTime", "TemporalMonthDayToString", "monthDay", "resultString", "calendarString", "TemporalYearMonthToString", "yearMonth", "TemporalZonedDateTimeToString", "zdt", "showTimeZone", "showOffset", "RoundInstant", "tz", "TestTimeZoneOffsetString", "string", "OFFSET", "resolvedOptions", "GetIANATimeZoneOffsetNanoseconds", "GetIANATimeZoneDateTimeParts", "utc", "offsetNanosecondsParam", "offsetNanoseconds", "hourString", "minuteString", "secondString", "post", "legacyDate", "Date", "setUTCHours", "setUTCFullYear", "getTime", "greaterThan", "epochMilliseconds", "nanos", "getUTCFullYear", "getUTCMonth", "getUTCDate", "getUTCHours", "getUTCMinutes", "getUTCSeconds", "getUTCMilliseconds", "formatter", "datetime", "parts", "split", "toUpperCase", "format", "maxJSBI", "afterLatestPossibleTzdbRuleChange", "SystemUTCEpochNanoSeconds", "GetIANATimeZonePreviousTransition", "afterLatestRule", "isFarFuture", "lowercap", "rightNanos", "rightOffsetNs", "leftNanos", "leftOffsetNs", "bisect", "LeapYear", "ISODaysInMonth", "standard", "leapyear", "DayOfWeek", "m", "Y", "dow", "DayOfYear", "mon", "w", "d", "l", "BalanceISOYearMonth", "BalanceISODate", "testYear", "deltaDays", "BalanceTime", "NonNegativeModulo", "daysParam", "hoursParam", "offsetShift", "NanosecondsToDays", "TemporalInstant", "dayLengthNs", "startNs", "start", "endNs", "end", "dtStart", "dtEnd", "DifferenceISODateTime", "intermediateNs", "AddZonedDateTime", "isOverflow", "relativeInstant", "oneDayFartherNs", "relativeNs", "BalanceDuration", "nanosecondsBigInt", "microsecondsBigInt", "millisecondsBigInt", "minutesBigInt", "hoursBigInt", "UnbalanceDurationRelative", "yearsParam", "monthsParam", "weeksParam", "relativeToParam", "TemporalDuration", "oneYear", "oneMonth", "oneWeek", "relativeToDateOnly", "newRelativeTo", "untilOptions", "oneYearMonths", "oneYearDays", "MoveRelativeDate", "oneMonthDays", "oneWeekDays", "CalculateOffsetShift", "after", "CreateNegatedTemporalDuration", "propSign", "DifferenceISODate", "y1", "m1", "d1", "y2", "m2", "d2", "CompareISODate", "mid", "AddISODate", "midSign", "larger", "smaller", "DifferenceTime", "h1", "min1", "s1", "ms1", "ns1", "h2", "min2", "s2", "ms2", "ns2", "DifferenceInstant", "diff", "wholeDays", "roundedRemainder", "nsPerTimeUnit", "roundedDiff", "y1Param", "mon1Param", "d1Param", "mon2", "f", "mon1", "timeSign", "date1", "date2", "DifferenceZonedDateTime", "nsDiff", "timeRemainderNs", "intermediate", "DifferenceTemporalInstant", "operation", "otherParam", "other", "first", "GetOptionsObject", "defaultLargestUnit", "roundingIncrement", "onens", "twons", "DifferenceTemporalPlainDate", "plainDate", "otherCalendar", "calendarId", "otherCalendarId", "DifferenceTemporalPlainDateTime", "plainDateTime", "DifferenceTemporalPlainTime", "plainTime", "DifferenceTemporalPlainYearMonth", "otherCalendarID", "otherFields", "thisFields", "thisDate", "DifferenceTemporalZonedDateTime", "zonedDateTime", "AdjustRoundedDurationDays", "AddTime", "AddDuration", "w1", "w2", "D", "dateDuration1", "dateDuration2", "dateLargestUnit", "differenceOptions", "AddInstant", "i", "sum", "addedDate", "I", "dtIntermediate", "AddDurationToOrSubtractDurationFromDuration", "AddDurationToOrSubtractDurationFromInstant", "durationLike", "disallowedProperties", "record", "AddDurationToOrSubtractDurationFromPlainDateTime", "AddDurationToOrSubtractDurationFromPlainTime", "temporalTime", "AddDurationToOrSubtractDurationFromPlainYearMonth", "startDate", "durationToAdd", "optionsCopy", "AddDurationToOrSubtractDurationFromZonedDateTime", "quantity", "mode", "RoundTime", "nsPerUnit", "rounded", "DaysUntil", "MoveRelativeZonedDateTime", "direction", "dayStart", "dayEnd", "greaterThanOrEqual", "zdtRelative", "dayLength", "yearsDuration", "yearsLater", "yearsMonthsWeeksLater", "daysLater", "yearsPassed", "oldRelativeTo", "divisor", "yearsMonths", "yearsMonthsLater", "allNanoseconds", "ComparisonResult", "ToBigIntExternal", "arg", "jsbiBI", "ToBigInt", "prim", "toPrimFn", "toPrimitive", "SyntaxError", "message", "startsWith", "now", "CreateOnePropObject", "propName", "propValue", "o", "PARSE.offset", "getState", "leftParam", "rightParam", "lstateParam", "rstateParam", "left", "right", "lstate", "rstate", "middle", "mstate", "DATE", "YM", "MD", "TIME", "DATETIME", "ZONED", "INST", "ORIGINAL", "TZ_RESOLVED", "TZ_GIVEN", "CAL_ID", "LOCALE", "OPTIONS", "descriptor", "ObjectHasOwnProperty", "hasOwnProperty", "getPropLazy", "obj", "getResolvedTimeZoneLazy", "ES.ToTemporalTimeZone", "DateTimeFormatImpl", "locale", "this", "hasOptions", "original", "ro", "clonedResolved", "dateAmend", "yearMonthAmend", "monthDayAmend", "timeAmend", "datetimeAmend", "zonedDateTimeAmend", "instantAmend", "supportedLocalesOf", "locales", "propertyDescriptors", "rest", "extractOverrides", "adjustFormatterTimeZone", "formatRange", "a", "b", "isTemporalObject", "sameTemporalType", "aa", "aformatter", "atz", "bb", "bformatter", "btz", "formatToParts", "formatRangeToParts", "amend", "amended", "opt", "weekday", "timeZoneName", "dateStyle", "hasTimeOptions", "dayPeriod", "timeStyle", "hasDateOptions", "ES.IsTemporalDate", "ES.IsTemporalTime", "ES.IsTemporalDateTime", "ES.IsTemporalZonedDateTime", "ES.IsTemporalYearMonth", "ES.IsTemporalMonthDay", "ES.IsTemporalInstant", "temporalObj", "main", "DateTime", "ES.BuiltinTimeZoneGetInstantFor", "ES.ToString", "objTimeZone", "nt", "ot", "constructor", "arguments", "ES.ToBigInt", "ES.ValidateEpochNanoseconds", "epochSeconds", "epochMicroseconds", "ES.ToBigIntExternal", "ES.AddDurationToOrSubtractDurationFromInstant", "until", "ES.DifferenceTemporalInstant", "since", "round", "ES.CreateOnePropObject", "ES.GetOptionsObject", "ES.GetTemporalUnit", "ES.REQUIRED", "ES.ToTemporalRoundingMode", "ES.ToTemporalRoundingIncrement", "roundedNs", "ES.RoundInstant", "equals", "ES.ToTemporalInstant", "ES.ToSecondsStringPrecision", "ES.TemporalInstantToString", "toJSON", "toLocaleString", "valueOf", "toZonedDateTime", "ES.IsObject", "ES.ToTemporalCalendar", "ES.CreateTemporalZonedDateTime", "toZonedDateTimeISO", "timeZoneProperty", "ES.GetISO8601Calendar", "fromEpochSeconds", "epochSecondsParam", "ES.ToNumber", "fromEpochMilliseconds", "epochMillisecondsParam", "fromEpochMicroseconds", "epochMicrosecondsParam", "fromEpochNanoseconds", "epochNanosecondsParam", "compare", "oneParam", "twoParam", "oneNs", "twoNs", "ArraySort", "ObjectEntries", "entries", "ObjectKeys", "impl", "Calendar", "idParam", "ES.IsBuiltinCalendar", "ES.IsTemporalCalendar", "fieldsArray", "Set", "delete", "dateParam", "durationParam", "ES.ToTemporalDate", "ES.ToTemporalDuration", "ES.ToTemporalOverflow", "ES.BalanceDuration", "monthCodeNumberPart", "buildMonthCode", "leap", "resolveNonLunisolarMonth", "calendarDate", "monthsPerYear", "ES.RejectToRange", "ES.ConstrainToRange", "numberPart", "fieldsParam", "ES.PrepareTemporalFields", "ES.RegulateISODate", "ES.CreateTemporalDate", "ES.CreateTemporalYearMonth", "useYear", "ES.CreateTemporalMonthDay", "merged", "nextKey", "newKeys", "ES.AddISODate", "ES.DifferenceISODate", "ES.DayOfWeek", "ES.DayOfYear", "doy", "doj", "ES.ISODaysInMonth", "ES.LeapYear", "OneObjectCache", "cacheToClone", "calls", "hits", "misses", "performance", "entry", "MAX_CACHE_ENTRIES", "report", "setObject", "objectMap", "getCacheForObject", "cache", "toUtcIsoDateString", "ES.ISOYearString", "ES.ISODateTimePartString", "simpleDateDiff", "HelperBase", "eraLength", "hasEra", "getFormatter", "isoToCalendarDate", "isoDate", "JSON", "stringify", "func", "cached", "dateTimeFormat", "type", "matches", "monthExtra", "normalize", "replace", "toLowerCase", "reviseIntlEra", "checkIcuBugs", "adjustCalendarDate", "keyReverse", "validateCalendarDate", "constantEra", "calendarDateParam", "fromLegacyDate", "calendarType", "largestMonth", "regulateMonthDayNaive", "maximumMonthLength", "calendarToIsoDate", "originalDate", "keyOriginal", "isoEstimate", "estimateIsoDate", "calculateSameMonthResult", "diffDays", "testIsoEstimate", "addDaysIso", "minimumMonthLength", "testCalendarDate", "roundtripEstimate", "diffTotalDaysEstimate", "compareCalendarDates", "maybeConstrained", "oldRoundtripEstimate", "oldSign", "temporalToCalendarDate", "date1Param", "date2Param", "ES.ComparisonResult", "regulateDate", "addDaysCalendar", "addedIso", "addMonthsCalendar", "absMonths", "oldCalendarDate", "daysInPreviousMonth", "monthsInOldYear", "addCalendar", "addedYears", "addedMonths", "initialDays", "untilCalendar", "calendarOne", "calendarTwo", "calendarDaysUntil", "totalDays", "diffYears", "diffMonths", "current", "next", "addedIsoDate", "addedCalendarDate", "endOfMonthIso", "previousMonthDate", "previousMonth", "lastDayOfPreviousMonthIso", "startOfCalendarYear", "startOfCalendarMonth", "oneIso", "twoIso", "isoDaysUntil", "closestCalendar", "closestIso", "calendarYear", "roundTripCalendarDate", "HebrewHelper", "super", "Tishri", "regular", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "minMaxMonthLength", "minOrMax", "getMonthCode", "monthInfo", "find", "IslamicBaseHelper", "DAYS_PER_ISLAMIC_YEAR", "DAYS_PER_ISO_YEAR", "IslamicHelper", "IslamicUmalquraHelper", "IslamicTblaHelper", "IslamicCivilHelper", "IslamicRgsaHelper", "IslamicCcHelper", "PersianHelper", "IndianHelper", "nextYear", "vulnerableToBceBug", "toLocaleDateString", "isGregorianLeapYear", "getMonthInfo", "GregorianBaseHelper", "originalEras", "v8IsVulnerableToJulianBug", "calendarIsVulnerableToJulianBug", "eras", "anchorEra", "erasParam", "reverseOf", "filter", "isAnchor", "anchorEpoch", "hasYearZero", "reversedEra", "isoEpoch", "e1", "e2", "lastEraReversed", "genericName", "completeEraYear", "checkField", "currentValue", "eraFromYear", "adjustedCalendarDate", "matchingEra", "ES.CompareISODate", "OrthodoxBaseHelper", "EthioaaHelper", "CopticHelper", "EthiopicHelper", "RocHelper", "BuddhistHelper", "GregoryHelper", "JapaneseHelper", "ChineseBaseHelper", "getMonthList", "getCalendarDate", "daysPastFeb1", "isoStringFeb1", "setUTCDate", "newYearGuess", "calendarMonthString", "tv", "calendarDay", "calendarYearToVerify", "isoDaysDelta", "oldCalendarDay", "oldMonthString", "monthIndex", "done", "monthString", "withoutML", "monthEntries", "matchingMonthEntry", "ChineseHelper", "DangiHelper", "nonIsoImpl", "helper", "fieldsCopy", "additionalFieldsCopy", "newMonth", "newMonthCode", "newYear", "newEra", "newEraYear", "added", "isoAdded", "newTemporalObject", "cacheOne", "cacheTwo", "startOfYear", "startOfMonthCalendar", "startOfNextMonthCalendar", "startOfYearCalendar", "startOfNextYearCalendar", "Helper", "PlainDate", "isoYearParam", "isoMonthParam", "isoDayParam", "calendarParam", "ES.ToIntegerThrowOnInfinity", "ES.CreateTemporalDateSlots", "ES.CalendarEra", "ES.CalendarEraYear", "ES.CalendarYear", "ES.CalendarMonth", "ES.CalendarMonthCode", "ES.CalendarDay", "ES.CalendarDayOfWeek", "ES.CalendarDayOfYear", "ES.CalendarWeekOfYear", "ES.CalendarDaysInWeek", "ES.CalendarDaysInMonth", "ES.CalendarDaysInYear", "ES.CalendarMonthsInYear", "ES.CalendarInLeapYear", "with", "temporalDateLike", "ES.RejectObjectWithCalendarOrTimeZone", "ES.CalendarFields", "props", "ES.CalendarMergeFields", "ES.CalendarDateFromFields", "withCalendar", "ES.CalendarDateAdd", "ES.CreateNegatedTemporalDuration", "ES.DifferenceTemporalPlainDate", "slot", "ES.CalendarEquals", "ES.TemporalDateToString", "ES.ToShowCalendarOption", "toPlainDateTime", "temporalTimeParam", "ES.CreateTemporalDateTime", "ES.ToTemporalTime", "timeZoneLike", "toPlainYearMonth", "ES.CalendarYearMonthFromFields", "toPlainMonthDay", "ES.CalendarMonthDayFromFields", "getISOFields", "ES.CreateTemporalDateTimeSlots", "temporalDateTimeLike", "ES.InterpretTemporalDateTimeFields", "withPlainTime", "withPlainDate", "temporalDateParam", "temporalDate", "ES.ConsolidateCalendars", "ES.AddDurationToOrSubtractDurationFromPlainDateTime", "ES.DifferenceTemporalPlainDateTime", "ES.RoundISODateTime", "ES.ToTemporalDateTime", "ES.TemporalDateTimeToString", "ES.ToTemporalDisambiguation", "toPlainDate", "ES.TemporalDateTimeToDate", "toPlainTime", "ES.TemporalDateTimeToTime", "isoHour", "isoMicrosecond", "isoMillisecond", "isoMinute", "isoNanosecond", "isoSecond", "val1", "val2", "Duration", "ES.ToIntegerWithoutRounding", "ES.RejectDuration", "ES.IsTemporalDuration", "ES.DurationSign", "blank", "negated", "ES.AddDurationToOrSubtractDurationFromDuration", "ES.DefaultTemporalLargestUnit", "smallestUnitPresent", "ES.LargerOfTwoTemporalUnits", "largestUnitPresent", "ES.ToTemporalDateTimeRoundingIncrement", "ES.ToRelativeTemporalObject", "ES.UnbalanceDurationRelative", "ES.RoundDuration", "ES.AdjustRoundedDurationDays", "untilResult", "ES.MoveRelativeZonedDateTime", "ES.TemporalDurationToString", "DurationFormat", "console", "warn", "j", "shift1", "ES.CalculateOffsetShift", "shift2", "totalNs1", "ES.TotalDurationNanoseconds", "totalNs2", "PlainMonthDay", "referenceISOYearParam", "ES.CreateTemporalMonthDaySlots", "temporalMonthDayLike", "ES.ToTemporalMonthDay", "ES.TemporalMonthDayToString", "receiverFieldNames", "inputFieldNames", "mergedFields", "ES.SystemUTCEpochNanoSeconds", "tZ", "ES.BuiltinTimeZoneGetPlainDateTimeFor", "plainDateTimeISO", "SystemTimeZone", "fmt", "ES.SystemTimeZone", "Now", "plainDateISO", "plainTimeISO", "zonedDateTimeISO", "TemporalTimeToString", "ES.RoundTime", "ES.FormatSecondsStringPart", "PlainTime", "isoHourParam", "isoMinuteParam", "isoSecondParam", "isoMillisecondParam", "isoMicrosecondParam", "isoNanosecondParam", "ES.RejectTime", "temporalTimeLike", "partialTime", "ES.ToTemporalTimeRecord", "ES.RegulateTime", "ES.AddDurationToOrSubtractDurationFromPlainTime", "ES.DifferenceTemporalPlainTime", "TimeZone", "timeZoneIdentifierParam", "ES.GetCanonicalTimeZoneIdentifier", "ES.IsTemporalTimeZone", "instantParam", "ES.TestTimeZoneOffsetString", "ES.ParseTimeZoneOffsetString", "ES.GetIANATimeZoneOffsetNanoseconds", "getOffsetStringFor", "ES.BuiltinTimeZoneGetOffsetStringFor", "getPlainDateTimeFor", "getInstantFor", "dateTimeParam", "ES.GetEpochFromISOParts", "nsEarlier", "nsLater", "earliest", "latest", "getNextTransition", "startingPointParam", "startingPoint", "oneYearLater", "uppercap", "getPreviousTransition", "ES.GetIANATimeZonePreviousTransition", "PlainYearMonth", "referenceISODayParam", "ES.CreateTemporalYearMonthSlots", "temporalYearMonthLike", "ES.AddDurationToOrSubtractDurationFromPlainYearMonth", "ES.DifferenceTemporalPlainYearMonth", "ES.ToTemporalYearMonth", "ES.TemporalYearMonthToString", "ZonedDateTime", "timeZoneParam", "ES.CreateTemporalZonedDateTimeSlots", "hoursInDay", "today", "tomorrowFields", "tomorrow", "todayNs", "tomorrowNs", "ES.GetOffsetNanosecondsFor", "temporalZonedDateTimeLike", "ES.ToTemporalOffset", "fieldsWithOffset", "ES.ArrayPush", "fieldsWithTimeZoneAndOffset", "ES.InterpretISODateTimeOffset", "thisDt", "withTimeZone", "ES.AddDurationToOrSubtractDurationFromZonedDateTime", "ES.DifferenceTemporalZonedDateTime", "instantStart", "ES.AddZonedDateTime", "ES.ToTemporalZonedDateTime", "ES.TimeZoneEquals", "ES.TemporalZonedDateTimeToString", "startOfDay", "toInstant", "wt", "ft", "types", "Temporal.Instant", "Temporal.Calendar", "Temporal.PlainDate", "Temporal.PlainDateTime", "Temporal.Duration", "Temporal.PlainMonthDay", "Temporal.PlainTime", "Temporal.TimeZone", "Temporal.PlainYearMonth", "Temporal.ZonedDateTime", "type", "descriptor", "Object", "getOwnPropertyDescriptor", "configurable", "enumerable", "writable", "defineProperty", "sleep", "durationInMillisecond", "resolve", "getCurrentTimeInHighPrecision", "wt", "createLevelDatabase", "location", "options", "Level", "LevelWrapper", "config", "db", "sleep", "name", "key", "_a", "abortOr", "error", "__await", "_d", "__asyncValues", "_e", "_b", "iteratorOptions", "entry", "value", "_c", "_key", "operations", "range", "root", "prefix", "parent", "BlockstoreLevel", "config", "db", "createLevelDatabase", "LevelWrapper", "name", "key", "val", "options", "CID", "source", "source_1", "__asyncValues", "source_1_1", "__await", "entry", "source_2", "source_2_1", "li", "li_1", "li_1_1", "value", "source_3", "source_3_1", "_b", "_a", "init_shim", "import_err_code", "init_shim", "import_err_code", "init_shim", "import_err_code", "init_shim", "hashFn", "buf", "murmur3128", "addLinksToHamtBucket", "links", "bucket", "rootBucket", "link", "pos", "Bucket", "toPrefix", "position", "toBucketPath", "path", "findShardCid", "node", "name", "blockstore", "context", "options", "createHAMT", "prefix", "bucketPath", "entryPrefix", "entryName", "block", "decode", "find_cid_in_shard_default", "init_shim", "init_shim", "extractDataFromBlock", "block", "blockStart", "requestedStart", "requestedEnd", "blockLength", "blockEnd", "extract_data_from_block_default", "init_shim", "import_err_code", "validateOffsetAndLength", "size", "offset", "length", "fileSize", "start", "end", "errCode", "validate_offset_and_length_default", "import_err_code", "init_shim", "init_shim", "FixedFIFO", "hwm", "data", "last", "FIFO", "options", "obj", "val", "prev", "next", "pushable", "options", "_pushable", "buffer", "next", "_pushable", "getNext", "options", "onEnd", "buffer", "FIFO", "pushable", "onNext", "ended", "waitNext", "resolve", "reject", "next", "err", "bufferNext", "bufferError", "push", "value", "end", "_return", "_throw", "init_shim", "init_shim", "pDefer", "deferred", "resolve", "reject", "CustomEvent", "parallel", "source", "options", "concurrency", "ordered", "emitter", "ops", "slotAvailable", "pDefer", "resultAvailable", "sourceFinished", "sourceErr", "opErred", "task", "op", "result", "err", "valuesAvailable", "yieldOrderedValues", "yieldUnOrderedValues", "i", "init_shim", "init_shim", "isAsyncIterable", "thing", "merge", "sources", "syncSources", "source", "output", "pushable", "item", "err", "src_default", "pipe", "first", "rest", "isDuplex", "duplex", "isIterable", "isAsyncIterable", "source", "fns", "duplexPipelineFn", "rawPipe", "res", "obj", "p", "stream", "pushable", "err", "sourceWrap", "src_default", "init_shim", "init_shim", "peekable", "iterable", "iterator", "symbol", "queue", "value", "src_default", "isAsyncIterable", "thing", "map", "source", "func", "val", "peekable", "src_default", "value", "done", "res", "fn", "init_shim", "import_eventemitter3", "init_shim", "TimeoutError", "message", "AbortError", "getDOMException", "errorMessage", "getAbortedReason", "signal", "reason", "pTimeout", "promise", "milliseconds", "fallback", "options", "timer", "cancelablePromise", "resolve", "reject", "error", "timeoutError", "init_shim", "init_shim", "lowerBound", "array", "value", "comparator", "first", "count", "step", "it", "__classPrivateFieldGet", "receiver", "state", "kind", "f", "_PriorityQueue_queue", "PriorityQueue", "run", "options", "element", "index", "lowerBound", "b", "item", "__classPrivateFieldSet", "receiver", "state", "value", "kind", "f", "__classPrivateFieldGet", "_PQueue_instances", "_PQueue_carryoverConcurrencyCount", "_PQueue_isIntervalIgnored", "_PQueue_intervalCount", "_PQueue_intervalCap", "_PQueue_interval", "_PQueue_intervalEnd", "_PQueue_intervalId", "_PQueue_timeoutId", "_PQueue_queue", "_PQueue_queueClass", "_PQueue_pending", "_PQueue_concurrency", "_PQueue_isPaused", "_PQueue_throwOnTimeout", "_PQueue_doesIntervalAllowAnother_get", "_PQueue_doesConcurrentAllowAnother_get", "_PQueue_next", "_PQueue_onResumeInterval", "_PQueue_isIntervalPaused_get", "_PQueue_tryToStartAnother", "_PQueue_initializeIntervalIfNeeded", "_PQueue_onInterval", "_PQueue_processQueue", "_PQueue_throwOnAbort", "_PQueue_onEvent", "AbortError", "PQueue", "EventEmitter", "options", "_a", "_b", "_c", "_d", "PriorityQueue", "newConcurrency", "function_", "resolve", "reject", "operation", "pTimeout", "result", "error", "TimeoutError", "functions", "limit", "now", "delay", "canInitializeInterval", "job", "signal", "_resolve", "event", "filter", "listener", "walkDAG", "blockstore", "node", "queue", "streamPosition", "start", "end", "options", "buf", "extract_data_from_block_default", "errCode", "file", "UnixFS", "err", "data", "childOps", "i", "childLink", "childStart", "childEnd", "pipe", "source", "src_default", "op", "block", "parallel", "link", "blockStart", "child", "code", "decode", "childQueue", "PQueue", "error", "CustomProgressEvent", "fileContent", "cid", "unixfs", "path", "resolve", "depth", "yieldFileContent", "fileSize", "validate_offset_and_length_default", "read", "wanted", "pushable", "file_default", "init_shim", "init_shim", "isAsyncIterable", "thing", "filter", "source", "fn", "entry", "peekable", "src_default", "value", "done", "res", "func", "directoryContent", "cid", "node", "unixfs", "path", "resolve", "depth", "blockstore", "yieldDirectoryContent", "options", "offset", "length", "links", "CustomProgressEvent", "pipe", "source", "src_default", "link", "linkName", "linkPath", "parallel", "entry", "directory_default", "init_shim", "hamtShardedDirectoryContent", "cid", "node", "unixfs", "path", "resolve", "depth", "blockstore", "yieldHamtDirectoryContent", "options", "CustomProgressEvent", "listDirectory", "links", "results", "pipe", "source", "src_default", "link", "name", "result", "block", "decode", "parallel", "entries", "hamt_sharded_directory_default", "findLinkCid", "node", "name", "link", "contentExporters", "file_default", "directory_default", "hamt_sharded_directory_default", "cid", "unixfs", "path", "resolve", "depth", "blockstore", "unixFsResolver", "toResolve", "options", "block", "decode", "next", "errCode", "UnixFS", "err", "linkCid", "find_cid_in_shard_default", "nextName", "nextPath", "content", "unixfs_v1_default", "init_shim", "import_err_code", "rawContent", "node", "contentGenerator", "options", "start", "end", "validate_offset_and_length_default", "buf", "extract_data_from_block_default", "CustomProgressEvent", "resolve", "cid", "name", "path", "toResolve", "depth", "blockstore", "errCode", "block", "raw_default", "init_shim", "import_err_code", "resolve", "cid", "name", "path", "toResolve", "depth", "blockstore", "options", "block", "object", "decode", "subObject", "subPath", "prop", "subObjectCid", "CID", "errCode", "dag_cbor_default", "init_shim", "import_err_code", "rawContent", "node", "contentGenerator", "options", "start", "end", "validate_offset_and_length_default", "buf", "extract_data_from_block_default", "CustomProgressEvent", "resolve", "cid", "name", "path", "toResolve", "depth", "blockstore", "errCode", "decode", "identity_default", "resolvers", "code", "unixfs_v1_default", "raw_default", "dag_cbor_default", "identity", "identity_default", "resolve", "cid", "name", "path", "toResolve", "depth", "blockstore", "options", "resolver", "errCode", "resolvers_default", "init_shim", "isAsyncIterable", "thing", "last", "source", "res", "entry", "src_default", "toPathComponents", "path", "cidAndRest", "CID", "cid", "output", "errCode", "walkPath", "blockstore", "options", "toResolve", "name", "entryPath", "startingDepth", "result", "resolvers_default", "exporter", "src_default", "import_readable_stream", "PLACEHOLDER_VALUE", "DataStoreLevel", "config", "createLevelDatabase", "BlockstoreLevel", "tenant", "messageCid", "dataCid", "dataStream", "blockstoreForData", "asyncDataBlocks", "importer", "dataDagRoot", "asyncDataBlocks_1", "__asyncValues", "asyncDataBlocks_1_1", "_c", "_b", "exporter", "contentIterator", "result", "dataSize", "blockstoreForReferenceCounting", "_a", "referenceCountingPartitionName", "dataPartitionName", "init_shim", "textEncoder", "textDecoder", "Encoder", "base64urlString", "base64url", "payloadBytes", "payloadString", "bytes", "content", "obj", "objectString", "init_shim", "init_shim", "nodeCrypto", "_0n", "_1n", "_2n", "CU_O", "CURVE", "POW_2_256", "SQRT_M1", "SQRT_D", "SQRT_AD_MINUS_ONE", "INVSQRT_A_MINUS_D", "ONE_MINUS_D_SQ", "D_MINUS_ONE_SQ", "ExtendedPoint", "x", "y", "z", "t", "p", "Point", "_1n", "mod", "points", "toInv", "invertBatch", "i", "other", "assertExtPoint", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "X1Z2", "X2Z1", "Y1Z2", "Y2Z1", "a", "CURVE", "A", "B", "C", "_2n", "D", "x1y1", "E", "G", "F", "H", "X3", "Y3", "T3", "Z3", "T1", "T2", "_0n", "W", "windows", "base", "window", "n", "affinePoint", "precomputes", "pointPrecomputes", "f", "windowSize", "mask", "maxNumber", "shiftBy", "offset", "wbits", "pr", "cached", "scalar", "normalizeScalar", "P0", "d", "invZ", "invert", "ax", "ay", "legacyRist", "assertRstPoint", "RistrettoPoint", "ep", "r0", "r", "Ns", "c", "Ns_D_is_sq", "s", "uvRatio", "s_", "edIsNegative", "Nt", "s2", "W0", "W1", "W2", "W3", "hex", "ensureBytes", "r1", "bytes255ToNumberLE", "R1", "r2", "R2", "emsg", "equalBytes", "numberTo32BytesLE", "u1", "u2", "u1_2", "u2_2", "v", "isValid", "I", "invertSqrt", "Dx", "Dy", "u2sq", "invsqrt", "D1", "D2", "zInv", "_x", "_y", "bytesToHex", "b", "one", "two", "strict", "P", "normed", "bytesToNumberLE", "y2", "u", "isXOdd", "privateKey", "getExtendedPublicKey", "bytes", "Signature", "u8", "concatBytes", "arrays", "a", "length", "arr", "result", "pad", "hexes", "v", "i", "bytesToHex", "uint8a", "hex", "hexToBytes", "array", "j", "hexByte", "byte", "numberTo32BytesBE", "num", "numberTo32BytesLE", "edIsNegative", "mod", "_1n", "bytesToNumberLE", "MAX_255B", "bytes255ToNumberLE", "bytes", "b", "CURVE", "res", "_0n", "invert", "number", "modulo", "x", "y", "u", "q", "r", "m", "n", "invertBatch", "nums", "p", "tmp", "lastMultiplied", "acc", "inverted", "pow2", "power", "P", "pow_2_252_3", "_5n", "_10n", "_20n", "_40n", "_80n", "b2", "b4", "_2n", "b5", "b10", "b20", "b40", "b80", "b160", "b240", "b250", "uvRatio", "v3", "v7", "pow", "vx2", "root1", "root2", "SQRT_M1", "useRoot1", "useRoot2", "noRoot", "invertSqrt", "modlLE", "hash", "equalBytes", "b1", "ensureBytes", "expectedLength", "normalizeScalar", "max", "strict", "adjustBytes25519", "checkPrivateKey", "key", "numberTo32BytesBE", "normalizeScalar", "POW_2_256", "ensureBytes", "getKeyFromHash", "hashed", "head", "adjustBytes25519", "prefix", "scalar", "modlLE", "point", "Point", "pointBytes", "_sha512Sync", "getExtendedPublicKey", "key", "getKeyFromHash", "utils", "checkPrivateKey", "getPublicKey", "privateKey", "getExtendedPublicKey", "sign", "message", "privateKey", "ensureBytes", "prefix", "scalar", "pointBytes", "getExtendedPublicKey", "r", "modlLE", "utils", "R", "Point", "k", "s", "mod", "CURVE", "Signature", "prepareVerification", "sig", "message", "publicKey", "ensureBytes", "Point", "r", "s", "Signature", "SB", "ExtendedPoint", "finishVerification", "hashed", "k", "modlLE", "kA", "CURVE", "verify", "msg", "pub", "utils", "Point", "crypto", "nodeCrypto", "utils", "bytesToHex", "hexToBytes", "concatBytes", "getExtendedPublicKey", "mod", "invert", "hash", "ensureBytes", "bytesToNumberLE", "CURVE", "_1n", "bytesLength", "randomBytes", "messages", "message", "buffer", "windowSize", "point", "Point", "cached", "_2n", "_sha512Sync", "val", "validateKey", "jwk", "publicKeyToJwk", "publicKeyBytes", "Encoder", "ed25519", "content", "privateJwk", "privateKeyBytes", "sign", "signature", "publicJwk", "verify", "__awaiter", "utils", "getPublicKey", "d", "init_shim", "nodeCrypto", "_0n", "_1n", "_2n", "_3n", "_8n", "CURVE", "divNearest", "a", "b", "endo", "k", "n", "a1", "b1", "a2", "b2", "POW_2_128", "c1", "c2", "k1", "mod", "k2", "k1neg", "k2neg", "fieldLen", "groupLen", "hashLen", "compressedLen", "uncompressedLen", "weierstrass", "x", "a", "b", "CURVE", "x2", "mod", "x3", "USE_ENDOMORPHISM", "_0n", "ShaError", "message", "assertJacPoint", "other", "JacobianPoint", "y", "z", "p", "Point", "_1n", "points", "toInv", "invertBatch", "i", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "Z1Z1", "Z2Z2", "U1", "U2", "S1", "S2", "A", "B", "C", "x1b", "D", "_2n", "E", "_3n", "F", "X3", "Y3", "_8n", "Z3", "H", "r", "HH", "HHH", "V", "scalar", "P0", "n", "normalizeScalar", "d", "k1neg", "k1", "k2neg", "k2", "endo", "k1p", "k2p", "W", "windows", "base", "window", "affinePoint", "precomputes", "pointPrecomputes", "f", "windowSize", "mask", "maxNumber", "shiftBy", "offset", "wbits", "offset1", "offset2", "cond1", "cond2", "constTimeNegate", "point", "fake", "f1p", "f2p", "invZ", "is0", "invert", "iz1", "iz2", "iz3", "ax", "ay", "zz", "condition", "item", "neg", "bytes", "isShort", "bytesToNumber", "isValidFieldElement", "y2", "sqrtMod", "isYOdd", "fieldLen", "hex", "ensureBytes", "len", "header", "compressedLen", "uncompressedLen", "privateKey", "normalizePrivateKey", "msgHash", "signature", "recovery", "s", "normalizeSignature", "h", "truncateHash", "radj", "rinv", "u1", "u2", "prefix", "R", "numTo32bStr", "Q", "isCompressed", "hexToBytes", "msg", "left", "right", "P", "aP", "bQ", "sum", "sliceDER", "parseDERInt", "data", "bytesToHex", "res", "parseDERSignature", "sBytes", "rBytesLeft", "Signature", "arr", "name", "str", "hexToNumber", "isWithinCurveOrder", "HALF", "sHex", "numberToHexUnpadded", "rHex", "sHexL", "rHexL", "sLen", "rLen", "concatBytes", "arrays", "length", "result", "pad", "hexes", "v", "uint8a", "POW_2_256", "num", "numTo32b", "array", "j", "hexByte", "byte", "pow2", "power", "_6n", "_11n", "_22n", "_23n", "_44n", "_88n", "b2", "b3", "b6", "b9", "b11", "b22", "b44", "b88", "b176", "b220", "b223", "t1", "t2", "rt", "number", "modulo", "u", "q", "m", "nums", "scratch", "lastMultiplied", "acc", "inverted", "bits2int_2", "delta", "groupLen", "hash", "truncateOnly", "_sha256Sync", "_hmacSha256Sync", "HmacDrbg", "hashLen", "qByteLen", "values", "utils", "seed", "out", "sl", "kmdToSig", "kBytes", "lowS", "k", "kinv", "sig", "key", "normalizePublicKey", "publicKey", "getPublicKey", "bits2int", "bytes", "slice", "fieldLen", "bytesToNumber", "bits2octets", "z1", "z2", "mod", "CURVE", "int2octets", "_0n", "num", "numTo32b", "initSigArgs", "msgHash", "privateKey", "extraEntropy", "h1", "ensureBytes", "d", "normalizePrivateKey", "seedArgs", "utils", "e", "seed", "concatBytes", "m", "finalizeSig", "recSig", "opts", "sig", "recovery", "der", "recovered", "hashed", "sign", "privKey", "drbg", "HmacDrbg", "hashLen", "groupLen", "kmdToSig", "vopts", "verify", "signature", "msgHash", "publicKey", "opts", "sig", "normalizeSignature", "ensureBytes", "r", "s", "h", "truncateHash", "P", "normalizePublicKey", "n", "CURVE", "sinv", "invert", "u1", "mod", "u2", "R", "Point", "Point", "crypto", "nodeCrypto", "TAGGED_HASH_PREFIXES", "utils", "bytesToHex", "hexToBytes", "concatBytes", "mod", "invert", "privateKey", "normalizePrivateKey", "numTo32b", "hash", "ensureBytes", "minLen", "groupLen", "num", "bytesToNumber", "CURVE", "_1n", "bytesLength", "crypto", "randomBytes", "windowSize", "point", "Point", "cached", "_3n", "messages", "buffer", "createHash", "m", "key", "ckey", "message", "createHmac", "tag", "tagP", "tagH", "c", "_sha256Sync", "ShaError", "JacobianPoint", "val", "_hmacSha256Sync", "import_secp256k1", "init_shim", "DwnError", "code", "message", "DwnErrorCode", "Secp256k1", "jwk", "DwnError", "DwnErrorCode", "publicKeyBytes", "uncompressedPublicKeyBytes", "publicKeyHex", "utils", "Point", "x", "Encoder", "y", "privateKeyBytes", "publicJwk", "privateJwk", "content", "hashedContent", "sha256", "sign", "signature", "verify", "getPublicKey", "d", "privateKey", "key", "relativePath", "currentPublicKey", "segment", "hash", "currentPrivateKey", "uncompressedPublicKey", "tweakInput", "publicKeyBuffer", "tweakBuffer", "secp256k1Derivation", "privateKeyBuffer", "pathSegments", "signers", "ed25519", "Secp256k1", "GeneralJwsSigner", "jws", "payload", "signatureInputs", "Encoder", "signer", "signatureInput", "privateJwk", "protectedHeader", "signers", "protectedHeaderString", "protectedHeaderBase64UrlString", "signingInputString", "signingInputBytes", "signatureBytes", "signature", "import_isPlainObject", "Jws", "signatureEntry", "kid", "Encoder", "base64UrlPayload", "jwkPublic", "verifier", "signers", "payload", "signatureBytes", "jws", "payloadJson", "isPlainObject", "did", "keyMaterials", "keyMaterial", "init_shim", "lexicographicalCompare", "a", "b", "init_shim", "precompiled_validators_exports", "__export", "Definitions", "EventsGet", "GeneralJwk", "GeneralJws", "HooksWrite", "JwkVerificationMethod", "MessagesGet", "PermissionsDefinitions", "PermissionsGrant", "PermissionsRequest", "ProtocolDefinition", "ProtocolRuleSet", "ProtocolsConfigure", "ProtocolsQuery", "PublicJwk", "RecordsDelete", "RecordsQuery", "RecordsRead", "RecordsWrite", "init_shim", "validate10", "schema11", "pattern0", "validate11", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "_errs1", "key0", "data0", "_errs2", "valid0", "data1", "_errs5", "valid2", "len0", "i0", "data2", "_errs7", "data3", "_errs9", "valid3", "data4", "_errs12", "validate10", "missing0", "_errs3", "missing1", "key1", "_errs6", "schema11", "valid1", "_errs8", "_errs10", "RecordsQuery", "validate14", "schema17", "pattern3", "pattern4", "func2", "validate14", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "missing0", "_errs1", "key0", "_errs2", "validate11", "valid0", "data1", "_errs3", "missing1", "_errs5", "key1", "data2", "_errs6", "schema17", "valid1", "data3", "_errs8", "data4", "_errs10", "data5", "_errs13", "_errs15", "key2", "_errs16", "valid3", "data7", "_errs18", "data8", "_errs21", "_errs24", "_errs26", "_errs28", "_errs30", "_errs32", "data14", "_errs34", "_errs36", "key3", "data15", "_errs37", "valid6", "data16", "_errs40", "data17", "_errs43", "RecordsWrite", "validate16", "schema23", "schema28", "validate19", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "_errs0", "_errs2", "valid1", "passing0", "_errs3", "missing0", "err0", "_errs4", "err1", "valid2", "_errs5", "err2", "_errs7", "err3", "_errs9", "err4", "_errs11", "err5", "_valid0", "_errs13", "missing1", "err6", "_errs14", "err7", "valid3", "_errs15", "err8", "_errs17", "err9", "_errs19", "err10", "_errs21", "missing2", "err11", "_errs22", "err12", "valid4", "_errs23", "err13", "_errs25", "err14", "_errs27", "err15", "_errs29", "err16", "_errs31", "err17", "_errs33", "err18", "_errs35", "err19", "_errs37", "err20", "data18", "_errs39", "err21", "_errs41", "missing3", "err22", "_errs42", "err23", "valid5", "_errs43", "err24", "err25", "missing4", "_errs45", "valid6", "_errs47", "data23", "_errs49", "_errs50", "_errs52", "_errs54", "_errs56", "_errs58", "_errs60", "_errs62", "valid0", "_errs64", "_errs65", "_errs66", "valid8", "_errs67", "_errs69", "valid9", "_errs70", "missing5", "err26", "_valid2", "err27", "err28", "err29", "_valid1", "_errs72", "_errs74", "valid11", "_errs75", "missing6", "err30", "_valid3", "err31", "err32", "err33", "_errs77", "_errs79", "valid13", "_errs80", "missing7", "err34", "_valid4", "_errs81", "missing8", "err35", "_errs82", "missing9", "err36", "_errs83", "missing10", "err37", "_errs84", "missing11", "err38", "_errs85", "missing12", "err39", "_errs86", "missing13", "err40", "err41", "_errs87", "err42", "valid14", "data34", "_errs88", "err43", "err44", "err45", "valid7", "pattern13", "validate16", "data0", "_errs6", "_errs8", "_errs10", "data1", "data2", "_errs18", "_errs20", "key0", "validate11", "_errs26", "data7", "key1", "data8", "_errs30", "schema23", "data9", "_errs32", "pattern0", "data10", "len0", "i0", "data11", "key2", "data12", "_errs40", "valid12", "data13", "data14", "_errs44", "data15", "data17", "_errs51", "valid17", "_errs59", "data19", "_errs63", "valid19", "data20", "_errs68", "valid22", "valid21", "_errs71", "_errs73", "valid23", "key3", "func2", "data21", "valid24", "data22", "pattern4", "data25", "_errs90", "data29", "_errs92", "data30", "_errs94", "pattern3", "data31", "_errs97", "_errs100", "data33", "_errs102", "_errs105", "EventsGet", "validate21", "schema34", "_errs1", "data3", "Definitions", "validate12", "validate12", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "GeneralJwk", "validate23", "_errs1", "valid0", "passing0", "_errs2", "missing0", "err0", "_errs3", "err1", "valid1", "_errs4", "err2", "_errs6", "err3", "_errs8", "err4", "_errs10", "err5", "_valid0", "_errs12", "missing1", "err6", "_errs13", "err7", "valid2", "_errs14", "err8", "_errs16", "err9", "_errs18", "err10", "_errs20", "missing2", "err11", "_errs21", "err12", "valid3", "_errs22", "err13", "_errs24", "err14", "_errs26", "err15", "_errs28", "err16", "_errs30", "err17", "_errs32", "err18", "_errs34", "err19", "_errs36", "err20", "data18", "_errs38", "err21", "_errs40", "missing3", "err22", "_errs41", "err23", "valid4", "_errs42", "err24", "err25", "missing4", "_errs44", "valid5", "_errs46", "data23", "_errs48", "schema28", "_errs49", "_errs51", "_errs53", "_errs55", "_errs57", "_errs59", "_errs61", "GeneralJws", "validate11", "HooksWrite", "validate24", "schema36", "key0", "data1", "_errs5", "key1", "data2", "data3", "data4", "pattern3", "data6", "_errs15", "_errs17", "key2", "JwkVerificationMethod", "validate26", "validate26", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "missing0", "_errs1", "key0", "_errs2", "valid0", "_errs4", "data2", "_errs5", "pattern4", "_errs8", "validate19", "MessagesGet", "validate28", "schema40", "validate11", "data1", "_errs3", "missing1", "key1", "_errs6", "valid1", "data3", "data4", "_errs10", "valid2", "len0", "i0", "_errs12", "PermissionsDefinitions", "validate30", "validate30", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "PermissionsGrant", "validate31", "schema42", "schema43", "pattern21", "validate31", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "missing0", "_errs1", "key0", "_errs2", "validate11", "valid0", "_errs3", "data2", "_errs4", "missing1", "_errs6", "key1", "func2", "schema42", "_errs7", "valid1", "data4", "_errs9", "_errs12", "key2", "data5", "_errs13", "schema43", "valid3", "_errs15", "data7", "_errs17", "_errs19", "_errs21", "_errs23", "_errs25", "data12", "_errs27", "pattern4", "data13", "_errs30", "data14", "_errs33", "data15", "_errs35", "data16", "_errs37", "_errs40", "key3", "_errs41", "valid7", "_errs43", "_errs45", "data20", "_errs47", "PermissionsRequest", "validate33", "schema48", "data1", "_errs5", "data3", "_errs8", "_errs11", "_errs14", "data6", "_errs16", "_errs18", "_errs20", "_errs22", "data10", "_errs24", "data11", "_errs32", "_errs34", "_errs38", "_errs42", "data18", "_errs44", "ProtocolDefinition", "validate35", "pattern25", "schema55", "pattern27", "wrapper0", "validate36", "data", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "errors", "_errs1", "key0", "data0", "_errs2", "valid1", "len0", "i0", "data1", "_errs4", "_errs6", "valid2", "_errs7", "missing0", "err0", "_errs8", "key1", "err1", "data2", "_errs9", "err2", "err3", "valid3", "data3", "_errs11", "err4", "err5", "_valid0", "_errs13", "missing1", "err6", "_errs14", "key2", "err7", "data4", "_errs15", "err8", "err9", "valid4", "_errs17", "err10", "data6", "_errs19", "err11", "err12", "err13", "valid0", "valid5", "key3", "_errs21", "validate35", "ProtocolRuleSet", "ProtocolsConfigure", "validate38", "schema56", "validate11", "_errs3", "_errs5", "_errs10", "_errs12", "ProtocolsQuery", "validate41", "schema57", "data5", "data7", "pattern4", "RecordsRead", "validate43", "schema59", "PublicJwk", "validate19", "validateJsonSchema", "schemaName", "payload", "validateFn", "precompiled_validators_exports", "errorObj", "instancePath", "message", "DwnInterfaceName", "DwnMethodName", "Message", "message", "Jws", "rawMessage", "dwnInterface", "dwnMethod", "schemaLookupKey", "validateJsonSchema", "computeCid", "a", "b", "cidA", "cidB", "lexicographicalCompare", "messages", "currentNewestMessage", "descriptor", "signatureInput", "authPayload", "authPayloadStr", "authPayloadBytes", "GeneralJwsSigner", "init_shim", "import_flat", "flatten", "obj", "flattened", "flat", "removeEmptyObjects", "isEmptyObject", "_", "key", "removeUndefinedProperties", "import_lru_cache", "MemoryCache", "timeToLiveInSeconds", "LruCache", "key", "value", "GeneralJwsVerifier", "jws", "cache", "MemoryCache", "didResolver", "signers", "signatureEntry", "isVerified", "cacheKey", "kid", "Jws", "publicJwk", "cachedValue", "did", "didDocument", "verificationMethods", "verificationMethod", "vm", "validateJsonSchema", "canonicalAuth", "tenant", "incomingMessage", "didResolver", "authenticate", "authorize", "validateAuthorizationIntegrity", "message", "authorizationPayloadConstraints", "DwnError", "DwnErrorCode", "payloadJson", "Jws", "descriptorCid", "expectedDescriptorCid", "computeCid", "allowedProperties", "_a", "customProperties", "propertyName", "parseCid", "jws", "GeneralJwsVerifier", "init_shim", "validateProtocolUrlNormalized", "url", "normalized", "normalizeProtocolUrl", "DwnError", "DwnErrorCode", "normalizeUrl", "validateSchemaUrlNormalized", "normalizeSchemaUrl", "fullUrl", "result", "removeTrailingSlash", "str", "DateSort", "RecordsQuery", "Message", "message", "validateAuthorizationIntegrity", "validateProtocolUrlNormalized", "validateSchemaUrlNormalized", "options", "descriptor", "DwnInterfaceName", "DwnMethodName", "_a", "getCurrentTimeInHighPrecision", "removeUndefinedProperties", "authorization", "tenant", "recipientDid", "filter", "filterCopy", "dateCreated", "rangeFilter", "protocol", "normalizeProtocolUrl", "schema", "normalizeSchemaUrl", "import_readable_stream", "DataStream", "readableStream", "resolve", "reject", "chunks", "chunk", "uint8Array", "arrayOfBytes", "totalLength", "accumulatedValue", "currentValue", "result", "length", "bytes", "currentIndex", "_size", "object", "Encoder", "KeyDerivationScheme", "import_varint", "init_shim", "Did", "did", "secondColonIndex", "DidKeyResolver", "did", "multicodecHeaderSize", "currentByte", "_scheme", "_method", "id", "idBytes", "base58btc", "multicodec", "varint", "multicodecSize", "publicKeyBytes", "keySpecificContext", "publicJwk", "ed25519", "Secp256k1", "keyId", "privateJwk", "ed25519Multicodec", "Encoder", "methodSpecificId", "Did", "import_cross_fetch", "fetch", "_a", "crossFetch", "DidIonResolver", "resolutionEndpoint", "did", "resolutionUrl", "response", "DidResolver", "resolvers", "cache", "MemoryCache", "DidIonResolver", "DidKeyResolver", "resolver", "did", "Did", "didMethod", "didResolver", "cachedResolutionResult", "resolutionResult", "didDocument", "didResolutionMetadata", "error", "errMsg", "key", "value", "_a", "_c", "_b", "init_shim", "createError", "message", "err", "ENCODING", "ENCODING_LEN", "TIME_MAX", "TIME_LEN", "RANDOM_LEN", "replaceCharAt", "str", "index", "char", "incrementBase32", "done", "charIndex", "maxCharIndex", "randomChar", "prng", "rand", "encodeTime", "now", "len", "mod", "encodeRandom", "detectPrng", "allowInsecure", "root", "browserCrypto", "buffer", "nodeCrypto", "createError", "factory", "currPrng", "seedTime", "encodeTime", "TIME_LEN", "encodeRandom", "RANDOM_LEN", "monotonicFactory", "lastTime", "lastRandom", "incrementedRandom", "incrementBase32", "newRandom", "ulid", "WATERMARKS_SUBLEVEL_NAME", "CIDS_SUBLEVEL_NAME", "EventLogLevel", "config", "createLevelDatabase", "LevelWrapper", "monotonicFactory", "tenant", "messageCid", "tenantEventLog", "watermarkLog", "cidLog", "watermark", "options", "events", "_b", "__asyncValues", "_c", "key", "value", "event", "cids", "ops", "promises", "cid", "promise", "e", "numEventsDeleted", "watermarks", "_a", "EventsGet", "Message", "message", "validateAuthorizationIntegrity", "options", "descriptor", "DwnInterfaceName", "DwnMethodName", "authorization", "init_shim", "MessageReply", "opts", "status", "entries", "data", "code", "detail", "EventsGetHandler", "didResolver", "eventLog", "tenant", "message", "eventsGet", "EventsGet", "e", "MessageReply", "authenticate", "authorize", "options", "events", "init_shim", "DwnConstant", "MessagesGet", "Message", "message", "validateAuthorizationIntegrity", "options", "descriptor", "DwnInterfaceName", "DwnMethodName", "authorization", "messageCids", "cid", "parseCid", "MessagesGetHandler", "didResolver", "messageStore", "dataStore", "tenant", "message", "messagesGet", "MessagesGet", "e", "MessageReply", "authenticate", "authorize", "promises", "messageCids", "messageCid", "promise", "_", "messages", "entry", "messageInterface", "method", "DwnInterfaceName", "DwnMethodName", "dataCid", "dataSize", "DwnConstant", "Message", "result", "dataBytes", "DataStream", "Encoder", "init_shim", "readonly", "enumerable", "configurable", "linksWithin", "path", "value", "index", "element", "elementPath", "cid", "CID", "links", "source", "base", "key", "treeWithin", "tree", "get", "node", "part", "Block", "bytes", "encode", "codec", "hasher", "hash", "decode", "IndexLevel", "config", "createLevelDatabase", "LevelWrapper", "id", "entry", "options", "flatten", "ops", "prefixes", "property", "value", "prefix", "filter", "requiredProperties", "missingPropertiesForID", "promises", "matchedIDs", "checkMatches", "promise", "_", "_a", "propertyName", "propertyFilter", "propertyValue", "propertyKey", "iteratorOptions", "range", "comparator", "matches", "key", "_b", "__asyncValues", "_c", "values", "MessageStoreLevel", "config", "createLevelDatabase", "BlockstoreLevel", "IndexLevel", "tenant", "cidString", "options", "_a", "partition", "abortOr", "cid", "CID", "bytes", "decode", "src_exports", "sha256", "filter", "messages", "resultIds", "id", "message", "indexes", "encodedMessageBlock", "encode", "encodedMessageBlockCid", "indexDocument", "_b", "_d", "_c", "ProtocolsConfigure", "Message", "message", "validateAuthorizationIntegrity", "options", "descriptor", "DwnInterfaceName", "DwnMethodName", "_a", "getCurrentTimeInHighPrecision", "authorization", "definition", "protocol", "types", "validateProtocolUrlNormalized", "typeName", "schema", "validateSchemaUrlNormalized", "typesCopy", "normalizeSchemaUrl", "normalizeProtocolUrl", "require_base64_js", "__commonJSMin", "exports", "init_shim", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "d", "s", "value", "rt", "require_buffer", "base64", "AS", "ieee754", "TS", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "numberIsNaN", "a", "x", "y", "list", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "checkInt", "min", "maxBytes", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "hi", "lo", "src", "dst", "type", "alphabet", "table", "i16", "require_browser", "module", "process", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "args", "Item", "noop", "name", "import_buffer", "import_process", "_globalThis", "__esmMin", "bt", "er", "Ma", "Object", "get", "_global", "require_err_code", "assign", "props", "key", "createError", "err", "ErrClass", "require_aspromise", "asPromise", "fn", "ctx", "params", "index", "pending", "resolve", "reject", "require_base64", "p", "s64", "chunk", "t", "invalidEncoding", "require_eventemitter", "EventEmitter", "evt", "listeners", "require_float", "factory", "f32", "f8b", "le", "writeFloat_f32_cpy", "writeFloat_f32_rev", "readFloat_f32_cpy", "readFloat_f32_rev", "writeFloat_ieee754", "writeUint", "sign", "exponent", "mantissa", "writeUintLE", "writeUintBE", "readFloat_ieee754", "readUint", "uint", "readUintLE", "readUintBE", "f64", "writeDouble_f64_cpy", "writeDouble_f64_rev", "readDouble_f64_cpy", "readDouble_f64_rev", "writeDouble_ieee754", "off0", "off1", "readDouble_ieee754", "require_inquire", "require_utf8", "utf8", "c1", "c2", "require_pool", "pool", "slice", "SIZE", "MAX", "slab", "require_longbits", "LongBits", "util", "hu", "zero", "zeroHash", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "c9", "h9", "y9", "E9", "x9", "M9", "T9", "P9", "prop", "sizeOrArray", "bits", "merge", "ifNotSet", "keys", "newError", "CustomError", "message", "properties", "fieldNames", "fieldMap", "require_reader", "Reader", "BufferReader", "indexOutOfRange", "reader", "writeLength", "create_array", "create", "readLongVarint", "readFixed32_end", "readFixed64", "wireType", "BufferReader_", "require_reader_buffer", "u_", "require_writer", "Writer", "BufferWriter", "Op", "State", "writer", "writeByte", "writeVarint32", "VarintOp", "writeVarint64", "writeFixed32", "writeBytes", "head", "tail", "BufferWriter_", "require_writer_buffer", "g_", "writeStringBuffer", "require_sparse_array", "needsSort", "last", "iterator", "mapped", "reducer", "initialValue", "acc", "finder", "noCreate", "bytePos", "byte", "bitPos", "previousPopCount", "popCountReduce", "bytePopCount", "popCount", "targetLength", "data", "elem", "randomIndex", "sortInternal", "pendingBitsForResultingByte", "pendingBitsForNewByte", "resultingByte", "newByte", "usingBits", "masked", "valueOnly", "count", "_v", "v", "require_murmurHash3js", "root", "undefined", "library", "_validBytes", "_x86Multiply", "_x86Rotl", "_x86Fmix", "h", "_x64Add", "o", "_x64Multiply", "_x64Rotl", "_x64LeftShift", "_x64Xor", "_x64Fmix", "seed", "remainder", "blocks", "h1", "k1", "h2", "h3", "h4", "k2", "k3", "k4", "c3", "c4", "require_murmurhash3js_revisited", "k7", "G7", "z", "V_", "G_", "E", "Math", "imul", "clz32", "JSBI", "abs", "floor", "_", "u", "setPrototypeOf", "prototype", "__kMaxLength", "RangeError", "g", "l", "result", "B", "digit", "push", "toString", "join", "radix", "__toStringGeneric", "__toStringBasePowerOfTwo", "Error", "newLength", "pop", "__clz30", "__digit", "multiplier", "summand", "mLow", "mHigh", "carry", "high", "dLow", "dHigh", "pLow", "__imul", "pMid1", "pMid2", "pHigh", "__setDigit", "startIndex", "halfDigits", "sum", "__halfDigit", "__setHalfDigit", "subtrahend", "borrow", "current", "r0", "r15", "D", "shift", "__unsignedDigit", "digitIndex", "previous", "updated", "Number", "isFinite", "__zero", "__isOneDigitInt", "__oneDigit", "__fromDouble", "__fromString", "SyntaxError", "_typeof", "constructor", "primitive", "__toPrimitive", "BigInt", "TypeError", "xLength", "xMsd", "msdLeadingZeros", "xBitLength", "currentDigit", "mantissaHigh", "r", "mantissaHighBitsUnset", "mantissaLow", "mantissaLowBitsUnset", "rounding", "__decideRounding", "signBit", "__kBitConversionInts", "__kBitConversionDouble", "__copy", "__absoluteSubOne", "__trim", "__absoluteAddOne", "unaryMinus", "expValue", "__kMaxLengthBits", "neededDigits", "__initializeDigits", "msd", "runningSquare", "multiply", "resultLength", "__clzmsd", "__multiplyAccumulate", "__absoluteCompare", "quotient", "resultSign", "divisor", "__absoluteDivSmall", "__absoluteDivLarge", "remainderDigit", "__absoluteModSmall", "__absoluteAdd", "__absoluteSub", "__rightShiftByAbsolute", "__leftShiftByAbsolute", "__compareToBigInt", "equal", "__absoluteAnd", "y1", "__absoluteOr", "__absoluteAndNot", "__absoluteXor", "neededLength", "topDigit", "compareDigit", "__truncateToNBits", "__truncateAndSubFromPowerOfTwo", "bitsInTopDigit", "__toNumeric", "__isBigInt", "add", "__compare", "EQ", "__equalToNumber", "dataview", "asIntN", "DataViewGetBigUint64", "getUint32", "low", "DataViewSetBigUint64", "asUintN", "d1", "setUint32", "mantissaBitsUnset", "topUnconsumedBit", "rawExponent", "digits", "kMantissaHighTopBit", "msdTopBit", "remainingMantissaBits", "cursor", "__isWhitespace", "chars", "bitsPerChar", "__kMaxBitsPerChar", "roundup", "__kBitsPerCharTableMultiplier", "bitsMin", "__kBitsPerCharTableShift", "limDigit", "limAlpha", "done", "charsSoFar", "part", "S", "k", "I", "digitsSoFar", "__inplaceMultiplyAdd", "partsBits", "f", "__fillFromParts", "bitsInDigit", "partBits", "charMask", "charsRequired", "Array", "availableBits", "newDigit", "__kConversionChars", "consumedBits", "isRecursiveCall", "bitLength", "maxBitsPerChar", "minBitsPerChar", "secondHalf", "secondHalfChars", "conqueror", "exponentiate", "input", "divisionResult", "firstHalf", "leftNegative", "bothNegative", "xSign", "__unequalSign", "__absoluteGreater", "__absoluteLess", "ySign", "yAbs", "xDigit", "__compareToDouble", "yBitLength", "compareMantissa", "op", "__comparisonResultToBool", "__compareToNumber", "inputLength", "__setDigitGrow", "yLength", "numPairs", "tmpLength", "diff", "multiplicand", "accumulator", "accumulatorIndex", "m2Low", "m2High", "m1", "m1Low", "m1High", "rLow", "rMid1", "rMid2", "rHigh", "source", "factor", "rx", "ry", "upperHalf", "lowerHalf", "dividend", "wantQuotient", "wantRemainder", "__halfDigitLength", "n2", "q", "qhatv", "__clz15", "__specialLeftShift", "vn1", "halfDigitBuffer", "qhat", "ujn", "rhat", "vn2", "ujn2", "__internalMultiplyAdd", "__inplaceSub", "__inplaceAdd", "__inplaceRightShift", "addDigit", "__toShiftAmount", "digitShift", "bitsShift", "grow", "__rightShiftByMaximum", "mustRoundDown", "hint", "Symbol", "toPrimitive", "exoticToPrim", "call", "drop", "resultMsd", "msdBitsConsumed", "minuendMsd", "base", "ArrayBuffer", "Float64Array", "__kBitConversionBuffer", "Int32Array", "LN2", "log", "require_level_supports", "manifests", "manifest", "require_module_error", "options", "require_text_endec", "lazy", "require_encoding", "ModuleError", "rs", "formats", "Encoding", "require_formats", "a6", "textEndec", "n6", "BufferFormat", "ViewFormat", "view", "UTF8Format", "textEncoder", "textDecoder", "require_encodings", "d6", "identity", "require_level_transcoder", "encodings", "OT", "kFormats", "kEncodings", "validFormats", "Transcoder", "resolved", "format", "maybeType", "anonymousCount", "detectFormat", "aliases", "require_events", "R", "ReflectApply", "receiver", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "once", "defaultMaxListeners", "checkListener", "listener", "_getMaxListeners", "that", "doError", "events", "handler", "arrayClone", "_addListener", "prepend", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "position", "originalListener", "spliceOne", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_next_tick_browser", "require_catering", "nextTick", "YT", "callback", "symbol", "promise", "require_common", "def", "require_abstract_iterator", "fromCallback", "z0", "getOptions", "getCallback", "hv", "kPromise", "kCallback", "kWorking", "kHandleOne", "kHandleMany", "kAutoClose", "kFinishWork", "kReturnMany", "kClosing", "kHandleClose", "kClosed", "kCloseCallbacks", "kKeyEncoding", "kValueEncoding", "kAbortOnClose", "kLegacy", "kKeys", "kValues", "kLimit", "kCount", "emptyOptions", "warnedEnd", "CommonIterator", "db", "legacy", "onnext", "nextv", "onnextv", "items", "cb", "keyEncoding", "keyFormat", "callbacks", "item", "AbstractIterator", "IteratorDecodeError", "entries", "entry", "AbstractKeyIterator", "AbstractValueIterator", "values", "subject", "cause", "require_default_kv_iterator", "ac", "kIterator", "DefaultKeyIterator", "DefaultValueIterator", "Iterator", "mapEntry", "require_deferred_iterator", "kNut", "kUndefer", "kFactory", "DeferredIterator", "DeferredKeyIterator", "DeferredValueIterator", "require_abstract_chained_batch", "kStatus", "kOperations", "kFinishClose", "AbstractChainedBatch", "original", "valueEncoding", "mappedKey", "mappedValue", "require_default_chained_batch", "R6", "kEncoded", "DefaultChainedBatch", "require_range_options", "hasOwnProperty", "rangeOptions", "require_queue_microtask", "queueMicrotask", "k6", "require_abstract_sublevel_iterator", "kUnfix", "AbstractSublevelIterator", "unfix", "AbstractSublevelKeyIterator", "AbstractSublevelValueIterator", "require_abstract_sublevel", "pR", "kPrefix", "kUpperBound", "kPrefixRange", "kParent", "defaults", "AbstractLevel", "AbstractSublevel", "separator", "forward", "trim", "reserved", "parent", "mergeManifests", "prefix", "upperBound", "MultiFormat", "Unfixer", "range", "operations", "supportsEncoding", "prefixLength", "char", "require_abstract_level", "supports", "RT", "NT", "so", "eR", "tR", "oR", "fR", "kLanded", "kResources", "kCloseResources", "kDeferOpen", "kOptions", "kDefaultOptions", "kTranscoder", "passive", "maybeOpened", "maybeClosed", "cancel", "sync", "next", "resource", "maybeError", "valueFormat", "mappedKeys", "ke", "ve", "valueErr", "hR", "vR", "U6", "require_run_parallel_limit", "runParallelLimit", "tasks", "results", "isErrored", "isSync", "each", "task", "require_key_range", "lower", "upper", "lowerExclusive", "upperExclusive", "require_deserialize", "require_iterator", "F6", "createKeyRange", "z6", "deserialize", "$6", "kCache", "kFinished", "kCurrentOptions", "kPosition", "kLocation", "kFirst", "location", "keyRange", "transaction", "store", "method", "ev", "maybeCommit", "complete", "cache", "require_clear", "direction", "require_browser_level", "parallel", "ER", "PR", "clear", "IR", "DEFAULT_PREFIX", "kIDB", "kNamePrefix", "kVersion", "kStore", "kOnComplete", "BrowserLevel", "version", "req", "mode", "request", "error", "loop", "qR", "require_eventemitter3", "has", "Events", "EE", "context", "addListener", "event", "clearEvent", "names", "handlers", "ee", "a1", "a2", "a3", "a4", "a5", "require_primordials", "self", "el", "sep", "thisArgs", "instance", "thenFn", "catchFn", "require_util", "bufferModule", "AsyncFunction", "Blob", "isBlob", "AggregateError", "errors", "called", "rej", "_unused", "replacement", "AbortController", "AbortSignal", "require_errors", "inspect", "CustomAggregateError", "Ys", "kIsNodeError", "kTypes", "classRegExp", "nodeInternalPrefix", "codes", "assert", "addNumericalSeparator", "getMessage", "msg", "expectedLength", "Base", "NodeError", "hideStackFrames", "hidden", "aggregateTwoErrors", "innerError", "outerError", "AbortError", "expected", "types", "instances", "other", "_actual$constructor", "inspected", "reason", "_value$constructor", "received", "require_validators", "ArrayIsArray", "ArrayPrototypeIncludes", "ArrayPrototypeJoin", "ArrayPrototypeMap", "NumberIsInteger", "NumberMAX_SAFE_INTEGER", "NumberMIN_SAFE_INTEGER", "NumberParseInt", "ObjectPrototypeHasOwnProperty", "RegExpPrototypeExec", "String", "StringPrototypeToUpperCase", "StringPrototypeTrim", "Xr", "ERR_SOCKET_BAD_PORT", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_ARG_VALUE", "ERR_OUT_OF_RANGE", "ERR_UNKNOWN_SIGNAL", "normalizeEncoding", "isAsyncFunction", "isArrayBufferView", "signals", "isInt32", "isUint32", "octalReg", "modeDesc", "parseFileMode", "validateUint32", "validateInteger", "validateInt32", "positive", "validateString", "validateNumber", "validateOneOf", "oneOf", "validateBoolean", "getOwnPropertyValueOrDefault", "defaultValue", "validateObject", "allowArray", "allowFunction", "validateArray", "minLength", "validateSignalName", "signal", "validateBuffer", "validateEncoding", "normalizedEncoding", "validatePort", "port", "allowZero", "validateAbortSignal", "validateFunction", "validatePlainFunction", "validateUndefined", "validateUnion", "union", "require_utils", "SymbolAsyncIterator", "SymbolIterator", "kDestroyed", "kIsErrored", "kIsReadable", "kIsDisturbed", "isReadableNodeStream", "strict", "_obj$_readableState", "isWritableNodeStream", "_obj$_writableState", "isDuplexNodeStream", "isNodeStream", "isIterable", "isAsync", "isDestroyed", "stream", "wState", "rState", "isWritableEnded", "isWritableFinished", "isReadableEnded", "isReadableFinished", "isReadable", "isWritable", "isFinished", "opts", "isWritableErrored", "_stream$_writableStat", "_stream$_writableStat2", "isReadableErrored", "_stream$_readableStat", "_stream$_readableStat2", "isClosed", "isOutgoingMessage", "isServerResponse", "isServerRequest", "_stream$req", "willEmitClose", "isDisturbed", "_stream$kIsDisturbed", "_ref", "_ref2", "_ref3", "_ref4", "_ref5", "_stream$kIsErrored", "_stream$_readableStat3", "_stream$_writableStat3", "_stream$_readableStat4", "_stream$_writableStat4", "require_end_of_stream", "ERR_STREAM_PREMATURE_CLOSE", "kEmptyObject", "yy", "Promise", "_willEmitClose", "pc", "isRequest", "nop", "eos", "_options$readable", "_options$writable", "readable", "writable", "onlegacyfinish", "onfinish", "writableFinished", "readableFinished", "onend", "onerror", "closed", "onclose", "errored", "onrequest", "cleanup", "abort", "endCallback", "originalCallback", "finished", "require_operators", "Gv", "ERR_MISSING_ARGS", "kWeakHandler", "yc", "ArrayPrototypePush", "MathFloor", "PromiseReject", "PromisePrototypeThen", "kEmpty", "kEof", "map", "concurrency", "_options$signal", "_options$signal2", "signalOpt", "resume", "onDone", "pump", "_val", "_options$signal3", "asIndexedPairs", "_options$signal4", "some", "unused", "filter", "every", "find", "forEach", "forEachFn", "filterFn", "ReduceAwareErrMissingArgs", "reduce", "_options$signal5", "hasInitialValue", "gotAnyItemFromStream", "_options$signal6", "toArray", "_options$signal7", "flatMap", "toIntegerOrInfinity", "number", "_options$signal8", "_options$signal9", "take", "_options$signal10", "_options$signal11", "require_destroy", "ERR_MULTIPLE_CALLBACK", "kDestroy", "kConstruct", "checkError", "destroy", "_destroy", "onDestroy", "emitErrorCloseNT", "emitCloseNT", "emitErrorNT", "undestroy", "errorOrDestroy", "construct", "constructNT", "onConstruct", "emitConstructNT", "emitCloseLegacy", "emitErrorCloseLegacy", "destroyer", "require_legacy", "ObjectSetPrototypeOf", "Stream", "dest", "ondata", "ondrain", "didOnEnd", "prependListener", "require_add_abort_signal", "onAbort", "require_buffer_list", "StringPrototypeSlice", "TypedArrayPrototypeSet", "Uint8Array", "hasStrings", "retLen", "require_state", "highWaterMarkFrom", "isDuplex", "duplexKey", "getDefaultHighWaterMark", "objectMode", "getHighWaterMark", "hwm", "require_safe_buffer", "copyProps", "SafeBuffer", "require_string_decoder", "Ak", "isEncoding", "_normalizeEncoding", "enc", "retried", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "utf8End", "utf8Text", "utf8CheckByte", "utf8CheckIncomplete", "utf8CheckExtraBytes", "total", "require_from", "ERR_STREAM_NULL_VALUES", "Readable", "iterable", "reading", "close", "hadError", "hasThrow", "require_readable", "ArrayPrototypeIndexOf", "ObjectDefineProperties", "ObjectKeys", "SafeSet", "ReadableState", "sb", "addAbortSignal", "fb", "debug", "BufferList", "_k", "destroyImpl", "nd", "ub", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "kPaused", "Ka", "E4", "Qs", "maybeReadMore", "readableAddChunk", "addToFront", "onEofChunk", "addChunk", "emitReadable", "decoder", "content", "MAX_HWM", "computeNewHighWaterMark", "howMuchToRead", "nOrig", "endReadable", "doRead", "fromList", "emitReadable_", "flow", "maybeReadMore_", "pipeOpts", "endFn", "unpipe", "onunpipe", "unpipeInfo", "cleanedUp", "pause", "pipeOnDrain", "dests", "nReadingNextTick", "updateReadableListening", "resume_", "paused", "streamKeys", "streamToAsyncIterator", "iter", "createAsyncIterator", "endReadableNT", "endWritableNT", "webStreamsAdapters", "lazyWebStreams", "readableStream", "streamReadable", "_src$readableObjectMo", "require_writable", "ArrayPrototypeSlice", "FunctionPrototypeSymbolHasInstance", "ObjectDefineProperty", "StringPrototypeToLowerCase", "SymbolHasInstance", "Writable", "WritableState", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_ALREADY_FINISHED", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "kOnFinished", "noDecode", "onwrite", "resetBuffer", "clearBuffer", "finishMaybe", "object", "_write", "writeOrBuffer", "doWrite", "writev", "onwriteError", "errorBuffer", "afterWriteTick", "afterWrite", "_state$errored", "onfinishCallbacks", "_state$errored2", "buffered", "bufferedIndex", "bufferedLength", "chunks", "needFinish", "callFinal", "onFinish", "finish", "prefinish", "writableStream", "streamWritable", "require_duplexify", "ERR_INVALID_RETURN_VALUE", "Duplex", "vy", "createDeferredPromise", "FunctionPrototypeCall", "Duplexify", "duplexify", "body", "_duplexify", "write", "final", "fromAsyncGen", "then", "_promise", "_resolve", "pair", "onreadable", "onfinished", "require_duplex", "ObjectGetOwnPropertyDescriptor", "O4", "duplex", "yI", "require_transform", "Transform", "readableHighWaterMark", "require_passthrough", "PassThrough", "z4", "require_pipeline", "writing", "popCallback", "streams", "makeAsyncIterable", "fromReadable", "onresolve", "wait", "pipeline", "pipelineImpl", "outerSignal", "lastStreamCleanup", "finishImpl", "destroys", "finishCount", "isLastStream", "onError", "_ret", "W4", "pt", "pipe", "ended", "require_compose", "_b", "orgStreams", "idx", "require_promises", "ArrayPrototypePop", "pl", "lastArg", "require_stream", "customPromisify", "streamReturningOperators", "promiseReturningOperators", "ak", "ERR_ILLEGAL_CONSTRUCTOR", "compose", "CI", "promises", "Y4", "utils", "CustomStream", "HI", "originalDestroy", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Ot", "crypto", "randomBytes", "generated", "require_inherits_browser", "ctor", "superCtor", "TempCtor", "require_stream_browser", "require_shams", "sym", "symObj", "symVal", "syms", "descriptor", "hasSymbols", "s8", "require_has_symbols", "origSymbol", "hasSymbolSham", "require_implementation", "ERROR_MESSAGE", "toStr", "funcType", "bound", "binder", "boundLength", "boundArgs", "Empty", "require_function_bind", "implementation", "sD", "require_src", "bind", "Tb", "require_get_intrinsic", "$SyntaxError", "$Function", "$TypeError", "getEvalledConstructor", "expressionSyntax", "$gOPD", "throwTypeError", "ThrowTypeError", "nD", "getProto", "needsEval", "TypedArray", "INTRINSICS", "errorProto", "doEval", "gen", "LEGACY_ALIASES", "hasOwn", "cD", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "first", "match", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "isOwn", "desc", "require_call_bind", "GetIntrinsic", "kb", "$apply", "$call", "$reflectApply", "$defineProperty", "$max", "originalFunction", "func", "applyBind", "require_callBound", "callBind", "wD", "$indexOf", "require_is_arguments", "hasToStringTag", "Sy", "callBound", "Db", "$toString", "isStandardArguments", "isLegacyArguments", "supportsStandardArguments", "require_is_generator_function", "fnToStr", "isFnRegex", "getGeneratorFunc", "GeneratorFunction", "generatorFunc", "require_is_callable", "reflectApply", "badArrayLike", "isCallableMarker", "constructorRegex", "isES6ClassFn", "fnStr", "tryFunctionObject", "objectClass", "fnClass", "genClass", "ddaClass", "ddaClass2", "ddaClass3", "isIE68", "isDDA", "all", "strClass", "require_for_each", "isCallable", "BD", "forEachArray", "forEachString", "forEachObject", "thisArg", "require_available_typed_arrays", "possibleNames", "require_gopd", "require_is_typed_array", "v8", "availableTypedArrays", "w8", "gOPD", "_8", "typedArrays", "$slice", "toStrTags", "getPrototypeOf", "typedArray", "superProto", "tryTypedArrays", "anyTrue", "getter", "tag", "require_which_typed_array", "foundName", "isTypedArray", "S8", "require_types", "isArgumentsObject", "AD", "isGeneratorFunction", "PD", "whichTypedArray", "ZD", "uncurryThis", "BigIntSupported", "SymbolSupported", "ObjectToString", "numberValue", "stringValue", "booleanValue", "bigIntValue", "symbolValue", "checkBoxedPrimitive", "prototypeValueOf", "isPromise", "isDataView", "isUint8Array", "isUint8ClampedArray", "isUint16Array", "isUint32Array", "isInt8Array", "isInt16Array", "isInt32Array", "isFloat32Array", "isFloat64Array", "isBigInt64Array", "isBigUint64Array", "isMapToString", "isMap", "isSetToString", "isSet", "isWeakMapToString", "isWeakMap", "isWeakSetToString", "isWeakSet", "isArrayBufferToString", "isArrayBuffer", "isDataViewToString", "SharedArrayBufferCopy", "isSharedArrayBufferToString", "isSharedArrayBuffer", "isMapIterator", "isSetIterator", "isGeneratorObject", "isWebAssemblyCompiledModule", "isNumberObject", "isStringObject", "isBooleanObject", "isBigIntObject", "isSymbolObject", "isBoxedPrimitive", "isAnyArrayBuffer", "require_isBufferBrowser", "getOwnPropertyDescriptors", "descriptors", "formatRegExp", "isString", "objects", "isNull", "isObject", "warned", "deprecated", "debugs", "debugEnvRegex", "debugEnv", "set", "pid", "stylizeNoColor", "isBoolean", "isUndefined", "stylizeWithColor", "formatValue", "styleType", "style", "arrayToHash", "recurseTimes", "isFunction", "formatPrimitive", "visibleKeys", "isError", "formatError", "isRegExp", "isDate", "braces", "isArray", "formatArray", "formatProperty", "reduceToSingleString", "simple", "isNumber", "line", "numLinesEst", "prev", "cur", "cB", "ar", "isNullOrUndefined", "isSymbol", "re", "objectToString", "isPrimitive", "dB", "pad", "months", "timestamp", "time", "Xe", "origin", "kCustomPromisifiedSymbol", "promiseResolve", "promiseReject", "callbackifyOnRejected", "newReason", "callbackify", "callbackified", "maybeCb", "ownKeys", "enumerableOnly", "symbols", "_objectSpread", "_defineProperty", "_toPropertyKey", "_classCallCheck", "Constructor", "_defineProperties", "_createClass", "protoProps", "staticProps", "_toPrimitive", "prim", "_require", "_require2", "md", "custom", "copyBuffer", "_this", "readableDestroyed", "writableDestroyed", "emitErrorAndCloseNT", "require_errors_browser", "_inheritsLoose", "subClass", "superClass", "createErrorType", "arg1", "arg2", "arg3", "_Base", "thing", "startsWith", "search", "endsWith", "this_len", "includes", "determiner", "ERR_INVALID_OPT_VALUE", "gd", "deprecate", "config", "require_stream_writable", "CorkedRequest", "onCorkedFinish", "internalUtil", "Xb", "o8", "OurUint8Array", "_uint8ArrayToBuffer", "_isUint8Array", "j8", "q8", "_require$codes", "vd", "realHasInstance", "writeAfterEnd", "validChunk", "isBuf", "decodeChunk", "newChunk", "onwriteStateUpdate", "onwriteDrain", "holder", "allBuffers", "endWritable", "need", "corkReq", "require_stream_duplex", "objectKeys", "W8", "F8", "onEndNT", "_len", "_key", "writableEnded", "readableEnded", "require_async_iterator", "_Object$setPrototypeO", "i1", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "readAndResolve", "onReadable", "wrapForNext", "lastPromise", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this2", "createReadableStreamAsyncIterator", "_Object$create", "require_from_browser", "require_stream_readable", "EElistenerCount", "debugUtil", "EB", "kProxyEvents", "skipChunkCheck", "chunkInvalid", "doEnd", "indexOf", "zB", "WB", "xs", "require_stream_transform", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "afterTransform", "ts", "err2", "require_stream_passthrough", "tE", "destroyed", "to", "require_readable_browser", "oC", "uC", "require_hash_base", "XI", "lC", "inherits", "throwIfNotStringOrBuffer", "HashBase", "blockSize", "block", "digest", "require_md5", "iE", "ARRAY16", "MD5", "M", "fnF", "fnG", "fnH", "fnI", "rotl", "require_ripemd160", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "al", "bl", "cl", "dl", "br", "cr", "dr", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "require_hash", "Hash", "finalSize", "accum", "assigned", "rem", "lowBits", "highBits", "require_sha", "xd", "K", "W", "Sha", "rotl5", "rotl30", "ft", "H", "require_sha1", "Sha1", "rotl1", "require_sha256", "Sha256", "ch", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "T1", "T2", "require_sha224", "oE", "Sha224", "require_sha512", "Sha512", "Ch", "xl", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "ah", "bh", "dh", "eh", "fh", "gh", "hh", "fl", "gl", "xh", "gamma0l", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "writeInt64BE", "require_sha384", "SHA512", "sE", "Sha384", "algorithm", "Algorithm", "RC", "IC", "OC", "WC", "Sd", "aE", "uE", "dE", "Md", "gE", "pE", "XC", "gO", "bO", "RE", "require_stream_browserify", "CO", "LO", "require_cipher_base", "FO", "CipherBase", "hashMode", "inputEnc", "outputEnc", "outData", "fin", "p1", "sha", "w1", "ef", "alg", "ZEROS", "blocksize", "Hmac", "ipad", "opad", "Legacy", "ZO", "md5", "IE", "require_algorithms", "require_algos", "OE", "require_precondition", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "defaultEncoding", "pVersionMajor", "require_to_buffer", "require_sync_browser", "checkParameters", "jE", "qE", "toBuffer", "LE", "sizes", "saltLen", "getDigest", "ipad1", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "hmac", "DK", "block1", "destPos", "hLen", "T", "U", "require_async", "UE", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "getNextTick", "resolvePromise", "resp", "yj", "off", "inL", "inR", "outL", "outR", "pc2table", "sTable", "permuteTable", "group", "require_minimalistic_assert", "require_cipher", "$n", "Cipher", "inputOff", "outputOff", "require_des", "HE", "F1", "DESState", "DES", "shiftTable", "kL", "kR", "inp", "inOff", "outOff", "lStart", "rStart", "keyL", "keyR", "require_cbc", "CBCState", "iv", "instantiate", "CBC", "require_ede", "KE", "EDEState", "EDE", "Mj", "Rj", "require_browserify_des", "des", "Pj", "modes", "modeName", "require_ecb", "require_buffer_xor", "xor", "Nh", "require_cfb", "encryptStart", "decrypt", "require_cfb8", "encryptByte", "byteParam", "require_cfb1", "bit", "shiftIn", "require_ofb", "getBlock", "require_incr32", "incr32", "require_ctr", "YE", "chunkNum", "require_list", "require_modes", "modeModules", "Bj", "jj", "Lj", "Fj", "$j", "Hj", "XE", "QE", "require_aes", "asUInt32Array", "scrubVec", "cryptBlock", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "INV_SBOX", "INV_SUB_MIX", "xi", "sx", "x2", "x4", "x8", "AES", "keyWords", "keySize", "ksRows", "invKeySchedule", "ik", "ksR", "tt", "require_ghash", "ZEROES", "fromArray", "GHASH", "Vi", "Zi", "lsbVi", "abl", "require_authCipher", "aes", "im", "eq", "xorTest", "calcIv", "ck", "ghash", "toPad", "ivBits", "StreamCipher", "rump", "require_streamCipher", "require_evp_bytestokey", "EVP_BytesToKey", "keyBits", "ivLen", "keyLen", "used", "keyStart", "ivStart", "require_encrypter", "MODES", "K1", "AuthCipher", "ix", "ox", "ebtk", "om", "Splitter", "PADDING", "setTo", "padBuff", "createCipheriv", "suite", "createCipher", "require_decrypter", "Decipher", "unpad", "autoPadding", "padded", "createDecipheriv", "createDecipher", "ciphers", "uq", "deciphers", "pq", "getCiphers", "Dj", "J1", "aesModes", "desModes", "gq", "require_bn", "BN", "endian", "left", "right", "parseHex4Bits", "parseHexByte", "lowerBound", "parseLength", "parseBase", "limbLen", "limbPow", "mod", "word", "pow", "zeros", "groupSizes", "groupBases", "padding", "groupSize", "groupBase", "ArrayType", "reqLength", "toBitArray", "wbit", "width", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "ncarry", "rword", "maxJ", "comb10MulTo", "mid", "a0", "al0", "ah0", "al1", "ah1", "al2", "ah2", "al3", "ah3", "al4", "ah4", "al5", "ah5", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w2", "w3", "w4", "w5", "w6", "w7", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "N", "rb", "rbt", "rws", "iws", "rtws", "itws", "rtwdf", "itwdf", "rtwdf_", "itwdf_", "ie", "ro", "io", "odd", "ws", "ph", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "carryMask", "newCarry", "extended", "maskedWords", "bhi", "bhiBits", "qj", "div", "dm", "half", "r2", "A", "C", "yp", "xp", "jm", "x1", "delta", "negative", "Red", "primes", "MPrime", "rlen", "K256", "outLen", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "inv", "windowSize", "wnd", "currentLen", "Mont", "require_brorand", "Rand", "rand", "jd", "require_mr", "bn", "fi", "brorand", "X1", "MillerRabin", "min_bytes", "stop", "red", "rone", "n1", "rn1", "require_generatePrime", "cd", "findPrime", "simpleSieve", "fermatTest", "TWENTYFOUR", "hx", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "_getPrimes", "sqrt", "require_primes", "require_dh", "bx", "DH", "setPublicKey", "pub", "setPrivateKey", "priv", "primeCache", "checkPrime", "generator", "hex", "malleable", "secret", "front", "formatReturnValue", "generatePrime", "Rq", "Dq", "getDiffieHellman", "ENCODINGS", "createDiffieHellman", "genc", "Ud", "Ex", "Mx", "Ax", "Fd", "Dx", "Px", "cw", "Wq", "cN", "dN", "$x", "AN", "IN", "move", "allocate", "postfix", "isNegNum", "require_browserify_rsa", "ON", "blind", "getr", "blinder", "crt", "blinds", "blinded", "qinv", "m2", "require_package", "zero2", "toHex", "minAssert", "minUtils", "Kx", "getNAF", "naf", "getJSF", "jsf", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "computer", "parseBytes", "intFromLE", "require_base", "Wn", "BaseCurve", "conf", "adjustCount", "doubles", "repr", "nafW", "nafPoints", "defW", "points", "coeffs", "jacobianResult", "wndWidth", "comb", "ja", "jb", "BasePoint", "curve", "compact", "power", "precomputed", "step", "dbl", "require_short", "ym", "ShortCurve", "beta", "lambda", "betas", "lambdas", "basis", "vec", "tinv", "ntinv", "l1", "l2", "aprxSqrt", "y2", "prevR", "len1", "v1", "v2", "p2", "q1", "q2", "isOdd", "point", "ax", "rhs", "npoints", "ncoeffs", "split", "Point", "isRed", "pre", "endoMul", "obj2point", "nx", "ny", "ys1", "dyinv", "_precompute", "negate", "JPoint", "zinv", "zinv2", "ay", "pz2", "z2", "nz", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "dny", "xx", "yyyy", "yyyy8", "c8", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "yyu4", "kbase", "z3", "pz3", "zs", "xc", "require_mont", "MontCurve", "aa", "bb", "da", "require_edwards", "EdwardsCurve", "lhs", "nt", "zi", "require_curve", "KN", "ZN", "XN", "isSurrogatePair", "htonl", "toHex32", "zero8", "join32", "split32", "rotr32", "rotl32", "sum32", "sum32_3", "sum32_4", "sum32_5", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "ms", "BlockHash", "ft_1", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "common", "Yh", "shaCommon", "Zx", "sha1_K", "SHA1", "sha256_K", "SHA256", "Jx", "SHA224", "sha512_K", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "yh", "yl", "zh", "t5", "SHA384", "uL", "yL", "EL", "require_ripemd", "Ah", "Bh", "Dh", "Eh", "rh", "Kh", "sh", "require_hmac", "xL", "PL", "IL", "require_secp256k1", "require_curves", "curves", "Tw", "Gx", "PresetCurve", "defineCurve", "CL", "require_hmac_drbg", "HmacDRBG", "entropy", "nonce", "pers", "kmac", "entropyEnc", "addEnc", "temp", "require_key", "KeyPair", "ec", "signature", "require_signature", "Signature", "Position", "getLength", "initial", "octetLen", "rmPadding", "slen", "constructLength", "octets", "backHalf", "require_ec", "UL", "Rw", "zL", "HL", "EC", "drbg", "ns2", "truncOnly", "bkey", "ns1", "kp", "kpX", "recoveryParam", "sinv", "isYOdd", "isSecondKey", "rInv", "Q", "Qprime", "eddsa", "lastIx", "sig", "require_eddsa", "QL", "tU", "EDDSA", "Rencoded", "s_", "SG", "RplusAh", "normed", "xIsOdd", "require_elliptic", "elliptic", "LN", "ZL", "sU", "require_safer", "safer", "Safer", "require_reporter", "Reporter", "ReporterError", "now", "inherited", "path", "jw", "Ow", "DecoderBuffer", "save", "fail", "EncoderBuffer", "reporter", "require_node", "up", "tags", "methods", "overrided", "Node", "stateProps", "cstate", "clone", "child", "children", "newKey", "present", "prevKey", "prevObj", "explicit", "entity", "node", "cls", "require_der", "reverse", "Nw", "der", "Lw", "DEREncoder", "DERNode", "encodedTag", "encodeTag", "header", "lenOctets", "id", "relative", "ident", "objid", "two", "date", "numArray", "dataBuffer", "require_pem", "m5", "PEMEncoder", "require_encoders", "encoders", "vU", "bignum", "DERDecoder", "any", "decodedTag", "derDecodeTag", "derDecodeLen", "possibleEnd", "raw", "numstr", "printstr", "identifiers", "subident", "second", "year", "mon", "day", "hour", "sec", "oct", "tagStr", "_5", "PEMDecoder", "lines", "label", "require_decoders", "decoders", "RU", "require_api", "S5", "api", "Entity", "Generated", "require_constants", "constants", "require_asn1", "asn1", "DU", "CU", "qU", "require_certificate", "asn", "M5", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "zU", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_aesid", "require_fixProc", "findProc", "startRegex", "fullRegex", "evp", "okey", "decrypted", "cipherText", "cipherKey", "cipher", "match2", "require_parse_asn1", "WU", "aesid", "HU", "fixProc", "VU", "compat", "WE", "parseKeys", "stripped", "subtype", "ndata", "iters", "require_sign", "rw", "createHmac", "CE", "gw", "np", "h5", "bm", "R5", "hashType", "signType", "ecSign", "dsaSign", "curveId", "bits2int", "kv", "getKey", "makeKey", "makeR", "toDER", "hlen", "hbits", "bits2octets", "obits", "require_verify", "verify", "ecVerify", "dsaVerify", "padNum", "pubkey", "unpacked", "checkValue", "montp", "createHash", "Oh", "XU", "rF", "algorithms", "Sign", "Verify", "createSign", "createVerify", "ECDH", "inenc", "otherPub", "_priv", "require_mgf", "i2ops", "require_xor", "require_withPublic", "withPublic", "paddedMsg", "require_publicEncrypt", "mgf", "B5", "C5", "O5", "publicKey", "oaep", "pkcs1", "iHash", "hLen2", "ps", "dblen", "maskedDb", "maskedSeed", "nonZero", "require_privateDecrypt", "privateKey", "zBuffer", "compare", "status", "dif", "vF", "xF", "safeBuffer", "randombytes", "kBufferMaxLength", "kMaxUint32", "assertOffset", "randomFill", "randomFillSync", "actualFill", "ourBuf", "require_crypto_browserify", "algos", "ej", "algoKeys", "hashes", "Eq", "Oq", "fF", "uF", "publicEncrypt", "SF", "rf", "CF", "require_lib", "cond", "numbers", "isCompressed", "toTypeString", "getAssertedOutput", "secp256k1", "seckey", "tweak", "compressed", "pubkeys", "msg32", "recid", "ecparams", "loadCompressedPublicKey", "xbuf", "loadUncompressedPublicKey", "ybuf", "x3", "loadPublicKey", "savePublicKey", "tweaked", "pairs", "sigR", "sigS", "lenR", "posR", "lenS", "posS", "noncefn", "_noncefn", "counter", "sigObj", "sigr", "sigs", "hashfn", "scalar", "sha256", "cz", "dz", "require_freeGlobal", "freeGlobal", "require_root", "yz", "freeSelf", "require_Symbol", "gz", "require_getRawTag", "X5", "objectProto", "nativeObjectToString", "symToStringTag", "getRawTag", "unmasked", "require_objectToString", "require_baseGetTag", "Ez", "Sz", "nullTag", "undefinedTag", "baseGetTag", "require_overArg", "overArg", "transform", "require_getPrototype", "kz", "getPrototype", "require_isObjectLike", "isObjectLike", "require_isPlainObject", "Rz", "Dz", "Cz", "objectTag", "funcProto", "funcToString", "objectCtorString", "isPlainObject", "Ctor", "require_flat", "flatten", "unflatten", "isBuffer", "keyIdentity", "delimiter", "maxDepth", "transformKey", "currentDepth", "isarray", "isbuffer", "isobject", "overwrite", "getkey", "parsedKey", "addKeys", "keyPrefix", "recipient", "isEmpty", "key1", "key2", "require_lru_cache", "perf", "hasAbortController", "AC", "hasAbortSignal", "hasACAbortSignal", "deprecatedOption", "opt", "instead", "shouldWarn", "warn", "LRUCache", "deprecatedMethod", "deprecatedProperty", "field", "emitWarning", "what", "isPosInt", "getUintArray", "ZeroArray", "Stack", "UintArray", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "sizeCalculation", "fetchMethod", "fetchContext", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "maxAge", "stale", "cachedNow", "getNow", "thisp", "deleted", "age", "oldVal", "free", "fetchOpts", "eb", "pcall", "fetching", "require_encode", "encode", "MSB", "REST", "MSBALL", "INT", "oldOffset", "require_decode", "require_length", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "require_varint", "p$", "g$", "b$", "require_browser_ponyfill", "global", "__self__", "F", "irrelevant", "support", "viewClasses", "normalizeName", "normalizeValue", "iteratorFor", "Headers", "headers", "oldValue", "consumed", "fileReaderReady", "readBlobAsArrayBuffer", "blob", "readBlobAsText", "readArrayBufferAsText", "bufferClone", "Body", "rejected", "decode", "normalizeMethod", "upcased", "Request", "form", "parseHeaders", "rawHeaders", "preProcessedHeaders", "Response", "bodyInit", "response", "redirectStatuses", "url", "fetch", "init", "xhr", "abortXhr", "browserCrypto", "nodeCrypto", "EC_GROUP_ORDER", "ZERO32", "condition", "isScalar", "isValidPrivateKey", "equalConstTime", "sha512", "getAes", "importAlgorithm", "keyp", "cryptoKey", "encAlgorithm", "firstChunk", "secondChunk", "decipher", "aesCbcEncrypt", "aesCbcDecrypt", "hmacSha256Sign", "hmacSha256Verify", "expectedSig", "getPublic", "getPublicCompressed", "derive", "privateKeyA", "publicKeyB", "keyA", "keyB", "publicKeyTo", "ephemPublicKey", "ciphertext", "macKey", "ephemPrivateKey", "encryptionKey", "dataToMac", "mac", "macGood", "AllowAllTenantGate", "_did", "src_exports", "__export", "typeofs", "objectTypeNames", "is", "typeOf", "getObjectType", "objectTypeName", "Type", "major", "terminal", "typ", "Token", "encodedLength", "useBuffer", "asU8A", "concat", "defaultChunkSize", "Bl", "chunkSize", "topChunk", "chunkPos", "reset", "byts", "decodeErrPrefix", "encodeErrPrefix", "uintMinorPrefixBytes", "assertEnoughData", "uintBoundaries", "readUint8", "readUint16", "readUint32", "readUint64", "decodeUint8", "_minor", "decodeUint16", "decodeUint32", "decodeUint64", "encodeUint", "token", "encodeUintValue", "nuint", "buint", "tok1", "tok2", "decodeNegint8", "decodeNegint16", "decodeNegint32", "neg1b", "pos1b", "decodeNegint64", "int", "encodeNegint", "negint", "toToken", "decodeBytesCompact", "minor", "_options", "decodeBytes8", "decodeBytes16", "decodeBytes32", "decodeBytes64", "tokenBytes", "encodeBytes", "compareBytes", "totLength", "tok", "decodeStringCompact", "decodeString8", "decodeString16", "decodeString32", "decodeString64", "encodeString", "_data", "_pos", "decodeArrayCompact", "decodeArray8", "decodeArray16", "decodeArray32", "decodeArray64", "decodeArrayIndefinite", "encodeArray", "decodeMapCompact", "decodeMap8", "decodeMap16", "decodeMap32", "decodeMap64", "decodeMapIndefinite", "encodeMap", "decodeTagCompact", "decodeTag8", "decodeTag16", "decodeTag32", "decodeTag64", "MINOR_FALSE", "MINOR_TRUE", "MINOR_NULL", "MINOR_UNDEFINED", "decodeUndefined", "decodeBreak", "createToken", "decodeFloat16", "readFloat16", "decodeFloat32", "readFloat32", "decodeFloat64", "readFloat64", "encodeFloat", "float", "decoded", "success", "encodeFloat16", "ui8a", "encodeFloat32", "encodeFloat64", "dataView", "valu32", "logicalExponent", "exp", "mant", "invalidMinor", "errorer", "jump", "quick", "quickEncodeToken", "defaultEncodeOptions", "mapSorter", "makeCborEncoders", "cborEncoders", "Ref", "stack", "simpleTokens", "typeEncoders", "_typ", "_refStack", "_obj", "refStack", "objectToTokens", "sortMapEntries", "customTypeEncoder", "tokens", "typeEncoder", "e1", "e2", "keyToken1", "keyToken2", "tcmp", "tokensToEncoded", "encodeCustom", "quickBytes", "encoder", "defaultDecodeOptions", "Tokeniser", "byt", "DONE", "BREAK", "tokenToArray", "tokeniser", "tokensToObject", "tokenToMap", "useMaps", "tagged", "encode_1", "MSB$1", "REST$1", "varint", "_brrp_varint", "varint_default", "encodeTo", "encodingLength", "bytes_exports", "coerce", "empty", "equals", "fromHex", "isBinary", "hexes", "ii", "sizeOffset", "digestOffset", "Digest", "multihash", "base58_exports", "base58btc", "base58flickr", "ALPHABET", "BASE_MAP", "BASE", "LEADER", "FACTOR", "iFACTOR", "zeroes", "pbegin", "pend", "b58", "it1", "it2", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "_brrp__multiformats_scope_baseX", "base_x_default", "Encoder", "baseEncode", "Decoder", "baseDecode", "text", "or", "ComposedDecoder", "Codec", "baseX", "written", "rfc4648", "base32_exports", "base32", "base32hex", "base32hexpad", "base32hexpadupper", "base32hexupper", "base32pad", "base32padupper", "base32upper", "base32z", "link", "toStringV0", "baseCache", "toStringV1", "cid", "CID", "DAG_PB_CODE", "SHA_256_CODE", "unknown", "encodeCID", "cidSymbol", "specs", "prefixSize", "multihashBytes", "digestBytes", "initialBytes", "codec", "multihashCode", "digestSize", "multihashSize", "parseCIDtoBytes", "codeOffset", "hashOffset", "CID_CBOR_TAG", "cidEncoder", "undefinedEncoder", "numberEncoder", "encodeOptions", "cidDecoder", "decodeOptions", "isAsyncIterable", "batch", "things", "src_default", "parallelBatch", "import_err_code", "hn", "import_reader", "import_reader_buffer", "U9", "import_minimal", "import_writer", "import_writer_buffer", "V9", "configure", "Z9", "v_", "ReaderClass", "G9", "ReaderBufferClass", "b_", "WriterClass", "Y9", "WriterBufferClass", "patchReader", "patchWriter", "decodeMessage", "encodeMessage", "CODEC_TYPES", "createCodec", "enumeration", "findValue", "enumValue", "Data", "DataType", "__DataTypeValues", "_codec", "UnixTime", "Metadata", "dirTypes", "DEFAULT_FILE_MODE", "DEFAULT_DIRECTORY_MODE", "UnixFS", "marshaled", "blockSizes", "fanout", "mtime", "x_", "errcode", "createLink", "createNode", "prepare", "validate", "decodeVarint", "decodeBytes", "byteLen", "postOffset", "decodeKey", "wire", "decodeLink", "fieldNum", "decodeNode", "links", "linksBeforeData", "maxInt32", "maxUInt32", "encodeLink", "encodeVarint", "nameBytes", "encodeNode", "sizeNode", "sizeLink", "sov", "len64", "len8tab", "pbNodeProperties", "pbLinkProperties", "linkComparator", "abuf", "bbuf", "hasOnlyProperties", "asLink", "pbl", "pbn", "sha2_browser_exports", "Hasher", "persist", "blockstore", "dirBuilder", "unixfs", "raw_exports", "CustomProgressEvent", "detail", "buildFileBatch", "file", "isSingleBlockImport", "leaves", "leaf", "curr", "fileBuilder", "contentAsAsyncIterable", "P_", "errCode", "defaultDagBuilder", "originalPath", "isFileCandidate", "bytesRead", "currentChunkSize", "Dir", "CID_V0", "CID_V1", "DirFlat", "import_sparse_array", "identity_exports", "base2_exports", "base2", "base8_exports", "base8", "base10_exports", "base10", "base16_exports", "base16", "base16upper", "base36_exports", "base36", "base36upper", "base64_exports", "base64pad", "base64url", "base64urlpad", "base256emoji_exports", "base256emoji", "alphabetBytesToChars", "alphabetCharsToBytes", "bases", "asUint8Array", "ascii", "BASES", "bases_default", "Bucket", "posAtParent", "T7", "SparseArray", "place", "asyncMap", "asyncReduce", "asyncTransformBucket", "mapNode", "reduceNodes", "hashValue", "bucket", "newPlace", "onlyChild", "exists", "nodes", "mappedChildren", "START_MASKS", "STOP_MASKS", "ConsumableBuffer", "pendingBits", "taking", "byteBitsToInt", "maskFor", "arrays", "wrapHash", "hashFn", "hashing", "InfiniteHash", "available", "took", "availableForUntake", "createHAMT", "bucketOptions", "import_murmurhash3js_revisited", "D7", "fromNumberTo32BitBuf", "murmur332", "_g", "mur", "murmur3128", "murmur364", "hamtHashFn", "HAMT_HASH_CODE", "DirSharded", "calculateSize", "flush", "dir_sharded_default", "shardRoot", "childrenSize", "labelPrefix", "shard", "subShard", "isDir", "flushedDir", "flatToShard", "threshold", "newDir", "convertToShard", "oldDir", "toPathComponents", "addToTree", "tree", "pathElems", "lastIndex", "currentPath", "pathElem", "flushAndYield", "defaultTreeBuilder", "rootDir", "singleRoot", "unwrapped", "defaultChunkValidator", "W_", "findBufAndOffset", "bufs", "bufEnd", "isUint8ArrayList", "Uint8ArrayList", "beginInclusive", "endExclusive", "bufStart", "sliceStartInBuf", "sliceEndsInBuf", "needle", "rightmostPositions", "lastPatIndex", "skip", "DEFAULT_CHUNK_SIZE", "fixedSize", "currentLength", "emitted", "newBl", "DEFAULT_MAX_CHILDREN_PER_NODE", "balanced", "maxChildrenPerNode", "balancedLayout", "roots", "chunked", "defaultBufferImporter", "bytesWritten", "importer", "candidates", "wrapWithDirectory", "shardSplitThresholdBytes", "cidVersion", "rawLeaves", "leafType", "fileImportConcurrency", "blockWriteConcurrency", "reduceSingleLeafToSelf", "chunker", "chunkValidator", "buildDag", "buildTree", "errors_exports", "abortedError", "closeFailedError", "deleteFailedError", "getFailedError", "hasFailedError", "notFoundError", "openFailedError", "putFailedError", "Pa", "BaseBlockstore", "MemoryBlockstore", "Errors", "hashers", "codecs", "computeCid", "payload", "codecCode", "hasher", "payloadBytes", "payloadHash", "parseCid", "Cid", "asyncDataBlocks", "dataStream", "promisifySignal", "abortOr", "MakeIntrinsicClass", "Class", "defineProperty", "toStringTag", "enumerable", "configurable", "getOwnPropertyNames", "getOwnPropertyDescriptor", "DefineIntrinsic", "EPOCHNANOSECONDS", "TIMEZONE_ID", "ISO_YEAR", "ISO_MONTH", "ISO_DAY", "ISO_HOUR", "ISO_MINUTE", "ISO_SECOND", "ISO_MILLISECOND", "ISO_MICROSECOND", "ISO_NANOSECOND", "CALENDAR", "INSTANT", "TIME_ZONE", "YEARS", "MONTHS", "WEEKS", "DAYS", "HOURS", "MINUTES", "SECONDS", "MILLISECONDS", "MICROSECONDS", "NANOSECONDS", "CALENDAR_ID", "slots", "WeakMap", "CreateSlots", "container", "GetSlots", "HasSlot", "ids", "myslots", "GetSlot", "SetSlot", "tzComponent", "timeZoneID", "RegExp", "calComponent", "calendarID", "yearpart", "monthpart", "daypart", "datesplit", "timesplit", "zonesplit", "calendar", "zoneddatetime", "yearmonth", "monthday", "fraction", "durationTime", "duration", "ArrayIncludes", "IntlDateTimeFormat", "globalThis", "Intl", "DateTimeFormat", "MathMin", "MathMax", "MathAbs", "MathSign", "MathTrunc", "trunc", "isNaN", "NumberIsFinite", "NumberCtor", "StringCtor", "NumberMaxSafeInteger", "MAX_SAFE_INTEGER", "ObjectAssign", "ObjectCreate", "ObjectIs", "Reflect", "apply", "ZERO", "SIXTY", "THOUSAND", "MILLION", "BILLION", "NEGATIVE_ONE", "DAY_NANOS", "NS_MIN", "NS_MAX", "BEFORE_FIRST_OFFSET_TRANSITION", "ABOUT_TEN_YEARS_NANOS", "ABOUT_ONE_YEAR_NANOS", "TWO_WEEKS_NANOS", "BUILTIN_CALENDAR_IDS", "IsInteger", "IsObject", "ToNumber", "ToInteger", "integer", "ToString", "ToIntegerThrowOnInfinity", "ToPositiveInteger", "valueParam", "property", "ToIntegerWithoutRounding", "divmod", "divide", "lessThan", "ArrayPush", "newItem", "BUILTIN_CASTS", "Map", "BUILTIN_DEFAULTS", "SINGULAR_PLURAL_UNITS", "SINGULAR_FOR", "PLURAL_FOR", "UNITS_DESCENDING", "DURATION_FIELDS", "sort", "IntlDateTimeFormatEnUsCache", "getIntlDateTimeFormatEnUsForTimeZone", "timeZoneIdentifier", "timeZone", "hour12", "era", "month", "minute", "IsTemporalInstant", "IsTemporalTimeZone", "IsTemporalCalendar", "IsTemporalDuration", "IsTemporalDate", "IsTemporalTime", "IsTemporalDateTime", "IsTemporalYearMonth", "IsTemporalMonthDay", "IsTemporalZonedDateTime", "RejectObjectWithCalendarOrTimeZone", "ParseTemporalTimeZone", "stringIdent", "ianaName", "canonicalIdent", "GetCanonicalTimeZoneIdentifier", "ParseISODateTime", "FormatCalendarAnnotation", "showCalendar", "isoString", "PARSE.zoneddatetime", "exec", "yearString", "hasTime", "millisecond", "microsecond", "nanosecond", "offsetSign", "offsetHours", "offsetMinutes", "offsetSeconds", "offsetFraction", "RejectDateTime", "ParseTemporalYearMonthString", "PARSE.yearmonth", "referenceISODay", "ParseTemporalMonthDayString", "PARSE.monthday", "referenceISOYear", "ParseTemporalDurationString", "PARSE.duration", "element", "years", "weeks", "days", "hours", "fHours", "minutes", "fMinutes", "seconds", "fSeconds", "milliseconds", "microseconds", "nanoseconds", "fHoursParam", "minutesParam", "fMinutesParam", "secondsParam", "millisecondsParam", "microsecondsParam", "nanosecondsParam", "mins", "secs", "mils", "fMilliseconds", "mics", "fMicroseconds", "RejectDuration", "ParseTemporalInstant", "offsetNs", "ParseTimeZoneOffsetString", "BalanceISODateTime", "epochNs", "GetEpochFromISOParts", "RegulateISODate", "yearParam", "monthParam", "dayParam", "overflow", "RejectISODate", "ConstrainISODate", "RegulateTime", "hourParam", "minuteParam", "secondParam", "millisecondParam", "microsecondParam", "nanosecondParam", "RejectTime", "ConstrainToRange", "ToTemporalDurationRecord", "partial", "temporalDurationLike", "ToTemporalOverflow", "GetOption", "ToTemporalDisambiguation", "ToTemporalRoundingMode", "fallback", "NegateTemporalRoundingMode", "roundingMode", "ToTemporalOffset", "ToShowCalendarOption", "ToTemporalRoundingIncrement", "inclusive", "maximum", "Infinity", "increment", "minimum", "valueRaw", "ToTemporalDateTimeRoundingIncrement", "smallestUnit", "week", "ToSecondsStringPrecision", "GetTemporalUnit", "ALLOWED_UNITS", "allowed", "precision", "unit", "fractionalSecondDigits", "stringDigits", "REQUIRED", "unitGroup", "requiredOrDefault", "extraValues", "allowedSingular", "singular", "category", "defaultVal", "allowedValues", "plural", "retval", "ToRelativeTemporalObject", "relativeTo", "offsetBehaviour", "matchMinutes", "TemporalDateTimeToDate", "GetTemporalCalendarWithISODefault", "fields", "PrepareTemporalFields", "CalendarFields", "dateOptions", "InterpretTemporalDateTimeFields", "GetISO8601Calendar", "ToTemporalCalendar", "ToTemporalTimeZone", "CreateTemporalZonedDateTime", "InterpretISODateTimeOffset", "CreateTemporalDate", "DefaultTemporalLargestUnit", "LargerOfTwoTemporalUnits", "unit1", "unit2", "MergeLargestUnitOption", "optionsParam", "largestUnit", "bag", "requiredFields", "emptySourceErrorMessage", "eraYear", "ToTemporalTimeRecord", "completeness", "valueDesc", "ToTemporalDate", "itemParam", "BuiltinTimeZoneGetPlainDateTimeFor", "CalendarDateFromFields", "ToTemporalDateTime", "CreateTemporalDateTime", "ToTemporalDuration", "ToTemporalInstant", "ns", "ToTemporalMonthDay", "calendarAbsent", "maybeStringCalendar", "monthCode", "CalendarMonthDayFromFields", "CreateTemporalMonthDay", "ToTemporalTime", "PARSE.time", "test", "ToTemporalYearMonth", "CalendarYearMonthFromFields", "CreateTemporalYearMonth", "disambiguation", "offsetOpt", "matchMinute", "dt", "BuiltinTimeZoneGetInstantFor", "subtract", "possibleInstants", "GetPossibleInstantsFor", "candidate", "candidateOffset", "GetOffsetNanosecondsFor", "roundedCandidateOffset", "toNumber", "RoundNumberToIncrement", "offsetStr", "FormatTimeZoneOffsetString", "timeZoneString", "DisambiguatePossibleInstants", "ToTemporalZonedDateTime", "CreateTemporalDateSlots", "isoYear", "isoMonth", "isoDay", "RejectDateRange", "TemporalPlainDate", "CreateTemporalDateTimeSlots", "RejectDateTimeRange", "TemporalPlainDateTime", "CreateTemporalMonthDaySlots", "TemporalPlainMonthDay", "CreateTemporalYearMonthSlots", "RejectToRange", "TemporalPlainYearMonth", "CreateTemporalZonedDateTimeSlots", "epochNanoseconds", "ValidateEpochNanoseconds", "instant", "TemporalZonedDateTime", "fieldNamesParam", "CalendarMergeFields", "additionalFields", "calMergeFields", "mergeFields", "CalendarDateAdd", "dateAddParam", "dateAdd", "CalendarDateUntil", "otherDate", "dateUntilParam", "dateUntil", "CalendarYear", "dateLike", "CalendarMonth", "CalendarMonthCode", "CalendarDay", "CalendarEra", "CalendarEraYear", "CalendarDayOfWeek", "dayOfWeek", "CalendarDayOfYear", "dayOfYear", "CalendarWeekOfYear", "weekOfYear", "CalendarDaysInWeek", "daysInWeek", "CalendarDaysInMonth", "daysInMonth", "CalendarDaysInYear", "daysInYear", "CalendarMonthsInYear", "monthsInYear", "CalendarInLeapYear", "inLeapYear", "calendarLikeParam", "calendarLike", "identifier", "TemporalCalendar", "IsBuiltinCalendar", "CalendarEquals", "ConsolidateCalendars", "sOne", "sTwo", "dateFromFields", "yearMonthFromFields", "monthDayFromFields", "temporalTimeZoneLikeParam", "temporalTimeZoneLike", "TimeZoneEquals", "dateTime", "TemporalDateTimeToTime", "getOffsetNanosecondsFor", "BuiltinTimeZoneGetOffsetStringFor", "GetISOPartsFromEpoch", "Instant", "numInstants", "utcns", "dayBefore", "dayAfter", "offsetBefore", "PlainDateTime", "earlier", "AddDateTime", "later", "possible", "getPossibleInstantsFor", "ISOYearString", "ISODateTimePartString", "FormatSecondsStringPart", "fractionNumber", "padStart", "TemporalInstantToString", "outputTimeZone", "FormatISOTimeZoneOffsetString", "TemporalDurationToString", "formatNumber", "DurationSign", "RoundDuration", "dateParts", "timeParts", "secondParts", "nsBigInt", "msBigInt", "secondsBigInt", "TotalDurationNanoseconds", "decimalPart", "unshift", "TemporalDateToString", "TemporalDateTimeToString", "RoundISODateTime", "TemporalMonthDayToString", "monthDay", "resultString", "calendarString", "TemporalYearMonthToString", "yearMonth", "TemporalZonedDateTimeToString", "zdt", "showTimeZone", "showOffset", "RoundInstant", "tz", "TestTimeZoneOffsetString", "OFFSET", "resolvedOptions", "GetIANATimeZoneOffsetNanoseconds", "GetIANATimeZoneDateTimeParts", "utc", "offsetNanosecondsParam", "offsetNanoseconds", "hourString", "minuteString", "secondString", "post", "legacyDate", "Date", "setUTCHours", "setUTCFullYear", "getTime", "greaterThan", "epochMilliseconds", "nanos", "getUTCFullYear", "getUTCMonth", "getUTCDate", "getUTCHours", "getUTCMinutes", "getUTCSeconds", "getUTCMilliseconds", "formatter", "datetime", "toUpperCase", "maxJSBI", "afterLatestPossibleTzdbRuleChange", "SystemUTCEpochNanoSeconds", "GetIANATimeZonePreviousTransition", "afterLatestRule", "isFarFuture", "lowercap", "rightNanos", "rightOffsetNs", "leftNanos", "leftOffsetNs", "bisect", "LeapYear", "ISODaysInMonth", "standard", "leapyear", "DayOfWeek", "Y", "dow", "DayOfYear", "BalanceISOYearMonth", "BalanceISODate", "testYear", "deltaDays", "BalanceTime", "NonNegativeModulo", "daysParam", "hoursParam", "offsetShift", "NanosecondsToDays", "TemporalInstant", "dayLengthNs", "startNs", "endNs", "dtStart", "dtEnd", "DifferenceISODateTime", "intermediateNs", "AddZonedDateTime", "isOverflow", "relativeInstant", "oneDayFartherNs", "relativeNs", "BalanceDuration", "nanosecondsBigInt", "microsecondsBigInt", "millisecondsBigInt", "minutesBigInt", "hoursBigInt", "UnbalanceDurationRelative", "yearsParam", "monthsParam", "weeksParam", "relativeToParam", "TemporalDuration", "oneYear", "oneMonth", "oneWeek", "relativeToDateOnly", "newRelativeTo", "untilOptions", "oneYearMonths", "oneYearDays", "MoveRelativeDate", "oneMonthDays", "oneWeekDays", "CalculateOffsetShift", "after", "CreateNegatedTemporalDuration", "propSign", "DifferenceISODate", "CompareISODate", "AddISODate", "midSign", "larger", "smaller", "DifferenceTime", "min1", "ms1", "min2", "ms2", "DifferenceInstant", "wholeDays", "roundedRemainder", "nsPerTimeUnit", "roundedDiff", "y1Param", "mon1Param", "d1Param", "mon2", "mon1", "timeSign", "date1", "date2", "DifferenceZonedDateTime", "nsDiff", "timeRemainderNs", "intermediate", "DifferenceTemporalInstant", "operation", "otherParam", "GetOptionsObject", "defaultLargestUnit", "roundingIncrement", "onens", "twons", "DifferenceTemporalPlainDate", "plainDate", "otherCalendar", "calendarId", "otherCalendarId", "DifferenceTemporalPlainDateTime", "plainDateTime", "DifferenceTemporalPlainTime", "plainTime", "DifferenceTemporalPlainYearMonth", "otherCalendarID", "otherFields", "thisFields", "thisDate", "DifferenceTemporalZonedDateTime", "zonedDateTime", "AdjustRoundedDurationDays", "AddTime", "AddDuration", "dateDuration1", "dateDuration2", "dateLargestUnit", "differenceOptions", "AddInstant", "addedDate", "dtIntermediate", "AddDurationToOrSubtractDurationFromDuration", "AddDurationToOrSubtractDurationFromInstant", "durationLike", "disallowedProperties", "record", "AddDurationToOrSubtractDurationFromPlainDateTime", "AddDurationToOrSubtractDurationFromPlainTime", "temporalTime", "AddDurationToOrSubtractDurationFromPlainYearMonth", "startDate", "durationToAdd", "optionsCopy", "AddDurationToOrSubtractDurationFromZonedDateTime", "quantity", "RoundTime", "nsPerUnit", "rounded", "DaysUntil", "MoveRelativeZonedDateTime", "dayStart", "dayEnd", "greaterThanOrEqual", "zdtRelative", "dayLength", "yearsDuration", "yearsLater", "yearsMonthsWeeksLater", "daysLater", "yearsPassed", "oldRelativeTo", "yearsMonths", "yearsMonthsLater", "allNanoseconds", "ComparisonResult", "ToBigIntExternal", "jsbiBI", "ToBigInt", "toPrimFn", "CreateOnePropObject", "propName", "propValue", "PARSE.offset", "getState", "leftParam", "rightParam", "lstateParam", "rstateParam", "lstate", "rstate", "middle", "mstate", "DATE", "YM", "MD", "TIME", "DATETIME", "ZONED", "INST", "ORIGINAL", "TZ_RESOLVED", "TZ_GIVEN", "CAL_ID", "LOCALE", "OPTIONS", "ObjectHasOwnProperty", "getPropLazy", "getResolvedTimeZoneLazy", "ES.ToTemporalTimeZone", "DateTimeFormatImpl", "locale", "this", "hasOptions", "clonedResolved", "dateAmend", "yearMonthAmend", "monthDayAmend", "timeAmend", "datetimeAmend", "zonedDateTimeAmend", "instantAmend", "supportedLocalesOf", "locales", "propertyDescriptors", "rest", "extractOverrides", "adjustFormatterTimeZone", "formatRange", "isTemporalObject", "sameTemporalType", "aformatter", "atz", "bformatter", "btz", "formatToParts", "formatRangeToParts", "amend", "amended", "weekday", "timeZoneName", "dateStyle", "hasTimeOptions", "dayPeriod", "timeStyle", "hasDateOptions", "ES.IsTemporalDate", "ES.IsTemporalTime", "ES.IsTemporalDateTime", "ES.IsTemporalZonedDateTime", "ES.IsTemporalYearMonth", "ES.IsTemporalMonthDay", "ES.IsTemporalInstant", "temporalObj", "main", "DateTime", "ES.BuiltinTimeZoneGetInstantFor", "ES.ToString", "objTimeZone", "ot", "arguments", "ES.ToBigInt", "ES.ValidateEpochNanoseconds", "epochSeconds", "epochMicroseconds", "ES.ToBigIntExternal", "ES.AddDurationToOrSubtractDurationFromInstant", "until", "ES.DifferenceTemporalInstant", "since", "ES.CreateOnePropObject", "ES.GetOptionsObject", "ES.GetTemporalUnit", "ES.REQUIRED", "ES.ToTemporalRoundingMode", "ES.ToTemporalRoundingIncrement", "roundedNs", "ES.RoundInstant", "ES.ToTemporalInstant", "ES.ToSecondsStringPrecision", "ES.TemporalInstantToString", "toJSON", "toLocaleString", "toZonedDateTime", "ES.IsObject", "ES.ToTemporalCalendar", "ES.CreateTemporalZonedDateTime", "toZonedDateTimeISO", "timeZoneProperty", "ES.GetISO8601Calendar", "fromEpochSeconds", "epochSecondsParam", "ES.ToNumber", "fromEpochMilliseconds", "epochMillisecondsParam", "fromEpochMicroseconds", "epochMicrosecondsParam", "fromEpochNanoseconds", "epochNanosecondsParam", "oneParam", "twoParam", "oneNs", "twoNs", "ArraySort", "ObjectEntries", "impl", "Calendar", "idParam", "ES.IsBuiltinCalendar", "ES.IsTemporalCalendar", "fieldsArray", "Set", "delete", "dateParam", "durationParam", "ES.ToTemporalDate", "ES.ToTemporalDuration", "ES.ToTemporalOverflow", "ES.BalanceDuration", "monthCodeNumberPart", "buildMonthCode", "leap", "resolveNonLunisolarMonth", "calendarDate", "monthsPerYear", "ES.RejectToRange", "ES.ConstrainToRange", "numberPart", "fieldsParam", "ES.PrepareTemporalFields", "ES.RegulateISODate", "ES.CreateTemporalDate", "ES.CreateTemporalYearMonth", "useYear", "ES.CreateTemporalMonthDay", "merged", "nextKey", "newKeys", "ES.AddISODate", "ES.DifferenceISODate", "ES.DayOfWeek", "ES.DayOfYear", "doy", "doj", "ES.ISODaysInMonth", "ES.LeapYear", "OneObjectCache", "cacheToClone", "calls", "hits", "misses", "performance", "MAX_CACHE_ENTRIES", "report", "setObject", "objectMap", "getCacheForObject", "toUtcIsoDateString", "ES.ISOYearString", "ES.ISODateTimePartString", "simpleDateDiff", "HelperBase", "eraLength", "hasEra", "getFormatter", "isoToCalendarDate", "isoDate", "JSON", "stringify", "cached", "dateTimeFormat", "matches", "monthExtra", "normalize", "replace", "toLowerCase", "reviseIntlEra", "checkIcuBugs", "adjustCalendarDate", "keyReverse", "validateCalendarDate", "constantEra", "calendarDateParam", "fromLegacyDate", "calendarType", "largestMonth", "regulateMonthDayNaive", "maximumMonthLength", "calendarToIsoDate", "originalDate", "keyOriginal", "isoEstimate", "estimateIsoDate", "calculateSameMonthResult", "diffDays", "testIsoEstimate", "addDaysIso", "minimumMonthLength", "testCalendarDate", "roundtripEstimate", "diffTotalDaysEstimate", "compareCalendarDates", "maybeConstrained", "oldRoundtripEstimate", "oldSign", "temporalToCalendarDate", "date1Param", "date2Param", "ES.ComparisonResult", "regulateDate", "addDaysCalendar", "addedIso", "addMonthsCalendar", "absMonths", "oldCalendarDate", "daysInPreviousMonth", "monthsInOldYear", "addCalendar", "addedYears", "addedMonths", "initialDays", "untilCalendar", "calendarOne", "calendarTwo", "calendarDaysUntil", "totalDays", "diffYears", "diffMonths", "addedIsoDate", "addedCalendarDate", "endOfMonthIso", "previousMonthDate", "previousMonth", "lastDayOfPreviousMonthIso", "startOfCalendarYear", "startOfCalendarMonth", "oneIso", "twoIso", "isoDaysUntil", "closestCalendar", "closestIso", "calendarYear", "roundTripCalendarDate", "HebrewHelper", "super", "Tishri", "regular", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "minMaxMonthLength", "minOrMax", "getMonthCode", "monthInfo", "IslamicBaseHelper", "DAYS_PER_ISLAMIC_YEAR", "DAYS_PER_ISO_YEAR", "IslamicHelper", "IslamicUmalquraHelper", "IslamicTblaHelper", "IslamicCivilHelper", "IslamicRgsaHelper", "IslamicCcHelper", "PersianHelper", "IndianHelper", "nextYear", "vulnerableToBceBug", "toLocaleDateString", "isGregorianLeapYear", "getMonthInfo", "GregorianBaseHelper", "originalEras", "v8IsVulnerableToJulianBug", "calendarIsVulnerableToJulianBug", "eras", "anchorEra", "erasParam", "reverseOf", "isAnchor", "anchorEpoch", "hasYearZero", "reversedEra", "isoEpoch", "lastEraReversed", "genericName", "completeEraYear", "checkField", "currentValue", "eraFromYear", "adjustedCalendarDate", "matchingEra", "ES.CompareISODate", "OrthodoxBaseHelper", "EthioaaHelper", "CopticHelper", "EthiopicHelper", "RocHelper", "BuddhistHelper", "GregoryHelper", "JapaneseHelper", "ChineseBaseHelper", "getMonthList", "getCalendarDate", "daysPastFeb1", "isoStringFeb1", "setUTCDate", "newYearGuess", "calendarMonthString", "tv", "calendarDay", "calendarYearToVerify", "isoDaysDelta", "oldCalendarDay", "oldMonthString", "monthIndex", "monthString", "withoutML", "monthEntries", "matchingMonthEntry", "ChineseHelper", "DangiHelper", "nonIsoImpl", "helper", "fieldsCopy", "additionalFieldsCopy", "newMonth", "newMonthCode", "newYear", "newEra", "newEraYear", "added", "isoAdded", "newTemporalObject", "cacheOne", "cacheTwo", "startOfYear", "startOfMonthCalendar", "startOfNextMonthCalendar", "startOfYearCalendar", "startOfNextYearCalendar", "Helper", "PlainDate", "isoYearParam", "isoMonthParam", "isoDayParam", "calendarParam", "ES.ToIntegerThrowOnInfinity", "ES.CreateTemporalDateSlots", "ES.CalendarEra", "ES.CalendarEraYear", "ES.CalendarYear", "ES.CalendarMonth", "ES.CalendarMonthCode", "ES.CalendarDay", "ES.CalendarDayOfWeek", "ES.CalendarDayOfYear", "ES.CalendarWeekOfYear", "ES.CalendarDaysInWeek", "ES.CalendarDaysInMonth", "ES.CalendarDaysInYear", "ES.CalendarMonthsInYear", "ES.CalendarInLeapYear", "with", "temporalDateLike", "ES.RejectObjectWithCalendarOrTimeZone", "ES.CalendarFields", "ES.CalendarMergeFields", "ES.CalendarDateFromFields", "withCalendar", "ES.CalendarDateAdd", "ES.CreateNegatedTemporalDuration", "ES.DifferenceTemporalPlainDate", "slot", "ES.CalendarEquals", "ES.TemporalDateToString", "ES.ToShowCalendarOption", "toPlainDateTime", "temporalTimeParam", "ES.CreateTemporalDateTime", "ES.ToTemporalTime", "timeZoneLike", "toPlainYearMonth", "ES.CalendarYearMonthFromFields", "toPlainMonthDay", "ES.CalendarMonthDayFromFields", "getISOFields", "ES.CreateTemporalDateTimeSlots", "temporalDateTimeLike", "ES.InterpretTemporalDateTimeFields", "withPlainTime", "withPlainDate", "temporalDateParam", "temporalDate", "ES.ConsolidateCalendars", "ES.AddDurationToOrSubtractDurationFromPlainDateTime", "ES.DifferenceTemporalPlainDateTime", "ES.RoundISODateTime", "ES.ToTemporalDateTime", "ES.TemporalDateTimeToString", "ES.ToTemporalDisambiguation", "toPlainDate", "ES.TemporalDateTimeToDate", "toPlainTime", "ES.TemporalDateTimeToTime", "isoHour", "isoMicrosecond", "isoMillisecond", "isoMinute", "isoNanosecond", "isoSecond", "val1", "val2", "Duration", "ES.ToIntegerWithoutRounding", "ES.RejectDuration", "ES.IsTemporalDuration", "ES.DurationSign", "blank", "negated", "ES.AddDurationToOrSubtractDurationFromDuration", "ES.DefaultTemporalLargestUnit", "smallestUnitPresent", "ES.LargerOfTwoTemporalUnits", "largestUnitPresent", "ES.ToTemporalDateTimeRoundingIncrement", "ES.ToRelativeTemporalObject", "ES.UnbalanceDurationRelative", "ES.RoundDuration", "ES.AdjustRoundedDurationDays", "untilResult", "ES.MoveRelativeZonedDateTime", "ES.TemporalDurationToString", "DurationFormat", "console", "shift1", "ES.CalculateOffsetShift", "shift2", "totalNs1", "ES.TotalDurationNanoseconds", "totalNs2", "PlainMonthDay", "referenceISOYearParam", "ES.CreateTemporalMonthDaySlots", "temporalMonthDayLike", "ES.ToTemporalMonthDay", "ES.TemporalMonthDayToString", "receiverFieldNames", "inputFieldNames", "mergedFields", "ES.SystemUTCEpochNanoSeconds", "tZ", "ES.BuiltinTimeZoneGetPlainDateTimeFor", "plainDateTimeISO", "SystemTimeZone", "fmt", "ES.SystemTimeZone", "Now", "plainDateISO", "plainTimeISO", "zonedDateTimeISO", "TemporalTimeToString", "ES.RoundTime", "ES.FormatSecondsStringPart", "PlainTime", "isoHourParam", "isoMinuteParam", "isoSecondParam", "isoMillisecondParam", "isoMicrosecondParam", "isoNanosecondParam", "ES.RejectTime", "temporalTimeLike", "partialTime", "ES.ToTemporalTimeRecord", "ES.RegulateTime", "ES.AddDurationToOrSubtractDurationFromPlainTime", "ES.DifferenceTemporalPlainTime", "TimeZone", "timeZoneIdentifierParam", "ES.GetCanonicalTimeZoneIdentifier", "ES.IsTemporalTimeZone", "instantParam", "ES.TestTimeZoneOffsetString", "ES.ParseTimeZoneOffsetString", "ES.GetIANATimeZoneOffsetNanoseconds", "getOffsetStringFor", "ES.BuiltinTimeZoneGetOffsetStringFor", "getPlainDateTimeFor", "getInstantFor", "dateTimeParam", "ES.GetEpochFromISOParts", "nsEarlier", "nsLater", "earliest", "latest", "getNextTransition", "startingPointParam", "startingPoint", "oneYearLater", "uppercap", "getPreviousTransition", "ES.GetIANATimeZonePreviousTransition", "PlainYearMonth", "referenceISODayParam", "ES.CreateTemporalYearMonthSlots", "temporalYearMonthLike", "ES.AddDurationToOrSubtractDurationFromPlainYearMonth", "ES.DifferenceTemporalPlainYearMonth", "ES.ToTemporalYearMonth", "ES.TemporalYearMonthToString", "ZonedDateTime", "timeZoneParam", "ES.CreateTemporalZonedDateTimeSlots", "hoursInDay", "today", "tomorrowFields", "tomorrow", "todayNs", "tomorrowNs", "ES.GetOffsetNanosecondsFor", "temporalZonedDateTimeLike", "ES.ToTemporalOffset", "fieldsWithOffset", "ES.ArrayPush", "fieldsWithTimeZoneAndOffset", "ES.InterpretISODateTimeOffset", "thisDt", "withTimeZone", "ES.AddDurationToOrSubtractDurationFromZonedDateTime", "ES.DifferenceTemporalZonedDateTime", "instantStart", "ES.AddZonedDateTime", "ES.ToTemporalZonedDateTime", "ES.TimeZoneEquals", "ES.TemporalZonedDateTimeToString", "startOfDay", "toInstant", "wt", "Temporal.Instant", "Temporal.Calendar", "Temporal.PlainDate", "Temporal.PlainDateTime", "Temporal.Duration", "Temporal.PlainMonthDay", "Temporal.PlainTime", "Temporal.TimeZone", "Temporal.PlainYearMonth", "Temporal.ZonedDateTime", "sleep", "durationInMillisecond", "getCurrentTimeInHighPrecision", "createLevelDatabase", "Level", "LR", "LevelWrapper", "iteratorOptions", "BlockstoreLevel", "li", "addLinksToHamtBucket", "rootBucket", "toPrefix", "toBucketPath", "findShardCid", "bucketPath", "entryPrefix", "entryName", "find_cid_in_shard_default", "extractDataFromBlock", "blockStart", "requestedStart", "requestedEnd", "blockLength", "blockEnd", "extract_data_from_block_default", "validateOffsetAndLength", "fileSize", "validate_offset_and_length_default", "FixedFIFO", "FIFO", "pushable", "_pushable", "getNext", "onEnd", "onNext", "waitNext", "bufferNext", "bufferError", "_return", "_throw", "pDefer", "deferred", "CustomEvent", "ordered", "ops", "slotAvailable", "resultAvailable", "sourceFinished", "sourceErr", "opErred", "valuesAvailable", "yieldOrderedValues", "yieldUnOrderedValues", "sources", "syncSources", "fns", "duplexPipelineFn", "rawPipe", "sourceWrap", "peekable", "import_eventemitter3", "VR", "TimeoutError", "getDOMException", "errorMessage", "getAbortedReason", "pTimeout", "timer", "cancelablePromise", "timeoutError", "comparator", "it", "__classPrivateFieldGet", "kind", "_PriorityQueue_queue", "PriorityQueue", "run", "__classPrivateFieldSet", "_PQueue_instances", "_PQueue_carryoverConcurrencyCount", "_PQueue_isIntervalIgnored", "_PQueue_intervalCount", "_PQueue_intervalCap", "_PQueue_interval", "_PQueue_intervalEnd", "_PQueue_intervalId", "_PQueue_timeoutId", "_PQueue_queue", "_PQueue_queueClass", "_PQueue_pending", "_PQueue_concurrency", "_PQueue_isPaused", "_PQueue_throwOnTimeout", "_PQueue_doesIntervalAllowAnother_get", "_PQueue_doesConcurrentAllowAnother_get", "_PQueue_next", "_PQueue_onResumeInterval", "_PQueue_isIntervalPaused_get", "_PQueue_tryToStartAnother", "_PQueue_initializeIntervalIfNeeded", "_PQueue_onInterval", "_PQueue_processQueue", "_PQueue_throwOnAbort", "_PQueue_onEvent", "PQueue", "rP", "_a", "_c", "_d", "newConcurrency", "function_", "functions", "delay", "canInitializeInterval", "job", "walkDAG", "streamPosition", "ed", "childOps", "childLink", "childStart", "childEnd", "childQueue", "fileContent", "depth", "yieldFileContent", "wanted", "file_default", "directoryContent", "yieldDirectoryContent", "linkName", "linkPath", "directory_default", "hamtShardedDirectoryContent", "yieldHamtDirectoryContent", "listDirectory", "hamt_sharded_directory_default", "findLinkCid", "contentExporters", "unixFsResolver", "toResolve", "py", "linkCid", "nextName", "nextPath", "unixfs_v1_default", "rawContent", "contentGenerator", "cP", "raw_default", "subObject", "subPath", "subObjectCid", "dP", "dag_cbor_default", "hP", "identity_default", "resolvers", "yP", "resolvers_default", "cidAndRest", "Kv", "walkPath", "entryPath", "startingDepth", "exporter", "import_readable_stream", "xb", "PLACEHOLDER_VALUE", "DataStoreLevel", "tenant", "messageCid", "dataCid", "blockstoreForData", "dataDagRoot", "contentIterator", "VI", "dataSize", "blockstoreForReferenceCounting", "referenceCountingPartitionName", "dataPartitionName", "base64urlString", "payloadString", "objectString", "_0n", "_1n", "_2n", "CU_O", "CURVE", "POW_2_256", "SQRT_M1", "SQRT_D", "SQRT_AD_MINUS_ONE", "INVSQRT_A_MINUS_D", "ONE_MINUS_D_SQ", "D_MINUS_ONE_SQ", "ExtendedPoint", "toInv", "invertBatch", "assertExtPoint", "Y1", "Z1", "X2", "Y2", "Z2", "X1Z2", "X2Z1", "Y1Z2", "Y2Z1", "x1y1", "X3", "Y3", "T3", "Z3", "windows", "window", "affinePoint", "precomputes", "pointPrecomputes", "maxNumber", "shiftBy", "wbits", "pr", "normalizeScalar", "P0", "invZ", "invert", "legacyRist", "assertRstPoint", "RistrettoPoint", "ep", "Ns", "Ns_D_is_sq", "uvRatio", "edIsNegative", "Nt", "W0", "W1", "W2", "W3", "ensureBytes", "r1", "bytes255ToNumberLE", "R1", "R2", "emsg", "equalBytes", "numberTo32BytesLE", "u1_2", "u2_2", "isValid", "invertSqrt", "Dy", "u2sq", "invsqrt", "D1", "D2", "zInv", "_x", "_y", "bytesToHex", "P", "bytesToNumberLE", "isXOdd", "getExtendedPublicKey", "u8", "concatBytes", "uint8a", "hexToBytes", "hexByte", "numberTo32BytesBE", "MAX_255B", "modulo", "nums", "lastMultiplied", "inverted", "pow2", "pow_2_252_3", "_5n", "_10n", "_20n", "_40n", "_80n", "b10", "b20", "b40", "b80", "b160", "b240", "b250", "v3", "v7", "vx2", "root1", "root2", "useRoot1", "useRoot2", "noRoot", "modlLE", "adjustBytes25519", "checkPrivateKey", "getKeyFromHash", "hashed", "pointBytes", "_sha512Sync", "getPublicKey", "prepareVerification", "SB", "finishVerification", "kA", "bytesLength", "messages", "validateKey", "jwk", "publicKeyToJwk", "publicKeyBytes", "ed25519", "privateJwk", "privateKeyBytes", "publicJwk", "_3n", "_8n", "divNearest", "endo", "POW_2_128", "k1neg", "k2neg", "fieldLen", "groupLen", "hashLen", "compressedLen", "uncompressedLen", "weierstrass", "USE_ENDOMORPHISM", "ShaError", "assertJacPoint", "JacobianPoint", "Z1Z1", "Z2Z2", "U1", "U2", "S1", "S2", "x1b", "HH", "HHH", "V", "k1p", "k2p", "offset1", "offset2", "cond1", "cond2", "constTimeNegate", "fake", "f1p", "f2p", "is0", "iz1", "iz2", "iz3", "neg", "isShort", "bytesToNumber", "isValidFieldElement", "sqrtMod", "normalizePrivateKey", "msgHash", "recovery", "normalizeSignature", "truncateHash", "radj", "rinv", "numTo32bStr", "aP", "bQ", "sliceDER", "parseDERInt", "parseDERSignature", "sBytes", "rBytesLeft", "hexToNumber", "isWithinCurveOrder", "HALF", "sHex", "numberToHexUnpadded", "rHex", "sHexL", "rHexL", "sLen", "rLen", "numTo32b", "_6n", "_11n", "_22n", "_23n", "_44n", "_88n", "b11", "b22", "b44", "b88", "b176", "b220", "b223", "scratch", "bits2int_2", "truncateOnly", "_sha256Sync", "_hmacSha256Sync", "HmacDrbg", "qByteLen", "kmdToSig", "kBytes", "lowS", "kinv", "normalizePublicKey", "z1", "int2octets", "initSigArgs", "extraEntropy", "seedArgs", "finalizeSig", "recSig", "recovered", "privKey", "vopts", "TAGGED_HASH_PREFIXES", "minLen", "ckey", "tagP", "tagH", "import_secp256k1", "hz", "DwnError", "DwnErrorCode", "Secp256k1", "uncompressedPublicKeyBytes", "publicKeyHex", "hashedContent", "relativePath", "currentPublicKey", "segment", "currentPrivateKey", "uncompressedPublicKey", "tweakInput", "publicKeyBuffer", "tweakBuffer", "J5", "secp256k1Derivation", "privateKeyBuffer", "pathSegments", "signers", "GeneralJwsSigner", "jws", "signatureInputs", "signer", "signatureInput", "protectedHeader", "protectedHeaderString", "protectedHeaderBase64UrlString", "signingInputString", "signingInputBytes", "signatureBytes", "import_isPlainObject", "qz", "Jws", "signatureEntry", "kid", "base64UrlPayload", "jwkPublic", "verifier", "payloadJson", "Nz", "did", "keyMaterials", "keyMaterial", "lexicographicalCompare", "precompiled_validators_exports", "Definitions", "EventsGet", "GeneralJwk", "GeneralJws", "HooksWrite", "JwkVerificationMethod", "MessagesGet", "PermissionsDefinitions", "PermissionsGrant", "PermissionsRequest", "ProtocolDefinition", "ProtocolRuleSet", "ProtocolsConfigure", "ProtocolsQuery", "PublicJwk", "RecordsDelete", "RecordsQuery", "RecordsRead", "RecordsWrite", "validate10", "schema11", "pattern0", "validate11", "instancePath", "parentData", "parentDataProperty", "rootData", "vErrors", "_errs1", "key0", "data0", "_errs2", "valid0", "data1", "_errs5", "valid2", "len0", "i0", "data2", "_errs7", "data3", "_errs9", "valid3", "data4", "_errs12", "missing0", "_errs3", "missing1", "_errs6", "valid1", "_errs8", "_errs10", "validate14", "schema17", "pattern3", "pattern4", "func2", "data5", "_errs13", "_errs15", "_errs16", "data7", "_errs18", "data8", "_errs21", "_errs24", "_errs26", "_errs28", "_errs30", "_errs32", "data14", "_errs34", "_errs36", "key3", "data15", "_errs37", "valid6", "data16", "_errs40", "data17", "_errs43", "validate16", "schema23", "schema28", "validate19", "_errs0", "passing0", "err0", "_errs4", "err1", "err3", "err4", "_errs11", "err5", "_valid0", "err6", "_errs14", "err7", "err8", "_errs17", "err9", "_errs19", "err10", "missing2", "err11", "_errs22", "err12", "valid4", "_errs23", "err13", "_errs25", "err14", "_errs27", "err15", "_errs29", "err16", "_errs31", "err17", "_errs33", "err18", "_errs35", "err19", "err20", "data18", "_errs39", "err21", "_errs41", "missing3", "err22", "_errs42", "err23", "valid5", "err24", "err25", "missing4", "_errs45", "_errs47", "data23", "_errs49", "_errs50", "_errs52", "_errs54", "_errs56", "_errs58", "_errs60", "_errs62", "_errs64", "_errs65", "_errs66", "valid8", "_errs67", "_errs69", "valid9", "_errs70", "missing5", "err26", "_valid2", "err27", "err28", "err29", "_valid1", "_errs72", "_errs74", "valid11", "_errs75", "missing6", "err30", "_valid3", "err31", "err32", "err33", "_errs77", "_errs79", "valid13", "_errs80", "missing7", "err34", "_valid4", "_errs81", "missing8", "err35", "_errs82", "missing9", "err36", "_errs83", "missing10", "err37", "_errs84", "missing11", "err38", "_errs85", "missing12", "err39", "_errs86", "missing13", "err40", "err41", "_errs87", "err42", "valid14", "data34", "_errs88", "err43", "err44", "err45", "valid7", "pattern13", "_errs20", "data9", "data10", "data11", "data12", "valid12", "data13", "_errs44", "_errs51", "valid17", "_errs59", "data19", "_errs63", "valid19", "data20", "_errs68", "valid22", "valid21", "_errs71", "_errs73", "valid23", "data21", "valid24", "data22", "data25", "_errs90", "data29", "_errs92", "data30", "_errs94", "data31", "_errs97", "_errs100", "data33", "_errs102", "_errs105", "validate21", "schema34", "validate12", "validate23", "_errs38", "_errs46", "_errs48", "_errs53", "_errs55", "_errs57", "_errs61", "validate24", "schema36", "data6", "validate26", "validate28", "schema40", "validate30", "validate31", "schema42", "schema43", "pattern21", "validate33", "schema48", "validate35", "pattern25", "schema55", "pattern27", "wrapper0", "validate36", "validate38", "schema56", "validate41", "schema57", "validate43", "schema59", "validateJsonSchema", "schemaName", "validateFn", "errorObj", "DwnInterfaceName", "DwnMethodName", "Message", "rawMessage", "dwnInterface", "dwnMethod", "schemaLookupKey", "cidA", "cidB", "currentNewestMessage", "authPayload", "authPayloadStr", "authPayloadBytes", "import_flat", "e$", "flattened", "t$", "flat", "removeEmptyObjects", "isEmptyObject", "removeUndefinedProperties", "import_lru_cache", "f$", "MemoryCache", "timeToLiveInSeconds", "c$", "LruCache", "GeneralJwsVerifier", "didResolver", "isVerified", "cacheKey", "cachedValue", "didDocument", "verificationMethods", "verificationMethod", "vm", "canonicalAuth", "incomingMessage", "authenticate", "authorize", "validateAuthorizationIntegrity", "authorizationPayloadConstraints", "descriptorCid", "expectedDescriptorCid", "allowedProperties", "customProperties", "propertyName", "validateProtocolUrlNormalized", "normalized", "normalizeProtocolUrl", "normalizeUrl", "validateSchemaUrlNormalized", "normalizeSchemaUrl", "fullUrl", "removeTrailingSlash", "DateSort", "authorization", "recipientDid", "filterCopy", "dateCreated", "rangeFilter", "protocol", "schema", "DataStream", "uint8Array", "arrayOfBytes", "totalLength", "accumulatedValue", "currentIndex", "d$", "_size", "KeyDerivationScheme", "HdKey", "ancestorKey", "subDerivationPath", "ancestorPrivateKey", "ancestorPrivateKeyDerivationPath", "derivedPrivateKeyBytes", "derivedPrivateJwk", "import_varint", "_$", "Did", "secondColonIndex", "DidKeyResolver", "multicodecHeaderSize", "currentByte", "_scheme", "_method", "idBytes", "multicodec", "yS", "multicodecSize", "keySpecificContext", "keyId", "ed25519Multicodec", "methodSpecificId", "import_cross_fetch", "S$", "M$", "crossFetch", "DidIonResolver", "resolutionEndpoint", "resolutionUrl", "DidResolver", "didMethod", "cachedResolutionResult", "resolutionResult", "didResolutionMetadata", "errMsg", "ENCODING", "ENCODING_LEN", "TIME_MAX", "TIME_LEN", "RANDOM_LEN", "replaceCharAt", "incrementBase32", "charIndex", "maxCharIndex", "randomChar", "prng", "encodeTime", "encodeRandom", "detectPrng", "allowInsecure", "currPrng", "seedTime", "monotonicFactory", "lastTime", "lastRandom", "incrementedRandom", "newRandom", "ulid", "WATERMARKS_SUBLEVEL_NAME", "CIDS_SUBLEVEL_NAME", "EventLogLevel", "tenantEventLog", "watermarkLog", "cidLog", "watermark", "cids", "numEventsDeleted", "watermarks", "MessageReply", "EventsGetHandler", "eventLog", "eventsGet", "DwnConstant", "messageCids", "MessagesGetHandler", "messageStore", "dataStore", "messagesGet", "messageInterface", "dataBytes", "readonly", "linksWithin", "elementPath", "treeWithin", "Block", "IndexLevel", "prefixes", "requiredProperties", "missingPropertiesForID", "matchedIDs", "checkMatches", "propertyFilter", "propertyValue", "propertyKey", "MessageStoreLevel", "cidString", "partition", "resultIds", "indexes", "encodedMessageBlock", "encodedMessageBlockCid", "indexDocument", "definition", "typeName", "typesCopy", "StorageController", "ProtocolsConfigureHandler", "protocolsConfigure", "query", "existingMessages", "newestMessage", "incomingMessageIsNewest", "messageReply", "deletedMessageCids", "propertiesToIndex", "author", "ProtocolsQueryHandler", "protocolsQuery", "objectWithRemainingProperties", "eccrypto", "L$", "Encryption", "initializationVector", "plaintextStream", "cipherStream", "_S", "encryptedChunk", "finalChunk", "decryptedChunk", "plaintext", "_2", "eciesEncryptionOutput", "EncryptionAlgorithm", "methodToAllowedActionMap", "ProtocolAuthorization", "requesterDid", "ancestorMessageChain", "protocolDefinition", "inboundMessageRuleSet", "protocolUri", "protocols", "recordsWrite", "recordsRead", "recordsWriteMessage", "contextId", "currentParentId", "parentMessages", "inboundMessage", "protocolPath", "protocolPathArray", "currentRuleSet", "currentTypeName", "nextRuleSet", "partialProtocolPath", "typeNames", "declaredProtocolPath", "declaredTypeName", "ancestorProtocolPath", "ancestor", "ancestorTypeName", "actualProtocolPath", "protocolTypes", "protocolType", "dataFormat", "incomingMessageMethod", "actionRules", "allowedActions", "actionRule", "messageForAuthorCheck", "expectedRequesterDid", "messageForRecipientCheck", "inboundMessageAction", "initialWrite", "authorOfInitialWrite", "expectedAncestors", "expectedDefinitionId", "ancestorMessage", "actualDefinitionId", "Records", "recordId", "encryption", "matchingEncryptedKey", "fullDerivationPath", "leafPrivateKey", "encryptedKeyBytes", "ephemeralPublicKey", "keyEncryptionInitializationVector", "messageAuthenticationCode", "dataEncryptionKey", "dataEncryptionInitializationVector", "keyDerivationScheme", "protocolPathSegments", "rootPublicKey", "fullDescendantDerivationPath", "ancestorPublicKeyBytes", "ancestorPrivateKeyBytes", "ancestorKeyDerivationPath", "descendantKeyDerivationPath", "ancestorSegment", "descendantSegment", "currentTime", "attestation", "unsignedMessage", "published", "datePublished", "createOptions", "dateModified", "expectedContextId", "expectedAttestationCid", "actualAttestationCid", "expectedEncryptionCid", "actualEncryptionCid", "propertyCount", "entryIdInput", "encryptionInput", "keyEncryption", "keyEncryptionInput", "leafPublicKey", "keyEncryptionOutput", "encryptedKey", "encryptedKeyData", "attestationPayload", "attestationPayloadBytes", "authorizationPayload", "attestationCid", "encryptionCid", "authorizationPayloadBytes", "existingWriteMessage", "newMessage", "mutableDescriptorProperties", "descriptorPropertyNames", "descriptorPropertyName", "valueInExistingWrite", "valueInNewMessage", "deleteAllOlderMessagesButKeepInitialWrite", "comparedToMessage", "existingRecordsWrite", "constructRecordsWriteIndexes", "RecordsWriteHandler", "newestExistingMessage", "isLatestBaseState", "PrunedInitialRecordsWriteHandler", "_dataStream", "_newestExistingMessage", "_incomingMessage", "_dataStore", "RecordsDeleteHandler", "recordsDelete", "constructIndexes", "RecordsQueryHandler", "recordsQuery", "records", "sortRecords", "publishedRecords", "unpublishedRecordsForRequester", "unpublishedRecordsByRequester", "dateSort", "authorizationSignatureInput", "newestRecordsWrite", "RecordsReadHandler", "recordsWriteWithoutAuthorization", "Dwn", "dwn", "errorMessageReply", "handlerKey", "expectedInterface", "expectedMethod", "StorageController", "messageStore", "dataStore", "eventLog", "tenant", "message", "indexes", "dataStream", "messageCid", "Message", "result", "DwnError", "DwnErrorCode", "filter", "messages", "dataCid", "dataSize", "DwnConstant", "dataBytes", "ba", "ot", "ProtocolsConfigureHandler", "didResolver", "messageStore", "dataStore", "eventLog", "tenant", "message", "dataStream", "protocolsConfigure", "ProtocolsConfigure", "e", "MessageReply", "canonicalAuth", "query", "DwnInterfaceName", "DwnMethodName", "existingMessages", "newestMessage", "Message", "incomingMessageIsNewest", "messageReply", "indexes", "StorageController", "deletedMessageCids", "messageCid", "_a", "dataSize", "definition", "propertiesToIndex", "__rest", "author", "ProtocolsQuery", "Message", "message", "validateAuthorizationIntegrity", "validateProtocolUrlNormalized", "options", "descriptor", "DwnInterfaceName", "DwnMethodName", "_a", "getCurrentTimeInHighPrecision", "removeUndefinedProperties", "authorization", "filter", "normalizeProtocolUrl", "ProtocolsQueryHandler", "didResolver", "messageStore", "dataStore", "tenant", "message", "protocolsQuery", "ProtocolsQuery", "e", "MessageReply", "canonicalAuth", "query", "DwnInterfaceName", "DwnMethodName", "removeUndefinedProperties", "messages", "entries", "_", "objectWithRemainingProperties", "__rest", "crypto", "eccrypto", "import_readable_stream", "Encryption", "key", "initializationVector", "plaintextStream", "cipher", "cipherStream", "chunk", "encryptedChunk", "finalChunk", "err", "decipher", "decryptedChunk", "uncompressedPublicKey", "plaintext", "publicKey", "ciphertext", "ephemPublicKey", "iv", "mac", "input", "privateKeyBuffer", "eciesEncryptionOutput", "EncryptionAlgorithm", "init_shim", "ProtocolActor", "ProtocolAction", "methodToAllowedActionMap", "DwnMethodName", "ProtocolAction", "ProtocolAuthorization", "tenant", "incomingMessage", "requesterDid", "messageStore", "ancestorMessageChain", "protocolDefinition", "inboundMessageRuleSet", "protocolUri", "query", "DwnInterfaceName", "protocols", "recordsWrite", "recordsRead", "existingMessages", "recordsWriteMessage", "RecordsWrite", "protocol", "contextId", "currentParentId", "parentMessages", "parent", "inboundMessage", "protocolPath", "protocolPathArray", "currentRuleSet", "i", "currentTypeName", "nextRuleSet", "partialProtocolPath", "DwnError", "DwnErrorCode", "types", "typeNames", "declaredProtocolPath", "declaredTypeName", "ancestorProtocolPath", "ancestor", "ancestorTypeName", "actualProtocolPath", "protocolTypes", "typeName", "protocolType", "schema", "dataFormat", "incomingMessageMethod", "actionRules", "allowedActions", "actionRule", "ProtocolActor", "messageForAuthorCheck", "expectedRequesterDid", "Message", "messageForRecipientCheck", "inboundMessageAction", "initialWrite", "authorOfInitialWrite", "expectedAncestors", "expectedDefinitionId", "ancestorMessage", "actualDefinitionId", "Records", "recordsWrite", "ancestorPrivateKey", "cipherStream", "recordId", "contextId", "descriptor", "encryption", "matchingEncryptedKey", "key", "DwnError", "DwnErrorCode", "fullDerivationPath", "leafPrivateKey", "encryptedKeyBytes", "Encoder", "ephemeralPublicKey", "Secp256k1", "keyEncryptionInitializationVector", "messageAuthenticationCode", "dataEncryptionKey", "Encryption", "dataEncryptionInitializationVector", "keyDerivationScheme", "KeyDerivationScheme", "protocolPathSegments", "rootPublicKey", "fullDescendantDerivationPath", "ancestorPublicKeyBytes", "ancestorPrivateKeyDerivationPath", "_a", "subDerivationPath", "ancestorPrivateKeyBytes", "ancestorKeyDerivationPath", "descendantKeyDerivationPath", "ancestorSegment", "descendantSegment", "RecordsWrite", "Message", "message", "validateAuthorizationIntegrity", "recordsWrite", "options", "dataCid", "_a", "Cid", "dataSize", "_b", "currentTime", "getCurrentTimeInHighPrecision", "descriptor", "DwnInterfaceName", "DwnMethodName", "normalizeProtocolUrl", "normalizeSchemaUrl", "_c", "_d", "removeUndefinedProperties", "author", "Jws", "recordId", "_e", "contextId", "descriptorCid", "computeCid", "attestation", "encryption", "authorization", "unsignedMessage", "published", "datePublished", "createOptions", "tenant", "messageStore", "ProtocolAuthorization", "authorize", "dateCreated", "dateModified", "expectedContextId", "expectedAttestationCid", "actualAttestationCid", "expectedEncryptionCid", "actualEncryptionCid", "DwnError", "DwnErrorCode", "validateProtocolUrlNormalized", "validateSchemaUrlNormalized", "payloadJson", "expectedDescriptorCid", "propertyCount", "entryIdInput", "recordsWriteMessage", "encryptionInput", "keyEncryption", "keyEncryptionInput", "fullDerivationPath", "Records", "leafPublicKey", "keyEncryptionOutput", "Encryption", "encryptedKey", "Encoder", "ephemeralPublicKey", "Secp256k1", "keyEncryptionInitializationVector", "messageAuthenticationCode", "encryptedKeyData", "EncryptionAlgorithm", "signatureInputs", "attestationPayload", "attestationPayloadBytes", "GeneralJwsSigner", "signatureInput", "authorizationPayload", "attestationCid", "encryptionCid", "authorizationPayloadBytes", "messages", "existingWriteMessage", "newMessage", "mutableDescriptorProperties", "descriptorPropertyNames", "descriptorPropertyName", "valueInExistingWrite", "valueInNewMessage", "signature", "deleteAllOlderMessagesButKeepInitialWrite", "tenant", "existingMessages", "comparedToMessage", "messageStore", "dataStore", "eventLog", "deletedMessageCids", "message", "Message", "StorageController", "RecordsWrite", "existingRecordsWrite", "indexes", "constructRecordsWriteIndexes", "messageCid", "RecordsWriteHandler", "didResolver", "messageStore", "dataStore", "eventLog", "tenant", "message", "dataStream", "recordsWrite", "RecordsWrite", "e", "MessageReply", "authenticate", "query", "DwnInterfaceName", "existingMessages", "initialWrite", "newestExistingMessage", "Message", "incomingMessageIsNewest", "newestMessage", "indexes", "constructRecordsWriteIndexes", "error", "DwnErrorCode", "messageReply", "deleteAllOlderMessagesButKeepInitialWrite", "incomingMessage", "DwnError", "StorageController", "isLatestBaseState", "descriptor", "PrunedInitialRecordsWriteHandler", "RecordsWriteHandler", "_dataStream", "_newestExistingMessage", "_incomingMessage", "messageStore", "_dataStore", "eventLog", "tenant", "message", "indexes", "messageCid", "Message", "RecordsDelete", "Message", "message", "validateAuthorizationIntegrity", "options", "recordId", "currentTime", "getCurrentTimeInHighPrecision", "descriptor", "DwnInterfaceName", "DwnMethodName", "_a", "authorization", "tenant", "authorize", "RecordsDeleteHandler", "didResolver", "messageStore", "dataStore", "eventLog", "tenant", "message", "recordsDelete", "RecordsDelete", "e", "MessageReply", "authenticate", "query", "DwnInterfaceName", "existingMessages", "newestExistingMessage", "RecordsWrite", "incomingMessageIsNewest", "newestMessage", "DwnMethodName", "indexes", "constructIndexes", "messageCid", "Message", "deleteAllOlderMessagesButKeepInitialWrite", "descriptor", "RecordsQueryHandler", "didResolver", "messageStore", "dataStore", "tenant", "message", "recordsQuery", "RecordsQuery", "e", "MessageReply", "authenticate", "records", "sortRecords", "entries", "record", "_", "objectWithRemainingProperties", "__rest", "filter", "DwnInterfaceName", "DwnMethodName", "StorageController", "publishedRecords", "unpublishedRecordsForRequester", "unpublishedRecordsByRequester", "messages", "dateSort", "DateSort", "a", "b", "lexicographicalCompare", "m", "RecordsRead", "Message", "message", "validateAuthorizationIntegrity", "options", "recordId", "authorizationSignatureInput", "currentTime", "getCurrentTimeInHighPrecision", "descriptor", "DwnInterfaceName", "DwnMethodName", "_a", "authorization", "tenant", "newestRecordsWrite", "messageStore", "ProtocolAuthorization", "RecordsReadHandler", "didResolver", "messageStore", "dataStore", "tenant", "message", "recordsRead", "RecordsRead", "e", "MessageReply", "authenticate", "query", "DwnInterfaceName", "existingMessages", "newestExistingMessage", "RecordsWrite", "DwnMethodName", "newestRecordsWrite", "error", "messageCid", "Message", "result", "_", "recordsWriteWithoutAuthorization", "__rest", "Dwn", "config", "DwnInterfaceName", "DwnMethodName", "EventsGetHandler", "MessagesGetHandler", "ProtocolsConfigureHandler", "ProtocolsQueryHandler", "RecordsDeleteHandler", "RecordsQueryHandler", "RecordsReadHandler", "RecordsWriteHandler", "PrunedInitialRecordsWriteHandler", "_a", "DidResolver", "_b", "AllowAllTenantGate", "_c", "MessageStoreLevel", "_d", "DataStoreLevel", "_e", "EventLogLevel", "dwn", "tenant", "rawMessage", "dataStream", "errorMessageReply", "handlerKey", "message", "expectedInterface", "expectedMethod", "MessageReply", "dwnInterface", "dwnMethod", "Message", "error", "_f", "_h", "_g", "DidIonApi", "resolutionEndpoint", "__async", "options", "_a", "_b", "generateKeyPair", "didOptions", "key", "publicKey", "__spreadValues", "did", "DID", "didState", "didDocument", "verificationMethod", "purpose", "service", "serviceEntry", "keys", "keyOption", "resolutionUrl", "response", "utils_exports", "__export", "DID_REGEX", "createVerificationMethodWithPrivateKeyJwk", "getServices", "parseDid", "didString", "method", "id", "keyPairJwk", "publicKeyJwk", "privateKeyJwk", "didKeyResolver", "DidKeyResolver", "DidKeyApi", "_options", "verificationKeyPair", "ed25519_exports", "keyAgreementKeyPair", "verificationKeyId", "keyAgreementKeyId", "verificationJwkPair", "verificationKey", "keyAgreementJwkPair", "keyAgreementKey", "nopCache", "_key", "_value", "DidResolver", "methodResolver", "resolver", "cachedResolution", "import_level", "import_flat", "init_shim", "init_shim", "getRandomValues", "rnds8", "rng", "init_shim", "byteToHex", "i", "unsafeStringify", "arr", "offset", "init_shim", "init_shim", "randomUUID", "native_default", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "i", "unsafeStringify", "v4_default", "createJsonRpcRequest", "id", "method", "params", "parseJson", "text", "import_readable_web_to_node_stream", "flatten", "flat", "ProfileIndex", "location", "id", "__async", "ops", "keyPrefixes", "keyPrefix", "op", "record", "flattenedRecord", "property", "propVal", "key", "filter", "matches", "promises", "propertyName", "propertyValue", "value", "promise", "numFilters", "docIds", "docId", "iteratorOptions", "iter", "__forAwait", "more", "temp", "error", "doc", "k", "val", "range", "inequality", "_ProfileStore", "options", "__spreadValues", "Level", "entry", "e", "results", "profiles", "serializedProfiles", "serializedProfile", "ProfileStore", "ProfileApi", "store", "_a", "profile", "_transportClients", "DwnRpcClient", "clients", "__privateAdd", "__privateSet", "HttpDwnRpcClient", "client", "transportScheme", "__privateGet", "request", "url", "transportClient", "requestId", "v4_default", "jsonRpcRequest", "createJsonRpcRequest", "fetchOpts", "resp", "dwnRpcResponse", "dataStream", "headers", "jsonRpcResponse", "parseJson", "code", "message", "reply", "blobToIsomorphicNodeReadable", "blob", "webReadableToIsomorphicNodeReadable", "webReadable", "dwnMessageCreators", "DwnInterfaceName", "DwnMethodName", "EventsGet", "MessagesGet", "RecordsRead", "RecordsQuery", "RecordsWrite", "RecordsDelete", "ProtocolsQuery", "ProtocolsConfigure", "_getDwnMessage", "getDwnMessage_fn", "_constructDwnMessage", "constructDwnMessage_fn", "_getAuthorSignatureInput", "getAuthorSignatureInput_fn", "_Web5UserAgent", "Dwn", "DidResolver", "DidIonApi", "DidKeyApi", "__privateMethod", "Message", "dwnRpcRequest", "messageData", "data", "didResolution", "service", "utils_exports", "serviceEndpoint", "nodes", "dwnReply", "errorMessages", "node", "Web5UserAgent", "author", "messageType", "messageCid", "dwnSignatureInput", "messagesGet", "result", "messageEntry", "dwnMessage", "encodedData", "dataBytes", "Encoder", "recordsRead", "detail", "DataStream", "readableStream", "messageOptions", "isomorphicNodeReadable", "forCid", "forProcessMessage", "Cid", "messageCreateInput", "__spreadProps", "authorDid", "keys", "privateKeyJwk", "kidFragment", "kid", "init_shim", "init_shim", "import_readable_web_to_node_stream", "init_shim", "textDecoder", "dataToBlob", "data", "dataFormat", "dataBlob", "detectedType", "toType", "dataBytes", "Encoder", "isEmptyObject", "obj", "toType", "obj", "_attestation", "_contextId", "_descriptor", "_encodedData", "_encryption", "_readableStream", "_recordId", "_web5Agent", "_setDeletedStatus", "setDeletedStatus_fn", "_verifyPermittedMutation", "verifyPermittedMutation_fn", "_Record", "web5Agent", "options", "__privateAdd", "__privateSet", "__privateGet", "DwnInterfaceName", "DwnMethodName", "response", "reply", "error", "dataBytes", "Encoder", "self", "dataBlob", "dataObj", "DataStream", "callbacks", "callback", "agentResponse", "status", "__privateMethod", "target", "str", "_a", "updateMessage", "dataToBlob", "mutableDescriptorProperties", "messageOptions", "message", "responseMessage", "property", "stream", "Record", "propertiesToMutate", "init_shim", "Protocol", "#metadata", "#web5Agent", "#protocolsConfigureMessage", "web5Agent", "protocolsConfigureMessage", "metadata", "reply", "DwnApi", "web5Agent", "connectedDid", "request", "agentResponse", "DwnInterfaceName", "DwnMethodName", "message", "messageCid", "status", "response", "metadata", "Protocol", "entries", "inheritedAuthor", "inheritedProperties", "isEmptyObject", "agentRequest", "entry", "recordOptions", "Record", "responseRecord", "record", "messageOptions", "dataBlob", "dataFormat", "dataToBlob", "responseMessage", "init_shim", "DidApi", "options", "didMethodApis", "cache", "DidResolver", "methodApi", "method", "didMethodCreator", "did", "_resolver", "_creator", "init_shim", "import_level", "AppStorage", "location", "key", "e", "value", "_connectedDid", "_Web5", "options", "__privateAdd", "__privateSet", "DwnApi", "__privateGet", "AppStorage", "_options", "appStorage", "cachedAppDidState", "appDidState", "profileApi", "ProfileApi", "profile", "defaultProfileDid", "agent", "Web5UserAgent", "connectedDid", "Web5", "DidApi", "DidIonApi", "DidKeyApi"]
}
