From d04757c5ed65b56e6a0fac4bc9802362f2dfbadd Mon Sep 17 00:00:00 2001 From: shuaiplus <2327005759@qq.com> Date: Sat, 24 May 2025 01:54:21 +0800 Subject: [PATCH] =?UTF-8?q?vite=E5=9C=A8=E7=BA=BF=E6=9F=A5=E7=9C=8B+?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=85=A8=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- node_modules/.bin/acorn | 16 + node_modules/.bin/acorn.cmd | 17 + node_modules/.bin/acorn.ps1 | 28 + node_modules/.bin/esbuild | 16 + node_modules/.bin/esbuild.cmd | 17 + node_modules/.bin/esbuild.ps1 | 28 + node_modules/.bin/nanoid | 16 + node_modules/.bin/nanoid.cmd | 17 + node_modules/.bin/nanoid.ps1 | 28 + node_modules/.bin/rollup | 16 + node_modules/.bin/rollup.cmd | 17 + node_modules/.bin/rollup.ps1 | 28 + node_modules/.bin/terser | 16 + node_modules/.bin/terser.cmd | 17 + node_modules/.bin/terser.ps1 | 28 + node_modules/.bin/vite | 16 + node_modules/.bin/vite.cmd | 17 + node_modules/.bin/vite.ps1 | 28 + node_modules/.package-lock.json | 627 + node_modules/.vite/deps/@dicebear_core.js | 13 + node_modules/.vite/deps/@dicebear_core.js.map | 7 + node_modules/.vite/deps/@dicebear_micah.js | 677 + .../.vite/deps/@dicebear_micah.js.map | 7 + node_modules/.vite/deps/_metadata.json | 67 + node_modules/.vite/deps/aes-js.js | 567 + node_modules/.vite/deps/aes-js.js.map | 7 + node_modules/.vite/deps/buffer.js | 1793 + node_modules/.vite/deps/buffer.js.map | 7 + node_modules/.vite/deps/chunk-7H7TNGCE.js | 397 + node_modules/.vite/deps/chunk-7H7TNGCE.js.map | 7 + node_modules/.vite/deps/chunk-HKJ2B2AA.js | 14 + node_modules/.vite/deps/chunk-HKJ2B2AA.js.map | 7 + node_modules/.vite/deps/chunk-LNRWHUEM.js | 35 + node_modules/.vite/deps/chunk-LNRWHUEM.js.map | 7 + node_modules/.vite/deps/elliptic.js | 7971 +++ node_modules/.vite/deps/elliptic.js.map | 7 + .../.vite/deps/emoji-picker-element.js | 2045 + .../.vite/deps/emoji-picker-element.js.map | 7 + node_modules/.vite/deps/js-chacha20.js | 177 + node_modules/.vite/deps/js-chacha20.js.map | 7 + node_modules/.vite/deps/js-sha256.js | 539 + node_modules/.vite/deps/js-sha256.js.map | 7 + node_modules/.vite/deps/package.json | 3 + node_modules/@dicebear/core/LICENSE | 21 + node_modules/@dicebear/core/README.md | 26 + node_modules/@dicebear/core/lib/core.d.ts | 2 + node_modules/@dicebear/core/lib/core.js | 67 + node_modules/@dicebear/core/lib/index.d.ts | 12 + node_modules/@dicebear/core/lib/index.js | 12 + node_modules/@dicebear/core/lib/schema.d.ts | 2 + node_modules/@dicebear/core/lib/schema.js | 81 + node_modules/@dicebear/core/lib/types.d.ts | 73 + node_modules/@dicebear/core/lib/types.js | 1 + .../@dicebear/core/lib/utils/color.d.ts | 6 + .../@dicebear/core/lib/utils/color.js | 34 + .../@dicebear/core/lib/utils/escape.d.ts | 1 + .../@dicebear/core/lib/utils/escape.js | 8 + .../@dicebear/core/lib/utils/license.d.ts | 3 + .../@dicebear/core/lib/utils/license.js | 54 + .../@dicebear/core/lib/utils/options.d.ts | 3 + .../@dicebear/core/lib/utils/options.js | 32 + .../@dicebear/core/lib/utils/prng.d.ts | 2 + node_modules/@dicebear/core/lib/utils/prng.js | 67 + .../@dicebear/core/lib/utils/svg.d.ts | 15 + node_modules/@dicebear/core/lib/utils/svg.js | 79 + node_modules/@dicebear/core/package.json | 50 + node_modules/@dicebear/micah/LICENSE | 34 + node_modules/@dicebear/micah/README.md | 30 + .../@dicebear/micah/lib/components/base.d.ts | 8 + .../@dicebear/micah/lib/components/base.js | 10 + .../micah/lib/components/earrings.d.ts | 8 + .../micah/lib/components/earrings.js | 11 + .../@dicebear/micah/lib/components/ears.d.ts | 8 + .../@dicebear/micah/lib/components/ears.js | 11 + .../micah/lib/components/eyebrows.d.ts | 8 + .../micah/lib/components/eyebrows.js | 13 + .../@dicebear/micah/lib/components/eyes.d.ts | 8 + .../@dicebear/micah/lib/components/eyes.js | 14 + .../micah/lib/components/facialHair.d.ts | 8 + .../micah/lib/components/facialHair.js | 11 + .../micah/lib/components/glasses.d.ts | 8 + .../@dicebear/micah/lib/components/glasses.js | 11 + .../@dicebear/micah/lib/components/hair.d.ts | 8 + .../@dicebear/micah/lib/components/hair.js | 17 + .../@dicebear/micah/lib/components/index.d.ts | 17 + .../@dicebear/micah/lib/components/index.js | 17 + .../@dicebear/micah/lib/components/mouth.d.ts | 8 + .../@dicebear/micah/lib/components/mouth.js | 17 + .../@dicebear/micah/lib/components/nose.d.ts | 8 + .../@dicebear/micah/lib/components/nose.js | 11 + .../@dicebear/micah/lib/components/shirt.d.ts | 8 + .../@dicebear/micah/lib/components/shirt.js | 12 + .../micah/lib/hooks/onPostCreate.d.ts | 16 + .../@dicebear/micah/lib/hooks/onPostCreate.js | 13 + .../micah/lib/hooks/onPreCreate.d.ts | 14 + .../@dicebear/micah/lib/hooks/onPreCreate.js | 19 + node_modules/@dicebear/micah/lib/index.d.ts | 23 + node_modules/@dicebear/micah/lib/index.js | 46 + node_modules/@dicebear/micah/lib/schema.d.ts | 8 + node_modules/@dicebear/micah/lib/schema.js | 379 + node_modules/@dicebear/micah/lib/types.d.ts | 42 + node_modules/@dicebear/micah/lib/types.js | 7 + .../micah/lib/utils/convertColor.d.ts | 7 + .../@dicebear/micah/lib/utils/convertColor.js | 9 + .../@dicebear/micah/lib/utils/getColors.d.ts | 14 + .../@dicebear/micah/lib/utils/getColors.js | 23 + .../micah/lib/utils/getComponents.d.ts | 14 + .../micah/lib/utils/getComponents.js | 78 + .../micah/lib/utils/pickComponent.d.ts | 15 + .../micah/lib/utils/pickComponent.js | 20 + node_modules/@dicebear/micah/package.json | 48 + node_modules/@esbuild/win32-x64/README.md | 3 + node_modules/@esbuild/win32-x64/esbuild.exe | Bin 0 -> 10517504 bytes node_modules/@esbuild/win32-x64/package.json | 20 + node_modules/@jridgewell/gen-mapping/LICENSE | 19 + .../@jridgewell/gen-mapping/README.md | 227 + .../gen-mapping/dist/gen-mapping.mjs | 230 + .../gen-mapping/dist/gen-mapping.mjs.map | 1 + .../gen-mapping/dist/gen-mapping.umd.js | 246 + .../gen-mapping/dist/gen-mapping.umd.js.map | 1 + .../gen-mapping/dist/types/gen-mapping.d.ts | 88 + .../dist/types/sourcemap-segment.d.ts | 12 + .../gen-mapping/dist/types/types.d.ts | 36 + .../@jridgewell/gen-mapping/package.json | 76 + node_modules/@jridgewell/resolve-uri/LICENSE | 19 + .../@jridgewell/resolve-uri/README.md | 40 + .../resolve-uri/dist/resolve-uri.mjs | 232 + .../resolve-uri/dist/resolve-uri.mjs.map | 1 + .../resolve-uri/dist/resolve-uri.umd.js | 240 + .../resolve-uri/dist/resolve-uri.umd.js.map | 1 + .../resolve-uri/dist/types/resolve-uri.d.ts | 4 + .../@jridgewell/resolve-uri/package.json | 69 + node_modules/@jridgewell/set-array/LICENSE | 19 + node_modules/@jridgewell/set-array/README.md | 37 + .../@jridgewell/set-array/dist/set-array.mjs | 69 + .../set-array/dist/set-array.mjs.map | 1 + .../set-array/dist/set-array.umd.js | 83 + .../set-array/dist/set-array.umd.js.map | 1 + .../set-array/dist/types/set-array.d.ts | 32 + .../@jridgewell/set-array/package.json | 65 + node_modules/@jridgewell/source-map/LICENSE | 19 + node_modules/@jridgewell/source-map/README.md | 184 + .../source-map/dist/source-map.cjs | 95 + .../source-map/dist/source-map.cjs.map | 1 + .../source-map/dist/source-map.mjs | 90 + .../source-map/dist/source-map.mjs.map | 1 + .../source-map/dist/source-map.umd.js | 1242 + .../source-map/dist/source-map.umd.js.map | 1 + .../source-map/dist/types/source-map.d.ts | 35 + .../@jridgewell/source-map/package.json | 71 + .../@jridgewell/sourcemap-codec/LICENSE | 21 + .../@jridgewell/sourcemap-codec/README.md | 264 + .../sourcemap-codec/dist/sourcemap-codec.mjs | 424 + .../dist/sourcemap-codec.mjs.map | 1 + .../dist/sourcemap-codec.umd.js | 439 + .../dist/sourcemap-codec.umd.js.map | 1 + .../sourcemap-codec/dist/types/scopes.d.ts | 49 + .../dist/types/sourcemap-codec.d.ts | 8 + .../sourcemap-codec/dist/types/strings.d.ts | 15 + .../sourcemap-codec/dist/types/vlq.d.ts | 6 + .../@jridgewell/sourcemap-codec/package.json | 75 + .../@jridgewell/trace-mapping/LICENSE | 19 + .../@jridgewell/trace-mapping/README.md | 257 + .../trace-mapping/dist/trace-mapping.mjs | 580 + .../trace-mapping/dist/trace-mapping.mjs.map | 1 + .../trace-mapping/dist/trace-mapping.umd.js | 600 + .../dist/trace-mapping.umd.js.map | 1 + .../trace-mapping/dist/types/any-map.d.ts | 8 + .../dist/types/binary-search.d.ts | 32 + .../trace-mapping/dist/types/by-source.d.ts | 7 + .../trace-mapping/dist/types/resolve.d.ts | 1 + .../trace-mapping/dist/types/sort.d.ts | 2 + .../dist/types/sourcemap-segment.d.ts | 16 + .../dist/types/strip-filename.d.ts | 4 + .../dist/types/trace-mapping.d.ts | 79 + .../trace-mapping/dist/types/types.d.ts | 99 + .../@jridgewell/trace-mapping/package.json | 77 + .../@rollup/rollup-win32-x64-msvc/README.md | 3 + .../rollup-win32-x64-msvc/package.json | 19 + .../rollup.win32-x64-msvc.node | Bin 0 -> 3682304 bytes node_modules/@types/estree/LICENSE | 21 + node_modules/@types/estree/README.md | 15 + node_modules/@types/estree/flow.d.ts | 167 + node_modules/@types/estree/index.d.ts | 694 + node_modules/@types/estree/package.json | 27 + node_modules/@types/json-schema/LICENSE | 21 + node_modules/@types/json-schema/README.md | 15 + node_modules/@types/json-schema/index.d.ts | 749 + node_modules/@types/json-schema/package.json | 40 + node_modules/acorn/CHANGELOG.md | 940 + node_modules/acorn/LICENSE | 21 + node_modules/acorn/README.md | 282 + node_modules/acorn/bin/acorn | 4 + node_modules/acorn/dist/acorn.d.mts | 866 + node_modules/acorn/dist/acorn.d.ts | 866 + node_modules/acorn/dist/acorn.js | 6183 ++ node_modules/acorn/dist/acorn.mjs | 6154 ++ node_modules/acorn/dist/bin.js | 90 + node_modules/acorn/package.json | 50 + node_modules/aes-js/LICENSE.txt | 22 + node_modules/aes-js/README.md | 406 + node_modules/aes-js/bower.json | 32 + node_modules/aes-js/index.js | 803 + node_modules/aes-js/package.json | 34 + node_modules/base64-js/LICENSE | 21 + node_modules/base64-js/README.md | 34 + node_modules/base64-js/base64js.min.js | 1 + node_modules/base64-js/index.d.ts | 3 + node_modules/base64-js/index.js | 150 + node_modules/base64-js/package.json | 47 + node_modules/bn.js/LICENSE | 19 + node_modules/bn.js/README.md | 200 + node_modules/bn.js/lib/bn.js | 3447 ++ node_modules/bn.js/package.json | 36 + node_modules/bn.js/util/genCombMulTo.js | 65 + node_modules/bn.js/util/genCombMulTo10.js | 65 + node_modules/brorand/.npmignore | 2 + node_modules/brorand/README.md | 26 + node_modules/brorand/index.js | 65 + node_modules/brorand/package.json | 31 + node_modules/brorand/test/api-test.js | 8 + node_modules/buffer-from/LICENSE | 21 + node_modules/buffer-from/index.js | 72 + node_modules/buffer-from/package.json | 19 + node_modules/buffer-from/readme.md | 69 + node_modules/buffer/AUTHORS.md | 73 + node_modules/buffer/LICENSE | 21 + node_modules/buffer/README.md | 410 + node_modules/buffer/index.d.ts | 194 + node_modules/buffer/index.js | 2106 + node_modules/buffer/package.json | 93 + node_modules/commander/CHANGELOG.md | 419 + node_modules/commander/LICENSE | 22 + node_modules/commander/Readme.md | 428 + node_modules/commander/index.js | 1224 + node_modules/commander/package.json | 38 + node_modules/commander/typings/index.d.ts | 310 + node_modules/elliptic/README.md | 238 + node_modules/elliptic/lib/elliptic.js | 13 + .../elliptic/lib/elliptic/curve/base.js | 381 + .../elliptic/lib/elliptic/curve/edwards.js | 435 + .../elliptic/lib/elliptic/curve/index.js | 8 + .../elliptic/lib/elliptic/curve/mont.js | 178 + .../elliptic/lib/elliptic/curve/short.js | 938 + node_modules/elliptic/lib/elliptic/curves.js | 206 + .../elliptic/lib/elliptic/ec/index.js | 278 + node_modules/elliptic/lib/elliptic/ec/key.js | 121 + .../elliptic/lib/elliptic/ec/signature.js | 176 + .../elliptic/lib/elliptic/eddsa/index.js | 121 + .../elliptic/lib/elliptic/eddsa/key.js | 95 + .../elliptic/lib/elliptic/eddsa/signature.js | 66 + .../lib/elliptic/precomputed/secp256k1.js | 780 + node_modules/elliptic/lib/elliptic/utils.js | 122 + node_modules/elliptic/package.json | 56 + node_modules/emoji-picker-element/LICENSE | 202 + node_modules/emoji-picker-element/README.md | 986 + .../emoji-picker-element/custom-elements.json | 253 + .../emoji-picker-element/database.d.ts | 108 + node_modules/emoji-picker-element/database.js | 1006 + .../emoji-picker-element/database.js.map | 1 + .../emoji-picker-element/i18n/ar.d.ts | 3 + node_modules/emoji-picker-element/i18n/ar.js | 34 + .../emoji-picker-element/i18n/de.d.ts | 3 + node_modules/emoji-picker-element/i18n/de.js | 34 + .../emoji-picker-element/i18n/en.d.ts | 3 + node_modules/emoji-picker-element/i18n/en.js | 34 + .../emoji-picker-element/i18n/es.d.ts | 3 + node_modules/emoji-picker-element/i18n/es.js | 34 + .../emoji-picker-element/i18n/fa.d.ts | 3 + node_modules/emoji-picker-element/i18n/fa.js | 34 + .../emoji-picker-element/i18n/fr.d.ts | 3 + node_modules/emoji-picker-element/i18n/fr.js | 34 + .../emoji-picker-element/i18n/hi.d.ts | 3 + node_modules/emoji-picker-element/i18n/hi.js | 34 + .../emoji-picker-element/i18n/id.d.ts | 3 + node_modules/emoji-picker-element/i18n/id.js | 34 + .../emoji-picker-element/i18n/it.d.ts | 3 + node_modules/emoji-picker-element/i18n/it.js | 34 + .../emoji-picker-element/i18n/ja.d.ts | 3 + node_modules/emoji-picker-element/i18n/ja.js | 34 + .../emoji-picker-element/i18n/ms_MY.d.ts | 3 + .../emoji-picker-element/i18n/ms_MY.js | 34 + .../emoji-picker-element/i18n/nl.d.ts | 3 + node_modules/emoji-picker-element/i18n/nl.js | 34 + .../emoji-picker-element/i18n/pl.d.ts | 3 + node_modules/emoji-picker-element/i18n/pl.js | 34 + .../emoji-picker-element/i18n/pt_BR.d.ts | 3 + .../emoji-picker-element/i18n/pt_BR.js | 34 + .../emoji-picker-element/i18n/pt_PT.d.ts | 3 + .../emoji-picker-element/i18n/pt_PT.js | 34 + .../emoji-picker-element/i18n/ru_RU.d.ts | 3 + .../emoji-picker-element/i18n/ru_RU.js | 34 + .../emoji-picker-element/i18n/tr.d.ts | 3 + node_modules/emoji-picker-element/i18n/tr.js | 34 + .../emoji-picker-element/i18n/vi.d.ts | 3 + node_modules/emoji-picker-element/i18n/vi.js | 34 + .../emoji-picker-element/i18n/zh_CN.d.ts | 3 + .../emoji-picker-element/i18n/zh_CN.js | 27 + node_modules/emoji-picker-element/index.d.ts | 7 + node_modules/emoji-picker-element/index.js | 3 + .../emoji-picker-element/package.json | 191 + node_modules/emoji-picker-element/picker.d.ts | 30 + node_modules/emoji-picker-element/picker.js | 1784 + .../emoji-picker-element/picker.js.map | 1 + node_modules/emoji-picker-element/shared.d.ts | 95 + node_modules/emoji-picker-element/svelte.js | 4 + .../emoji-picker-element/trimEmojiData.cjs | 54 + .../trimEmojiData.cjs.map | 1 + .../emoji-picker-element/trimEmojiData.d.ts | 8 + .../emoji-picker-element/trimEmojiData.js | 52 + .../emoji-picker-element/trimEmojiData.js.map | 1 + node_modules/esbuild/LICENSE.md | 21 + node_modules/esbuild/README.md | 3 + node_modules/esbuild/bin/esbuild | 222 + node_modules/esbuild/install.js | 287 + node_modules/esbuild/lib/main.d.ts | 711 + node_modules/esbuild/lib/main.js | 2237 + node_modules/esbuild/package.json | 48 + node_modules/fdir/LICENSE | 7 + node_modules/fdir/README.md | 91 + node_modules/fdir/dist/api/async.d.ts | 3 + node_modules/fdir/dist/api/async.js | 19 + node_modules/fdir/dist/api/counter.d.ts | 12 + node_modules/fdir/dist/api/counter.js | 27 + .../fdir/dist/api/functions/get-array.d.ts | 3 + .../fdir/dist/api/functions/get-array.js | 13 + .../fdir/dist/api/functions/group-files.d.ts | 3 + .../fdir/dist/api/functions/group-files.js | 11 + .../dist/api/functions/invoke-callback.d.ts | 3 + .../dist/api/functions/invoke-callback.js | 57 + .../api/functions/is-recursive-symlink.d.ts | 5 + .../api/functions/is-recursive-symlink.js | 35 + .../fdir/dist/api/functions/join-path.d.ts | 5 + .../fdir/dist/api/functions/join-path.js | 36 + .../dist/api/functions/push-directory.d.ts | 3 + .../fdir/dist/api/functions/push-directory.js | 37 + .../fdir/dist/api/functions/push-file.d.ts | 3 + .../fdir/dist/api/functions/push-file.js | 33 + .../dist/api/functions/resolve-symlink.d.ts | 5 + .../dist/api/functions/resolve-symlink.js | 67 + .../dist/api/functions/walk-directory.d.ts | 5 + .../fdir/dist/api/functions/walk-directory.js | 40 + node_modules/fdir/dist/api/queue.d.ts | 15 + node_modules/fdir/dist/api/queue.js | 23 + node_modules/fdir/dist/api/sync.d.ts | 2 + node_modules/fdir/dist/api/sync.js | 9 + node_modules/fdir/dist/api/walker.d.ts | 18 + node_modules/fdir/dist/api/walker.js | 125 + .../fdir/dist/builder/api-builder.d.ts | 9 + node_modules/fdir/dist/builder/api-builder.js | 23 + node_modules/fdir/dist/builder/index.d.ts | 41 + node_modules/fdir/dist/builder/index.js | 136 + node_modules/fdir/dist/index.d.ts | 4 + node_modules/fdir/dist/index.js | 20 + node_modules/fdir/dist/optimizer.d.ts | 3 + node_modules/fdir/dist/optimizer.js | 54 + node_modules/fdir/dist/types.d.ts | 60 + node_modules/fdir/dist/types.js | 2 + node_modules/fdir/dist/utils.d.ts | 9 + node_modules/fdir/dist/utils.js | 36 + node_modules/fdir/package.json | 90 + node_modules/hash.js/.eslintrc.js | 41 + node_modules/hash.js/.travis.yml | 10 + node_modules/hash.js/README.md | 48 + node_modules/hash.js/lib/hash.d.ts | 106 + node_modules/hash.js/lib/hash.js | 15 + node_modules/hash.js/lib/hash/common.js | 92 + node_modules/hash.js/lib/hash/hmac.js | 47 + node_modules/hash.js/lib/hash/ripemd.js | 146 + node_modules/hash.js/lib/hash/sha.js | 7 + node_modules/hash.js/lib/hash/sha/1.js | 74 + node_modules/hash.js/lib/hash/sha/224.js | 30 + node_modules/hash.js/lib/hash/sha/256.js | 105 + node_modules/hash.js/lib/hash/sha/384.js | 35 + node_modules/hash.js/lib/hash/sha/512.js | 330 + node_modules/hash.js/lib/hash/sha/common.js | 49 + node_modules/hash.js/lib/hash/utils.js | 278 + node_modules/hash.js/package.json | 35 + node_modules/hash.js/test/hash-test.js | 140 + node_modules/hash.js/test/hmac-test.js | 62 + node_modules/hmac-drbg/.npmignore | 2 + node_modules/hmac-drbg/.travis.yml | 11 + node_modules/hmac-drbg/README.md | 48 + node_modules/hmac-drbg/lib/hmac-drbg.js | 113 + node_modules/hmac-drbg/package.json | 32 + node_modules/hmac-drbg/test/drbg-test.js | 91 + .../test/fixtures/hmac-drbg-nist.json | 332 + node_modules/ieee754/LICENSE | 11 + node_modules/ieee754/README.md | 51 + node_modules/ieee754/index.d.ts | 10 + node_modules/ieee754/index.js | 85 + node_modules/ieee754/package.json | 52 + node_modules/inherits/LICENSE | 16 + node_modules/inherits/README.md | 42 + node_modules/inherits/inherits.js | 9 + node_modules/inherits/inherits_browser.js | 27 + node_modules/inherits/package.json | 29 + node_modules/js-chacha20/.babelrc | 19 + node_modules/js-chacha20/.editorconfig | 11 + node_modules/js-chacha20/.eslintrc.json | 13 + node_modules/js-chacha20/.gitattributes | 2 + node_modules/js-chacha20/.npmignore | 3 + node_modules/js-chacha20/.travis.yml | 13 + node_modules/js-chacha20/LICENSE | 21 + node_modules/js-chacha20/README.md | 66 + node_modules/js-chacha20/package.json | 53 + node_modules/js-chacha20/src/jschacha20.js | 257 + .../js-chacha20/test/jschacha20.test.js | 142 + node_modules/js-sha256/CHANGELOG.md | 129 + node_modules/js-sha256/LICENSE.txt | 22 + node_modules/js-sha256/README.md | 113 + node_modules/js-sha256/build/sha256.min.js | 9 + node_modules/js-sha256/index.d.ts | 149 + node_modules/js-sha256/package.json | 48 + node_modules/js-sha256/src/sha256.js | 526 + node_modules/minimalistic-assert/LICENSE | 13 + node_modules/minimalistic-assert/index.js | 11 + node_modules/minimalistic-assert/package.json | 19 + node_modules/minimalistic-assert/readme.md | 4 + .../minimalistic-crypto-utils/.npmignore | 2 + .../minimalistic-crypto-utils/.travis.yml | 11 + .../minimalistic-crypto-utils/README.md | 47 + .../minimalistic-crypto-utils/lib/utils.js | 58 + .../minimalistic-crypto-utils/package.json | 27 + .../test/utils-test.js | 28 + node_modules/nanoid/LICENSE | 20 + node_modules/nanoid/README.md | 39 + node_modules/nanoid/async/index.browser.cjs | 69 + node_modules/nanoid/async/index.browser.js | 34 + node_modules/nanoid/async/index.cjs | 71 + node_modules/nanoid/async/index.d.ts | 56 + node_modules/nanoid/async/index.js | 35 + node_modules/nanoid/async/index.native.js | 26 + node_modules/nanoid/async/package.json | 12 + node_modules/nanoid/bin/nanoid.cjs | 55 + node_modules/nanoid/index.browser.cjs | 72 + node_modules/nanoid/index.browser.js | 34 + node_modules/nanoid/index.cjs | 85 + node_modules/nanoid/index.d.cts | 91 + node_modules/nanoid/index.d.ts | 91 + node_modules/nanoid/index.js | 45 + node_modules/nanoid/nanoid.js | 1 + node_modules/nanoid/non-secure/index.cjs | 34 + node_modules/nanoid/non-secure/index.d.ts | 33 + node_modules/nanoid/non-secure/index.js | 21 + node_modules/nanoid/non-secure/package.json | 6 + node_modules/nanoid/package.json | 89 + node_modules/nanoid/url-alphabet/index.cjs | 7 + node_modules/nanoid/url-alphabet/index.js | 3 + node_modules/nanoid/url-alphabet/package.json | 6 + node_modules/picocolors/LICENSE | 15 + node_modules/picocolors/README.md | 21 + node_modules/picocolors/package.json | 25 + node_modules/picocolors/picocolors.browser.js | 4 + node_modules/picocolors/picocolors.d.ts | 5 + node_modules/picocolors/picocolors.js | 75 + node_modules/picocolors/types.d.ts | 51 + node_modules/picomatch/LICENSE | 21 + node_modules/picomatch/README.md | 738 + node_modules/picomatch/index.js | 17 + node_modules/picomatch/lib/constants.js | 179 + node_modules/picomatch/lib/parse.js | 1085 + node_modules/picomatch/lib/picomatch.js | 341 + node_modules/picomatch/lib/scan.js | 391 + node_modules/picomatch/lib/utils.js | 72 + node_modules/picomatch/package.json | 83 + node_modules/picomatch/posix.js | 3 + node_modules/postcss/LICENSE | 20 + node_modules/postcss/README.md | 28 + node_modules/postcss/lib/at-rule.d.ts | 140 + node_modules/postcss/lib/at-rule.js | 25 + node_modules/postcss/lib/comment.d.ts | 68 + node_modules/postcss/lib/comment.js | 13 + node_modules/postcss/lib/container.d.ts | 480 + node_modules/postcss/lib/container.js | 447 + .../postcss/lib/css-syntax-error.d.ts | 248 + node_modules/postcss/lib/css-syntax-error.js | 133 + node_modules/postcss/lib/declaration.d.ts | 151 + node_modules/postcss/lib/declaration.js | 24 + node_modules/postcss/lib/document.d.ts | 69 + node_modules/postcss/lib/document.js | 33 + node_modules/postcss/lib/fromJSON.d.ts | 9 + node_modules/postcss/lib/fromJSON.js | 54 + node_modules/postcss/lib/input.d.ts | 206 + node_modules/postcss/lib/input.js | 251 + node_modules/postcss/lib/lazy-result.d.ts | 190 + node_modules/postcss/lib/lazy-result.js | 550 + node_modules/postcss/lib/list.d.ts | 60 + node_modules/postcss/lib/list.js | 58 + node_modules/postcss/lib/map-generator.js | 368 + node_modules/postcss/lib/no-work-result.d.ts | 46 + node_modules/postcss/lib/no-work-result.js | 138 + node_modules/postcss/lib/node.d.ts | 541 + node_modules/postcss/lib/node.js | 434 + node_modules/postcss/lib/parse.d.ts | 9 + node_modules/postcss/lib/parse.js | 42 + node_modules/postcss/lib/parser.js | 611 + node_modules/postcss/lib/postcss.d.mts | 69 + node_modules/postcss/lib/postcss.d.ts | 458 + node_modules/postcss/lib/postcss.js | 101 + node_modules/postcss/lib/postcss.mjs | 30 + node_modules/postcss/lib/previous-map.d.ts | 81 + node_modules/postcss/lib/previous-map.js | 144 + node_modules/postcss/lib/processor.d.ts | 115 + node_modules/postcss/lib/processor.js | 67 + node_modules/postcss/lib/result.d.ts | 205 + node_modules/postcss/lib/result.js | 42 + node_modules/postcss/lib/root.d.ts | 87 + node_modules/postcss/lib/root.js | 61 + node_modules/postcss/lib/rule.d.ts | 126 + node_modules/postcss/lib/rule.js | 27 + node_modules/postcss/lib/stringifier.d.ts | 46 + node_modules/postcss/lib/stringifier.js | 353 + node_modules/postcss/lib/stringify.d.ts | 9 + node_modules/postcss/lib/stringify.js | 11 + node_modules/postcss/lib/symbols.js | 5 + .../postcss/lib/terminal-highlight.js | 70 + node_modules/postcss/lib/tokenize.js | 266 + node_modules/postcss/lib/warn-once.js | 13 + node_modules/postcss/lib/warning.d.ts | 147 + node_modules/postcss/lib/warning.js | 37 + node_modules/postcss/package.json | 88 + node_modules/rollup/LICENSE.md | 681 + node_modules/rollup/README.md | 134 + node_modules/rollup/dist/bin/rollup | 1856 + node_modules/rollup/dist/es/getLogFilter.js | 64 + node_modules/rollup/dist/es/package.json | 1 + node_modules/rollup/dist/es/parseAst.js | 12 + node_modules/rollup/dist/es/rollup.js | 17 + .../rollup/dist/es/shared/node-entry.js | 23695 ++++++++ .../rollup/dist/es/shared/parseAst.js | 2073 + node_modules/rollup/dist/es/shared/watch.js | 9297 +++ node_modules/rollup/dist/getLogFilter.d.ts | 5 + node_modules/rollup/dist/getLogFilter.js | 69 + node_modules/rollup/dist/loadConfigFile.d.ts | 20 + node_modules/rollup/dist/loadConfigFile.js | 29 + node_modules/rollup/dist/native.js | 110 + node_modules/rollup/dist/parseAst.d.ts | 4 + node_modules/rollup/dist/parseAst.js | 22 + node_modules/rollup/dist/rollup.d.ts | 1104 + node_modules/rollup/dist/rollup.js | 128 + .../rollup/dist/shared/fsevents-importer.js | 37 + node_modules/rollup/dist/shared/index.js | 9003 +++ .../rollup/dist/shared/loadConfigFile.js | 559 + node_modules/rollup/dist/shared/parseAst.js | 2301 + node_modules/rollup/dist/shared/rollup.js | 23603 ++++++++ node_modules/rollup/dist/shared/watch-cli.js | 542 + node_modules/rollup/dist/shared/watch.js | 324 + node_modules/rollup/package.json | 269 + node_modules/source-map-js/LICENSE | 28 + node_modules/source-map-js/README.md | 765 + node_modules/source-map-js/lib/array-set.js | 121 + node_modules/source-map-js/lib/base64-vlq.js | 140 + node_modules/source-map-js/lib/base64.js | 67 + .../source-map-js/lib/binary-search.js | 111 + .../source-map-js/lib/mapping-list.js | 79 + node_modules/source-map-js/lib/quick-sort.js | 132 + .../lib/source-map-consumer.d.ts | 1 + .../source-map-js/lib/source-map-consumer.js | 1188 + .../lib/source-map-generator.d.ts | 1 + .../source-map-js/lib/source-map-generator.js | 444 + .../source-map-js/lib/source-node.d.ts | 1 + node_modules/source-map-js/lib/source-node.js | 413 + node_modules/source-map-js/lib/util.js | 594 + node_modules/source-map-js/package.json | 71 + node_modules/source-map-js/source-map.d.ts | 104 + node_modules/source-map-js/source-map.js | 8 + node_modules/source-map-support/LICENSE.md | 21 + node_modules/source-map-support/README.md | 284 + .../browser-source-map-support.js | 114 + node_modules/source-map-support/package.json | 31 + .../register-hook-require.js | 1 + node_modules/source-map-support/register.js | 1 + .../source-map-support/source-map-support.js | 625 + node_modules/source-map/CHANGELOG.md | 301 + node_modules/source-map/LICENSE | 28 + node_modules/source-map/README.md | 742 + .../source-map/dist/source-map.debug.js | 3234 + node_modules/source-map/dist/source-map.js | 3233 + .../source-map/dist/source-map.min.js | 2 + .../source-map/dist/source-map.min.js.map | 1 + node_modules/source-map/lib/array-set.js | 121 + node_modules/source-map/lib/base64-vlq.js | 140 + node_modules/source-map/lib/base64.js | 67 + node_modules/source-map/lib/binary-search.js | 111 + node_modules/source-map/lib/mapping-list.js | 79 + node_modules/source-map/lib/quick-sort.js | 114 + .../source-map/lib/source-map-consumer.js | 1145 + .../source-map/lib/source-map-generator.js | 425 + node_modules/source-map/lib/source-node.js | 413 + node_modules/source-map/lib/util.js | 488 + node_modules/source-map/package.json | 73 + node_modules/source-map/source-map.d.ts | 98 + node_modules/source-map/source-map.js | 8 + node_modules/terser/CHANGELOG.md | 809 + node_modules/terser/LICENSE | 27 + node_modules/terser/PATRONS.md | 15 + node_modules/terser/README.md | 1419 + node_modules/terser/bin/package.json | 10 + node_modules/terser/bin/terser | 21 + node_modules/terser/bin/uglifyjs | 10 + node_modules/terser/dist/.gitkeep | 0 node_modules/terser/dist/bundle.min.js | 33142 +++++++++++ node_modules/terser/dist/package.json | 10 + node_modules/terser/lib/ast.js | 3382 ++ node_modules/terser/lib/cli.js | 482 + node_modules/terser/lib/compress/common.js | 373 + .../terser/lib/compress/compressor-flags.js | 62 + .../lib/compress/drop-side-effect-free.js | 387 + .../terser/lib/compress/drop-unused.js | 505 + node_modules/terser/lib/compress/evaluate.js | 521 + .../terser/lib/compress/global-defs.js | 92 + node_modules/terser/lib/compress/index.js | 4113 ++ node_modules/terser/lib/compress/inference.js | 1128 + node_modules/terser/lib/compress/inline.js | 669 + .../terser/lib/compress/native-objects.js | 206 + .../terser/lib/compress/reduce-vars.js | 859 + .../terser/lib/compress/tighten-body.js | 1516 + node_modules/terser/lib/equivalent-to.js | 300 + node_modules/terser/lib/minify.js | 412 + node_modules/terser/lib/mozilla-ast.js | 1916 + node_modules/terser/lib/output.js | 2528 + node_modules/terser/lib/parse.js | 3495 ++ node_modules/terser/lib/propmangle.js | 434 + node_modules/terser/lib/scope.js | 1066 + node_modules/terser/lib/size.js | 499 + node_modules/terser/lib/sourcemap.js | 148 + node_modules/terser/lib/transform.js | 323 + .../terser/lib/utils/first_in_statement.js | 53 + node_modules/terser/lib/utils/index.js | 295 + node_modules/terser/main.js | 27 + node_modules/terser/package.json | 154 + node_modules/terser/tools/domprops.js | 9026 +++ node_modules/terser/tools/exit.cjs | 7 + node_modules/terser/tools/props.html | 68 + node_modules/terser/tools/terser.d.ts | 216 + node_modules/tinyglobby/LICENSE | 21 + node_modules/tinyglobby/README.md | 71 + node_modules/tinyglobby/dist/index.d.mts | 26 + node_modules/tinyglobby/dist/index.d.ts | 26 + node_modules/tinyglobby/dist/index.js | 333 + node_modules/tinyglobby/dist/index.mjs | 294 + node_modules/tinyglobby/package.json | 65 + node_modules/vite/LICENSE.md | 2406 + node_modules/vite/README.md | 20 + node_modules/vite/bin/openChrome.applescript | 95 + node_modules/vite/bin/vite.js | 79 + node_modules/vite/client.d.ts | 279 + node_modules/vite/dist/client/client.mjs | 1134 + node_modules/vite/dist/client/env.mjs | 24 + .../vite/dist/node-cjs/publicUtils.cjs | 3986 ++ .../vite/dist/node/chunks/dep-3RmXg9uo.js | 553 + .../vite/dist/node/chunks/dep-AiMcmC_f.js | 822 + .../vite/dist/node/chunks/dep-CvfTChi5.js | 8218 +++ .../vite/dist/node/chunks/dep-DBxKXgDP.js | 49496 ++++++++++++++++ .../vite/dist/node/chunks/dep-SgSik2vo.js | 7113 +++ node_modules/vite/dist/node/cli.js | 949 + node_modules/vite/dist/node/constants.js | 149 + node_modules/vite/dist/node/index.d.ts | 4222 ++ node_modules/vite/dist/node/index.js | 194 + .../vite/dist/node/module-runner.d.ts | 290 + node_modules/vite/dist/node/module-runner.js | 1311 + .../moduleRunnerTransport.d-DJ_mE5sf.d.ts | 87 + node_modules/vite/index.cjs | 96 + node_modules/vite/index.d.cts | 6 + node_modules/vite/misc/false.js | 1 + node_modules/vite/misc/true.js | 1 + node_modules/vite/package.json | 204 + node_modules/vite/types/customEvent.d.ts | 45 + node_modules/vite/types/hmrPayload.d.ts | 74 + node_modules/vite/types/hot.d.ts | 39 + node_modules/vite/types/import-meta.d.ts | 5 + node_modules/vite/types/importGlob.d.ts | 75 + node_modules/vite/types/importMeta.d.ts | 31 + .../internal/cssPreprocessorOptions.d.ts | 63 + .../types/internal/lightningcssOptions.d.ts | 18 + node_modules/vite/types/metadata.d.ts | 35 + node_modules/vite/types/package.json | 4 + package.json | 3 +- server/node_modules/.bin/node-gyp-build | 16 + .../node_modules/.bin/node-gyp-build-optional | 16 + .../.bin/node-gyp-build-optional.cmd | 17 + .../.bin/node-gyp-build-optional.ps1 | 28 + server/node_modules/.bin/node-gyp-build-test | 16 + .../node_modules/.bin/node-gyp-build-test.cmd | 17 + .../node_modules/.bin/node-gyp-build-test.ps1 | 28 + server/node_modules/.bin/node-gyp-build.cmd | 17 + server/node_modules/.bin/node-gyp-build.ps1 | 28 + server/node_modules/.package-lock.json | 66 + server/node_modules/bufferutil/LICENSE | 20 + server/node_modules/bufferutil/README.md | 79 + server/node_modules/bufferutil/binding.gyp | 32 + server/node_modules/bufferutil/fallback.js | 34 + server/node_modules/bufferutil/index.js | 7 + server/node_modules/bufferutil/package.json | 36 + .../darwin-x64+arm64/bufferutil.node | Bin 0 -> 66976 bytes .../prebuilds/linux-x64/bufferutil.node | Bin 0 -> 14576 bytes .../prebuilds/win32-ia32/bufferutil.node | Bin 0 -> 126976 bytes .../prebuilds/win32-x64/bufferutil.node | Bin 0 -> 153600 bytes .../node_modules/bufferutil/src/bufferutil.c | 171 + server/node_modules/node-gyp-build/LICENSE | 21 + server/node_modules/node-gyp-build/README.md | 58 + .../node_modules/node-gyp-build/SECURITY.md | 5 + server/node_modules/node-gyp-build/bin.js | 84 + .../node_modules/node-gyp-build/build-test.js | 19 + server/node_modules/node-gyp-build/index.js | 6 + .../node-gyp-build/node-gyp-build.js | 207 + .../node_modules/node-gyp-build/optional.js | 7 + .../node_modules/node-gyp-build/package.json | 43 + server/node_modules/utf-8-validate/LICENSE | 30 + server/node_modules/utf-8-validate/README.md | 50 + .../node_modules/utf-8-validate/binding.gyp | 18 + .../node_modules/utf-8-validate/fallback.js | 62 + server/node_modules/utf-8-validate/index.js | 7 + .../node_modules/utf-8-validate/package.json | 36 + .../prebuilds/darwin-x64+arm64/node.napi.node | Bin 0 -> 116000 bytes .../prebuilds/linux-x64/node.napi.node | Bin 0 -> 6232 bytes .../prebuilds/win32-ia32/node.napi.node | Bin 0 -> 121856 bytes .../prebuilds/win32-x64/node.napi.node | Bin 0 -> 150528 bytes .../utf-8-validate/src/validation.c | 109 + server/node_modules/ws/LICENSE | 21 + server/node_modules/ws/README.md | 495 + server/node_modules/ws/browser.js | 8 + server/node_modules/ws/index.js | 10 + server/node_modules/ws/lib/buffer-util.js | 129 + server/node_modules/ws/lib/constants.js | 10 + server/node_modules/ws/lib/event-target.js | 184 + server/node_modules/ws/lib/extension.js | 223 + server/node_modules/ws/lib/limiter.js | 55 + .../node_modules/ws/lib/permessage-deflate.js | 518 + server/node_modules/ws/lib/receiver.js | 607 + server/node_modules/ws/lib/sender.js | 409 + server/node_modules/ws/lib/stream.js | 180 + server/node_modules/ws/lib/validation.js | 104 + .../node_modules/ws/lib/websocket-server.js | 449 + server/node_modules/ws/lib/websocket.js | 1197 + server/node_modules/ws/package.json | 56 + 737 files changed, 335075 insertions(+), 1 deletion(-) create mode 100644 node_modules/.bin/acorn create mode 100644 node_modules/.bin/acorn.cmd create mode 100644 node_modules/.bin/acorn.ps1 create mode 100644 node_modules/.bin/esbuild create mode 100644 node_modules/.bin/esbuild.cmd create mode 100644 node_modules/.bin/esbuild.ps1 create mode 100644 node_modules/.bin/nanoid create mode 100644 node_modules/.bin/nanoid.cmd create mode 100644 node_modules/.bin/nanoid.ps1 create mode 100644 node_modules/.bin/rollup create mode 100644 node_modules/.bin/rollup.cmd create mode 100644 node_modules/.bin/rollup.ps1 create mode 100644 node_modules/.bin/terser create mode 100644 node_modules/.bin/terser.cmd create mode 100644 node_modules/.bin/terser.ps1 create mode 100644 node_modules/.bin/vite create mode 100644 node_modules/.bin/vite.cmd create mode 100644 node_modules/.bin/vite.ps1 create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/.vite/deps/@dicebear_core.js create mode 100644 node_modules/.vite/deps/@dicebear_core.js.map create mode 100644 node_modules/.vite/deps/@dicebear_micah.js create mode 100644 node_modules/.vite/deps/@dicebear_micah.js.map create mode 100644 node_modules/.vite/deps/_metadata.json create mode 100644 node_modules/.vite/deps/aes-js.js create mode 100644 node_modules/.vite/deps/aes-js.js.map create mode 100644 node_modules/.vite/deps/buffer.js create mode 100644 node_modules/.vite/deps/buffer.js.map create mode 100644 node_modules/.vite/deps/chunk-7H7TNGCE.js create mode 100644 node_modules/.vite/deps/chunk-7H7TNGCE.js.map create mode 100644 node_modules/.vite/deps/chunk-HKJ2B2AA.js create mode 100644 node_modules/.vite/deps/chunk-HKJ2B2AA.js.map create mode 100644 node_modules/.vite/deps/chunk-LNRWHUEM.js create mode 100644 node_modules/.vite/deps/chunk-LNRWHUEM.js.map create mode 100644 node_modules/.vite/deps/elliptic.js create mode 100644 node_modules/.vite/deps/elliptic.js.map create mode 100644 node_modules/.vite/deps/emoji-picker-element.js create mode 100644 node_modules/.vite/deps/emoji-picker-element.js.map create mode 100644 node_modules/.vite/deps/js-chacha20.js create mode 100644 node_modules/.vite/deps/js-chacha20.js.map create mode 100644 node_modules/.vite/deps/js-sha256.js create mode 100644 node_modules/.vite/deps/js-sha256.js.map create mode 100644 node_modules/.vite/deps/package.json create mode 100644 node_modules/@dicebear/core/LICENSE create mode 100644 node_modules/@dicebear/core/README.md create mode 100644 node_modules/@dicebear/core/lib/core.d.ts create mode 100644 node_modules/@dicebear/core/lib/core.js create mode 100644 node_modules/@dicebear/core/lib/index.d.ts create mode 100644 node_modules/@dicebear/core/lib/index.js create mode 100644 node_modules/@dicebear/core/lib/schema.d.ts create mode 100644 node_modules/@dicebear/core/lib/schema.js create mode 100644 node_modules/@dicebear/core/lib/types.d.ts create mode 100644 node_modules/@dicebear/core/lib/types.js create mode 100644 node_modules/@dicebear/core/lib/utils/color.d.ts create mode 100644 node_modules/@dicebear/core/lib/utils/color.js create mode 100644 node_modules/@dicebear/core/lib/utils/escape.d.ts create mode 100644 node_modules/@dicebear/core/lib/utils/escape.js create mode 100644 node_modules/@dicebear/core/lib/utils/license.d.ts create mode 100644 node_modules/@dicebear/core/lib/utils/license.js create mode 100644 node_modules/@dicebear/core/lib/utils/options.d.ts create mode 100644 node_modules/@dicebear/core/lib/utils/options.js create mode 100644 node_modules/@dicebear/core/lib/utils/prng.d.ts create mode 100644 node_modules/@dicebear/core/lib/utils/prng.js create mode 100644 node_modules/@dicebear/core/lib/utils/svg.d.ts create mode 100644 node_modules/@dicebear/core/lib/utils/svg.js create mode 100644 node_modules/@dicebear/core/package.json create mode 100644 node_modules/@dicebear/micah/LICENSE create mode 100644 node_modules/@dicebear/micah/README.md create mode 100644 node_modules/@dicebear/micah/lib/components/base.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/base.js create mode 100644 node_modules/@dicebear/micah/lib/components/earrings.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/earrings.js create mode 100644 node_modules/@dicebear/micah/lib/components/ears.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/ears.js create mode 100644 node_modules/@dicebear/micah/lib/components/eyebrows.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/eyebrows.js create mode 100644 node_modules/@dicebear/micah/lib/components/eyes.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/eyes.js create mode 100644 node_modules/@dicebear/micah/lib/components/facialHair.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/facialHair.js create mode 100644 node_modules/@dicebear/micah/lib/components/glasses.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/glasses.js create mode 100644 node_modules/@dicebear/micah/lib/components/hair.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/hair.js create mode 100644 node_modules/@dicebear/micah/lib/components/index.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/index.js create mode 100644 node_modules/@dicebear/micah/lib/components/mouth.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/mouth.js create mode 100644 node_modules/@dicebear/micah/lib/components/nose.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/nose.js create mode 100644 node_modules/@dicebear/micah/lib/components/shirt.d.ts create mode 100644 node_modules/@dicebear/micah/lib/components/shirt.js create mode 100644 node_modules/@dicebear/micah/lib/hooks/onPostCreate.d.ts create mode 100644 node_modules/@dicebear/micah/lib/hooks/onPostCreate.js create mode 100644 node_modules/@dicebear/micah/lib/hooks/onPreCreate.d.ts create mode 100644 node_modules/@dicebear/micah/lib/hooks/onPreCreate.js create mode 100644 node_modules/@dicebear/micah/lib/index.d.ts create mode 100644 node_modules/@dicebear/micah/lib/index.js create mode 100644 node_modules/@dicebear/micah/lib/schema.d.ts create mode 100644 node_modules/@dicebear/micah/lib/schema.js create mode 100644 node_modules/@dicebear/micah/lib/types.d.ts create mode 100644 node_modules/@dicebear/micah/lib/types.js create mode 100644 node_modules/@dicebear/micah/lib/utils/convertColor.d.ts create mode 100644 node_modules/@dicebear/micah/lib/utils/convertColor.js create mode 100644 node_modules/@dicebear/micah/lib/utils/getColors.d.ts create mode 100644 node_modules/@dicebear/micah/lib/utils/getColors.js create mode 100644 node_modules/@dicebear/micah/lib/utils/getComponents.d.ts create mode 100644 node_modules/@dicebear/micah/lib/utils/getComponents.js create mode 100644 node_modules/@dicebear/micah/lib/utils/pickComponent.d.ts create mode 100644 node_modules/@dicebear/micah/lib/utils/pickComponent.js create mode 100644 node_modules/@dicebear/micah/package.json create mode 100644 node_modules/@esbuild/win32-x64/README.md create mode 100644 node_modules/@esbuild/win32-x64/esbuild.exe create mode 100644 node_modules/@esbuild/win32-x64/package.json create mode 100644 node_modules/@jridgewell/gen-mapping/LICENSE create mode 100644 node_modules/@jridgewell/gen-mapping/README.md create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/package.json create mode 100644 node_modules/@jridgewell/resolve-uri/LICENSE create mode 100644 node_modules/@jridgewell/resolve-uri/README.md create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map create mode 100644 node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts create mode 100644 node_modules/@jridgewell/resolve-uri/package.json create mode 100644 node_modules/@jridgewell/set-array/LICENSE create mode 100644 node_modules/@jridgewell/set-array/README.md create mode 100644 node_modules/@jridgewell/set-array/dist/set-array.mjs create mode 100644 node_modules/@jridgewell/set-array/dist/set-array.mjs.map create mode 100644 node_modules/@jridgewell/set-array/dist/set-array.umd.js create mode 100644 node_modules/@jridgewell/set-array/dist/set-array.umd.js.map create mode 100644 node_modules/@jridgewell/set-array/dist/types/set-array.d.ts create mode 100644 node_modules/@jridgewell/set-array/package.json create mode 100644 node_modules/@jridgewell/source-map/LICENSE create mode 100644 node_modules/@jridgewell/source-map/README.md create mode 100644 node_modules/@jridgewell/source-map/dist/source-map.cjs create mode 100644 node_modules/@jridgewell/source-map/dist/source-map.cjs.map create mode 100644 node_modules/@jridgewell/source-map/dist/source-map.mjs create mode 100644 node_modules/@jridgewell/source-map/dist/source-map.mjs.map create mode 100644 node_modules/@jridgewell/source-map/dist/source-map.umd.js create mode 100644 node_modules/@jridgewell/source-map/dist/source-map.umd.js.map create mode 100644 node_modules/@jridgewell/source-map/dist/types/source-map.d.ts create mode 100644 node_modules/@jridgewell/source-map/package.json create mode 100644 node_modules/@jridgewell/sourcemap-codec/LICENSE create mode 100644 node_modules/@jridgewell/sourcemap-codec/README.md create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/scopes.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/strings.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/vlq.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/package.json create mode 100644 node_modules/@jridgewell/trace-mapping/LICENSE create mode 100644 node_modules/@jridgewell/trace-mapping/README.md create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/any-map.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/by-source.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/sourcemap-segment.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts create mode 100644 node_modules/@jridgewell/trace-mapping/package.json create mode 100644 node_modules/@rollup/rollup-win32-x64-msvc/README.md create mode 100644 node_modules/@rollup/rollup-win32-x64-msvc/package.json create mode 100644 node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node create mode 100644 node_modules/@types/estree/LICENSE create mode 100644 node_modules/@types/estree/README.md create mode 100644 node_modules/@types/estree/flow.d.ts create mode 100644 node_modules/@types/estree/index.d.ts create mode 100644 node_modules/@types/estree/package.json create mode 100644 node_modules/@types/json-schema/LICENSE create mode 100644 node_modules/@types/json-schema/README.md create mode 100644 node_modules/@types/json-schema/index.d.ts create mode 100644 node_modules/@types/json-schema/package.json create mode 100644 node_modules/acorn/CHANGELOG.md create mode 100644 node_modules/acorn/LICENSE create mode 100644 node_modules/acorn/README.md create mode 100644 node_modules/acorn/bin/acorn create mode 100644 node_modules/acorn/dist/acorn.d.mts create mode 100644 node_modules/acorn/dist/acorn.d.ts create mode 100644 node_modules/acorn/dist/acorn.js create mode 100644 node_modules/acorn/dist/acorn.mjs create mode 100644 node_modules/acorn/dist/bin.js create mode 100644 node_modules/acorn/package.json create mode 100644 node_modules/aes-js/LICENSE.txt create mode 100644 node_modules/aes-js/README.md create mode 100644 node_modules/aes-js/bower.json create mode 100644 node_modules/aes-js/index.js create mode 100644 node_modules/aes-js/package.json create mode 100644 node_modules/base64-js/LICENSE create mode 100644 node_modules/base64-js/README.md create mode 100644 node_modules/base64-js/base64js.min.js create mode 100644 node_modules/base64-js/index.d.ts create mode 100644 node_modules/base64-js/index.js create mode 100644 node_modules/base64-js/package.json create mode 100644 node_modules/bn.js/LICENSE create mode 100644 node_modules/bn.js/README.md create mode 100644 node_modules/bn.js/lib/bn.js create mode 100644 node_modules/bn.js/package.json create mode 100644 node_modules/bn.js/util/genCombMulTo.js create mode 100644 node_modules/bn.js/util/genCombMulTo10.js create mode 100644 node_modules/brorand/.npmignore create mode 100644 node_modules/brorand/README.md create mode 100644 node_modules/brorand/index.js create mode 100644 node_modules/brorand/package.json create mode 100644 node_modules/brorand/test/api-test.js create mode 100644 node_modules/buffer-from/LICENSE create mode 100644 node_modules/buffer-from/index.js create mode 100644 node_modules/buffer-from/package.json create mode 100644 node_modules/buffer-from/readme.md create mode 100644 node_modules/buffer/AUTHORS.md create mode 100644 node_modules/buffer/LICENSE create mode 100644 node_modules/buffer/README.md create mode 100644 node_modules/buffer/index.d.ts create mode 100644 node_modules/buffer/index.js create mode 100644 node_modules/buffer/package.json create mode 100644 node_modules/commander/CHANGELOG.md create mode 100644 node_modules/commander/LICENSE create mode 100644 node_modules/commander/Readme.md create mode 100644 node_modules/commander/index.js create mode 100644 node_modules/commander/package.json create mode 100644 node_modules/commander/typings/index.d.ts create mode 100644 node_modules/elliptic/README.md create mode 100644 node_modules/elliptic/lib/elliptic.js create mode 100644 node_modules/elliptic/lib/elliptic/curve/base.js create mode 100644 node_modules/elliptic/lib/elliptic/curve/edwards.js create mode 100644 node_modules/elliptic/lib/elliptic/curve/index.js create mode 100644 node_modules/elliptic/lib/elliptic/curve/mont.js create mode 100644 node_modules/elliptic/lib/elliptic/curve/short.js create mode 100644 node_modules/elliptic/lib/elliptic/curves.js create mode 100644 node_modules/elliptic/lib/elliptic/ec/index.js create mode 100644 node_modules/elliptic/lib/elliptic/ec/key.js create mode 100644 node_modules/elliptic/lib/elliptic/ec/signature.js create mode 100644 node_modules/elliptic/lib/elliptic/eddsa/index.js create mode 100644 node_modules/elliptic/lib/elliptic/eddsa/key.js create mode 100644 node_modules/elliptic/lib/elliptic/eddsa/signature.js create mode 100644 node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js create mode 100644 node_modules/elliptic/lib/elliptic/utils.js create mode 100644 node_modules/elliptic/package.json create mode 100644 node_modules/emoji-picker-element/LICENSE create mode 100644 node_modules/emoji-picker-element/README.md create mode 100644 node_modules/emoji-picker-element/custom-elements.json create mode 100644 node_modules/emoji-picker-element/database.d.ts create mode 100644 node_modules/emoji-picker-element/database.js create mode 100644 node_modules/emoji-picker-element/database.js.map create mode 100644 node_modules/emoji-picker-element/i18n/ar.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/ar.js create mode 100644 node_modules/emoji-picker-element/i18n/de.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/de.js create mode 100644 node_modules/emoji-picker-element/i18n/en.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/en.js create mode 100644 node_modules/emoji-picker-element/i18n/es.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/es.js create mode 100644 node_modules/emoji-picker-element/i18n/fa.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/fa.js create mode 100644 node_modules/emoji-picker-element/i18n/fr.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/fr.js create mode 100644 node_modules/emoji-picker-element/i18n/hi.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/hi.js create mode 100644 node_modules/emoji-picker-element/i18n/id.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/id.js create mode 100644 node_modules/emoji-picker-element/i18n/it.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/it.js create mode 100644 node_modules/emoji-picker-element/i18n/ja.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/ja.js create mode 100644 node_modules/emoji-picker-element/i18n/ms_MY.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/ms_MY.js create mode 100644 node_modules/emoji-picker-element/i18n/nl.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/nl.js create mode 100644 node_modules/emoji-picker-element/i18n/pl.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/pl.js create mode 100644 node_modules/emoji-picker-element/i18n/pt_BR.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/pt_BR.js create mode 100644 node_modules/emoji-picker-element/i18n/pt_PT.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/pt_PT.js create mode 100644 node_modules/emoji-picker-element/i18n/ru_RU.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/ru_RU.js create mode 100644 node_modules/emoji-picker-element/i18n/tr.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/tr.js create mode 100644 node_modules/emoji-picker-element/i18n/vi.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/vi.js create mode 100644 node_modules/emoji-picker-element/i18n/zh_CN.d.ts create mode 100644 node_modules/emoji-picker-element/i18n/zh_CN.js create mode 100644 node_modules/emoji-picker-element/index.d.ts create mode 100644 node_modules/emoji-picker-element/index.js create mode 100644 node_modules/emoji-picker-element/package.json create mode 100644 node_modules/emoji-picker-element/picker.d.ts create mode 100644 node_modules/emoji-picker-element/picker.js create mode 100644 node_modules/emoji-picker-element/picker.js.map create mode 100644 node_modules/emoji-picker-element/shared.d.ts create mode 100644 node_modules/emoji-picker-element/svelte.js create mode 100644 node_modules/emoji-picker-element/trimEmojiData.cjs create mode 100644 node_modules/emoji-picker-element/trimEmojiData.cjs.map create mode 100644 node_modules/emoji-picker-element/trimEmojiData.d.ts create mode 100644 node_modules/emoji-picker-element/trimEmojiData.js create mode 100644 node_modules/emoji-picker-element/trimEmojiData.js.map create mode 100644 node_modules/esbuild/LICENSE.md create mode 100644 node_modules/esbuild/README.md create mode 100644 node_modules/esbuild/bin/esbuild create mode 100644 node_modules/esbuild/install.js create mode 100644 node_modules/esbuild/lib/main.d.ts create mode 100644 node_modules/esbuild/lib/main.js create mode 100644 node_modules/esbuild/package.json create mode 100644 node_modules/fdir/LICENSE create mode 100644 node_modules/fdir/README.md create mode 100644 node_modules/fdir/dist/api/async.d.ts create mode 100644 node_modules/fdir/dist/api/async.js create mode 100644 node_modules/fdir/dist/api/counter.d.ts create mode 100644 node_modules/fdir/dist/api/counter.js create mode 100644 node_modules/fdir/dist/api/functions/get-array.d.ts create mode 100644 node_modules/fdir/dist/api/functions/get-array.js create mode 100644 node_modules/fdir/dist/api/functions/group-files.d.ts create mode 100644 node_modules/fdir/dist/api/functions/group-files.js create mode 100644 node_modules/fdir/dist/api/functions/invoke-callback.d.ts create mode 100644 node_modules/fdir/dist/api/functions/invoke-callback.js create mode 100644 node_modules/fdir/dist/api/functions/is-recursive-symlink.d.ts create mode 100644 node_modules/fdir/dist/api/functions/is-recursive-symlink.js create mode 100644 node_modules/fdir/dist/api/functions/join-path.d.ts create mode 100644 node_modules/fdir/dist/api/functions/join-path.js create mode 100644 node_modules/fdir/dist/api/functions/push-directory.d.ts create mode 100644 node_modules/fdir/dist/api/functions/push-directory.js create mode 100644 node_modules/fdir/dist/api/functions/push-file.d.ts create mode 100644 node_modules/fdir/dist/api/functions/push-file.js create mode 100644 node_modules/fdir/dist/api/functions/resolve-symlink.d.ts create mode 100644 node_modules/fdir/dist/api/functions/resolve-symlink.js create mode 100644 node_modules/fdir/dist/api/functions/walk-directory.d.ts create mode 100644 node_modules/fdir/dist/api/functions/walk-directory.js create mode 100644 node_modules/fdir/dist/api/queue.d.ts create mode 100644 node_modules/fdir/dist/api/queue.js create mode 100644 node_modules/fdir/dist/api/sync.d.ts create mode 100644 node_modules/fdir/dist/api/sync.js create mode 100644 node_modules/fdir/dist/api/walker.d.ts create mode 100644 node_modules/fdir/dist/api/walker.js create mode 100644 node_modules/fdir/dist/builder/api-builder.d.ts create mode 100644 node_modules/fdir/dist/builder/api-builder.js create mode 100644 node_modules/fdir/dist/builder/index.d.ts create mode 100644 node_modules/fdir/dist/builder/index.js create mode 100644 node_modules/fdir/dist/index.d.ts create mode 100644 node_modules/fdir/dist/index.js create mode 100644 node_modules/fdir/dist/optimizer.d.ts create mode 100644 node_modules/fdir/dist/optimizer.js create mode 100644 node_modules/fdir/dist/types.d.ts create mode 100644 node_modules/fdir/dist/types.js create mode 100644 node_modules/fdir/dist/utils.d.ts create mode 100644 node_modules/fdir/dist/utils.js create mode 100644 node_modules/fdir/package.json create mode 100644 node_modules/hash.js/.eslintrc.js create mode 100644 node_modules/hash.js/.travis.yml create mode 100644 node_modules/hash.js/README.md create mode 100644 node_modules/hash.js/lib/hash.d.ts create mode 100644 node_modules/hash.js/lib/hash.js create mode 100644 node_modules/hash.js/lib/hash/common.js create mode 100644 node_modules/hash.js/lib/hash/hmac.js create mode 100644 node_modules/hash.js/lib/hash/ripemd.js create mode 100644 node_modules/hash.js/lib/hash/sha.js create mode 100644 node_modules/hash.js/lib/hash/sha/1.js create mode 100644 node_modules/hash.js/lib/hash/sha/224.js create mode 100644 node_modules/hash.js/lib/hash/sha/256.js create mode 100644 node_modules/hash.js/lib/hash/sha/384.js create mode 100644 node_modules/hash.js/lib/hash/sha/512.js create mode 100644 node_modules/hash.js/lib/hash/sha/common.js create mode 100644 node_modules/hash.js/lib/hash/utils.js create mode 100644 node_modules/hash.js/package.json create mode 100644 node_modules/hash.js/test/hash-test.js create mode 100644 node_modules/hash.js/test/hmac-test.js create mode 100644 node_modules/hmac-drbg/.npmignore create mode 100644 node_modules/hmac-drbg/.travis.yml create mode 100644 node_modules/hmac-drbg/README.md create mode 100644 node_modules/hmac-drbg/lib/hmac-drbg.js create mode 100644 node_modules/hmac-drbg/package.json create mode 100644 node_modules/hmac-drbg/test/drbg-test.js create mode 100644 node_modules/hmac-drbg/test/fixtures/hmac-drbg-nist.json create mode 100644 node_modules/ieee754/LICENSE create mode 100644 node_modules/ieee754/README.md create mode 100644 node_modules/ieee754/index.d.ts create mode 100644 node_modules/ieee754/index.js create mode 100644 node_modules/ieee754/package.json create mode 100644 node_modules/inherits/LICENSE create mode 100644 node_modules/inherits/README.md create mode 100644 node_modules/inherits/inherits.js create mode 100644 node_modules/inherits/inherits_browser.js create mode 100644 node_modules/inherits/package.json create mode 100644 node_modules/js-chacha20/.babelrc create mode 100644 node_modules/js-chacha20/.editorconfig create mode 100644 node_modules/js-chacha20/.eslintrc.json create mode 100644 node_modules/js-chacha20/.gitattributes create mode 100644 node_modules/js-chacha20/.npmignore create mode 100644 node_modules/js-chacha20/.travis.yml create mode 100644 node_modules/js-chacha20/LICENSE create mode 100644 node_modules/js-chacha20/README.md create mode 100644 node_modules/js-chacha20/package.json create mode 100644 node_modules/js-chacha20/src/jschacha20.js create mode 100644 node_modules/js-chacha20/test/jschacha20.test.js create mode 100644 node_modules/js-sha256/CHANGELOG.md create mode 100644 node_modules/js-sha256/LICENSE.txt create mode 100644 node_modules/js-sha256/README.md create mode 100644 node_modules/js-sha256/build/sha256.min.js create mode 100644 node_modules/js-sha256/index.d.ts create mode 100644 node_modules/js-sha256/package.json create mode 100644 node_modules/js-sha256/src/sha256.js create mode 100644 node_modules/minimalistic-assert/LICENSE create mode 100644 node_modules/minimalistic-assert/index.js create mode 100644 node_modules/minimalistic-assert/package.json create mode 100644 node_modules/minimalistic-assert/readme.md create mode 100644 node_modules/minimalistic-crypto-utils/.npmignore create mode 100644 node_modules/minimalistic-crypto-utils/.travis.yml create mode 100644 node_modules/minimalistic-crypto-utils/README.md create mode 100644 node_modules/minimalistic-crypto-utils/lib/utils.js create mode 100644 node_modules/minimalistic-crypto-utils/package.json create mode 100644 node_modules/minimalistic-crypto-utils/test/utils-test.js create mode 100644 node_modules/nanoid/LICENSE create mode 100644 node_modules/nanoid/README.md create mode 100644 node_modules/nanoid/async/index.browser.cjs create mode 100644 node_modules/nanoid/async/index.browser.js create mode 100644 node_modules/nanoid/async/index.cjs create mode 100644 node_modules/nanoid/async/index.d.ts create mode 100644 node_modules/nanoid/async/index.js create mode 100644 node_modules/nanoid/async/index.native.js create mode 100644 node_modules/nanoid/async/package.json create mode 100644 node_modules/nanoid/bin/nanoid.cjs create mode 100644 node_modules/nanoid/index.browser.cjs create mode 100644 node_modules/nanoid/index.browser.js create mode 100644 node_modules/nanoid/index.cjs create mode 100644 node_modules/nanoid/index.d.cts create mode 100644 node_modules/nanoid/index.d.ts create mode 100644 node_modules/nanoid/index.js create mode 100644 node_modules/nanoid/nanoid.js create mode 100644 node_modules/nanoid/non-secure/index.cjs create mode 100644 node_modules/nanoid/non-secure/index.d.ts create mode 100644 node_modules/nanoid/non-secure/index.js create mode 100644 node_modules/nanoid/non-secure/package.json create mode 100644 node_modules/nanoid/package.json create mode 100644 node_modules/nanoid/url-alphabet/index.cjs create mode 100644 node_modules/nanoid/url-alphabet/index.js create mode 100644 node_modules/nanoid/url-alphabet/package.json create mode 100644 node_modules/picocolors/LICENSE create mode 100644 node_modules/picocolors/README.md create mode 100644 node_modules/picocolors/package.json create mode 100644 node_modules/picocolors/picocolors.browser.js create mode 100644 node_modules/picocolors/picocolors.d.ts create mode 100644 node_modules/picocolors/picocolors.js create mode 100644 node_modules/picocolors/types.d.ts create mode 100644 node_modules/picomatch/LICENSE create mode 100644 node_modules/picomatch/README.md create mode 100644 node_modules/picomatch/index.js create mode 100644 node_modules/picomatch/lib/constants.js create mode 100644 node_modules/picomatch/lib/parse.js create mode 100644 node_modules/picomatch/lib/picomatch.js create mode 100644 node_modules/picomatch/lib/scan.js create mode 100644 node_modules/picomatch/lib/utils.js create mode 100644 node_modules/picomatch/package.json create mode 100644 node_modules/picomatch/posix.js create mode 100644 node_modules/postcss/LICENSE create mode 100644 node_modules/postcss/README.md create mode 100644 node_modules/postcss/lib/at-rule.d.ts create mode 100644 node_modules/postcss/lib/at-rule.js create mode 100644 node_modules/postcss/lib/comment.d.ts create mode 100644 node_modules/postcss/lib/comment.js create mode 100644 node_modules/postcss/lib/container.d.ts create mode 100644 node_modules/postcss/lib/container.js create mode 100644 node_modules/postcss/lib/css-syntax-error.d.ts create mode 100644 node_modules/postcss/lib/css-syntax-error.js create mode 100644 node_modules/postcss/lib/declaration.d.ts create mode 100644 node_modules/postcss/lib/declaration.js create mode 100644 node_modules/postcss/lib/document.d.ts create mode 100644 node_modules/postcss/lib/document.js create mode 100644 node_modules/postcss/lib/fromJSON.d.ts create mode 100644 node_modules/postcss/lib/fromJSON.js create mode 100644 node_modules/postcss/lib/input.d.ts create mode 100644 node_modules/postcss/lib/input.js create mode 100644 node_modules/postcss/lib/lazy-result.d.ts create mode 100644 node_modules/postcss/lib/lazy-result.js create mode 100644 node_modules/postcss/lib/list.d.ts create mode 100644 node_modules/postcss/lib/list.js create mode 100644 node_modules/postcss/lib/map-generator.js create mode 100644 node_modules/postcss/lib/no-work-result.d.ts create mode 100644 node_modules/postcss/lib/no-work-result.js create mode 100644 node_modules/postcss/lib/node.d.ts create mode 100644 node_modules/postcss/lib/node.js create mode 100644 node_modules/postcss/lib/parse.d.ts create mode 100644 node_modules/postcss/lib/parse.js create mode 100644 node_modules/postcss/lib/parser.js create mode 100644 node_modules/postcss/lib/postcss.d.mts create mode 100644 node_modules/postcss/lib/postcss.d.ts create mode 100644 node_modules/postcss/lib/postcss.js create mode 100644 node_modules/postcss/lib/postcss.mjs create mode 100644 node_modules/postcss/lib/previous-map.d.ts create mode 100644 node_modules/postcss/lib/previous-map.js create mode 100644 node_modules/postcss/lib/processor.d.ts create mode 100644 node_modules/postcss/lib/processor.js create mode 100644 node_modules/postcss/lib/result.d.ts create mode 100644 node_modules/postcss/lib/result.js create mode 100644 node_modules/postcss/lib/root.d.ts create mode 100644 node_modules/postcss/lib/root.js create mode 100644 node_modules/postcss/lib/rule.d.ts create mode 100644 node_modules/postcss/lib/rule.js create mode 100644 node_modules/postcss/lib/stringifier.d.ts create mode 100644 node_modules/postcss/lib/stringifier.js create mode 100644 node_modules/postcss/lib/stringify.d.ts create mode 100644 node_modules/postcss/lib/stringify.js create mode 100644 node_modules/postcss/lib/symbols.js create mode 100644 node_modules/postcss/lib/terminal-highlight.js create mode 100644 node_modules/postcss/lib/tokenize.js create mode 100644 node_modules/postcss/lib/warn-once.js create mode 100644 node_modules/postcss/lib/warning.d.ts create mode 100644 node_modules/postcss/lib/warning.js create mode 100644 node_modules/postcss/package.json create mode 100644 node_modules/rollup/LICENSE.md create mode 100644 node_modules/rollup/README.md create mode 100644 node_modules/rollup/dist/bin/rollup create mode 100644 node_modules/rollup/dist/es/getLogFilter.js create mode 100644 node_modules/rollup/dist/es/package.json create mode 100644 node_modules/rollup/dist/es/parseAst.js create mode 100644 node_modules/rollup/dist/es/rollup.js create mode 100644 node_modules/rollup/dist/es/shared/node-entry.js create mode 100644 node_modules/rollup/dist/es/shared/parseAst.js create mode 100644 node_modules/rollup/dist/es/shared/watch.js create mode 100644 node_modules/rollup/dist/getLogFilter.d.ts create mode 100644 node_modules/rollup/dist/getLogFilter.js create mode 100644 node_modules/rollup/dist/loadConfigFile.d.ts create mode 100644 node_modules/rollup/dist/loadConfigFile.js create mode 100644 node_modules/rollup/dist/native.js create mode 100644 node_modules/rollup/dist/parseAst.d.ts create mode 100644 node_modules/rollup/dist/parseAst.js create mode 100644 node_modules/rollup/dist/rollup.d.ts create mode 100644 node_modules/rollup/dist/rollup.js create mode 100644 node_modules/rollup/dist/shared/fsevents-importer.js create mode 100644 node_modules/rollup/dist/shared/index.js create mode 100644 node_modules/rollup/dist/shared/loadConfigFile.js create mode 100644 node_modules/rollup/dist/shared/parseAst.js create mode 100644 node_modules/rollup/dist/shared/rollup.js create mode 100644 node_modules/rollup/dist/shared/watch-cli.js create mode 100644 node_modules/rollup/dist/shared/watch.js create mode 100644 node_modules/rollup/package.json create mode 100644 node_modules/source-map-js/LICENSE create mode 100644 node_modules/source-map-js/README.md create mode 100644 node_modules/source-map-js/lib/array-set.js create mode 100644 node_modules/source-map-js/lib/base64-vlq.js create mode 100644 node_modules/source-map-js/lib/base64.js create mode 100644 node_modules/source-map-js/lib/binary-search.js create mode 100644 node_modules/source-map-js/lib/mapping-list.js create mode 100644 node_modules/source-map-js/lib/quick-sort.js create mode 100644 node_modules/source-map-js/lib/source-map-consumer.d.ts create mode 100644 node_modules/source-map-js/lib/source-map-consumer.js create mode 100644 node_modules/source-map-js/lib/source-map-generator.d.ts create mode 100644 node_modules/source-map-js/lib/source-map-generator.js create mode 100644 node_modules/source-map-js/lib/source-node.d.ts create mode 100644 node_modules/source-map-js/lib/source-node.js create mode 100644 node_modules/source-map-js/lib/util.js create mode 100644 node_modules/source-map-js/package.json create mode 100644 node_modules/source-map-js/source-map.d.ts create mode 100644 node_modules/source-map-js/source-map.js create mode 100644 node_modules/source-map-support/LICENSE.md create mode 100644 node_modules/source-map-support/README.md create mode 100644 node_modules/source-map-support/browser-source-map-support.js create mode 100644 node_modules/source-map-support/package.json create mode 100644 node_modules/source-map-support/register-hook-require.js create mode 100644 node_modules/source-map-support/register.js create mode 100644 node_modules/source-map-support/source-map-support.js create mode 100644 node_modules/source-map/CHANGELOG.md create mode 100644 node_modules/source-map/LICENSE create mode 100644 node_modules/source-map/README.md create mode 100644 node_modules/source-map/dist/source-map.debug.js create mode 100644 node_modules/source-map/dist/source-map.js create mode 100644 node_modules/source-map/dist/source-map.min.js create mode 100644 node_modules/source-map/dist/source-map.min.js.map create mode 100644 node_modules/source-map/lib/array-set.js create mode 100644 node_modules/source-map/lib/base64-vlq.js create mode 100644 node_modules/source-map/lib/base64.js create mode 100644 node_modules/source-map/lib/binary-search.js create mode 100644 node_modules/source-map/lib/mapping-list.js create mode 100644 node_modules/source-map/lib/quick-sort.js create mode 100644 node_modules/source-map/lib/source-map-consumer.js create mode 100644 node_modules/source-map/lib/source-map-generator.js create mode 100644 node_modules/source-map/lib/source-node.js create mode 100644 node_modules/source-map/lib/util.js create mode 100644 node_modules/source-map/package.json create mode 100644 node_modules/source-map/source-map.d.ts create mode 100644 node_modules/source-map/source-map.js create mode 100644 node_modules/terser/CHANGELOG.md create mode 100644 node_modules/terser/LICENSE create mode 100644 node_modules/terser/PATRONS.md create mode 100644 node_modules/terser/README.md create mode 100644 node_modules/terser/bin/package.json create mode 100644 node_modules/terser/bin/terser create mode 100644 node_modules/terser/bin/uglifyjs create mode 100644 node_modules/terser/dist/.gitkeep create mode 100644 node_modules/terser/dist/bundle.min.js create mode 100644 node_modules/terser/dist/package.json create mode 100644 node_modules/terser/lib/ast.js create mode 100644 node_modules/terser/lib/cli.js create mode 100644 node_modules/terser/lib/compress/common.js create mode 100644 node_modules/terser/lib/compress/compressor-flags.js create mode 100644 node_modules/terser/lib/compress/drop-side-effect-free.js create mode 100644 node_modules/terser/lib/compress/drop-unused.js create mode 100644 node_modules/terser/lib/compress/evaluate.js create mode 100644 node_modules/terser/lib/compress/global-defs.js create mode 100644 node_modules/terser/lib/compress/index.js create mode 100644 node_modules/terser/lib/compress/inference.js create mode 100644 node_modules/terser/lib/compress/inline.js create mode 100644 node_modules/terser/lib/compress/native-objects.js create mode 100644 node_modules/terser/lib/compress/reduce-vars.js create mode 100644 node_modules/terser/lib/compress/tighten-body.js create mode 100644 node_modules/terser/lib/equivalent-to.js create mode 100644 node_modules/terser/lib/minify.js create mode 100644 node_modules/terser/lib/mozilla-ast.js create mode 100644 node_modules/terser/lib/output.js create mode 100644 node_modules/terser/lib/parse.js create mode 100644 node_modules/terser/lib/propmangle.js create mode 100644 node_modules/terser/lib/scope.js create mode 100644 node_modules/terser/lib/size.js create mode 100644 node_modules/terser/lib/sourcemap.js create mode 100644 node_modules/terser/lib/transform.js create mode 100644 node_modules/terser/lib/utils/first_in_statement.js create mode 100644 node_modules/terser/lib/utils/index.js create mode 100644 node_modules/terser/main.js create mode 100644 node_modules/terser/package.json create mode 100644 node_modules/terser/tools/domprops.js create mode 100644 node_modules/terser/tools/exit.cjs create mode 100644 node_modules/terser/tools/props.html create mode 100644 node_modules/terser/tools/terser.d.ts create mode 100644 node_modules/tinyglobby/LICENSE create mode 100644 node_modules/tinyglobby/README.md create mode 100644 node_modules/tinyglobby/dist/index.d.mts create mode 100644 node_modules/tinyglobby/dist/index.d.ts create mode 100644 node_modules/tinyglobby/dist/index.js create mode 100644 node_modules/tinyglobby/dist/index.mjs create mode 100644 node_modules/tinyglobby/package.json create mode 100644 node_modules/vite/LICENSE.md create mode 100644 node_modules/vite/README.md create mode 100644 node_modules/vite/bin/openChrome.applescript create mode 100644 node_modules/vite/bin/vite.js create mode 100644 node_modules/vite/client.d.ts create mode 100644 node_modules/vite/dist/client/client.mjs create mode 100644 node_modules/vite/dist/client/env.mjs create mode 100644 node_modules/vite/dist/node-cjs/publicUtils.cjs create mode 100644 node_modules/vite/dist/node/chunks/dep-3RmXg9uo.js create mode 100644 node_modules/vite/dist/node/chunks/dep-AiMcmC_f.js create mode 100644 node_modules/vite/dist/node/chunks/dep-CvfTChi5.js create mode 100644 node_modules/vite/dist/node/chunks/dep-DBxKXgDP.js create mode 100644 node_modules/vite/dist/node/chunks/dep-SgSik2vo.js create mode 100644 node_modules/vite/dist/node/cli.js create mode 100644 node_modules/vite/dist/node/constants.js create mode 100644 node_modules/vite/dist/node/index.d.ts create mode 100644 node_modules/vite/dist/node/index.js create mode 100644 node_modules/vite/dist/node/module-runner.d.ts create mode 100644 node_modules/vite/dist/node/module-runner.js create mode 100644 node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts create mode 100644 node_modules/vite/index.cjs create mode 100644 node_modules/vite/index.d.cts create mode 100644 node_modules/vite/misc/false.js create mode 100644 node_modules/vite/misc/true.js create mode 100644 node_modules/vite/package.json create mode 100644 node_modules/vite/types/customEvent.d.ts create mode 100644 node_modules/vite/types/hmrPayload.d.ts create mode 100644 node_modules/vite/types/hot.d.ts create mode 100644 node_modules/vite/types/import-meta.d.ts create mode 100644 node_modules/vite/types/importGlob.d.ts create mode 100644 node_modules/vite/types/importMeta.d.ts create mode 100644 node_modules/vite/types/internal/cssPreprocessorOptions.d.ts create mode 100644 node_modules/vite/types/internal/lightningcssOptions.d.ts create mode 100644 node_modules/vite/types/metadata.d.ts create mode 100644 node_modules/vite/types/package.json create mode 100644 server/node_modules/.bin/node-gyp-build create mode 100644 server/node_modules/.bin/node-gyp-build-optional create mode 100644 server/node_modules/.bin/node-gyp-build-optional.cmd create mode 100644 server/node_modules/.bin/node-gyp-build-optional.ps1 create mode 100644 server/node_modules/.bin/node-gyp-build-test create mode 100644 server/node_modules/.bin/node-gyp-build-test.cmd create mode 100644 server/node_modules/.bin/node-gyp-build-test.ps1 create mode 100644 server/node_modules/.bin/node-gyp-build.cmd create mode 100644 server/node_modules/.bin/node-gyp-build.ps1 create mode 100644 server/node_modules/.package-lock.json create mode 100644 server/node_modules/bufferutil/LICENSE create mode 100644 server/node_modules/bufferutil/README.md create mode 100644 server/node_modules/bufferutil/binding.gyp create mode 100644 server/node_modules/bufferutil/fallback.js create mode 100644 server/node_modules/bufferutil/index.js create mode 100644 server/node_modules/bufferutil/package.json create mode 100644 server/node_modules/bufferutil/prebuilds/darwin-x64+arm64/bufferutil.node create mode 100644 server/node_modules/bufferutil/prebuilds/linux-x64/bufferutil.node create mode 100644 server/node_modules/bufferutil/prebuilds/win32-ia32/bufferutil.node create mode 100644 server/node_modules/bufferutil/prebuilds/win32-x64/bufferutil.node create mode 100644 server/node_modules/bufferutil/src/bufferutil.c create mode 100644 server/node_modules/node-gyp-build/LICENSE create mode 100644 server/node_modules/node-gyp-build/README.md create mode 100644 server/node_modules/node-gyp-build/SECURITY.md create mode 100644 server/node_modules/node-gyp-build/bin.js create mode 100644 server/node_modules/node-gyp-build/build-test.js create mode 100644 server/node_modules/node-gyp-build/index.js create mode 100644 server/node_modules/node-gyp-build/node-gyp-build.js create mode 100644 server/node_modules/node-gyp-build/optional.js create mode 100644 server/node_modules/node-gyp-build/package.json create mode 100644 server/node_modules/utf-8-validate/LICENSE create mode 100644 server/node_modules/utf-8-validate/README.md create mode 100644 server/node_modules/utf-8-validate/binding.gyp create mode 100644 server/node_modules/utf-8-validate/fallback.js create mode 100644 server/node_modules/utf-8-validate/index.js create mode 100644 server/node_modules/utf-8-validate/package.json create mode 100644 server/node_modules/utf-8-validate/prebuilds/darwin-x64+arm64/node.napi.node create mode 100644 server/node_modules/utf-8-validate/prebuilds/linux-x64/node.napi.node create mode 100644 server/node_modules/utf-8-validate/prebuilds/win32-ia32/node.napi.node create mode 100644 server/node_modules/utf-8-validate/prebuilds/win32-x64/node.napi.node create mode 100644 server/node_modules/utf-8-validate/src/validation.c create mode 100644 server/node_modules/ws/LICENSE create mode 100644 server/node_modules/ws/README.md create mode 100644 server/node_modules/ws/browser.js create mode 100644 server/node_modules/ws/index.js create mode 100644 server/node_modules/ws/lib/buffer-util.js create mode 100644 server/node_modules/ws/lib/constants.js create mode 100644 server/node_modules/ws/lib/event-target.js create mode 100644 server/node_modules/ws/lib/extension.js create mode 100644 server/node_modules/ws/lib/limiter.js create mode 100644 server/node_modules/ws/lib/permessage-deflate.js create mode 100644 server/node_modules/ws/lib/receiver.js create mode 100644 server/node_modules/ws/lib/sender.js create mode 100644 server/node_modules/ws/lib/stream.js create mode 100644 server/node_modules/ws/lib/validation.js create mode 100644 server/node_modules/ws/lib/websocket-server.js create mode 100644 server/node_modules/ws/lib/websocket.js create mode 100644 server/node_modules/ws/package.json diff --git a/node_modules/.bin/acorn b/node_modules/.bin/acorn new file mode 100644 index 0000000..679bd16 --- /dev/null +++ b/node_modules/.bin/acorn @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@" +else + exec node "$basedir/../acorn/bin/acorn" "$@" +fi diff --git a/node_modules/.bin/acorn.cmd b/node_modules/.bin/acorn.cmd new file mode 100644 index 0000000..a9324df --- /dev/null +++ b/node_modules/.bin/acorn.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %* diff --git a/node_modules/.bin/acorn.ps1 b/node_modules/.bin/acorn.ps1 new file mode 100644 index 0000000..6f6dcdd --- /dev/null +++ b/node_modules/.bin/acorn.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args + } else { + & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../acorn/bin/acorn" $args + } else { + & "node$exe" "$basedir/../acorn/bin/acorn" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/esbuild b/node_modules/.bin/esbuild new file mode 100644 index 0000000..63bb6d4 --- /dev/null +++ b/node_modules/.bin/esbuild @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@" +else + exec node "$basedir/../esbuild/bin/esbuild" "$@" +fi diff --git a/node_modules/.bin/esbuild.cmd b/node_modules/.bin/esbuild.cmd new file mode 100644 index 0000000..cc920c5 --- /dev/null +++ b/node_modules/.bin/esbuild.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %* diff --git a/node_modules/.bin/esbuild.ps1 b/node_modules/.bin/esbuild.ps1 new file mode 100644 index 0000000..81ffbf9 --- /dev/null +++ b/node_modules/.bin/esbuild.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args + } else { + & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args + } else { + & "node$exe" "$basedir/../esbuild/bin/esbuild" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 100644 index 0000000..46220bd --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@" +else + exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@" +fi diff --git a/node_modules/.bin/nanoid.cmd b/node_modules/.bin/nanoid.cmd new file mode 100644 index 0000000..9c40107 --- /dev/null +++ b/node_modules/.bin/nanoid.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/node_modules/.bin/nanoid.ps1 b/node_modules/.bin/nanoid.ps1 new file mode 100644 index 0000000..d8a4d7a --- /dev/null +++ b/node_modules/.bin/nanoid.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/rollup b/node_modules/.bin/rollup new file mode 100644 index 0000000..998fc16 --- /dev/null +++ b/node_modules/.bin/rollup @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@" +else + exec node "$basedir/../rollup/dist/bin/rollup" "$@" +fi diff --git a/node_modules/.bin/rollup.cmd b/node_modules/.bin/rollup.cmd new file mode 100644 index 0000000..b3f110b --- /dev/null +++ b/node_modules/.bin/rollup.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %* diff --git a/node_modules/.bin/rollup.ps1 b/node_modules/.bin/rollup.ps1 new file mode 100644 index 0000000..10f657d --- /dev/null +++ b/node_modules/.bin/rollup.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } else { + & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } else { + & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/terser b/node_modules/.bin/terser new file mode 100644 index 0000000..8456546 --- /dev/null +++ b/node_modules/.bin/terser @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../terser/bin/terser" "$@" +else + exec node "$basedir/../terser/bin/terser" "$@" +fi diff --git a/node_modules/.bin/terser.cmd b/node_modules/.bin/terser.cmd new file mode 100644 index 0000000..abf66a8 --- /dev/null +++ b/node_modules/.bin/terser.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\terser\bin\terser" %* diff --git a/node_modules/.bin/terser.ps1 b/node_modules/.bin/terser.ps1 new file mode 100644 index 0000000..0bbfff6 --- /dev/null +++ b/node_modules/.bin/terser.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../terser/bin/terser" $args + } else { + & "$basedir/node$exe" "$basedir/../terser/bin/terser" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../terser/bin/terser" $args + } else { + & "node$exe" "$basedir/../terser/bin/terser" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/vite b/node_modules/.bin/vite new file mode 100644 index 0000000..014463f --- /dev/null +++ b/node_modules/.bin/vite @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@" +else + exec node "$basedir/../vite/bin/vite.js" "$@" +fi diff --git a/node_modules/.bin/vite.cmd b/node_modules/.bin/vite.cmd new file mode 100644 index 0000000..f62e966 --- /dev/null +++ b/node_modules/.bin/vite.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* diff --git a/node_modules/.bin/vite.ps1 b/node_modules/.bin/vite.ps1 new file mode 100644 index 0000000..a7759bc --- /dev/null +++ b/node_modules/.bin/vite.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..a8d7de5 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,627 @@ +{ + "name": "nodecrypt", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@dicebear/core": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@dicebear/core/-/core-9.2.2.tgz", + "integrity": "sha512-ROhgHG249dPtcXgBHcqPEsDeAPRPRD/9d+tZCjLYyueO+cXDlIA8dUlxpwIVcOuZFvCyW6RJtqo8BhNAi16pIQ==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.11" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@dicebear/micah": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@dicebear/micah/-/micah-9.2.2.tgz", + "integrity": "sha512-NCajcJV5yw8uMKiACp694w1T/UyYme2CUEzyTzWHgWnQ+drAuCcH8gpAoLWd67viNdQB/MTpNlaelUgTjmI4AQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@dicebear/core": "^9.0.0" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", + "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emoji-picker-element": { + "version": "1.26.3", + "resolved": "https://registry.npmmirror.com/emoji-picker-element/-/emoji-picker-element-1.26.3.tgz", + "integrity": "sha512-fOMG44d/3OqTe1pPqlu5H4ZtWg7gK4Le6Bt24JTKtDyce5+EO3Mo8WA95cKHbPSsSsg7ehM12M1x3Y6U6fgvTQ==", + "license": "Apache-2.0" + }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/js-chacha20": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/js-chacha20/-/js-chacha20-1.1.0.tgz", + "integrity": "sha512-ML5/rujYI/iYydrkIdf+JtUyjmiTWd4UgxNkEmIQ/rltgHzgtzlYJnnMETxPTFGnivEWynZca4YXUoZlxVtjqA==", + "license": "MIT" + }, + "node_modules/js-sha256": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/js-sha256/-/js-sha256-0.11.0.tgz", + "integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==", + "license": "MIT" + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", + "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.2", + "@rollup/rollup-android-arm64": "4.40.2", + "@rollup/rollup-darwin-arm64": "4.40.2", + "@rollup/rollup-darwin-x64": "4.40.2", + "@rollup/rollup-freebsd-arm64": "4.40.2", + "@rollup/rollup-freebsd-x64": "4.40.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", + "@rollup/rollup-linux-arm-musleabihf": "4.40.2", + "@rollup/rollup-linux-arm64-gnu": "4.40.2", + "@rollup/rollup-linux-arm64-musl": "4.40.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-musl": "4.40.2", + "@rollup/rollup-linux-s390x-gnu": "4.40.2", + "@rollup/rollup-linux-x64-gnu": "4.40.2", + "@rollup/rollup-linux-x64-musl": "4.40.2", + "@rollup/rollup-win32-arm64-msvc": "4.40.2", + "@rollup/rollup-win32-ia32-msvc": "4.40.2", + "@rollup/rollup-win32-x64-msvc": "4.40.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/terser": { + "version": "5.39.2", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.39.2.tgz", + "integrity": "sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/node_modules/.vite/deps/@dicebear_core.js b/node_modules/.vite/deps/@dicebear_core.js new file mode 100644 index 0000000..ee8334e --- /dev/null +++ b/node_modules/.vite/deps/@dicebear_core.js @@ -0,0 +1,13 @@ +import { + createAvatar, + escape_exports, + license_exports, + schema +} from "./chunk-7H7TNGCE.js"; +import "./chunk-HKJ2B2AA.js"; +export { + createAvatar, + escape_exports as escape, + license_exports as license, + schema +}; diff --git a/node_modules/.vite/deps/@dicebear_core.js.map b/node_modules/.vite/deps/@dicebear_core.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/node_modules/.vite/deps/@dicebear_core.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/node_modules/.vite/deps/@dicebear_micah.js b/node_modules/.vite/deps/@dicebear_micah.js new file mode 100644 index 0000000..bfd2098 --- /dev/null +++ b/node_modules/.vite/deps/@dicebear_micah.js @@ -0,0 +1,677 @@ +import { + escape_exports +} from "./chunk-7H7TNGCE.js"; +import { + __export +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/@dicebear/micah/lib/components/index.js +var components_exports = {}; +__export(components_exports, { + base: () => base, + earrings: () => earrings, + ears: () => ears, + eyebrows: () => eyebrows, + eyes: () => eyes, + facialHair: () => facialHair, + glasses: () => glasses, + hair: () => hair, + mouth: () => mouth, + nose: () => nose, + shirt: () => shirt +}); + +// node_modules/@dicebear/micah/lib/components/base.js +var base = { + "standard": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + } +}; + +// node_modules/@dicebear/micah/lib/components/mouth.js +var mouth = { + "surprised": (components, colors) => ``, + "laughing": (components, colors) => ``, + "nervous": (components, colors) => ``, + "smile": (components, colors) => ``, + "sad": (components, colors) => ``, + "pucker": (components, colors) => ``, + "frown": (components, colors) => ``, + "smirk": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/eyebrows.js +var eyebrows = { + "up": (components, colors) => ``, + "down": (components, colors) => ``, + "eyelashesUp": (components, colors) => ``, + "eyelashesDown": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/hair.js +var hair = { + "fonze": (components, colors) => ``, + "mrT": (components, colors) => ``, + "dougFunny": (components, colors) => ``, + "mrClean": (components, colors) => ``, + "dannyPhantom": (components, colors) => ``, + "full": (components, colors) => ``, + "turban": (components, colors) => ``, + "pixie": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/eyes.js +var eyes = { + "eyes": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + }, + "round": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + }, + "eyesShadow": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + }, + "smiling": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + }, + "smilingShadow": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + } +}; + +// node_modules/@dicebear/micah/lib/components/nose.js +var nose = { + "curve": (components, colors) => ``, + "pointed": (components, colors) => ``, + "tound": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/ears.js +var ears = { + "attached": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + }, + "detached": (components, colors) => { + var _a, _b; + return `${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}`; + } +}; + +// node_modules/@dicebear/micah/lib/components/shirt.js +var shirt = { + "open": (components, colors) => ``, + "crew": (components, colors) => ``, + "collared": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/earrings.js +var earrings = { + "hoop": (components, colors) => ``, + "stud": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/glasses.js +var glasses = { + "round": (components, colors) => ``, + "square": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/components/facialHair.js +var facialHair = { + "beard": (components, colors) => ``, + "scruff": (components, colors) => `` +}; + +// node_modules/@dicebear/micah/lib/utils/pickComponent.js +function pickComponent({ prng, group, values = [] }) { + const componentCollection = components_exports; + const key = prng.pick(values); + if (key && componentCollection[group][key]) { + return { + name: key, + value: componentCollection[group][key] + }; + } else { + return void 0; + } +} + +// node_modules/@dicebear/micah/lib/utils/getComponents.js +function getComponents({ prng, options }) { + const baseComponent = pickComponent({ + prng, + group: "base", + values: options.base + }); + const mouthComponent = pickComponent({ + prng, + group: "mouth", + values: options.mouth + }); + const eyebrowsComponent = pickComponent({ + prng, + group: "eyebrows", + values: options.eyebrows + }); + const hairComponent = pickComponent({ + prng, + group: "hair", + values: options.hair + }); + const eyesComponent = pickComponent({ + prng, + group: "eyes", + values: options.eyes + }); + const noseComponent = pickComponent({ + prng, + group: "nose", + values: options.nose + }); + const earsComponent = pickComponent({ + prng, + group: "ears", + values: options.ears + }); + const shirtComponent = pickComponent({ + prng, + group: "shirt", + values: options.shirt + }); + const earringsComponent = pickComponent({ + prng, + group: "earrings", + values: options.earrings + }); + const glassesComponent = pickComponent({ + prng, + group: "glasses", + values: options.glasses + }); + const facialHairComponent = pickComponent({ + prng, + group: "facialHair", + values: options.facialHair + }); + return { + "base": baseComponent, + "mouth": mouthComponent, + "eyebrows": eyebrowsComponent, + "hair": prng.bool(options.hairProbability) ? hairComponent : void 0, + "eyes": eyesComponent, + "nose": noseComponent, + "ears": earsComponent, + "shirt": shirtComponent, + "earrings": prng.bool(options.earringsProbability) ? earringsComponent : void 0, + "glasses": prng.bool(options.glassesProbability) ? glassesComponent : void 0, + "facialHair": prng.bool(options.facialHairProbability) ? facialHairComponent : void 0 + }; +} + +// node_modules/@dicebear/micah/lib/utils/convertColor.js +function convertColor(color) { + return "transparent" === color ? color : `#${color}`; +} + +// node_modules/@dicebear/micah/lib/utils/getColors.js +function getColors({ prng, options }) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + return { + "base": convertColor(prng.pick((_a = options.baseColor) !== null && _a !== void 0 ? _a : [], "transparent")), + "earring": convertColor(prng.pick((_b = options.earringColor) !== null && _b !== void 0 ? _b : [], "transparent")), + "eyeShadow": convertColor(prng.pick((_c = options.eyeShadowColor) !== null && _c !== void 0 ? _c : [], "transparent")), + "eyebrows": convertColor(prng.pick((_d = options.eyebrowsColor) !== null && _d !== void 0 ? _d : [], "transparent")), + "facialHair": convertColor(prng.pick((_e = options.facialHairColor) !== null && _e !== void 0 ? _e : [], "transparent")), + "glasses": convertColor(prng.pick((_f = options.glassesColor) !== null && _f !== void 0 ? _f : [], "transparent")), + "hair": convertColor(prng.pick((_g = options.hairColor) !== null && _g !== void 0 ? _g : [], "transparent")), + "mouth": convertColor(prng.pick((_h = options.mouthColor) !== null && _h !== void 0 ? _h : [], "transparent")), + "shirt": convertColor(prng.pick((_j = options.shirtColor) !== null && _j !== void 0 ? _j : [], "transparent")), + "eyes": convertColor(prng.pick((_k = options.eyesColor) !== null && _k !== void 0 ? _k : [], "transparent")) + }; +} + +// node_modules/@dicebear/micah/lib/hooks/onPreCreate.js +function onPreCreate({ prng, options }) { + var _a; + options.baseColor = options.baseColor && options.baseColor.length > 0 ? [prng.pick(options.baseColor, "transparent")] : []; + for (const colorName of ["eyebrows", "hair", "eyes", "nose", "ears", "shirt", "earrings", "glasses", "facialHair"]) { + const colorOption = (_a = options[`${colorName}Color`]) !== null && _a !== void 0 ? _a : []; + const index = colorOption.indexOf(options.baseColor[0]); + if (colorOption.length > 1 && index > -1) { + colorOption.splice(index, 1); + } + } +} + +// node_modules/@dicebear/micah/lib/hooks/onPostCreate.js +function onPostCreate({ prng, options, components, colors }) { + var _a; + if (((_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.name) === "beard" && colors.facialHair === colors.mouth) { + colors.mouth = "#ffffff33"; + } +} + +// node_modules/@dicebear/micah/lib/schema.js +var schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "base": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "standard" + ] + }, + "default": [ + "standard" + ] + }, + "baseColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "ac6651", + "77311d" + ] + }, + "earringColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + }, + "earrings": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "hoop", + "stud" + ] + }, + "default": [ + "hoop", + "stud" + ] + }, + "earringsProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 30 + }, + "ears": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "attached", + "detached" + ] + }, + "default": [ + "attached", + "detached" + ] + }, + "eyeShadowColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "d2eff3", + "e0ddff", + "ffeba4", + "ffedef", + "ffffff" + ] + }, + "eyebrows": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "up", + "down", + "eyelashesUp", + "eyelashesDown" + ] + }, + "default": [ + "up", + "down", + "eyelashesUp", + "eyelashesDown" + ] + }, + "eyebrowsColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "eyes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "eyes", + "round", + "eyesShadow", + "smiling", + "smilingShadow" + ] + }, + "default": [ + "eyes", + "round", + "eyesShadow", + "smiling", + "smilingShadow" + ] + }, + "eyesColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "facialHair": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "beard", + "scruff" + ] + }, + "default": [ + "beard", + "scruff" + ] + }, + "facialHairColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "facialHairProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 10 + }, + "glasses": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "round", + "square" + ] + }, + "default": [ + "round", + "square" + ] + }, + "glassesColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + }, + "glassesProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 30 + }, + "hair": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "fonze", + "mrT", + "dougFunny", + "mrClean", + "dannyPhantom", + "full", + "turban", + "pixie" + ] + }, + "default": [ + "fonze", + "mrT", + "dougFunny", + "mrClean", + "dannyPhantom", + "full", + "turban", + "pixie" + ] + }, + "hairColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + }, + "hairProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 100 + }, + "mouth": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "surprised", + "laughing", + "nervous", + "smile", + "sad", + "pucker", + "frown", + "smirk" + ] + }, + "default": [ + "surprised", + "laughing", + "nervous", + "smile", + "sad", + "pucker", + "frown", + "smirk" + ] + }, + "mouthColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "nose": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "curve", + "pointed", + "tound" + ] + }, + "default": [ + "curve", + "pointed", + "tound" + ] + }, + "shirt": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "open", + "crew", + "collared" + ] + }, + "default": [ + "open", + "crew", + "collared" + ] + }, + "shirtColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + } + } +}; + +// node_modules/@dicebear/micah/lib/index.js +var meta = { + title: "Avatar Illustration System", + creator: "Micah Lanier", + source: "https://www.figma.com/community/file/829741575478342595", + homepage: "https://dribbble.com/micahlanier", + license: { + name: "CC BY 4.0", + url: "https://creativecommons.org/licenses/by/4.0/" + } +}; +var create = ({ prng, options }) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r; + onPreCreate({ prng, options }); + const components = getComponents({ prng, options }); + const colors = getColors({ prng, options }); + onPostCreate({ prng, options, components, colors }); + return { + attributes: { + viewBox: "0 0 360 360", + fill: "none", + "shape-rendering": "auto" + }, + body: `${(_b = (_a = components.base) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ""}${(_d = (_c = components.mouth) === null || _c === void 0 ? void 0 : _c.value(components, colors)) !== null && _d !== void 0 ? _d : ""}${(_f = (_e = components.eyebrows) === null || _e === void 0 ? void 0 : _e.value(components, colors)) !== null && _f !== void 0 ? _f : ""}${(_h = (_g = components.hair) === null || _g === void 0 ? void 0 : _g.value(components, colors)) !== null && _h !== void 0 ? _h : ""}${(_k = (_j = components.eyes) === null || _j === void 0 ? void 0 : _j.value(components, colors)) !== null && _k !== void 0 ? _k : ""}${(_m = (_l = components.nose) === null || _l === void 0 ? void 0 : _l.value(components, colors)) !== null && _m !== void 0 ? _m : ""}${(_p = (_o = components.ears) === null || _o === void 0 ? void 0 : _o.value(components, colors)) !== null && _p !== void 0 ? _p : ""}${(_r = (_q = components.shirt) === null || _q === void 0 ? void 0 : _q.value(components, colors)) !== null && _r !== void 0 ? _r : ""}`, + extra: () => ({ + ...Object.entries(components).reduce((acc, [key, value]) => { + acc[key] = value === null || value === void 0 ? void 0 : value.name; + return acc; + }, {}), + ...Object.entries(colors).reduce((acc, [key, value]) => { + acc[`${key}Color`] = value; + return acc; + }, {}) + }) + }; +}; +export { + create, + meta, + schema +}; +//# sourceMappingURL=@dicebear_micah.js.map diff --git a/node_modules/.vite/deps/@dicebear_micah.js.map b/node_modules/.vite/deps/@dicebear_micah.js.map new file mode 100644 index 0000000..393ff51 --- /dev/null +++ b/node_modules/.vite/deps/@dicebear_micah.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../@dicebear/micah/lib/components/index.js", "../../@dicebear/micah/lib/components/base.js", "../../@dicebear/micah/lib/components/mouth.js", "../../@dicebear/micah/lib/components/eyebrows.js", "../../@dicebear/micah/lib/components/hair.js", "../../@dicebear/micah/lib/components/eyes.js", "../../@dicebear/micah/lib/components/nose.js", "../../@dicebear/micah/lib/components/ears.js", "../../@dicebear/micah/lib/components/shirt.js", "../../@dicebear/micah/lib/components/earrings.js", "../../@dicebear/micah/lib/components/glasses.js", "../../@dicebear/micah/lib/components/facialHair.js", "../../@dicebear/micah/lib/utils/pickComponent.js", "../../@dicebear/micah/lib/utils/getComponents.js", "../../@dicebear/micah/lib/utils/convertColor.js", "../../@dicebear/micah/lib/utils/getColors.js", "../../@dicebear/micah/lib/hooks/onPreCreate.js", "../../@dicebear/micah/lib/hooks/onPostCreate.js", "../../@dicebear/micah/lib/schema.js", "../../@dicebear/micah/lib/index.js"], + "sourcesContent": ["/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nexport { base } from './base.js';\nexport { mouth } from './mouth.js';\nexport { eyebrows } from './eyebrows.js';\nexport { hair } from './hair.js';\nexport { eyes } from './eyes.js';\nexport { nose } from './nose.js';\nexport { ears } from './ears.js';\nexport { shirt } from './shirt.js';\nexport { earrings } from './earrings.js';\nexport { glasses } from './glasses.js';\nexport { facialHair } from './facialHair.js';\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const base = {\n 'standard': (components, colors) => { var _a, _b; return `${(_b = (_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const mouth = {\n 'surprised': (components, colors) => ``,\n 'laughing': (components, colors) => ``,\n 'nervous': (components, colors) => ``,\n 'smile': (components, colors) => ``,\n 'sad': (components, colors) => ``,\n 'pucker': (components, colors) => ``,\n 'frown': (components, colors) => ``,\n 'smirk': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const eyebrows = {\n 'up': (components, colors) => ``,\n 'down': (components, colors) => ``,\n 'eyelashesUp': (components, colors) => ``,\n 'eyelashesDown': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const hair = {\n 'fonze': (components, colors) => ``,\n 'mrT': (components, colors) => ``,\n 'dougFunny': (components, colors) => ``,\n 'mrClean': (components, colors) => ``,\n 'dannyPhantom': (components, colors) => ``,\n 'full': (components, colors) => ``,\n 'turban': (components, colors) => ``,\n 'pixie': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const eyes = {\n 'eyes': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n 'round': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n 'eyesShadow': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n 'smiling': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n 'smilingShadow': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nexport const nose = {\n 'curve': (components, colors) => ``,\n 'pointed': (components, colors) => ``,\n 'tound': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const ears = {\n 'attached': (components, colors) => { var _a, _b; return `${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n 'detached': (components, colors) => { var _a, _b; return `${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; },\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const shirt = {\n 'open': (components, colors) => ``,\n 'crew': (components, colors) => ``,\n 'collared': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const earrings = {\n 'hoop': (components, colors) => ``,\n 'stud': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const glasses = {\n 'round': (components, colors) => ``,\n 'square': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { escape } from '@dicebear/core';\nexport const facialHair = {\n 'beard': (components, colors) => ``,\n 'scruff': (components, colors) => ``,\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport * as components from '../components/index.js';\nexport function pickComponent({ prng, group, values = [] }) {\n const componentCollection = components;\n const key = prng.pick(values);\n if (key && componentCollection[group][key]) {\n return {\n name: key,\n value: componentCollection[group][key],\n };\n }\n else {\n return undefined;\n }\n}\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { pickComponent } from './pickComponent.js';\nexport function getComponents({ prng, options }) {\n const baseComponent = pickComponent({\n prng,\n group: 'base',\n values: options.base,\n });\n const mouthComponent = pickComponent({\n prng,\n group: 'mouth',\n values: options.mouth,\n });\n const eyebrowsComponent = pickComponent({\n prng,\n group: 'eyebrows',\n values: options.eyebrows,\n });\n const hairComponent = pickComponent({\n prng,\n group: 'hair',\n values: options.hair,\n });\n const eyesComponent = pickComponent({\n prng,\n group: 'eyes',\n values: options.eyes,\n });\n const noseComponent = pickComponent({\n prng,\n group: 'nose',\n values: options.nose,\n });\n const earsComponent = pickComponent({\n prng,\n group: 'ears',\n values: options.ears,\n });\n const shirtComponent = pickComponent({\n prng,\n group: 'shirt',\n values: options.shirt,\n });\n const earringsComponent = pickComponent({\n prng,\n group: 'earrings',\n values: options.earrings,\n });\n const glassesComponent = pickComponent({\n prng,\n group: 'glasses',\n values: options.glasses,\n });\n const facialHairComponent = pickComponent({\n prng,\n group: 'facialHair',\n values: options.facialHair,\n });\n return {\n 'base': baseComponent,\n 'mouth': mouthComponent,\n 'eyebrows': eyebrowsComponent,\n 'hair': prng.bool(options.hairProbability) ? hairComponent : undefined,\n 'eyes': eyesComponent,\n 'nose': noseComponent,\n 'ears': earsComponent,\n 'shirt': shirtComponent,\n 'earrings': prng.bool(options.earringsProbability) ? earringsComponent : undefined,\n 'glasses': prng.bool(options.glassesProbability) ? glassesComponent : undefined,\n 'facialHair': prng.bool(options.facialHairProbability) ? facialHairComponent : undefined,\n };\n}\n;\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nexport function convertColor(color) {\n return 'transparent' === color ? color : `#${color}`;\n}\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { convertColor } from './convertColor.js';\nexport function getColors({ prng, options }) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n return {\n 'base': convertColor(prng.pick((_a = options.baseColor) !== null && _a !== void 0 ? _a : [], 'transparent')),\n 'earring': convertColor(prng.pick((_b = options.earringColor) !== null && _b !== void 0 ? _b : [], 'transparent')),\n 'eyeShadow': convertColor(prng.pick((_c = options.eyeShadowColor) !== null && _c !== void 0 ? _c : [], 'transparent')),\n 'eyebrows': convertColor(prng.pick((_d = options.eyebrowsColor) !== null && _d !== void 0 ? _d : [], 'transparent')),\n 'facialHair': convertColor(prng.pick((_e = options.facialHairColor) !== null && _e !== void 0 ? _e : [], 'transparent')),\n 'glasses': convertColor(prng.pick((_f = options.glassesColor) !== null && _f !== void 0 ? _f : [], 'transparent')),\n 'hair': convertColor(prng.pick((_g = options.hairColor) !== null && _g !== void 0 ? _g : [], 'transparent')),\n 'mouth': convertColor(prng.pick((_h = options.mouthColor) !== null && _h !== void 0 ? _h : [], 'transparent')),\n 'shirt': convertColor(prng.pick((_j = options.shirtColor) !== null && _j !== void 0 ? _j : [], 'transparent')),\n 'eyes': convertColor(prng.pick((_k = options.eyesColor) !== null && _k !== void 0 ? _k : [], 'transparent')),\n };\n}\n;\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nexport function onPreCreate({ prng, options }) {\n var _a;\n // Prevent baseColor from being used a second time if possible.\n options.baseColor = options.baseColor && options.baseColor.length > 0 ? [prng.pick(options.baseColor, 'transparent')] : [];\n for (const colorName of ['eyebrows', 'hair', 'eyes', 'nose', 'ears', 'shirt', 'earrings', 'glasses', 'facialHair']) {\n // @ts-ignore\n const colorOption = (_a = options[`${colorName}Color`]) !== null && _a !== void 0 ? _a : [];\n const index = colorOption.indexOf(options.baseColor[0]);\n if (colorOption.length > 1 && index > -1) {\n colorOption.splice(index, 1);\n }\n }\n}\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nexport function onPostCreate({ prng, options, components, colors }) {\n var _a;\n // Ensure that the mouth remains visible. #132\n if (((_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.name) === 'beard' && colors.facialHair === colors.mouth) {\n colors.mouth = '#ffffff33';\n }\n}\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nexport const schema = {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"properties\": {\n \"base\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"standard\"\n ]\n },\n \"default\": [\n \"standard\"\n ]\n },\n \"baseColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"f9c9b6\",\n \"ac6651\",\n \"77311d\"\n ]\n },\n \"earringColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"f9c9b6\",\n \"d2eff3\",\n \"000000\",\n \"e0ddff\",\n \"f4d150\",\n \"ac6651\",\n \"9287ff\",\n \"ffeba4\",\n \"fc909f\",\n \"ffedef\",\n \"6bd9e9\",\n \"77311d\",\n \"ffffff\"\n ]\n },\n \"earrings\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"hoop\",\n \"stud\"\n ]\n },\n \"default\": [\n \"hoop\",\n \"stud\"\n ]\n },\n \"earringsProbability\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 100,\n \"default\": 30\n },\n \"ears\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"attached\",\n \"detached\"\n ]\n },\n \"default\": [\n \"attached\",\n \"detached\"\n ]\n },\n \"eyeShadowColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"d2eff3\",\n \"e0ddff\",\n \"ffeba4\",\n \"ffedef\",\n \"ffffff\"\n ]\n },\n \"eyebrows\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"up\",\n \"down\",\n \"eyelashesUp\",\n \"eyelashesDown\"\n ]\n },\n \"default\": [\n \"up\",\n \"down\",\n \"eyelashesUp\",\n \"eyelashesDown\"\n ]\n },\n \"eyebrowsColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"000000\"\n ]\n },\n \"eyes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"eyes\",\n \"round\",\n \"eyesShadow\",\n \"smiling\",\n \"smilingShadow\"\n ]\n },\n \"default\": [\n \"eyes\",\n \"round\",\n \"eyesShadow\",\n \"smiling\",\n \"smilingShadow\"\n ]\n },\n \"eyesColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"000000\"\n ]\n },\n \"facialHair\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"beard\",\n \"scruff\"\n ]\n },\n \"default\": [\n \"beard\",\n \"scruff\"\n ]\n },\n \"facialHairColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"000000\"\n ]\n },\n \"facialHairProbability\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 100,\n \"default\": 10\n },\n \"glasses\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"round\",\n \"square\"\n ]\n },\n \"default\": [\n \"round\",\n \"square\"\n ]\n },\n \"glassesColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"f9c9b6\",\n \"d2eff3\",\n \"000000\",\n \"e0ddff\",\n \"f4d150\",\n \"ac6651\",\n \"9287ff\",\n \"ffeba4\",\n \"fc909f\",\n \"ffedef\",\n \"6bd9e9\",\n \"77311d\",\n \"ffffff\"\n ]\n },\n \"glassesProbability\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 100,\n \"default\": 30\n },\n \"hair\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"fonze\",\n \"mrT\",\n \"dougFunny\",\n \"mrClean\",\n \"dannyPhantom\",\n \"full\",\n \"turban\",\n \"pixie\"\n ]\n },\n \"default\": [\n \"fonze\",\n \"mrT\",\n \"dougFunny\",\n \"mrClean\",\n \"dannyPhantom\",\n \"full\",\n \"turban\",\n \"pixie\"\n ]\n },\n \"hairColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"f9c9b6\",\n \"d2eff3\",\n \"000000\",\n \"e0ddff\",\n \"f4d150\",\n \"ac6651\",\n \"9287ff\",\n \"ffeba4\",\n \"fc909f\",\n \"ffedef\",\n \"6bd9e9\",\n \"77311d\",\n \"ffffff\"\n ]\n },\n \"hairProbability\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 100,\n \"default\": 100\n },\n \"mouth\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"surprised\",\n \"laughing\",\n \"nervous\",\n \"smile\",\n \"sad\",\n \"pucker\",\n \"frown\",\n \"smirk\"\n ]\n },\n \"default\": [\n \"surprised\",\n \"laughing\",\n \"nervous\",\n \"smile\",\n \"sad\",\n \"pucker\",\n \"frown\",\n \"smirk\"\n ]\n },\n \"mouthColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"000000\"\n ]\n },\n \"nose\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"curve\",\n \"pointed\",\n \"tound\"\n ]\n },\n \"default\": [\n \"curve\",\n \"pointed\",\n \"tound\"\n ]\n },\n \"shirt\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"open\",\n \"crew\",\n \"collared\"\n ]\n },\n \"default\": [\n \"open\",\n \"crew\",\n \"collared\"\n ]\n },\n \"shirtColor\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^(transparent|[a-fA-F0-9]{6})$\"\n },\n \"default\": [\n \"f9c9b6\",\n \"d2eff3\",\n \"000000\",\n \"e0ddff\",\n \"f4d150\",\n \"ac6651\",\n \"9287ff\",\n \"ffeba4\",\n \"fc909f\",\n \"ffedef\",\n \"6bd9e9\",\n \"77311d\",\n \"ffffff\"\n ]\n }\n }\n};\n", "/**\n * Do not change this file manually! This file was generated with the \"Dicebear Exporter\"-Plugin for Figma.\n *\n * Plugin: https://www.figma.com/community/plugin/1005765655729342787\n * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL\n */\nimport { getComponents } from './utils/getComponents.js';\nimport { getColors } from './utils/getColors.js';\nimport { onPreCreate } from './hooks/onPreCreate.js';\nimport { onPostCreate } from './hooks/onPostCreate.js';\nexport const meta = {\n title: 'Avatar Illustration System',\n creator: 'Micah Lanier',\n source: 'https://www.figma.com/community/file/829741575478342595',\n homepage: 'https://dribbble.com/micahlanier',\n license: {\n name: 'CC BY 4.0',\n url: 'https://creativecommons.org/licenses/by/4.0/',\n },\n};\nexport const create = ({ prng, options }) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n onPreCreate({ prng, options });\n const components = getComponents({ prng, options });\n const colors = getColors({ prng, options });\n onPostCreate({ prng, options, components, colors });\n return {\n attributes: {\n viewBox: '0 0 360 360',\n fill: 'none',\n 'shape-rendering': 'auto'\n },\n body: `${(_b = (_a = components.base) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}${(_d = (_c = components.mouth) === null || _c === void 0 ? void 0 : _c.value(components, colors)) !== null && _d !== void 0 ? _d : ''}${(_f = (_e = components.eyebrows) === null || _e === void 0 ? void 0 : _e.value(components, colors)) !== null && _f !== void 0 ? _f : ''}${(_h = (_g = components.hair) === null || _g === void 0 ? void 0 : _g.value(components, colors)) !== null && _h !== void 0 ? _h : ''}${(_k = (_j = components.eyes) === null || _j === void 0 ? void 0 : _j.value(components, colors)) !== null && _k !== void 0 ? _k : ''}${(_m = (_l = components.nose) === null || _l === void 0 ? void 0 : _l.value(components, colors)) !== null && _m !== void 0 ? _m : ''}${(_p = (_o = components.ears) === null || _o === void 0 ? void 0 : _o.value(components, colors)) !== null && _p !== void 0 ? _p : ''}${(_r = (_q = components.shirt) === null || _q === void 0 ? void 0 : _q.value(components, colors)) !== null && _r !== void 0 ? _r : ''}`,\n extra: () => ({\n ...Object.entries(components).reduce((acc, [key, value]) => {\n acc[key] = value === null || value === void 0 ? void 0 : value.name;\n return acc;\n }, {}),\n ...Object.entries(colors).reduce((acc, [key, value]) => {\n acc[`${key}Color`] = value;\n return acc;\n }, {}),\n }),\n };\n};\nexport { schema } from './schema.js';\n"], + "mappings": "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", + "names": [] +} diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json new file mode 100644 index 0000000..a234e69 --- /dev/null +++ b/node_modules/.vite/deps/_metadata.json @@ -0,0 +1,67 @@ +{ + "hash": "314ff9b8", + "configHash": "a9175a6e", + "lockfileHash": "86d0e88f", + "browserHash": "aa2e8e2d", + "optimized": { + "buffer": { + "src": "../../buffer/index.js", + "file": "buffer.js", + "fileHash": "8f476e4b", + "needsInterop": true + }, + "aes-js": { + "src": "../../aes-js/index.js", + "file": "aes-js.js", + "fileHash": "f7d9f9d7", + "needsInterop": true + }, + "elliptic": { + "src": "../../elliptic/lib/elliptic.js", + "file": "elliptic.js", + "fileHash": "952a6ef5", + "needsInterop": true + }, + "js-chacha20": { + "src": "../../js-chacha20/src/jschacha20.js", + "file": "js-chacha20.js", + "fileHash": "11cd1a75", + "needsInterop": true + }, + "js-sha256": { + "src": "../../js-sha256/src/sha256.js", + "file": "js-sha256.js", + "fileHash": "7eb2d482", + "needsInterop": true + }, + "@dicebear/core": { + "src": "../../@dicebear/core/lib/index.js", + "file": "@dicebear_core.js", + "fileHash": "f3c84174", + "needsInterop": false + }, + "@dicebear/micah": { + "src": "../../@dicebear/micah/lib/index.js", + "file": "@dicebear_micah.js", + "fileHash": "fc5de0ef", + "needsInterop": false + }, + "emoji-picker-element": { + "src": "../../emoji-picker-element/index.js", + "file": "emoji-picker-element.js", + "fileHash": "b2acd345", + "needsInterop": false + } + }, + "chunks": { + "chunk-LNRWHUEM": { + "file": "chunk-LNRWHUEM.js" + }, + "chunk-7H7TNGCE": { + "file": "chunk-7H7TNGCE.js" + }, + "chunk-HKJ2B2AA": { + "file": "chunk-HKJ2B2AA.js" + } + } +} \ No newline at end of file diff --git a/node_modules/.vite/deps/aes-js.js b/node_modules/.vite/deps/aes-js.js new file mode 100644 index 0000000..1a2da43 --- /dev/null +++ b/node_modules/.vite/deps/aes-js.js @@ -0,0 +1,567 @@ +import { + __commonJS +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/aes-js/index.js +var require_aes_js = __commonJS({ + "node_modules/aes-js/index.js"(exports, module) { + (function(root) { + "use strict"; + function checkInt(value) { + return parseInt(value) === value; + } + function checkInts(arrayish) { + if (!checkInt(arrayish.length)) { + return false; + } + for (var i = 0; i < arrayish.length; i++) { + if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) { + return false; + } + } + return true; + } + function coerceArray(arg, copy) { + if (arg.buffer && arg.name === "Uint8Array") { + if (copy) { + if (arg.slice) { + arg = arg.slice(); + } else { + arg = Array.prototype.slice.call(arg); + } + } + return arg; + } + if (Array.isArray(arg)) { + if (!checkInts(arg)) { + throw new Error("Array contains invalid value: " + arg); + } + return new Uint8Array(arg); + } + if (checkInt(arg.length) && checkInts(arg)) { + return new Uint8Array(arg); + } + throw new Error("unsupported array-like object"); + } + function createArray(length) { + return new Uint8Array(length); + } + function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) { + if (sourceStart != null || sourceEnd != null) { + if (sourceArray.slice) { + sourceArray = sourceArray.slice(sourceStart, sourceEnd); + } else { + sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd); + } + } + targetArray.set(sourceArray, targetStart); + } + var convertUtf8 = /* @__PURE__ */ function() { + function toBytes(text) { + var result = [], i = 0; + text = encodeURI(text); + while (i < text.length) { + var c = text.charCodeAt(i++); + if (c === 37) { + result.push(parseInt(text.substr(i, 2), 16)); + i += 2; + } else { + result.push(c); + } + } + return coerceArray(result); + } + function fromBytes(bytes) { + var result = [], i = 0; + while (i < bytes.length) { + var c = bytes[i]; + if (c < 128) { + result.push(String.fromCharCode(c)); + i++; + } else if (c > 191 && c < 224) { + result.push(String.fromCharCode((c & 31) << 6 | bytes[i + 1] & 63)); + i += 2; + } else { + result.push(String.fromCharCode((c & 15) << 12 | (bytes[i + 1] & 63) << 6 | bytes[i + 2] & 63)); + i += 3; + } + } + return result.join(""); + } + return { + toBytes, + fromBytes + }; + }(); + var convertHex = /* @__PURE__ */ function() { + function toBytes(text) { + var result = []; + for (var i = 0; i < text.length; i += 2) { + result.push(parseInt(text.substr(i, 2), 16)); + } + return result; + } + var Hex = "0123456789abcdef"; + function fromBytes(bytes) { + var result = []; + for (var i = 0; i < bytes.length; i++) { + var v = bytes[i]; + result.push(Hex[(v & 240) >> 4] + Hex[v & 15]); + } + return result.join(""); + } + return { + toBytes, + fromBytes + }; + }(); + var numberOfRounds = { 16: 10, 24: 12, 32: 14 }; + var rcon = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145]; + var S = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]; + var Si = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]; + var T1 = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986]; + var T2 = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766]; + var T3 = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126]; + var T4 = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436]; + var T5 = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890]; + var T6 = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935]; + var T7 = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600]; + var T8 = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480]; + var U1 = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795]; + var U2 = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855]; + var U3 = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150]; + var U4 = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925]; + function convertToInt32(bytes) { + var result = []; + for (var i = 0; i < bytes.length; i += 4) { + result.push( + bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3] + ); + } + return result; + } + var AES = function(key) { + if (!(this instanceof AES)) { + throw Error("AES must be instanitated with `new`"); + } + Object.defineProperty(this, "key", { + value: coerceArray(key, true) + }); + this._prepare(); + }; + AES.prototype._prepare = function() { + var rounds = numberOfRounds[this.key.length]; + if (rounds == null) { + throw new Error("invalid key size (must be 16, 24 or 32 bytes)"); + } + this._Ke = []; + this._Kd = []; + for (var i = 0; i <= rounds; i++) { + this._Ke.push([0, 0, 0, 0]); + this._Kd.push([0, 0, 0, 0]); + } + var roundKeyCount = (rounds + 1) * 4; + var KC = this.key.length / 4; + var tk = convertToInt32(this.key); + var index; + for (var i = 0; i < KC; i++) { + index = i >> 2; + this._Ke[index][i % 4] = tk[i]; + this._Kd[rounds - index][i % 4] = tk[i]; + } + var rconpointer = 0; + var t = KC, tt; + while (t < roundKeyCount) { + tt = tk[KC - 1]; + tk[0] ^= S[tt >> 16 & 255] << 24 ^ S[tt >> 8 & 255] << 16 ^ S[tt & 255] << 8 ^ S[tt >> 24 & 255] ^ rcon[rconpointer] << 24; + rconpointer += 1; + if (KC != 8) { + for (var i = 1; i < KC; i++) { + tk[i] ^= tk[i - 1]; + } + } else { + for (var i = 1; i < KC / 2; i++) { + tk[i] ^= tk[i - 1]; + } + tt = tk[KC / 2 - 1]; + tk[KC / 2] ^= S[tt & 255] ^ S[tt >> 8 & 255] << 8 ^ S[tt >> 16 & 255] << 16 ^ S[tt >> 24 & 255] << 24; + for (var i = KC / 2 + 1; i < KC; i++) { + tk[i] ^= tk[i - 1]; + } + } + var i = 0, r, c; + while (i < KC && t < roundKeyCount) { + r = t >> 2; + c = t % 4; + this._Ke[r][c] = tk[i]; + this._Kd[rounds - r][c] = tk[i++]; + t++; + } + } + for (var r = 1; r < rounds; r++) { + for (var c = 0; c < 4; c++) { + tt = this._Kd[r][c]; + this._Kd[r][c] = U1[tt >> 24 & 255] ^ U2[tt >> 16 & 255] ^ U3[tt >> 8 & 255] ^ U4[tt & 255]; + } + } + }; + AES.prototype.encrypt = function(plaintext) { + if (plaintext.length != 16) { + throw new Error("invalid plaintext size (must be 16 bytes)"); + } + var rounds = this._Ke.length - 1; + var a = [0, 0, 0, 0]; + var t = convertToInt32(plaintext); + for (var i = 0; i < 4; i++) { + t[i] ^= this._Ke[0][i]; + } + for (var r = 1; r < rounds; r++) { + for (var i = 0; i < 4; i++) { + a[i] = T1[t[i] >> 24 & 255] ^ T2[t[(i + 1) % 4] >> 16 & 255] ^ T3[t[(i + 2) % 4] >> 8 & 255] ^ T4[t[(i + 3) % 4] & 255] ^ this._Ke[r][i]; + } + t = a.slice(); + } + var result = createArray(16), tt; + for (var i = 0; i < 4; i++) { + tt = this._Ke[rounds][i]; + result[4 * i] = (S[t[i] >> 24 & 255] ^ tt >> 24) & 255; + result[4 * i + 1] = (S[t[(i + 1) % 4] >> 16 & 255] ^ tt >> 16) & 255; + result[4 * i + 2] = (S[t[(i + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255; + result[4 * i + 3] = (S[t[(i + 3) % 4] & 255] ^ tt) & 255; + } + return result; + }; + AES.prototype.decrypt = function(ciphertext) { + if (ciphertext.length != 16) { + throw new Error("invalid ciphertext size (must be 16 bytes)"); + } + var rounds = this._Kd.length - 1; + var a = [0, 0, 0, 0]; + var t = convertToInt32(ciphertext); + for (var i = 0; i < 4; i++) { + t[i] ^= this._Kd[0][i]; + } + for (var r = 1; r < rounds; r++) { + for (var i = 0; i < 4; i++) { + a[i] = T5[t[i] >> 24 & 255] ^ T6[t[(i + 3) % 4] >> 16 & 255] ^ T7[t[(i + 2) % 4] >> 8 & 255] ^ T8[t[(i + 1) % 4] & 255] ^ this._Kd[r][i]; + } + t = a.slice(); + } + var result = createArray(16), tt; + for (var i = 0; i < 4; i++) { + tt = this._Kd[rounds][i]; + result[4 * i] = (Si[t[i] >> 24 & 255] ^ tt >> 24) & 255; + result[4 * i + 1] = (Si[t[(i + 3) % 4] >> 16 & 255] ^ tt >> 16) & 255; + result[4 * i + 2] = (Si[t[(i + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255; + result[4 * i + 3] = (Si[t[(i + 1) % 4] & 255] ^ tt) & 255; + } + return result; + }; + var ModeOfOperationECB = function(key) { + if (!(this instanceof ModeOfOperationECB)) { + throw Error("AES must be instanitated with `new`"); + } + this.description = "Electronic Code Block"; + this.name = "ecb"; + this._aes = new AES(key); + }; + ModeOfOperationECB.prototype.encrypt = function(plaintext) { + plaintext = coerceArray(plaintext); + if (plaintext.length % 16 !== 0) { + throw new Error("invalid plaintext size (must be multiple of 16 bytes)"); + } + var ciphertext = createArray(plaintext.length); + var block = createArray(16); + for (var i = 0; i < plaintext.length; i += 16) { + copyArray(plaintext, block, 0, i, i + 16); + block = this._aes.encrypt(block); + copyArray(block, ciphertext, i); + } + return ciphertext; + }; + ModeOfOperationECB.prototype.decrypt = function(ciphertext) { + ciphertext = coerceArray(ciphertext); + if (ciphertext.length % 16 !== 0) { + throw new Error("invalid ciphertext size (must be multiple of 16 bytes)"); + } + var plaintext = createArray(ciphertext.length); + var block = createArray(16); + for (var i = 0; i < ciphertext.length; i += 16) { + copyArray(ciphertext, block, 0, i, i + 16); + block = this._aes.decrypt(block); + copyArray(block, plaintext, i); + } + return plaintext; + }; + var ModeOfOperationCBC = function(key, iv) { + if (!(this instanceof ModeOfOperationCBC)) { + throw Error("AES must be instanitated with `new`"); + } + this.description = "Cipher Block Chaining"; + this.name = "cbc"; + if (!iv) { + iv = createArray(16); + } else if (iv.length != 16) { + throw new Error("invalid initialation vector size (must be 16 bytes)"); + } + this._lastCipherblock = coerceArray(iv, true); + this._aes = new AES(key); + }; + ModeOfOperationCBC.prototype.encrypt = function(plaintext) { + plaintext = coerceArray(plaintext); + if (plaintext.length % 16 !== 0) { + throw new Error("invalid plaintext size (must be multiple of 16 bytes)"); + } + var ciphertext = createArray(plaintext.length); + var block = createArray(16); + for (var i = 0; i < plaintext.length; i += 16) { + copyArray(plaintext, block, 0, i, i + 16); + for (var j = 0; j < 16; j++) { + block[j] ^= this._lastCipherblock[j]; + } + this._lastCipherblock = this._aes.encrypt(block); + copyArray(this._lastCipherblock, ciphertext, i); + } + return ciphertext; + }; + ModeOfOperationCBC.prototype.decrypt = function(ciphertext) { + ciphertext = coerceArray(ciphertext); + if (ciphertext.length % 16 !== 0) { + throw new Error("invalid ciphertext size (must be multiple of 16 bytes)"); + } + var plaintext = createArray(ciphertext.length); + var block = createArray(16); + for (var i = 0; i < ciphertext.length; i += 16) { + copyArray(ciphertext, block, 0, i, i + 16); + block = this._aes.decrypt(block); + for (var j = 0; j < 16; j++) { + plaintext[i + j] = block[j] ^ this._lastCipherblock[j]; + } + copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16); + } + return plaintext; + }; + var ModeOfOperationCFB = function(key, iv, segmentSize) { + if (!(this instanceof ModeOfOperationCFB)) { + throw Error("AES must be instanitated with `new`"); + } + this.description = "Cipher Feedback"; + this.name = "cfb"; + if (!iv) { + iv = createArray(16); + } else if (iv.length != 16) { + throw new Error("invalid initialation vector size (must be 16 size)"); + } + if (!segmentSize) { + segmentSize = 1; + } + this.segmentSize = segmentSize; + this._shiftRegister = coerceArray(iv, true); + this._aes = new AES(key); + }; + ModeOfOperationCFB.prototype.encrypt = function(plaintext) { + if (plaintext.length % this.segmentSize != 0) { + throw new Error("invalid plaintext size (must be segmentSize bytes)"); + } + var encrypted = coerceArray(plaintext, true); + var xorSegment; + for (var i = 0; i < encrypted.length; i += this.segmentSize) { + xorSegment = this._aes.encrypt(this._shiftRegister); + for (var j = 0; j < this.segmentSize; j++) { + encrypted[i + j] ^= xorSegment[j]; + } + copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize); + copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize); + } + return encrypted; + }; + ModeOfOperationCFB.prototype.decrypt = function(ciphertext) { + if (ciphertext.length % this.segmentSize != 0) { + throw new Error("invalid ciphertext size (must be segmentSize bytes)"); + } + var plaintext = coerceArray(ciphertext, true); + var xorSegment; + for (var i = 0; i < plaintext.length; i += this.segmentSize) { + xorSegment = this._aes.encrypt(this._shiftRegister); + for (var j = 0; j < this.segmentSize; j++) { + plaintext[i + j] ^= xorSegment[j]; + } + copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize); + copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize); + } + return plaintext; + }; + var ModeOfOperationOFB = function(key, iv) { + if (!(this instanceof ModeOfOperationOFB)) { + throw Error("AES must be instanitated with `new`"); + } + this.description = "Output Feedback"; + this.name = "ofb"; + if (!iv) { + iv = createArray(16); + } else if (iv.length != 16) { + throw new Error("invalid initialation vector size (must be 16 bytes)"); + } + this._lastPrecipher = coerceArray(iv, true); + this._lastPrecipherIndex = 16; + this._aes = new AES(key); + }; + ModeOfOperationOFB.prototype.encrypt = function(plaintext) { + var encrypted = coerceArray(plaintext, true); + for (var i = 0; i < encrypted.length; i++) { + if (this._lastPrecipherIndex === 16) { + this._lastPrecipher = this._aes.encrypt(this._lastPrecipher); + this._lastPrecipherIndex = 0; + } + encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++]; + } + return encrypted; + }; + ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt; + var Counter = function(initialValue) { + if (!(this instanceof Counter)) { + throw Error("Counter must be instanitated with `new`"); + } + if (initialValue !== 0 && !initialValue) { + initialValue = 1; + } + if (typeof initialValue === "number") { + this._counter = createArray(16); + this.setValue(initialValue); + } else { + this.setBytes(initialValue); + } + }; + Counter.prototype.setValue = function(value) { + if (typeof value !== "number" || parseInt(value) != value) { + throw new Error("invalid counter value (must be an integer)"); + } + if (value > Number.MAX_SAFE_INTEGER) { + throw new Error("integer value out of safe range"); + } + for (var index = 15; index >= 0; --index) { + this._counter[index] = value % 256; + value = parseInt(value / 256); + } + }; + Counter.prototype.setBytes = function(bytes) { + bytes = coerceArray(bytes, true); + if (bytes.length != 16) { + throw new Error("invalid counter bytes size (must be 16 bytes)"); + } + this._counter = bytes; + }; + Counter.prototype.increment = function() { + for (var i = 15; i >= 0; i--) { + if (this._counter[i] === 255) { + this._counter[i] = 0; + } else { + this._counter[i]++; + break; + } + } + }; + var ModeOfOperationCTR = function(key, counter) { + if (!(this instanceof ModeOfOperationCTR)) { + throw Error("AES must be instanitated with `new`"); + } + this.description = "Counter"; + this.name = "ctr"; + if (!(counter instanceof Counter)) { + counter = new Counter(counter); + } + this._counter = counter; + this._remainingCounter = null; + this._remainingCounterIndex = 16; + this._aes = new AES(key); + }; + ModeOfOperationCTR.prototype.encrypt = function(plaintext) { + var encrypted = coerceArray(plaintext, true); + for (var i = 0; i < encrypted.length; i++) { + if (this._remainingCounterIndex === 16) { + this._remainingCounter = this._aes.encrypt(this._counter._counter); + this._remainingCounterIndex = 0; + this._counter.increment(); + } + encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++]; + } + return encrypted; + }; + ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt; + function pkcs7pad(data) { + data = coerceArray(data, true); + var padder = 16 - data.length % 16; + var result = createArray(data.length + padder); + copyArray(data, result); + for (var i = data.length; i < result.length; i++) { + result[i] = padder; + } + return result; + } + function pkcs7strip(data) { + data = coerceArray(data, true); + if (data.length < 16) { + throw new Error("PKCS#7 invalid length"); + } + var padder = data[data.length - 1]; + if (padder > 16) { + throw new Error("PKCS#7 padding byte out of range"); + } + var length = data.length - padder; + for (var i = 0; i < padder; i++) { + if (data[length + i] !== padder) { + throw new Error("PKCS#7 invalid padding byte"); + } + } + var result = createArray(length); + copyArray(data, result, 0, 0, length); + return result; + } + var aesjs = { + AES, + Counter, + ModeOfOperation: { + ecb: ModeOfOperationECB, + cbc: ModeOfOperationCBC, + cfb: ModeOfOperationCFB, + ofb: ModeOfOperationOFB, + ctr: ModeOfOperationCTR + }, + utils: { + hex: convertHex, + utf8: convertUtf8 + }, + padding: { + pkcs7: { + pad: pkcs7pad, + strip: pkcs7strip + } + }, + _arrayTest: { + coerceArray, + createArray, + copyArray + } + }; + if (typeof exports !== "undefined") { + module.exports = aesjs; + } else if (typeof define === "function" && define.amd) { + define([], function() { + return aesjs; + }); + } else { + if (root.aesjs) { + aesjs._aesjs = root.aesjs; + } + root.aesjs = aesjs; + } + })(exports); + } +}); +export default require_aes_js(); +/*! Bundled license information: + +aes-js/index.js: + (*! MIT License. Copyright 2015-2018 Richard Moore . See LICENSE.txt. *) +*/ +//# sourceMappingURL=aes-js.js.map diff --git a/node_modules/.vite/deps/aes-js.js.map b/node_modules/.vite/deps/aes-js.js.map new file mode 100644 index 0000000..57d01a3 --- /dev/null +++ b/node_modules/.vite/deps/aes-js.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../aes-js/index.js"], + "sourcesContent": ["/*! MIT License. Copyright 2015-2018 Richard Moore . See LICENSE.txt. */\n(function(root) {\n \"use strict\";\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n // We cannot safely handle numbers beyond the safe range for integers\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new Error('integer value out of safe range');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = parseInt(value / 256);\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define([], function() { return aesjs; });\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n"], + "mappings": "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,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAM,KAAM,KAAM,IAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,GAAM,KAAM,IAAM,IAAM,IAAM,IAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,IAAM,IAAM,KAAM,IAAM,KAAM,EAAI;AACvgD,UAAI,KAAI,CAAC,IAAM,GAAM,KAAM,KAAM,IAAM,IAAM,KAAM,IAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,IAAM,KAAM,IAAM,KAAM,IAAM,IAAM,KAAM,KAAM,IAAM,GAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,IAAM,IAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,GAAM,KAAM,KAAM,IAAM,GAAM,KAAM,IAAM,IAAM,KAAM,KAAM,IAAM,IAAM,GAAM,KAAM,KAAM,KAAM,GAAM,GAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,IAAM,IAAM,KAAM,IAAM,KAAM,IAAM,KAAM,IAAM,IAAM,IAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,KAAM,IAAM,KAAM,GAAM,KAAM,IAAM,KAAM,IAAM,IAAM,IAAM,IAAM,KAAM,KAAM,IAAM,IAAM,IAAM,KAAM,KAAM,IAAM,KAAM,IAAM,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,IAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,IAAM,KAAM,IAAM,IAAM,IAAM,GAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAI;AAGvgD,UAAI,KAAK,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,GAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,SAAU;AACxgG,UAAI,KAAK,CAAC,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,GAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,UAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,SAAU;AACxgG,UAAI,KAAK,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,UAAY,YAAY,WAAY,YAAY,WAAY,YAAY,UAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,GAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,SAAU;AACxgG,UAAI,KAAK,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,UAAY,YAAY,WAAY,YAAY,WAAY,YAAY,UAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,GAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,SAAU;AAGxgG,UAAI,KAAK,CAAC,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,GAAY,WAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACxgG,UAAI,KAAK,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,GAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,UAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACxgG,UAAI,KAAK,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,UAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,GAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACxgG,UAAI,KAAK,CAAC,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,UAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,YAAY,UAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,UAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,GAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,UAAU;AAGxgG,UAAI,KAAK,CAAC,GAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,WAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACxgG,UAAI,KAAK,CAAC,GAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,UAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,UAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACxgG,UAAI,KAAK,CAAC,GAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,WAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,WAAY,WAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,WAAY,WAAY,YAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACxgG,UAAI,KAAK,CAAC,GAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAA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", + "names": [] +} diff --git a/node_modules/.vite/deps/buffer.js b/node_modules/.vite/deps/buffer.js new file mode 100644 index 0000000..53b1ac5 --- /dev/null +++ b/node_modules/.vite/deps/buffer.js @@ -0,0 +1,1793 @@ +import { + __commonJS +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/base64-js/index.js +var require_base64_js = __commonJS({ + "node_modules/base64-js/index.js"(exports) { + "use strict"; + exports.byteLength = byteLength; + exports.toByteArray = toByteArray; + exports.fromByteArray = fromByteArray; + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; + var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + for (i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + var i; + var len; + revLookup["-".charCodeAt(0)] = 62; + revLookup["_".charCodeAt(0)] = 63; + function getLens(b64) { + var len2 = b64.length; + if (len2 % 4 > 0) { + throw new Error("Invalid string. Length must be a multiple of 4"); + } + var validLen = b64.indexOf("="); + if (validLen === -1) validLen = len2; + var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; + return [validLen, placeHoldersLen]; + } + function byteLength(b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; + } + function _byteLength(b64, validLen, placeHoldersLen) { + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; + } + function toByteArray(b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + var curByte = 0; + var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; + var i2; + for (i2 = 0; i2 < len2; i2 += 4) { + tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)]; + arr[curByte++] = tmp >> 16 & 255; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 2) { + tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 1) { + tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + return arr; + } + function tripletToBase64(num) { + return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; + } + function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + for (var i2 = start; i2 < end; i2 += 3) { + tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255); + output.push(tripletToBase64(tmp)); + } + return output.join(""); + } + function fromByteArray(uint8) { + var tmp; + var len2 = uint8.length; + var extraBytes = len2 % 3; + var parts = []; + var maxChunkLength = 16383; + for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) { + parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength)); + } + if (extraBytes === 1) { + tmp = uint8[len2 - 1]; + parts.push( + lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" + ); + } else if (extraBytes === 2) { + tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; + parts.push( + lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" + ); + } + return parts.join(""); + } + } +}); + +// node_modules/ieee754/index.js +var require_ieee754 = __commonJS({ + "node_modules/ieee754/index.js"(exports) { + exports.read = function(buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? nBytes - 1 : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + i += d; + e = s & (1 << -nBits) - 1; + s >>= -nBits; + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) { + } + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) { + } + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : (s ? -1 : 1) * Infinity; + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); + }; + exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; + var i = isLE ? 0 : nBytes - 1; + var d = isLE ? 1 : -1; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + value = Math.abs(value); + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) { + } + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { + } + buffer[offset + i - d] |= s * 128; + }; + } +}); + +// node_modules/buffer/index.js +var require_buffer = __commonJS({ + "node_modules/buffer/index.js"(exports) { + var base64 = require_base64_js(); + var ieee754 = require_ieee754(); + var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; + exports.Buffer = Buffer; + exports.SlowBuffer = SlowBuffer; + exports.INSPECT_MAX_BYTES = 50; + var K_MAX_LENGTH = 2147483647; + exports.kMaxLength = K_MAX_LENGTH; + Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); + if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { + console.error( + "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support." + ); + } + function typedArraySupport() { + try { + const arr = new Uint8Array(1); + const proto = { foo: function() { + return 42; + } }; + Object.setPrototypeOf(proto, Uint8Array.prototype); + Object.setPrototypeOf(arr, proto); + return arr.foo() === 42; + } catch (e) { + return false; + } + } + Object.defineProperty(Buffer.prototype, "parent", { + enumerable: true, + get: function() { + if (!Buffer.isBuffer(this)) return void 0; + return this.buffer; + } + }); + Object.defineProperty(Buffer.prototype, "offset", { + enumerable: true, + get: function() { + if (!Buffer.isBuffer(this)) return void 0; + return this.byteOffset; + } + }); + function createBuffer(length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"'); + } + const buf = new Uint8Array(length); + Object.setPrototypeOf(buf, Buffer.prototype); + return buf; + } + function Buffer(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + if (typeof encodingOrOffset === "string") { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ); + } + return allocUnsafe(arg); + } + return from(arg, encodingOrOffset, length); + } + Buffer.poolSize = 8192; + function from(value, encodingOrOffset, length) { + if (typeof value === "string") { + return fromString(value, encodingOrOffset); + } + if (ArrayBuffer.isView(value)) { + return fromArrayView(value); + } + if (value == null) { + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value + ); + } + if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { + return fromArrayBuffer(value, encodingOrOffset, length); + } + if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length); + } + if (typeof value === "number") { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ); + } + const valueOf = value.valueOf && value.valueOf(); + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length); + } + const b = fromObject(value); + if (b) return b; + if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { + return Buffer.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); + } + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value + ); + } + Buffer.from = function(value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length); + }; + Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); + Object.setPrototypeOf(Buffer, Uint8Array); + function assertSize(size) { + if (typeof size !== "number") { + throw new TypeError('"size" argument must be of type number'); + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + } + function alloc(size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(size); + } + if (fill !== void 0) { + return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); + } + return createBuffer(size); + } + Buffer.alloc = function(size, fill, encoding) { + return alloc(size, fill, encoding); + }; + function allocUnsafe(size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0); + } + Buffer.allocUnsafe = function(size) { + return allocUnsafe(size); + }; + Buffer.allocUnsafeSlow = function(size) { + return allocUnsafe(size); + }; + function fromString(string, encoding) { + if (typeof encoding !== "string" || encoding === "") { + encoding = "utf8"; + } + if (!Buffer.isEncoding(encoding)) { + throw new TypeError("Unknown encoding: " + encoding); + } + const length = byteLength(string, encoding) | 0; + let buf = createBuffer(length); + const actual = buf.write(string, encoding); + if (actual !== length) { + buf = buf.slice(0, actual); + } + return buf; + } + function fromArrayLike(array) { + const length = array.length < 0 ? 0 : checked(array.length) | 0; + const buf = createBuffer(length); + for (let i = 0; i < length; i += 1) { + buf[i] = array[i] & 255; + } + return buf; + } + function fromArrayView(arrayView) { + if (isInstance(arrayView, Uint8Array)) { + const copy = new Uint8Array(arrayView); + return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength); + } + return fromArrayLike(arrayView); + } + function fromArrayBuffer(array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds'); + } + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds'); + } + let buf; + if (byteOffset === void 0 && length === void 0) { + buf = new Uint8Array(array); + } else if (length === void 0) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + Object.setPrototypeOf(buf, Buffer.prototype); + return buf; + } + function fromObject(obj) { + if (Buffer.isBuffer(obj)) { + const len = checked(obj.length) | 0; + const buf = createBuffer(len); + if (buf.length === 0) { + return buf; + } + obj.copy(buf, 0, 0, len); + return buf; + } + if (obj.length !== void 0) { + if (typeof obj.length !== "number" || numberIsNaN(obj.length)) { + return createBuffer(0); + } + return fromArrayLike(obj); + } + if (obj.type === "Buffer" && Array.isArray(obj.data)) { + return fromArrayLike(obj.data); + } + } + function checked(length) { + if (length >= K_MAX_LENGTH) { + throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes"); + } + return length | 0; + } + function SlowBuffer(length) { + if (+length != length) { + length = 0; + } + return Buffer.alloc(+length); + } + Buffer.isBuffer = function isBuffer(b) { + return b != null && b._isBuffer === true && b !== Buffer.prototype; + }; + Buffer.compare = function compare(a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ); + } + if (a === b) return 0; + let x = a.length; + let y = b.length; + for (let i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + if (x < y) return -1; + if (y < x) return 1; + return 0; + }; + Buffer.isEncoding = function isEncoding(encoding) { + switch (String(encoding).toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "latin1": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return true; + default: + return false; + } + }; + Buffer.concat = function concat(list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } + if (list.length === 0) { + return Buffer.alloc(0); + } + let i; + if (length === void 0) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + const buffer = Buffer.allocUnsafe(length); + let pos = 0; + for (i = 0; i < list.length; ++i) { + let buf = list[i]; + if (isInstance(buf, Uint8Array)) { + if (pos + buf.length > buffer.length) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); + buf.copy(buffer, pos); + } else { + Uint8Array.prototype.set.call( + buffer, + buf, + pos + ); + } + } else if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } else { + buf.copy(buffer, pos); + } + pos += buf.length; + } + return buffer; + }; + function byteLength(string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length; + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength; + } + if (typeof string !== "string") { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string + ); + } + const len = string.length; + const mustMatch = arguments.length > 2 && arguments[2] === true; + if (!mustMatch && len === 0) return 0; + let loweredCase = false; + for (; ; ) { + switch (encoding) { + case "ascii": + case "latin1": + case "binary": + return len; + case "utf8": + case "utf-8": + return utf8ToBytes(string).length; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return len * 2; + case "hex": + return len >>> 1; + case "base64": + return base64ToBytes(string).length; + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length; + } + encoding = ("" + encoding).toLowerCase(); + loweredCase = true; + } + } + } + Buffer.byteLength = byteLength; + function slowToString(encoding, start, end) { + let loweredCase = false; + if (start === void 0 || start < 0) { + start = 0; + } + if (start > this.length) { + return ""; + } + if (end === void 0 || end > this.length) { + end = this.length; + } + if (end <= 0) { + return ""; + } + end >>>= 0; + start >>>= 0; + if (end <= start) { + return ""; + } + if (!encoding) encoding = "utf8"; + while (true) { + switch (encoding) { + case "hex": + return hexSlice(this, start, end); + case "utf8": + case "utf-8": + return utf8Slice(this, start, end); + case "ascii": + return asciiSlice(this, start, end); + case "latin1": + case "binary": + return latin1Slice(this, start, end); + case "base64": + return base64Slice(this, start, end); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return utf16leSlice(this, start, end); + default: + if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); + encoding = (encoding + "").toLowerCase(); + loweredCase = true; + } + } + } + Buffer.prototype._isBuffer = true; + function swap(b, n, m) { + const i = b[n]; + b[n] = b[m]; + b[m] = i; + } + Buffer.prototype.swap16 = function swap16() { + const len = this.length; + if (len % 2 !== 0) { + throw new RangeError("Buffer size must be a multiple of 16-bits"); + } + for (let i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this; + }; + Buffer.prototype.swap32 = function swap32() { + const len = this.length; + if (len % 4 !== 0) { + throw new RangeError("Buffer size must be a multiple of 32-bits"); + } + for (let i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this; + }; + Buffer.prototype.swap64 = function swap64() { + const len = this.length; + if (len % 8 !== 0) { + throw new RangeError("Buffer size must be a multiple of 64-bits"); + } + for (let i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this; + }; + Buffer.prototype.toString = function toString() { + const length = this.length; + if (length === 0) return ""; + if (arguments.length === 0) return utf8Slice(this, 0, length); + return slowToString.apply(this, arguments); + }; + Buffer.prototype.toLocaleString = Buffer.prototype.toString; + Buffer.prototype.equals = function equals(b) { + if (!Buffer.isBuffer(b)) throw new TypeError("Argument must be a Buffer"); + if (this === b) return true; + return Buffer.compare(this, b) === 0; + }; + Buffer.prototype.inspect = function inspect() { + let str = ""; + const max = exports.INSPECT_MAX_BYTES; + str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); + if (this.length > max) str += " ... "; + return ""; + }; + if (customInspectSymbol) { + Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; + } + Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength); + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target + ); + } + if (start === void 0) { + start = 0; + } + if (end === void 0) { + end = target ? target.length : 0; + } + if (thisStart === void 0) { + thisStart = 0; + } + if (thisEnd === void 0) { + thisEnd = this.length; + } + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError("out of range index"); + } + if (thisStart >= thisEnd && start >= end) { + return 0; + } + if (thisStart >= thisEnd) { + return -1; + } + if (start >= end) { + return 1; + } + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + if (this === target) return 0; + let x = thisEnd - thisStart; + let y = end - start; + const len = Math.min(x, y); + const thisCopy = this.slice(thisStart, thisEnd); + const targetCopy = target.slice(start, end); + for (let i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break; + } + } + if (x < y) return -1; + if (y < x) return 1; + return 0; + }; + function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { + if (buffer.length === 0) return -1; + if (typeof byteOffset === "string") { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 2147483647) { + byteOffset = 2147483647; + } else if (byteOffset < -2147483648) { + byteOffset = -2147483648; + } + byteOffset = +byteOffset; + if (numberIsNaN(byteOffset)) { + byteOffset = dir ? 0 : buffer.length - 1; + } + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1; + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1; + } + if (typeof val === "string") { + val = Buffer.from(val, encoding); + } + if (Buffer.isBuffer(val)) { + if (val.length === 0) { + return -1; + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir); + } else if (typeof val === "number") { + val = val & 255; + if (typeof Uint8Array.prototype.indexOf === "function") { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); + } + throw new TypeError("val must be string, number or Buffer"); + } + function arrayIndexOf(arr, val, byteOffset, encoding, dir) { + let indexSize = 1; + let arrLength = arr.length; + let valLength = val.length; + if (encoding !== void 0) { + encoding = String(encoding).toLowerCase(); + if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") { + if (arr.length < 2 || val.length < 2) { + return -1; + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + function read(buf, i2) { + if (indexSize === 1) { + return buf[i2]; + } else { + return buf.readUInt16BE(i2 * indexSize); + } + } + let i; + if (dir) { + let foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + let found = true; + for (let j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break; + } + } + if (found) return i; + } + } + return -1; + } + Buffer.prototype.includes = function includes(val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1; + }; + Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true); + }; + Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false); + }; + function hexWrite(buf, string, offset, length) { + offset = Number(offset) || 0; + const remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + const strLen = string.length; + if (length > strLen / 2) { + length = strLen / 2; + } + let i; + for (i = 0; i < length; ++i) { + const parsed = parseInt(string.substr(i * 2, 2), 16); + if (numberIsNaN(parsed)) return i; + buf[offset + i] = parsed; + } + return i; + } + function utf8Write(buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); + } + function asciiWrite(buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length); + } + function base64Write(buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length); + } + function ucs2Write(buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); + } + Buffer.prototype.write = function write(string, offset, length, encoding) { + if (offset === void 0) { + encoding = "utf8"; + length = this.length; + offset = 0; + } else if (length === void 0 && typeof offset === "string") { + encoding = offset; + length = this.length; + offset = 0; + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === void 0) encoding = "utf8"; + } else { + encoding = length; + length = void 0; + } + } else { + throw new Error( + "Buffer.write(string, encoding, offset[, length]) is no longer supported" + ); + } + const remaining = this.length - offset; + if (length === void 0 || length > remaining) length = remaining; + if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { + throw new RangeError("Attempt to write outside buffer bounds"); + } + if (!encoding) encoding = "utf8"; + let loweredCase = false; + for (; ; ) { + switch (encoding) { + case "hex": + return hexWrite(this, string, offset, length); + case "utf8": + case "utf-8": + return utf8Write(this, string, offset, length); + case "ascii": + case "latin1": + case "binary": + return asciiWrite(this, string, offset, length); + case "base64": + return base64Write(this, string, offset, length); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return ucs2Write(this, string, offset, length); + default: + if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); + encoding = ("" + encoding).toLowerCase(); + loweredCase = true; + } + } + }; + Buffer.prototype.toJSON = function toJSON() { + return { + type: "Buffer", + data: Array.prototype.slice.call(this._arr || this, 0) + }; + }; + function base64Slice(buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf); + } else { + return base64.fromByteArray(buf.slice(start, end)); + } + } + function utf8Slice(buf, start, end) { + end = Math.min(buf.length, end); + const res = []; + let i = start; + while (i < end) { + const firstByte = buf[i]; + let codePoint = null; + let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; + if (i + bytesPerSequence <= end) { + let secondByte, thirdByte, fourthByte, tempCodePoint; + switch (bytesPerSequence) { + case 1: + if (firstByte < 128) { + codePoint = firstByte; + } + break; + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 192) === 128) { + tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; + if (tempCodePoint > 127) { + codePoint = tempCodePoint; + } + } + break; + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { + tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; + if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { + codePoint = tempCodePoint; + } + } + break; + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { + tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; + if (tempCodePoint > 65535 && tempCodePoint < 1114112) { + codePoint = tempCodePoint; + } + } + } + } + if (codePoint === null) { + codePoint = 65533; + bytesPerSequence = 1; + } else if (codePoint > 65535) { + codePoint -= 65536; + res.push(codePoint >>> 10 & 1023 | 55296); + codePoint = 56320 | codePoint & 1023; + } + res.push(codePoint); + i += bytesPerSequence; + } + return decodeCodePointsArray(res); + } + var MAX_ARGUMENTS_LENGTH = 4096; + function decodeCodePointsArray(codePoints) { + const len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints); + } + let res = ""; + let i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res; + } + function asciiSlice(buf, start, end) { + let ret = ""; + end = Math.min(buf.length, end); + for (let i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 127); + } + return ret; + } + function latin1Slice(buf, start, end) { + let ret = ""; + end = Math.min(buf.length, end); + for (let i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret; + } + function hexSlice(buf, start, end) { + const len = buf.length; + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + let out = ""; + for (let i = start; i < end; ++i) { + out += hexSliceLookupTable[buf[i]]; + } + return out; + } + function utf16leSlice(buf, start, end) { + const bytes = buf.slice(start, end); + let res = ""; + for (let i = 0; i < bytes.length - 1; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res; + } + Buffer.prototype.slice = function slice(start, end) { + const len = this.length; + start = ~~start; + end = end === void 0 ? len : ~~end; + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + if (end < start) end = start; + const newBuf = this.subarray(start, end); + Object.setPrototypeOf(newBuf, Buffer.prototype); + return newBuf; + }; + function checkOffset(offset, ext, length) { + if (offset % 1 !== 0 || offset < 0) throw new RangeError("offset is not uint"); + if (offset + ext > length) throw new RangeError("Trying to access beyond buffer length"); + } + Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) checkOffset(offset, byteLength2, this.length); + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength2 && (mul *= 256)) { + val += this[offset + i] * mul; + } + return val; + }; + Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength2, this.length); + } + let val = this[offset + --byteLength2]; + let mul = 1; + while (byteLength2 > 0 && (mul *= 256)) { + val += this[offset + --byteLength2] * mul; + } + return val; + }; + Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset]; + }; + Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | this[offset + 1] << 8; + }; + Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] << 8 | this[offset + 1]; + }; + Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; + }; + Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); + }; + Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { + offset = offset >>> 0; + validateNumber(offset, "offset"); + const first = this[offset]; + const last = this[offset + 7]; + if (first === void 0 || last === void 0) { + boundsError(offset, this.length - 8); + } + const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24; + const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24; + return BigInt(lo) + (BigInt(hi) << BigInt(32)); + }); + Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) { + offset = offset >>> 0; + validateNumber(offset, "offset"); + const first = this[offset]; + const last = this[offset + 7]; + if (first === void 0 || last === void 0) { + boundsError(offset, this.length - 8); + } + const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; + const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last; + return (BigInt(hi) << BigInt(32)) + BigInt(lo); + }); + Buffer.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) checkOffset(offset, byteLength2, this.length); + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength2 && (mul *= 256)) { + val += this[offset + i] * mul; + } + mul *= 128; + if (val >= mul) val -= Math.pow(2, 8 * byteLength2); + return val; + }; + Buffer.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) checkOffset(offset, byteLength2, this.length); + let i = byteLength2; + let mul = 1; + let val = this[offset + --i]; + while (i > 0 && (mul *= 256)) { + val += this[offset + --i] * mul; + } + mul *= 128; + if (val >= mul) val -= Math.pow(2, 8 * byteLength2); + return val; + }; + Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 128)) return this[offset]; + return (255 - this[offset] + 1) * -1; + }; + Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + const val = this[offset] | this[offset + 1] << 8; + return val & 32768 ? val | 4294901760 : val; + }; + Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + const val = this[offset + 1] | this[offset] << 8; + return val & 32768 ? val | 4294901760 : val; + }; + Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; + }; + Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; + }; + Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { + offset = offset >>> 0; + validateNumber(offset, "offset"); + const first = this[offset]; + const last = this[offset + 7]; + if (first === void 0 || last === void 0) { + boundsError(offset, this.length - 8); + } + const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); + return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24); + }); + Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) { + offset = offset >>> 0; + validateNumber(offset, "offset"); + const first = this[offset]; + const last = this[offset + 7]; + if (first === void 0 || last === void 0) { + boundsError(offset, this.length - 8); + } + const val = (first << 24) + // Overflow + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; + return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last); + }); + Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, true, 23, 4); + }; + Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, false, 23, 4); + }; + Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, true, 52, 8); + }; + Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, false, 52, 8); + }; + function checkInt(buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); + if (offset + ext > buf.length) throw new RangeError("Index out of range"); + } + Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength2) - 1; + checkInt(this, value, offset, byteLength2, maxBytes, 0); + } + let mul = 1; + let i = 0; + this[offset] = value & 255; + while (++i < byteLength2 && (mul *= 256)) { + this[offset + i] = value / mul & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength2) - 1; + checkInt(this, value, offset, byteLength2, maxBytes, 0); + } + let i = byteLength2 - 1; + let mul = 1; + this[offset + i] = value & 255; + while (--i >= 0 && (mul *= 256)) { + this[offset + i] = value / mul & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 255, 0); + this[offset] = value & 255; + return offset + 1; + }; + Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); + this[offset] = value & 255; + this[offset + 1] = value >>> 8; + return offset + 2; + }; + Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); + this[offset] = value >>> 8; + this[offset + 1] = value & 255; + return offset + 2; + }; + Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); + this[offset + 3] = value >>> 24; + this[offset + 2] = value >>> 16; + this[offset + 1] = value >>> 8; + this[offset] = value & 255; + return offset + 4; + }; + Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 255; + return offset + 4; + }; + function wrtBigUInt64LE(buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + let lo = Number(value & BigInt(4294967295)); + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + let hi = Number(value >> BigInt(32) & BigInt(4294967295)); + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + return offset; + } + function wrtBigUInt64BE(buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + let lo = Number(value & BigInt(4294967295)); + buf[offset + 7] = lo; + lo = lo >> 8; + buf[offset + 6] = lo; + lo = lo >> 8; + buf[offset + 5] = lo; + lo = lo >> 8; + buf[offset + 4] = lo; + let hi = Number(value >> BigInt(32) & BigInt(4294967295)); + buf[offset + 3] = hi; + hi = hi >> 8; + buf[offset + 2] = hi; + hi = hi >> 8; + buf[offset + 1] = hi; + hi = hi >> 8; + buf[offset] = hi; + return offset + 8; + } + Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) { + return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); + }); + Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) { + return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); + }); + Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, 8 * byteLength2 - 1); + checkInt(this, value, offset, byteLength2, limit - 1, -limit); + } + let i = 0; + let mul = 1; + let sub = 0; + this[offset] = value & 255; + while (++i < byteLength2 && (mul *= 256)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, 8 * byteLength2 - 1); + checkInt(this, value, offset, byteLength2, limit - 1, -limit); + } + let i = byteLength2 - 1; + let mul = 1; + let sub = 0; + this[offset + i] = value & 255; + while (--i >= 0 && (mul *= 256)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 255; + } + return offset + byteLength2; + }; + Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 127, -128); + if (value < 0) value = 255 + value + 1; + this[offset] = value & 255; + return offset + 1; + }; + Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); + this[offset] = value & 255; + this[offset + 1] = value >>> 8; + return offset + 2; + }; + Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); + this[offset] = value >>> 8; + this[offset + 1] = value & 255; + return offset + 2; + }; + Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); + this[offset] = value & 255; + this[offset + 1] = value >>> 8; + this[offset + 2] = value >>> 16; + this[offset + 3] = value >>> 24; + return offset + 4; + }; + Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); + if (value < 0) value = 4294967295 + value + 1; + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 255; + return offset + 4; + }; + Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) { + return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); + }); + Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) { + return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); + }); + function checkIEEE754(buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError("Index out of range"); + if (offset < 0) throw new RangeError("Index out of range"); + } + function writeFloat(buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22); + } + ieee754.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4; + } + Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert); + }; + Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert); + }; + function writeDouble(buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292); + } + ieee754.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8; + } + Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert); + }; + Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert); + }; + Buffer.prototype.copy = function copy(target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError("argument should be a Buffer"); + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + if (end === start) return 0; + if (target.length === 0 || this.length === 0) return 0; + if (targetStart < 0) { + throw new RangeError("targetStart out of bounds"); + } + if (start < 0 || start >= this.length) throw new RangeError("Index out of range"); + if (end < 0) throw new RangeError("sourceEnd out of bounds"); + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + const len = end - start; + if (this === target && typeof Uint8Array.prototype.copyWithin === "function") { + this.copyWithin(targetStart, start, end); + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ); + } + return len; + }; + Buffer.prototype.fill = function fill(val, start, end, encoding) { + if (typeof val === "string") { + if (typeof start === "string") { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === "string") { + encoding = end; + end = this.length; + } + if (encoding !== void 0 && typeof encoding !== "string") { + throw new TypeError("encoding must be a string"); + } + if (typeof encoding === "string" && !Buffer.isEncoding(encoding)) { + throw new TypeError("Unknown encoding: " + encoding); + } + if (val.length === 1) { + const code = val.charCodeAt(0); + if (encoding === "utf8" && code < 128 || encoding === "latin1") { + val = code; + } + } + } else if (typeof val === "number") { + val = val & 255; + } else if (typeof val === "boolean") { + val = Number(val); + } + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError("Out of range index"); + } + if (end <= start) { + return this; + } + start = start >>> 0; + end = end === void 0 ? this.length : end >>> 0; + if (!val) val = 0; + let i; + if (typeof val === "number") { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding); + const len = bytes.length; + if (len === 0) { + throw new TypeError('The value "' + val + '" is invalid for argument "value"'); + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + return this; + }; + var errors = {}; + function E(sym, getMessage, Base) { + errors[sym] = class NodeError extends Base { + constructor() { + super(); + Object.defineProperty(this, "message", { + value: getMessage.apply(this, arguments), + writable: true, + configurable: true + }); + this.name = `${this.name} [${sym}]`; + this.stack; + delete this.name; + } + get code() { + return sym; + } + set code(value) { + Object.defineProperty(this, "code", { + configurable: true, + enumerable: true, + value, + writable: true + }); + } + toString() { + return `${this.name} [${sym}]: ${this.message}`; + } + }; + } + E( + "ERR_BUFFER_OUT_OF_BOUNDS", + function(name) { + if (name) { + return `${name} is outside of buffer bounds`; + } + return "Attempt to access memory outside buffer bounds"; + }, + RangeError + ); + E( + "ERR_INVALID_ARG_TYPE", + function(name, actual) { + return `The "${name}" argument must be of type number. Received type ${typeof actual}`; + }, + TypeError + ); + E( + "ERR_OUT_OF_RANGE", + function(str, range, input) { + let msg = `The value of "${str}" is out of range.`; + let received = input; + if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { + received = addNumericalSeparator(String(input)); + } else if (typeof input === "bigint") { + received = String(input); + if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { + received = addNumericalSeparator(received); + } + received += "n"; + } + msg += ` It must be ${range}. Received ${received}`; + return msg; + }, + RangeError + ); + function addNumericalSeparator(val) { + let res = ""; + let i = val.length; + const start = val[0] === "-" ? 1 : 0; + for (; i >= start + 4; i -= 3) { + res = `_${val.slice(i - 3, i)}${res}`; + } + return `${val.slice(0, i)}${res}`; + } + function checkBounds(buf, offset, byteLength2) { + validateNumber(offset, "offset"); + if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) { + boundsError(offset, buf.length - (byteLength2 + 1)); + } + } + function checkIntBI(value, min, max, buf, offset, byteLength2) { + if (value > max || value < min) { + const n = typeof min === "bigint" ? "n" : ""; + let range; + if (byteLength2 > 3) { + if (min === 0 || min === BigInt(0)) { + range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`; + } else { + range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`; + } + } else { + range = `>= ${min}${n} and <= ${max}${n}`; + } + throw new errors.ERR_OUT_OF_RANGE("value", range, value); + } + checkBounds(buf, offset, byteLength2); + } + function validateNumber(value, name) { + if (typeof value !== "number") { + throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value); + } + } + function boundsError(value, length, type) { + if (Math.floor(value) !== value) { + validateNumber(value, type); + throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value); + } + if (length < 0) { + throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); + } + throw new errors.ERR_OUT_OF_RANGE( + type || "offset", + `>= ${type ? 1 : 0} and <= ${length}`, + value + ); + } + var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + function base64clean(str) { + str = str.split("=")[0]; + str = str.trim().replace(INVALID_BASE64_RE, ""); + if (str.length < 2) return ""; + while (str.length % 4 !== 0) { + str = str + "="; + } + return str; + } + function utf8ToBytes(string, units) { + units = units || Infinity; + let codePoint; + const length = string.length; + let leadSurrogate = null; + const bytes = []; + for (let i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + if (codePoint > 55295 && codePoint < 57344) { + if (!leadSurrogate) { + if (codePoint > 56319) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + continue; + } else if (i + 1 === length) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + continue; + } + leadSurrogate = codePoint; + continue; + } + if (codePoint < 56320) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + leadSurrogate = codePoint; + continue; + } + codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; + } else if (leadSurrogate) { + if ((units -= 3) > -1) bytes.push(239, 191, 189); + } + leadSurrogate = null; + if (codePoint < 128) { + if ((units -= 1) < 0) break; + bytes.push(codePoint); + } else if (codePoint < 2048) { + if ((units -= 2) < 0) break; + bytes.push( + codePoint >> 6 | 192, + codePoint & 63 | 128 + ); + } else if (codePoint < 65536) { + if ((units -= 3) < 0) break; + bytes.push( + codePoint >> 12 | 224, + codePoint >> 6 & 63 | 128, + codePoint & 63 | 128 + ); + } else if (codePoint < 1114112) { + if ((units -= 4) < 0) break; + bytes.push( + codePoint >> 18 | 240, + codePoint >> 12 & 63 | 128, + codePoint >> 6 & 63 | 128, + codePoint & 63 | 128 + ); + } else { + throw new Error("Invalid code point"); + } + } + return bytes; + } + function asciiToBytes(str) { + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + byteArray.push(str.charCodeAt(i) & 255); + } + return byteArray; + } + function utf16leToBytes(str, units) { + let c, hi, lo; + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break; + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + return byteArray; + } + function base64ToBytes(str) { + return base64.toByteArray(base64clean(str)); + } + function blitBuffer(src, dst, offset, length) { + let i; + for (i = 0; i < length; ++i) { + if (i + offset >= dst.length || i >= src.length) break; + dst[i + offset] = src[i]; + } + return i; + } + function isInstance(obj, type) { + return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; + } + function numberIsNaN(obj) { + return obj !== obj; + } + var hexSliceLookupTable = function() { + const alphabet = "0123456789abcdef"; + const table = new Array(256); + for (let i = 0; i < 16; ++i) { + const i16 = i * 16; + for (let j = 0; j < 16; ++j) { + table[i16 + j] = alphabet[i] + alphabet[j]; + } + } + return table; + }(); + function defineBigIntMethod(fn) { + return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn; + } + function BufferBigIntNotDefined() { + throw new Error("BigInt not supported"); + } + } +}); +export default require_buffer(); +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) +*/ +//# sourceMappingURL=buffer.js.map diff --git a/node_modules/.vite/deps/buffer.js.map b/node_modules/.vite/deps/buffer.js.map new file mode 100644 index 0000000..487e60f --- /dev/null +++ b/node_modules/.vite/deps/buffer.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../base64-js/index.js", "../../ieee754/index.js", "../../buffer/index.js"], + "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 */\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 \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 ''\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"], + "mappings": "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", + "names": ["len", "i", "len2", "i", "byteLength"] +} diff --git a/node_modules/.vite/deps/chunk-7H7TNGCE.js b/node_modules/.vite/deps/chunk-7H7TNGCE.js new file mode 100644 index 0000000..02bf3c5 --- /dev/null +++ b/node_modules/.vite/deps/chunk-7H7TNGCE.js @@ -0,0 +1,397 @@ +import { + __export +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/@dicebear/core/lib/utils/license.js +var license_exports = {}; +__export(license_exports, { + text: () => text, + xml: () => xml2 +}); + +// node_modules/@dicebear/core/lib/utils/escape.js +var escape_exports = {}; +__export(escape_exports, { + xml: () => xml +}); +function xml(content) { + return content.replace(/&/g, "&").replace(/'/g, "'").replace(/"/g, """).replace(//g, ">"); +} + +// node_modules/@dicebear/core/lib/utils/license.js +function xml2(style) { + var _a, _b, _c, _d, _e, _f, _g; + const title = (_a = style.meta) === null || _a === void 0 ? void 0 : _a.title; + const creator = (_b = style.meta) === null || _b === void 0 ? void 0 : _b.creator; + const source = (_c = style.meta) === null || _c === void 0 ? void 0 : _c.source; + const license = (_e = (_d = style.meta) === null || _d === void 0 ? void 0 : _d.license) === null || _e === void 0 ? void 0 : _e.url; + const rights = text(style); + if (!title && !creator && !source && !license && !rights) { + return ""; + } + return '' + (title ? `${xml(title)}` : "") + (creator ? `${xml(creator)}` : "") + (source ? `${xml((_g = (_f = style.meta) === null || _f === void 0 ? void 0 : _f.source) !== null && _g !== void 0 ? _g : "")}` : "") + (license ? `${xml(license)}` : "") + (rights ? `${xml(rights)}` : "") + ""; +} +function text(style) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; + let title = ((_a = style.meta) === null || _a === void 0 ? void 0 : _a.title) ? `„${(_b = style.meta) === null || _b === void 0 ? void 0 : _b.title}”` : "Design"; + let creator = `„${(_d = (_c = style.meta) === null || _c === void 0 ? void 0 : _c.creator) !== null && _d !== void 0 ? _d : "Unknown"}”`; + if ((_e = style.meta) === null || _e === void 0 ? void 0 : _e.source) { + title += ` (${style.meta.source})`; + } + let result = ""; + if (((_g = (_f = style.meta) === null || _f === void 0 ? void 0 : _f.license) === null || _g === void 0 ? void 0 : _g.name) !== "MIT" && ((_h = style.meta) === null || _h === void 0 ? void 0 : _h.creator) !== "DiceBear" && ((_j = style.meta) === null || _j === void 0 ? void 0 : _j.title)) { + result += "Remix of "; + } + result += `${title} by ${creator}`; + if ((_l = (_k = style.meta) === null || _k === void 0 ? void 0 : _k.license) === null || _l === void 0 ? void 0 : _l.name) { + result += `, licensed under „${(_o = (_m = style.meta) === null || _m === void 0 ? void 0 : _m.license) === null || _o === void 0 ? void 0 : _o.name}”`; + if ((_q = (_p = style.meta) === null || _p === void 0 ? void 0 : _p.license) === null || _q === void 0 ? void 0 : _q.url) { + result += ` (${style.meta.license.url})`; + } + } + return result; +} + +// node_modules/@dicebear/core/lib/utils/prng.js +var MIN = -2147483648; +var MAX = 2147483647; +function xorshift(value) { + value ^= value << 13; + value ^= value >> 17; + value ^= value << 5; + return value; +} +function hashSeed(seed) { + let hash = 0; + for (let i = 0; i < seed.length; i++) { + hash = (hash << 5) - hash + seed.charCodeAt(i) | 0; + hash = xorshift(hash); + } + return hash; +} +function create(seed = "") { + seed = seed.toString(); + let value = hashSeed(seed) || 1; + const next = () => value = xorshift(value); + const integer = (min, max) => { + return Math.floor((next() - MIN) / (MAX - MIN) * (max + 1 - min) + min); + }; + return { + seed, + next, + bool(likelihood = 50) { + return integer(1, 100) <= likelihood; + }, + integer(min, max) { + return integer(min, max); + }, + pick(arr, fallback) { + var _a; + if (arr.length === 0) { + next(); + return fallback; + } + return (_a = arr[integer(0, arr.length - 1)]) !== null && _a !== void 0 ? _a : fallback; + }, + shuffle(arr) { + const internalPrng = create(next().toString()); + const workingArray = [...arr]; + for (let i = workingArray.length - 1; i > 0; i--) { + const j = internalPrng.integer(0, i); + [workingArray[i], workingArray[j]] = [workingArray[j], workingArray[i]]; + } + return workingArray; + }, + string(length, characters = "abcdefghijklmnopqrstuvwxyz1234567890") { + const internalPrng = create(next().toString()); + let str = ""; + for (let i = 0; i < length; i++) { + str += characters[internalPrng.integer(0, characters.length - 1)]; + } + return str; + } + }; +} + +// node_modules/@dicebear/core/lib/utils/svg.js +function getViewBox(result) { + let viewBox = result.attributes["viewBox"].split(" "); + let x = parseInt(viewBox[0]); + let y = parseInt(viewBox[1]); + let width = parseInt(viewBox[2]); + let height = parseInt(viewBox[3]); + return { + x, + y, + width, + height + }; +} +function addBackground(result, primaryColor, secondaryColor, type, rotation) { + let { width, height, x, y } = getViewBox(result); + const solidBackground = ``; + switch (type) { + case "solid": + return solidBackground + result.body; + case "gradientLinear": + return `` + result.body; + } +} +function addScale(result, scale) { + let { width, height, x, y } = getViewBox(result); + let percent = scale ? (scale - 100) / 100 : 0; + let translateX = (width / 2 + x) * percent * -1; + let translateY = (height / 2 + y) * percent * -1; + return `${result.body}`; +} +function addTranslate(result, x, y) { + let viewBox = getViewBox(result); + let translateX = (viewBox.width + viewBox.x * 2) * ((x !== null && x !== void 0 ? x : 0) / 100); + let translateY = (viewBox.height + viewBox.y * 2) * ((y !== null && y !== void 0 ? y : 0) / 100); + return `${result.body}`; +} +function addRotate(result, rotate) { + let { width, height, x, y } = getViewBox(result); + return `${result.body}`; +} +function addFlip(result) { + let { width, x } = getViewBox(result); + return `${result.body}`; +} +function addViewboxMask(result, radius) { + let { width, height, x, y } = getViewBox(result); + let rx = radius ? width * radius / 100 : 0; + let ry = radius ? height * radius / 100 : 0; + return `${result.body}`; +} +function createAttrString(result) { + const attributes = { + xmlns: "http://www.w3.org/2000/svg", + ...result.attributes + }; + return Object.keys(attributes).map((attr) => `${xml(attr)}="${xml(attributes[attr])}"`).join(" "); +} +function randomizeIds(result) { + const prng = create(Math.random().toString()); + const ids = {}; + return result.body.replace(/(id="|url\(#)([a-z0-9-_]+)([")])/gi, (match, m1, m2, m3) => { + ids[m2] = ids[m2] || prng.string(8); + return `${m1}${ids[m2]}${m3}`; + }); +} + +// node_modules/@dicebear/core/lib/schema.js +var schema = { + type: "object", + $schema: "http://json-schema.org/draft-07/schema#", + properties: { + seed: { + type: "string" + }, + flip: { + type: "boolean", + default: false + }, + rotate: { + type: "integer", + minimum: 0, + maximum: 360, + default: 0 + }, + scale: { + type: "integer", + minimum: 0, + maximum: 200, + default: 100 + }, + radius: { + type: "integer", + minimum: 0, + maximum: 50, + default: 0 + }, + size: { + type: "integer", + minimum: 1 + }, + backgroundColor: { + type: "array", + items: { + type: "string", + pattern: "^(transparent|[a-fA-F0-9]{6})$" + } + }, + backgroundType: { + type: "array", + items: { + type: "string", + enum: ["solid", "gradientLinear"] + }, + default: ["solid"] + }, + backgroundRotation: { + type: "array", + items: { + type: "integer", + minimum: -360, + maximum: 360 + }, + default: [ + 0, + 360 + ] + }, + translateX: { + type: "integer", + minimum: -100, + maximum: 100, + default: 0 + }, + translateY: { + type: "integer", + minimum: -100, + maximum: 100, + default: 0 + }, + clip: { + type: "boolean", + default: true + }, + randomizeIds: { + type: "boolean", + default: false + } + } +}; + +// node_modules/@dicebear/core/lib/utils/options.js +function defaults(schema2) { + var _a; + let result = {}; + let props = (_a = schema2.properties) !== null && _a !== void 0 ? _a : {}; + Object.keys(props).forEach((key) => { + let val = props[key]; + if (typeof val === "object" && void 0 !== val.default) { + if (Array.isArray(val.default)) { + result[key] = [...val.default]; + } else if (typeof val.default === "object") { + result[key] = { ...val.default }; + } else { + result[key] = val.default; + } + } + }); + return result; +} +function merge(style, options) { + var _a; + let result = { + ...defaults(schema), + ...defaults((_a = style.schema) !== null && _a !== void 0 ? _a : {}), + ...options + }; + return JSON.parse(JSON.stringify(result)); +} + +// node_modules/@dicebear/core/lib/utils/color.js +function convertColor(color) { + return "transparent" === color ? color : `#${color}`; +} +function getBackgroundColors(prng, backgroundColor, backgroundType) { + var _a; + let shuffledBackgroundColors = prng.shuffle(backgroundColor); + if (shuffledBackgroundColors.length <= 1) { + shuffledBackgroundColors = backgroundColor; + prng.next(); + } else if (backgroundColor.length == 2 && backgroundType == "gradientLinear") { + shuffledBackgroundColors = backgroundColor; + prng.next(); + } else { + shuffledBackgroundColors = prng.shuffle(backgroundColor); + } + if (shuffledBackgroundColors.length === 0) { + shuffledBackgroundColors = ["transparent"]; + } + const primary = shuffledBackgroundColors[0]; + const secondary = (_a = shuffledBackgroundColors[1]) !== null && _a !== void 0 ? _a : shuffledBackgroundColors[0]; + return { + primary: convertColor(primary), + secondary: convertColor(secondary) + }; +} + +// node_modules/@dicebear/core/lib/core.js +function createAvatar(style, options = {}) { + var _a, _b, _c, _d, _e; + options = merge(style, options); + const prng = create(options.seed); + const result = style.create({ prng, options }); + const backgroundType = prng.pick((_a = options.backgroundType) !== null && _a !== void 0 ? _a : [], "solid"); + const { primary: primaryBackgroundColor, secondary: secondaryBackgroundColor } = getBackgroundColors(prng, (_b = options.backgroundColor) !== null && _b !== void 0 ? _b : [], backgroundType); + const backgroundRotation = prng.integer(((_c = options.backgroundRotation) === null || _c === void 0 ? void 0 : _c.length) ? Math.min(...options.backgroundRotation) : 0, ((_d = options.backgroundRotation) === null || _d === void 0 ? void 0 : _d.length) ? Math.max(...options.backgroundRotation) : 0); + if (options.size) { + result.attributes.width = options.size.toString(); + result.attributes.height = options.size.toString(); + } + if (options.scale !== void 0 && options.scale !== 100) { + result.body = addScale(result, options.scale); + } + if (options.flip) { + result.body = addFlip(result); + } + if (options.rotate) { + result.body = addRotate(result, options.rotate); + } + if (options.translateX || options.translateY) { + result.body = addTranslate(result, options.translateX, options.translateY); + } + if (primaryBackgroundColor !== "transparent" && secondaryBackgroundColor !== "transparent") { + result.body = addBackground(result, primaryBackgroundColor, secondaryBackgroundColor, backgroundType, backgroundRotation); + } + if (options.radius || options.clip) { + result.body = addViewboxMask(result, (_e = options.radius) !== null && _e !== void 0 ? _e : 0); + } + if (options.randomizeIds) { + result.body = randomizeIds(result); + } + const attributes = createAttrString(result); + const metadata = xml2(style); + const svg = `${metadata}${result.body}`; + return { + toString: () => svg, + toJson: () => { + var _a2; + return { + svg, + extra: { + primaryBackgroundColor, + secondaryBackgroundColor, + backgroundType, + backgroundRotation, + ...(_a2 = result.extra) === null || _a2 === void 0 ? void 0 : _a2.call(result) + } + }; + }, + toDataUri: () => { + return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`; + } + }; +} + +export { + escape_exports, + license_exports, + schema, + createAvatar +}; +/*! Bundled license information: + +@dicebear/core/lib/index.js: + (*! + * DiceBear (@dicebear/core) + * + * Code licensed under MIT (https://github.com/dicebear/dicebear/blob/main/LICENSE) + * Copyright (c) 2024 Florian Körner + *) +*/ +//# sourceMappingURL=chunk-7H7TNGCE.js.map diff --git a/node_modules/.vite/deps/chunk-7H7TNGCE.js.map b/node_modules/.vite/deps/chunk-7H7TNGCE.js.map new file mode 100644 index 0000000..88ba84f --- /dev/null +++ b/node_modules/.vite/deps/chunk-7H7TNGCE.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../@dicebear/core/lib/utils/license.js", "../../@dicebear/core/lib/utils/escape.js", "../../@dicebear/core/lib/utils/prng.js", "../../@dicebear/core/lib/utils/svg.js", "../../@dicebear/core/lib/schema.js", "../../@dicebear/core/lib/utils/options.js", "../../@dicebear/core/lib/utils/color.js", "../../@dicebear/core/lib/core.js"], + "sourcesContent": ["import * as _ from './escape.js';\nexport function xml(style) {\n var _a, _b, _c, _d, _e, _f, _g;\n const title = (_a = style.meta) === null || _a === void 0 ? void 0 : _a.title;\n const creator = (_b = style.meta) === null || _b === void 0 ? void 0 : _b.creator;\n const source = (_c = style.meta) === null || _c === void 0 ? void 0 : _c.source;\n const license = (_e = (_d = style.meta) === null || _d === void 0 ? void 0 : _d.license) === null || _e === void 0 ? void 0 : _e.url;\n const rights = text(style);\n if (!title && !creator && !source && !license && !rights) {\n return '';\n }\n // https://nsteffel.github.io/dublin_core_generator/generator.html\n return ('' +\n '' +\n '' +\n (title ? `${_.xml(title)}` : '') +\n (creator ? `${_.xml(creator)}` : '') +\n (source\n ? `${_.xml((_g = (_f = style.meta) === null || _f === void 0 ? void 0 : _f.source) !== null && _g !== void 0 ? _g : '')}`\n : '') +\n (license\n ? `${_.xml(license)}`\n : '') +\n (rights ? `${_.xml(rights)}` : '') +\n '' +\n '' +\n '');\n}\nexport function text(style) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;\n let title = ((_a = style.meta) === null || _a === void 0 ? void 0 : _a.title) ? `„${(_b = style.meta) === null || _b === void 0 ? void 0 : _b.title}”` : 'Design';\n let creator = `„${(_d = (_c = style.meta) === null || _c === void 0 ? void 0 : _c.creator) !== null && _d !== void 0 ? _d : 'Unknown'}”`;\n if ((_e = style.meta) === null || _e === void 0 ? void 0 : _e.source) {\n title += ` (${style.meta.source})`;\n }\n let result = '';\n if (((_g = (_f = style.meta) === null || _f === void 0 ? void 0 : _f.license) === null || _g === void 0 ? void 0 : _g.name) !== 'MIT' &&\n ((_h = style.meta) === null || _h === void 0 ? void 0 : _h.creator) !== 'DiceBear' &&\n ((_j = style.meta) === null || _j === void 0 ? void 0 : _j.title)) {\n result += 'Remix of ';\n }\n result += `${title} by ${creator}`;\n if ((_l = (_k = style.meta) === null || _k === void 0 ? void 0 : _k.license) === null || _l === void 0 ? void 0 : _l.name) {\n result += `, licensed under „${(_o = (_m = style.meta) === null || _m === void 0 ? void 0 : _m.license) === null || _o === void 0 ? void 0 : _o.name}”`;\n if ((_q = (_p = style.meta) === null || _p === void 0 ? void 0 : _p.license) === null || _q === void 0 ? void 0 : _q.url) {\n result += ` (${style.meta.license.url})`;\n }\n }\n return result;\n}\n", "export function xml(content) {\n return content\n .replace(/&/g, '&')\n .replace(/'/g, ''')\n .replace(/\"/g, '"')\n .replace(//g, '>');\n}\n", "const MIN = -2147483648;\nconst MAX = 2147483647;\nfunction xorshift(value) {\n value ^= value << 13;\n value ^= value >> 17;\n value ^= value << 5;\n return value;\n}\nfunction hashSeed(seed) {\n let hash = 0;\n for (let i = 0; i < seed.length; i++) {\n hash = ((hash << 5) - hash + seed.charCodeAt(i)) | 0;\n hash = xorshift(hash);\n }\n return hash;\n}\nexport function create(seed = '') {\n // Ensure that seed is a string\n seed = seed.toString();\n let value = hashSeed(seed) || 1;\n const next = () => (value = xorshift(value));\n const integer = (min, max) => {\n return Math.floor(((next() - MIN) / (MAX - MIN)) * (max + 1 - min) + min);\n };\n return {\n seed,\n next,\n bool(likelihood = 50) {\n return integer(1, 100) <= likelihood;\n },\n integer(min, max) {\n return integer(min, max);\n },\n pick(arr, fallback) {\n var _a;\n if (arr.length === 0) {\n next();\n return fallback;\n }\n return (_a = arr[integer(0, arr.length - 1)]) !== null && _a !== void 0 ? _a : fallback;\n },\n shuffle(arr) {\n // Each method call should call the `next` function only once.\n // Therefore, we use a separate instance of the PRNG here.\n const internalPrng = create(next().toString());\n // Fisher-Yates shuffle algorithm - We do not use the Array.sort method\n // because it is not stable and produces different results when used in\n // different browsers. See: https://github.com/dicebear/dicebear/issues/394\n const workingArray = [...arr];\n for (let i = workingArray.length - 1; i > 0; i--) {\n const j = internalPrng.integer(0, i);\n [workingArray[i], workingArray[j]] = [workingArray[j], workingArray[i]];\n }\n return workingArray;\n },\n string(length, characters = 'abcdefghijklmnopqrstuvwxyz1234567890') {\n // Each method call should call the `next` function only once.\n // Therefore, we use a separate instance of the PRNG here.\n const internalPrng = create(next().toString());\n let str = '';\n for (let i = 0; i < length; i++) {\n str += characters[internalPrng.integer(0, characters.length - 1)];\n }\n return str;\n },\n };\n}\n", "import * as escape from './escape.js';\nimport { create as createPrng } from './prng.js';\nexport function getViewBox(result) {\n let viewBox = result.attributes['viewBox'].split(' ');\n let x = parseInt(viewBox[0]);\n let y = parseInt(viewBox[1]);\n let width = parseInt(viewBox[2]);\n let height = parseInt(viewBox[3]);\n return {\n x,\n y,\n width,\n height,\n };\n}\nexport function addBackground(result, primaryColor, secondaryColor, type, rotation) {\n let { width, height, x, y } = getViewBox(result);\n const solidBackground = ``;\n switch (type) {\n case 'solid':\n return solidBackground + result.body;\n case 'gradientLinear':\n return (`` +\n `` +\n `` +\n `` +\n `` +\n `` +\n `` +\n result.body);\n }\n}\nexport function addScale(result, scale) {\n let { width, height, x, y } = getViewBox(result);\n let percent = scale ? (scale - 100) / 100 : 0;\n let translateX = (width / 2 + x) * percent * -1;\n let translateY = (height / 2 + y) * percent * -1;\n return `${result.body}`;\n}\nexport function addTranslate(result, x, y) {\n let viewBox = getViewBox(result);\n let translateX = (viewBox.width + viewBox.x * 2) * ((x !== null && x !== void 0 ? x : 0) / 100);\n let translateY = (viewBox.height + viewBox.y * 2) * ((y !== null && y !== void 0 ? y : 0) / 100);\n return `${result.body}`;\n}\nexport function addRotate(result, rotate) {\n let { width, height, x, y } = getViewBox(result);\n return `${result.body}`;\n}\nexport function addFlip(result) {\n let { width, x } = getViewBox(result);\n return `${result.body}`;\n}\nexport function addViewboxMask(result, radius) {\n let { width, height, x, y } = getViewBox(result);\n let rx = radius ? (width * radius) / 100 : 0;\n let ry = radius ? (height * radius) / 100 : 0;\n return (`` +\n `` +\n `` +\n `${result.body}`);\n}\nexport function createAttrString(result) {\n const attributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n ...result.attributes,\n };\n return Object.keys(attributes)\n .map((attr) => `${escape.xml(attr)}=\"${escape.xml(attributes[attr])}\"`)\n .join(' ');\n}\nexport function randomizeIds(result) {\n const prng = createPrng(Math.random().toString());\n const ids = {};\n return result.body.replace(/(id=\"|url\\(#)([a-z0-9-_]+)([\")])/gi, (match, m1, m2, m3) => {\n ids[m2] = ids[m2] || prng.string(8);\n return `${m1}${ids[m2]}${m3}`;\n });\n}\n", "export const schema = {\n type: 'object',\n $schema: 'http://json-schema.org/draft-07/schema#',\n properties: {\n seed: {\n type: 'string',\n },\n flip: {\n type: 'boolean',\n default: false,\n },\n rotate: {\n type: 'integer',\n minimum: 0,\n maximum: 360,\n default: 0,\n },\n scale: {\n type: 'integer',\n minimum: 0,\n maximum: 200,\n default: 100,\n },\n radius: {\n type: 'integer',\n minimum: 0,\n maximum: 50,\n default: 0,\n },\n size: {\n type: 'integer',\n minimum: 1,\n },\n backgroundColor: {\n type: 'array',\n items: {\n type: 'string',\n pattern: '^(transparent|[a-fA-F0-9]{6})$',\n },\n },\n backgroundType: {\n type: 'array',\n items: {\n type: 'string',\n enum: ['solid', 'gradientLinear'],\n },\n default: ['solid'],\n },\n backgroundRotation: {\n type: 'array',\n items: {\n type: 'integer',\n minimum: -360,\n maximum: 360,\n },\n default: [\n 0, 360,\n ],\n },\n translateX: {\n type: 'integer',\n minimum: -100,\n maximum: 100,\n default: 0,\n },\n translateY: {\n type: 'integer',\n minimum: -100,\n maximum: 100,\n default: 0,\n },\n clip: {\n type: 'boolean',\n default: true,\n },\n randomizeIds: {\n type: 'boolean',\n default: false,\n },\n },\n};\n", "import { schema } from '../schema.js';\nexport function defaults(schema) {\n var _a;\n let result = {};\n let props = (_a = schema.properties) !== null && _a !== void 0 ? _a : {};\n Object.keys(props).forEach((key) => {\n let val = props[key];\n if (typeof val === 'object' && undefined !== val.default) {\n if (Array.isArray(val.default)) {\n result[key] = [...val.default];\n }\n else if (typeof val.default === 'object') {\n result[key] = { ...val.default };\n }\n else {\n result[key] = val.default;\n }\n }\n });\n return result;\n}\nexport function merge(style, options) {\n var _a;\n let result = {\n ...defaults(schema),\n ...defaults((_a = style.schema) !== null && _a !== void 0 ? _a : {}),\n ...options,\n };\n // Return a complete copy because the styles could partially customize the\n // options and thus modify nested objects and arrays.\n return JSON.parse(JSON.stringify(result));\n}\n", "export function convertColor(color) {\n return 'transparent' === color ? color : `#${color}`;\n}\nexport function getBackgroundColors(prng, backgroundColor, backgroundType) {\n var _a;\n let shuffledBackgroundColors = prng.shuffle(backgroundColor);\n if (shuffledBackgroundColors.length <= 1) {\n // If no background colour or only one background colour has been selected,\n // the random sorting logic can be omitted.\n shuffledBackgroundColors = backgroundColor;\n // A function call should in any case make an identical number of calls to the PRNG.\n prng.next();\n }\n else if (backgroundColor.length == 2 && backgroundType == 'gradientLinear') {\n // If the background is to be a colour gradient and exactly two background\n // colours have been specified, do not sort them randomly. In this case, we\n // assume that the order of the background colours was chosen on purpose.\n shuffledBackgroundColors = backgroundColor;\n // A function call should in any case make an identical number of calls to the PRNG.\n prng.next();\n }\n else {\n shuffledBackgroundColors = prng.shuffle(backgroundColor);\n }\n if (shuffledBackgroundColors.length === 0) {\n shuffledBackgroundColors = ['transparent'];\n }\n const primary = shuffledBackgroundColors[0];\n const secondary = (_a = shuffledBackgroundColors[1]) !== null && _a !== void 0 ? _a : shuffledBackgroundColors[0];\n return {\n primary: convertColor(primary),\n secondary: convertColor(secondary),\n };\n}\n", "import * as svgUtils from './utils/svg.js';\nimport { merge as mergeOptions } from './utils/options.js';\nimport { create as createPrng } from './utils/prng.js';\nimport * as license from './utils/license.js';\nimport { getBackgroundColors } from './utils/color.js';\nexport function createAvatar(style, options = {}) {\n var _a, _b, _c, _d, _e;\n options = mergeOptions(style, options);\n const prng = createPrng(options.seed);\n const result = style.create({ prng: prng, options });\n const backgroundType = prng.pick((_a = options.backgroundType) !== null && _a !== void 0 ? _a : [], 'solid');\n const { primary: primaryBackgroundColor, secondary: secondaryBackgroundColor, } = getBackgroundColors(prng, (_b = options.backgroundColor) !== null && _b !== void 0 ? _b : [], backgroundType);\n const backgroundRotation = prng.integer(((_c = options.backgroundRotation) === null || _c === void 0 ? void 0 : _c.length)\n ? Math.min(...options.backgroundRotation)\n : 0, ((_d = options.backgroundRotation) === null || _d === void 0 ? void 0 : _d.length)\n ? Math.max(...options.backgroundRotation)\n : 0);\n if (options.size) {\n result.attributes.width = options.size.toString();\n result.attributes.height = options.size.toString();\n }\n if (options.scale !== undefined && options.scale !== 100) {\n result.body = svgUtils.addScale(result, options.scale);\n }\n if (options.flip) {\n result.body = svgUtils.addFlip(result);\n }\n if (options.rotate) {\n result.body = svgUtils.addRotate(result, options.rotate);\n }\n if (options.translateX || options.translateY) {\n result.body = svgUtils.addTranslate(result, options.translateX, options.translateY);\n }\n if (primaryBackgroundColor !== 'transparent' &&\n secondaryBackgroundColor !== 'transparent') {\n result.body = svgUtils.addBackground(result, primaryBackgroundColor, secondaryBackgroundColor, backgroundType, backgroundRotation);\n }\n if (options.radius || options.clip) {\n result.body = svgUtils.addViewboxMask(result, (_e = options.radius) !== null && _e !== void 0 ? _e : 0);\n }\n if (options.randomizeIds) {\n // Reduces the occurrence of ID collisions when rendering multiple avatars on one HTML page.\n result.body = svgUtils.randomizeIds(result);\n }\n const attributes = svgUtils.createAttrString(result);\n const metadata = license.xml(style);\n const svg = `${metadata}${result.body}`;\n return {\n toString: () => svg,\n toJson: () => {\n var _a;\n return ({\n svg: svg,\n extra: {\n primaryBackgroundColor,\n secondaryBackgroundColor,\n backgroundType,\n backgroundRotation,\n ...(_a = result.extra) === null || _a === void 0 ? void 0 : _a.call(result),\n },\n });\n },\n toDataUri: () => {\n return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n },\n };\n}\n"], + "mappings": "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", + "names": ["xml", "xml", "schema", "xml", "_a"] +} diff --git a/node_modules/.vite/deps/chunk-HKJ2B2AA.js b/node_modules/.vite/deps/chunk-HKJ2B2AA.js new file mode 100644 index 0000000..1962145 --- /dev/null +++ b/node_modules/.vite/deps/chunk-HKJ2B2AA.js @@ -0,0 +1,14 @@ +var __defProp = Object.defineProperty; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; + +export { + __commonJS, + __export +}; diff --git a/node_modules/.vite/deps/chunk-HKJ2B2AA.js.map b/node_modules/.vite/deps/chunk-HKJ2B2AA.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/node_modules/.vite/deps/chunk-HKJ2B2AA.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/node_modules/.vite/deps/chunk-LNRWHUEM.js b/node_modules/.vite/deps/chunk-LNRWHUEM.js new file mode 100644 index 0000000..b6f6610 --- /dev/null +++ b/node_modules/.vite/deps/chunk-LNRWHUEM.js @@ -0,0 +1,35 @@ +import { + __commonJS +} from "./chunk-HKJ2B2AA.js"; + +// browser-external:buffer +var require_buffer = __commonJS({ + "browser-external:buffer"(exports, module) { + module.exports = Object.create(new Proxy({}, { + get(_, key) { + if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { + console.warn(`Module "buffer" has been externalized for browser compatibility. Cannot access "buffer.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); + } + } + })); + } +}); + +// browser-external:crypto +var require_crypto = __commonJS({ + "browser-external:crypto"(exports, module) { + module.exports = Object.create(new Proxy({}, { + get(_, key) { + if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { + console.warn(`Module "crypto" has been externalized for browser compatibility. Cannot access "crypto.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); + } + } + })); + } +}); + +export { + require_buffer, + require_crypto +}; +//# sourceMappingURL=chunk-LNRWHUEM.js.map diff --git a/node_modules/.vite/deps/chunk-LNRWHUEM.js.map b/node_modules/.vite/deps/chunk-LNRWHUEM.js.map new file mode 100644 index 0000000..e890696 --- /dev/null +++ b/node_modules/.vite/deps/chunk-LNRWHUEM.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["browser-external:buffer", "browser-external:crypto"], + "sourcesContent": ["module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"buffer\" has been externalized for browser compatibility. Cannot access \"buffer.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"crypto\" has been externalized for browser compatibility. Cannot access \"crypto.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))"], + "mappings": ";;;;;AAAA;AAAA;AAAA,WAAO,UAAU,OAAO,OAAO,IAAI,MAAM,CAAC,GAAG;AAAA,MAC3C,IAAI,GAAG,KAAK;AACV,YACE,QAAQ,gBACR,QAAQ,eACR,QAAQ,iBACR,QAAQ,UACR;AACA,kBAAQ,KAAK,0FAA0F,GAAG,mIAAmI;AAAA,QAC/O;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AAAA;AAAA;;;ACXF;AAAA;AAAA,WAAO,UAAU,OAAO,OAAO,IAAI,MAAM,CAAC,GAAG;AAAA,MAC3C,IAAI,GAAG,KAAK;AACV,YACE,QAAQ,gBACR,QAAQ,eACR,QAAQ,iBACR,QAAQ,UACR;AACA,kBAAQ,KAAK,0FAA0F,GAAG,mIAAmI;AAAA,QAC/O;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AAAA;AAAA;", + "names": [] +} diff --git a/node_modules/.vite/deps/elliptic.js b/node_modules/.vite/deps/elliptic.js new file mode 100644 index 0000000..ca845e8 --- /dev/null +++ b/node_modules/.vite/deps/elliptic.js @@ -0,0 +1,7971 @@ +import { + require_buffer, + require_crypto +} from "./chunk-LNRWHUEM.js"; +import { + __commonJS +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/elliptic/package.json +var require_package = __commonJS({ + "node_modules/elliptic/package.json"(exports, module) { + module.exports = { + name: "elliptic", + version: "6.6.1", + description: "EC cryptography", + main: "lib/elliptic.js", + files: [ + "lib" + ], + scripts: { + lint: "eslint lib test", + "lint:fix": "npm run lint -- --fix", + unit: "istanbul test _mocha --reporter=spec test/index.js", + test: "npm run lint && npm run unit", + version: "grunt dist && git add dist/" + }, + repository: { + type: "git", + url: "git@github.com:indutny/elliptic" + }, + keywords: [ + "EC", + "Elliptic", + "curve", + "Cryptography" + ], + author: "Fedor Indutny ", + license: "MIT", + bugs: { + url: "https://github.com/indutny/elliptic/issues" + }, + homepage: "https://github.com/indutny/elliptic", + devDependencies: { + brfs: "^2.0.2", + coveralls: "^3.1.0", + eslint: "^7.6.0", + grunt: "^1.2.1", + "grunt-browserify": "^5.3.0", + "grunt-cli": "^1.3.2", + "grunt-contrib-connect": "^3.0.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-uglify": "^5.0.0", + "grunt-mocha-istanbul": "^5.0.2", + "grunt-saucelabs": "^9.0.1", + istanbul: "^0.4.5", + mocha: "^8.0.1" + }, + dependencies: { + "bn.js": "^4.11.9", + brorand: "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + inherits: "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }; + } +}); + +// node_modules/bn.js/lib/bn.js +var require_bn = __commonJS({ + "node_modules/bn.js/lib/bn.js"(exports, module) { + (function(module2, exports2) { + "use strict"; + function assert(val, msg) { + if (!val) throw new Error(msg || "Assertion failed"); + } + function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + function BN(number, base, endian) { + if (BN.isBN(number)) { + return number; + } + this.negative = 0; + this.words = null; + this.length = 0; + this.red = null; + if (number !== null) { + if (base === "le" || base === "be") { + endian = base; + base = 10; + } + this._init(number || 0, base || 10, endian || "be"); + } + } + if (typeof module2 === "object") { + module2.exports = BN; + } else { + exports2.BN = BN; + } + BN.BN = BN; + BN.wordSize = 26; + var Buffer; + try { + if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") { + Buffer = window.Buffer; + } else { + Buffer = require_buffer().Buffer; + } + } catch (e) { + } + BN.isBN = function isBN(num) { + if (num instanceof BN) { + return true; + } + return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + }; + BN.max = function max(left, right) { + if (left.cmp(right) > 0) return left; + return right; + }; + BN.min = function min(left, right) { + if (left.cmp(right) < 0) return left; + return right; + }; + BN.prototype._init = function init(number, base, endian) { + if (typeof number === "number") { + return this._initNumber(number, base, endian); + } + if (typeof number === "object") { + return this._initArray(number, base, endian); + } + if (base === "hex") { + base = 16; + } + assert(base === (base | 0) && base >= 2 && base <= 36); + number = number.toString().replace(/\s+/g, ""); + var start = 0; + if (number[0] === "-") { + start++; + this.negative = 1; + } + if (start < number.length) { + if (base === 16) { + this._parseHex(number, start, endian); + } else { + this._parseBase(number, base, start); + if (endian === "le") { + this._initArray(this.toArray(), base, endian); + } + } + } + }; + BN.prototype._initNumber = function _initNumber(number, base, endian) { + if (number < 0) { + this.negative = 1; + number = -number; + } + if (number < 67108864) { + this.words = [number & 67108863]; + this.length = 1; + } else if (number < 4503599627370496) { + this.words = [ + number & 67108863, + number / 67108864 & 67108863 + ]; + this.length = 2; + } else { + assert(number < 9007199254740992); + this.words = [ + number & 67108863, + number / 67108864 & 67108863, + 1 + ]; + this.length = 3; + } + if (endian !== "le") return; + this._initArray(this.toArray(), base, endian); + }; + BN.prototype._initArray = function _initArray(number, base, endian) { + assert(typeof number.length === "number"); + if (number.length <= 0) { + this.words = [0]; + this.length = 1; + return this; + } + this.length = Math.ceil(number.length / 3); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + var j, w; + var off = 0; + if (endian === "be") { + for (i = number.length - 1, j = 0; i >= 0; i -= 3) { + w = number[i] | number[i - 1] << 8 | number[i - 2] << 16; + this.words[j] |= w << off & 67108863; + this.words[j + 1] = w >>> 26 - off & 67108863; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } else if (endian === "le") { + for (i = 0, j = 0; i < number.length; i += 3) { + w = number[i] | number[i + 1] << 8 | number[i + 2] << 16; + this.words[j] |= w << off & 67108863; + this.words[j + 1] = w >>> 26 - off & 67108863; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } + return this.strip(); + }; + function parseHex4Bits(string, index) { + var c = string.charCodeAt(index); + if (c >= 65 && c <= 70) { + return c - 55; + } else if (c >= 97 && c <= 102) { + return c - 87; + } else { + return c - 48 & 15; + } + } + function parseHexByte(string, lowerBound, index) { + var r = parseHex4Bits(string, index); + if (index - 1 >= lowerBound) { + r |= parseHex4Bits(string, index - 1) << 4; + } + return r; + } + BN.prototype._parseHex = function _parseHex(number, start, endian) { + this.length = Math.ceil((number.length - start) / 6); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + var off = 0; + var j = 0; + var w; + if (endian === "be") { + for (i = number.length - 1; i >= start; i -= 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 67108863; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } else { + var parseLength = number.length - start; + for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 67108863; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } + this.strip(); + }; + function parseBase(str, start, end, mul) { + var r = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + r *= mul; + if (c >= 49) { + r += c - 49 + 10; + } else if (c >= 17) { + r += c - 17 + 10; + } else { + r += c; + } + } + return r; + } + BN.prototype._parseBase = function _parseBase(number, base, start) { + this.words = [0]; + this.length = 1; + for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) { + limbLen++; + } + limbLen--; + limbPow = limbPow / base | 0; + var total = number.length - start; + var mod = total % limbLen; + var end = Math.min(total, total - mod) + start; + var word = 0; + for (var i = start; i < end; i += limbLen) { + word = parseBase(number, i, i + limbLen, base); + this.imuln(limbPow); + if (this.words[0] + word < 67108864) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + if (mod !== 0) { + var pow = 1; + word = parseBase(number, i, number.length, base); + for (i = 0; i < mod; i++) { + pow *= base; + } + this.imuln(pow); + if (this.words[0] + word < 67108864) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + this.strip(); + }; + BN.prototype.copy = function copy(dest) { + dest.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + dest.words[i] = this.words[i]; + } + dest.length = this.length; + dest.negative = this.negative; + dest.red = this.red; + }; + BN.prototype.clone = function clone() { + var r = new BN(null); + this.copy(r); + return r; + }; + BN.prototype._expand = function _expand(size) { + while (this.length < size) { + this.words[this.length++] = 0; + } + return this; + }; + BN.prototype.strip = function strip() { + while (this.length > 1 && this.words[this.length - 1] === 0) { + this.length--; + } + return this._normSign(); + }; + BN.prototype._normSign = function _normSign() { + if (this.length === 1 && this.words[0] === 0) { + this.negative = 0; + } + return this; + }; + BN.prototype.inspect = function inspect() { + return (this.red ? ""; + }; + var zeros = [ + "", + "0", + "00", + "000", + "0000", + "00000", + "000000", + "0000000", + "00000000", + "000000000", + "0000000000", + "00000000000", + "000000000000", + "0000000000000", + "00000000000000", + "000000000000000", + "0000000000000000", + "00000000000000000", + "000000000000000000", + "0000000000000000000", + "00000000000000000000", + "000000000000000000000", + "0000000000000000000000", + "00000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000" + ]; + var groupSizes = [ + 0, + 0, + 25, + 16, + 12, + 11, + 10, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5 + ]; + var groupBases = [ + 0, + 0, + 33554432, + 43046721, + 16777216, + 48828125, + 60466176, + 40353607, + 16777216, + 43046721, + 1e7, + 19487171, + 35831808, + 62748517, + 7529536, + 11390625, + 16777216, + 24137569, + 34012224, + 47045881, + 64e6, + 4084101, + 5153632, + 6436343, + 7962624, + 9765625, + 11881376, + 14348907, + 17210368, + 20511149, + 243e5, + 28629151, + 33554432, + 39135393, + 45435424, + 52521875, + 60466176 + ]; + BN.prototype.toString = function toString(base, padding) { + base = base || 10; + padding = padding | 0 || 1; + var out; + if (base === 16 || base === "hex") { + out = ""; + var off = 0; + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = this.words[i]; + var word = ((w << off | carry) & 16777215).toString(16); + carry = w >>> 24 - off & 16777215; + off += 2; + if (off >= 26) { + off -= 26; + i--; + } + if (carry !== 0 || i !== this.length - 1) { + out = zeros[6 - word.length] + word + out; + } else { + out = word + out; + } + } + if (carry !== 0) { + out = carry.toString(16) + out; + } + while (out.length % padding !== 0) { + out = "0" + out; + } + if (this.negative !== 0) { + out = "-" + out; + } + return out; + } + if (base === (base | 0) && base >= 2 && base <= 36) { + var groupSize = groupSizes[base]; + var groupBase = groupBases[base]; + out = ""; + var c = this.clone(); + c.negative = 0; + while (!c.isZero()) { + var r = c.modn(groupBase).toString(base); + c = c.idivn(groupBase); + if (!c.isZero()) { + out = zeros[groupSize - r.length] + r + out; + } else { + out = r + out; + } + } + if (this.isZero()) { + out = "0" + out; + } + while (out.length % padding !== 0) { + out = "0" + out; + } + if (this.negative !== 0) { + out = "-" + out; + } + return out; + } + assert(false, "Base should be between 2 and 36"); + }; + BN.prototype.toNumber = function toNumber() { + var ret = this.words[0]; + if (this.length === 2) { + ret += this.words[1] * 67108864; + } else if (this.length === 3 && this.words[2] === 1) { + ret += 4503599627370496 + this.words[1] * 67108864; + } else if (this.length > 2) { + assert(false, "Number can only safely store up to 53 bits"); + } + return this.negative !== 0 ? -ret : ret; + }; + BN.prototype.toJSON = function toJSON() { + return this.toString(16); + }; + BN.prototype.toBuffer = function toBuffer(endian, length) { + assert(typeof Buffer !== "undefined"); + return this.toArrayLike(Buffer, endian, length); + }; + BN.prototype.toArray = function toArray(endian, length) { + return this.toArrayLike(Array, endian, length); + }; + BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) { + var byteLength = this.byteLength(); + var reqLength = length || Math.max(1, byteLength); + assert(byteLength <= reqLength, "byte array longer than desired length"); + assert(reqLength > 0, "Requested array length <= 0"); + this.strip(); + var littleEndian = endian === "le"; + var res = new ArrayType(reqLength); + var b, i; + var q = this.clone(); + if (!littleEndian) { + for (i = 0; i < reqLength - byteLength; i++) { + res[i] = 0; + } + for (i = 0; !q.isZero(); i++) { + b = q.andln(255); + q.iushrn(8); + res[reqLength - i - 1] = b; + } + } else { + for (i = 0; !q.isZero(); i++) { + b = q.andln(255); + q.iushrn(8); + res[i] = b; + } + for (; i < reqLength; i++) { + res[i] = 0; + } + } + return res; + }; + if (Math.clz32) { + BN.prototype._countBits = function _countBits(w) { + return 32 - Math.clz32(w); + }; + } else { + BN.prototype._countBits = function _countBits(w) { + var t = w; + var r = 0; + if (t >= 4096) { + r += 13; + t >>>= 13; + } + if (t >= 64) { + r += 7; + t >>>= 7; + } + if (t >= 8) { + r += 4; + t >>>= 4; + } + if (t >= 2) { + r += 2; + t >>>= 2; + } + return r + t; + }; + } + BN.prototype._zeroBits = function _zeroBits(w) { + if (w === 0) return 26; + var t = w; + var r = 0; + if ((t & 8191) === 0) { + r += 13; + t >>>= 13; + } + if ((t & 127) === 0) { + r += 7; + t >>>= 7; + } + if ((t & 15) === 0) { + r += 4; + t >>>= 4; + } + if ((t & 3) === 0) { + r += 2; + t >>>= 2; + } + if ((t & 1) === 0) { + r++; + } + return r; + }; + BN.prototype.bitLength = function bitLength() { + var w = this.words[this.length - 1]; + var hi = this._countBits(w); + return (this.length - 1) * 26 + hi; + }; + function toBitArray(num) { + var w = new Array(num.bitLength()); + for (var bit = 0; bit < w.length; bit++) { + var off = bit / 26 | 0; + var wbit = bit % 26; + w[bit] = (num.words[off] & 1 << wbit) >>> wbit; + } + return w; + } + BN.prototype.zeroBits = function zeroBits() { + if (this.isZero()) return 0; + var r = 0; + for (var i = 0; i < this.length; i++) { + var b = this._zeroBits(this.words[i]); + r += b; + if (b !== 26) break; + } + return r; + }; + BN.prototype.byteLength = function byteLength() { + return Math.ceil(this.bitLength() / 8); + }; + BN.prototype.toTwos = function toTwos(width) { + if (this.negative !== 0) { + return this.abs().inotn(width).iaddn(1); + } + return this.clone(); + }; + BN.prototype.fromTwos = function fromTwos(width) { + if (this.testn(width - 1)) { + return this.notn(width).iaddn(1).ineg(); + } + return this.clone(); + }; + BN.prototype.isNeg = function isNeg() { + return this.negative !== 0; + }; + BN.prototype.neg = function neg() { + return this.clone().ineg(); + }; + BN.prototype.ineg = function ineg() { + if (!this.isZero()) { + this.negative ^= 1; + } + return this; + }; + BN.prototype.iuor = function iuor(num) { + while (this.length < num.length) { + this.words[this.length++] = 0; + } + for (var i = 0; i < num.length; i++) { + this.words[i] = this.words[i] | num.words[i]; + } + return this.strip(); + }; + BN.prototype.ior = function ior(num) { + assert((this.negative | num.negative) === 0); + return this.iuor(num); + }; + BN.prototype.or = function or(num) { + if (this.length > num.length) return this.clone().ior(num); + return num.clone().ior(this); + }; + BN.prototype.uor = function uor(num) { + if (this.length > num.length) return this.clone().iuor(num); + return num.clone().iuor(this); + }; + BN.prototype.iuand = function iuand(num) { + var b; + if (this.length > num.length) { + b = num; + } else { + b = this; + } + for (var i = 0; i < b.length; i++) { + this.words[i] = this.words[i] & num.words[i]; + } + this.length = b.length; + return this.strip(); + }; + BN.prototype.iand = function iand(num) { + assert((this.negative | num.negative) === 0); + return this.iuand(num); + }; + BN.prototype.and = function and(num) { + if (this.length > num.length) return this.clone().iand(num); + return num.clone().iand(this); + }; + BN.prototype.uand = function uand(num) { + if (this.length > num.length) return this.clone().iuand(num); + return num.clone().iuand(this); + }; + BN.prototype.iuxor = function iuxor(num) { + var a; + var b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + for (var i = 0; i < b.length; i++) { + this.words[i] = a.words[i] ^ b.words[i]; + } + if (this !== a) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + this.length = a.length; + return this.strip(); + }; + BN.prototype.ixor = function ixor(num) { + assert((this.negative | num.negative) === 0); + return this.iuxor(num); + }; + BN.prototype.xor = function xor(num) { + if (this.length > num.length) return this.clone().ixor(num); + return num.clone().ixor(this); + }; + BN.prototype.uxor = function uxor(num) { + if (this.length > num.length) return this.clone().iuxor(num); + return num.clone().iuxor(this); + }; + BN.prototype.inotn = function inotn(width) { + assert(typeof width === "number" && width >= 0); + var bytesNeeded = Math.ceil(width / 26) | 0; + var bitsLeft = width % 26; + this._expand(bytesNeeded); + if (bitsLeft > 0) { + bytesNeeded--; + } + for (var i = 0; i < bytesNeeded; i++) { + this.words[i] = ~this.words[i] & 67108863; + } + if (bitsLeft > 0) { + this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft; + } + return this.strip(); + }; + BN.prototype.notn = function notn(width) { + return this.clone().inotn(width); + }; + BN.prototype.setn = function setn(bit, val) { + assert(typeof bit === "number" && bit >= 0); + var off = bit / 26 | 0; + var wbit = bit % 26; + this._expand(off + 1); + if (val) { + this.words[off] = this.words[off] | 1 << wbit; + } else { + this.words[off] = this.words[off] & ~(1 << wbit); + } + return this.strip(); + }; + BN.prototype.iadd = function iadd(num) { + var r; + if (this.negative !== 0 && num.negative === 0) { + this.negative = 0; + r = this.isub(num); + this.negative ^= 1; + return this._normSign(); + } else if (this.negative === 0 && num.negative !== 0) { + num.negative = 0; + r = this.isub(num); + num.negative = 1; + return r._normSign(); + } + var a, b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) + (b.words[i] | 0) + carry; + this.words[i] = r & 67108863; + carry = r >>> 26; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + this.words[i] = r & 67108863; + carry = r >>> 26; + } + this.length = a.length; + if (carry !== 0) { + this.words[this.length] = carry; + this.length++; + } else if (a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + return this; + }; + BN.prototype.add = function add(num) { + var res; + if (num.negative !== 0 && this.negative === 0) { + num.negative = 0; + res = this.sub(num); + num.negative ^= 1; + return res; + } else if (num.negative === 0 && this.negative !== 0) { + this.negative = 0; + res = num.sub(this); + this.negative = 1; + return res; + } + if (this.length > num.length) return this.clone().iadd(num); + return num.clone().iadd(this); + }; + BN.prototype.isub = function isub(num) { + if (num.negative !== 0) { + num.negative = 0; + var r = this.iadd(num); + num.negative = 1; + return r._normSign(); + } else if (this.negative !== 0) { + this.negative = 0; + this.iadd(num); + this.negative = 1; + return this._normSign(); + } + var cmp = this.cmp(num); + if (cmp === 0) { + this.negative = 0; + this.length = 1; + this.words[0] = 0; + return this; + } + var a, b; + if (cmp > 0) { + a = this; + b = num; + } else { + a = num; + b = this; + } + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) - (b.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 67108863; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 67108863; + } + if (carry === 0 && i < a.length && a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + this.length = Math.max(this.length, i); + if (a !== this) { + this.negative = 1; + } + return this.strip(); + }; + BN.prototype.sub = function sub(num) { + return this.clone().isub(num); + }; + function smallMulTo(self2, num, out) { + out.negative = num.negative ^ self2.negative; + var len = self2.length + num.length | 0; + out.length = len; + len = len - 1 | 0; + var a = self2.words[0] | 0; + var b = num.words[0] | 0; + var r = a * b; + var lo = r & 67108863; + var carry = r / 67108864 | 0; + out.words[0] = lo; + for (var k = 1; k < len; k++) { + var ncarry = carry >>> 26; + var rword = carry & 67108863; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) { + var i = k - j | 0; + a = self2.words[i] | 0; + b = num.words[j] | 0; + r = a * b + rword; + ncarry += r / 67108864 | 0; + rword = r & 67108863; + } + out.words[k] = rword | 0; + carry = ncarry | 0; + } + if (carry !== 0) { + out.words[k] = carry | 0; + } else { + out.length--; + } + return out.strip(); + } + var comb10MulTo = function comb10MulTo2(self2, num, out) { + var a = self2.words; + var b = num.words; + var o = out.words; + var c = 0; + var lo; + var mid; + var hi; + var a0 = a[0] | 0; + var al0 = a0 & 8191; + var ah0 = a0 >>> 13; + var a1 = a[1] | 0; + var al1 = a1 & 8191; + var ah1 = a1 >>> 13; + var a2 = a[2] | 0; + var al2 = a2 & 8191; + var ah2 = a2 >>> 13; + var a3 = a[3] | 0; + var al3 = a3 & 8191; + var ah3 = a3 >>> 13; + var a4 = a[4] | 0; + var al4 = a4 & 8191; + var ah4 = a4 >>> 13; + var a5 = a[5] | 0; + var al5 = a5 & 8191; + var ah5 = a5 >>> 13; + var a6 = a[6] | 0; + var al6 = a6 & 8191; + var ah6 = a6 >>> 13; + var a7 = a[7] | 0; + var al7 = a7 & 8191; + var ah7 = a7 >>> 13; + var a8 = a[8] | 0; + var al8 = a8 & 8191; + var ah8 = a8 >>> 13; + var a9 = a[9] | 0; + var al9 = a9 & 8191; + var ah9 = a9 >>> 13; + var b0 = b[0] | 0; + var bl0 = b0 & 8191; + var bh0 = b0 >>> 13; + var b1 = b[1] | 0; + var bl1 = b1 & 8191; + var bh1 = b1 >>> 13; + var b2 = b[2] | 0; + var bl2 = b2 & 8191; + var bh2 = b2 >>> 13; + var b3 = b[3] | 0; + var bl3 = b3 & 8191; + var bh3 = b3 >>> 13; + var b4 = b[4] | 0; + var bl4 = b4 & 8191; + var bh4 = b4 >>> 13; + var b5 = b[5] | 0; + var bl5 = b5 & 8191; + var bh5 = b5 >>> 13; + var b6 = b[6] | 0; + var bl6 = b6 & 8191; + var bh6 = b6 >>> 13; + var b7 = b[7] | 0; + var bl7 = b7 & 8191; + var bh7 = b7 >>> 13; + var b8 = b[8] | 0; + var bl8 = b8 & 8191; + var bh8 = b8 >>> 13; + var b9 = b[9] | 0; + var bl9 = b9 & 8191; + var bh9 = b9 >>> 13; + out.negative = self2.negative ^ num.negative; + out.length = 19; + lo = Math.imul(al0, bl0); + mid = Math.imul(al0, bh0); + mid = mid + Math.imul(ah0, bl0) | 0; + hi = Math.imul(ah0, bh0); + var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0; + w0 &= 67108863; + lo = Math.imul(al1, bl0); + mid = Math.imul(al1, bh0); + mid = mid + Math.imul(ah1, bl0) | 0; + hi = Math.imul(ah1, bh0); + lo = lo + Math.imul(al0, bl1) | 0; + mid = mid + Math.imul(al0, bh1) | 0; + mid = mid + Math.imul(ah0, bl1) | 0; + hi = hi + Math.imul(ah0, bh1) | 0; + var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0; + w1 &= 67108863; + lo = Math.imul(al2, bl0); + mid = Math.imul(al2, bh0); + mid = mid + Math.imul(ah2, bl0) | 0; + hi = Math.imul(ah2, bh0); + lo = lo + Math.imul(al1, bl1) | 0; + mid = mid + Math.imul(al1, bh1) | 0; + mid = mid + Math.imul(ah1, bl1) | 0; + hi = hi + Math.imul(ah1, bh1) | 0; + lo = lo + Math.imul(al0, bl2) | 0; + mid = mid + Math.imul(al0, bh2) | 0; + mid = mid + Math.imul(ah0, bl2) | 0; + hi = hi + Math.imul(ah0, bh2) | 0; + var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0; + w2 &= 67108863; + lo = Math.imul(al3, bl0); + mid = Math.imul(al3, bh0); + mid = mid + Math.imul(ah3, bl0) | 0; + hi = Math.imul(ah3, bh0); + lo = lo + Math.imul(al2, bl1) | 0; + mid = mid + Math.imul(al2, bh1) | 0; + mid = mid + Math.imul(ah2, bl1) | 0; + hi = hi + Math.imul(ah2, bh1) | 0; + lo = lo + Math.imul(al1, bl2) | 0; + mid = mid + Math.imul(al1, bh2) | 0; + mid = mid + Math.imul(ah1, bl2) | 0; + hi = hi + Math.imul(ah1, bh2) | 0; + lo = lo + Math.imul(al0, bl3) | 0; + mid = mid + Math.imul(al0, bh3) | 0; + mid = mid + Math.imul(ah0, bl3) | 0; + hi = hi + Math.imul(ah0, bh3) | 0; + var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0; + w3 &= 67108863; + lo = Math.imul(al4, bl0); + mid = Math.imul(al4, bh0); + mid = mid + Math.imul(ah4, bl0) | 0; + hi = Math.imul(ah4, bh0); + lo = lo + Math.imul(al3, bl1) | 0; + mid = mid + Math.imul(al3, bh1) | 0; + mid = mid + Math.imul(ah3, bl1) | 0; + hi = hi + Math.imul(ah3, bh1) | 0; + lo = lo + Math.imul(al2, bl2) | 0; + mid = mid + Math.imul(al2, bh2) | 0; + mid = mid + Math.imul(ah2, bl2) | 0; + hi = hi + Math.imul(ah2, bh2) | 0; + lo = lo + Math.imul(al1, bl3) | 0; + mid = mid + Math.imul(al1, bh3) | 0; + mid = mid + Math.imul(ah1, bl3) | 0; + hi = hi + Math.imul(ah1, bh3) | 0; + lo = lo + Math.imul(al0, bl4) | 0; + mid = mid + Math.imul(al0, bh4) | 0; + mid = mid + Math.imul(ah0, bl4) | 0; + hi = hi + Math.imul(ah0, bh4) | 0; + var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0; + w4 &= 67108863; + lo = Math.imul(al5, bl0); + mid = Math.imul(al5, bh0); + mid = mid + Math.imul(ah5, bl0) | 0; + hi = Math.imul(ah5, bh0); + lo = lo + Math.imul(al4, bl1) | 0; + mid = mid + Math.imul(al4, bh1) | 0; + mid = mid + Math.imul(ah4, bl1) | 0; + hi = hi + Math.imul(ah4, bh1) | 0; + lo = lo + Math.imul(al3, bl2) | 0; + mid = mid + Math.imul(al3, bh2) | 0; + mid = mid + Math.imul(ah3, bl2) | 0; + hi = hi + Math.imul(ah3, bh2) | 0; + lo = lo + Math.imul(al2, bl3) | 0; + mid = mid + Math.imul(al2, bh3) | 0; + mid = mid + Math.imul(ah2, bl3) | 0; + hi = hi + Math.imul(ah2, bh3) | 0; + lo = lo + Math.imul(al1, bl4) | 0; + mid = mid + Math.imul(al1, bh4) | 0; + mid = mid + Math.imul(ah1, bl4) | 0; + hi = hi + Math.imul(ah1, bh4) | 0; + lo = lo + Math.imul(al0, bl5) | 0; + mid = mid + Math.imul(al0, bh5) | 0; + mid = mid + Math.imul(ah0, bl5) | 0; + hi = hi + Math.imul(ah0, bh5) | 0; + var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0; + w5 &= 67108863; + lo = Math.imul(al6, bl0); + mid = Math.imul(al6, bh0); + mid = mid + Math.imul(ah6, bl0) | 0; + hi = Math.imul(ah6, bh0); + lo = lo + Math.imul(al5, bl1) | 0; + mid = mid + Math.imul(al5, bh1) | 0; + mid = mid + Math.imul(ah5, bl1) | 0; + hi = hi + Math.imul(ah5, bh1) | 0; + lo = lo + Math.imul(al4, bl2) | 0; + mid = mid + Math.imul(al4, bh2) | 0; + mid = mid + Math.imul(ah4, bl2) | 0; + hi = hi + Math.imul(ah4, bh2) | 0; + lo = lo + Math.imul(al3, bl3) | 0; + mid = mid + Math.imul(al3, bh3) | 0; + mid = mid + Math.imul(ah3, bl3) | 0; + hi = hi + Math.imul(ah3, bh3) | 0; + lo = lo + Math.imul(al2, bl4) | 0; + mid = mid + Math.imul(al2, bh4) | 0; + mid = mid + Math.imul(ah2, bl4) | 0; + hi = hi + Math.imul(ah2, bh4) | 0; + lo = lo + Math.imul(al1, bl5) | 0; + mid = mid + Math.imul(al1, bh5) | 0; + mid = mid + Math.imul(ah1, bl5) | 0; + hi = hi + Math.imul(ah1, bh5) | 0; + lo = lo + Math.imul(al0, bl6) | 0; + mid = mid + Math.imul(al0, bh6) | 0; + mid = mid + Math.imul(ah0, bl6) | 0; + hi = hi + Math.imul(ah0, bh6) | 0; + var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0; + w6 &= 67108863; + lo = Math.imul(al7, bl0); + mid = Math.imul(al7, bh0); + mid = mid + Math.imul(ah7, bl0) | 0; + hi = Math.imul(ah7, bh0); + lo = lo + Math.imul(al6, bl1) | 0; + mid = mid + Math.imul(al6, bh1) | 0; + mid = mid + Math.imul(ah6, bl1) | 0; + hi = hi + Math.imul(ah6, bh1) | 0; + lo = lo + Math.imul(al5, bl2) | 0; + mid = mid + Math.imul(al5, bh2) | 0; + mid = mid + Math.imul(ah5, bl2) | 0; + hi = hi + Math.imul(ah5, bh2) | 0; + lo = lo + Math.imul(al4, bl3) | 0; + mid = mid + Math.imul(al4, bh3) | 0; + mid = mid + Math.imul(ah4, bl3) | 0; + hi = hi + Math.imul(ah4, bh3) | 0; + lo = lo + Math.imul(al3, bl4) | 0; + mid = mid + Math.imul(al3, bh4) | 0; + mid = mid + Math.imul(ah3, bl4) | 0; + hi = hi + Math.imul(ah3, bh4) | 0; + lo = lo + Math.imul(al2, bl5) | 0; + mid = mid + Math.imul(al2, bh5) | 0; + mid = mid + Math.imul(ah2, bl5) | 0; + hi = hi + Math.imul(ah2, bh5) | 0; + lo = lo + Math.imul(al1, bl6) | 0; + mid = mid + Math.imul(al1, bh6) | 0; + mid = mid + Math.imul(ah1, bl6) | 0; + hi = hi + Math.imul(ah1, bh6) | 0; + lo = lo + Math.imul(al0, bl7) | 0; + mid = mid + Math.imul(al0, bh7) | 0; + mid = mid + Math.imul(ah0, bl7) | 0; + hi = hi + Math.imul(ah0, bh7) | 0; + var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0; + w7 &= 67108863; + lo = Math.imul(al8, bl0); + mid = Math.imul(al8, bh0); + mid = mid + Math.imul(ah8, bl0) | 0; + hi = Math.imul(ah8, bh0); + lo = lo + Math.imul(al7, bl1) | 0; + mid = mid + Math.imul(al7, bh1) | 0; + mid = mid + Math.imul(ah7, bl1) | 0; + hi = hi + Math.imul(ah7, bh1) | 0; + lo = lo + Math.imul(al6, bl2) | 0; + mid = mid + Math.imul(al6, bh2) | 0; + mid = mid + Math.imul(ah6, bl2) | 0; + hi = hi + Math.imul(ah6, bh2) | 0; + lo = lo + Math.imul(al5, bl3) | 0; + mid = mid + Math.imul(al5, bh3) | 0; + mid = mid + Math.imul(ah5, bl3) | 0; + hi = hi + Math.imul(ah5, bh3) | 0; + lo = lo + Math.imul(al4, bl4) | 0; + mid = mid + Math.imul(al4, bh4) | 0; + mid = mid + Math.imul(ah4, bl4) | 0; + hi = hi + Math.imul(ah4, bh4) | 0; + lo = lo + Math.imul(al3, bl5) | 0; + mid = mid + Math.imul(al3, bh5) | 0; + mid = mid + Math.imul(ah3, bl5) | 0; + hi = hi + Math.imul(ah3, bh5) | 0; + lo = lo + Math.imul(al2, bl6) | 0; + mid = mid + Math.imul(al2, bh6) | 0; + mid = mid + Math.imul(ah2, bl6) | 0; + hi = hi + Math.imul(ah2, bh6) | 0; + lo = lo + Math.imul(al1, bl7) | 0; + mid = mid + Math.imul(al1, bh7) | 0; + mid = mid + Math.imul(ah1, bl7) | 0; + hi = hi + Math.imul(ah1, bh7) | 0; + lo = lo + Math.imul(al0, bl8) | 0; + mid = mid + Math.imul(al0, bh8) | 0; + mid = mid + Math.imul(ah0, bl8) | 0; + hi = hi + Math.imul(ah0, bh8) | 0; + var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0; + w8 &= 67108863; + lo = Math.imul(al9, bl0); + mid = Math.imul(al9, bh0); + mid = mid + Math.imul(ah9, bl0) | 0; + hi = Math.imul(ah9, bh0); + lo = lo + Math.imul(al8, bl1) | 0; + mid = mid + Math.imul(al8, bh1) | 0; + mid = mid + Math.imul(ah8, bl1) | 0; + hi = hi + Math.imul(ah8, bh1) | 0; + lo = lo + Math.imul(al7, bl2) | 0; + mid = mid + Math.imul(al7, bh2) | 0; + mid = mid + Math.imul(ah7, bl2) | 0; + hi = hi + Math.imul(ah7, bh2) | 0; + lo = lo + Math.imul(al6, bl3) | 0; + mid = mid + Math.imul(al6, bh3) | 0; + mid = mid + Math.imul(ah6, bl3) | 0; + hi = hi + Math.imul(ah6, bh3) | 0; + lo = lo + Math.imul(al5, bl4) | 0; + mid = mid + Math.imul(al5, bh4) | 0; + mid = mid + Math.imul(ah5, bl4) | 0; + hi = hi + Math.imul(ah5, bh4) | 0; + lo = lo + Math.imul(al4, bl5) | 0; + mid = mid + Math.imul(al4, bh5) | 0; + mid = mid + Math.imul(ah4, bl5) | 0; + hi = hi + Math.imul(ah4, bh5) | 0; + lo = lo + Math.imul(al3, bl6) | 0; + mid = mid + Math.imul(al3, bh6) | 0; + mid = mid + Math.imul(ah3, bl6) | 0; + hi = hi + Math.imul(ah3, bh6) | 0; + lo = lo + Math.imul(al2, bl7) | 0; + mid = mid + Math.imul(al2, bh7) | 0; + mid = mid + Math.imul(ah2, bl7) | 0; + hi = hi + Math.imul(ah2, bh7) | 0; + lo = lo + Math.imul(al1, bl8) | 0; + mid = mid + Math.imul(al1, bh8) | 0; + mid = mid + Math.imul(ah1, bl8) | 0; + hi = hi + Math.imul(ah1, bh8) | 0; + lo = lo + Math.imul(al0, bl9) | 0; + mid = mid + Math.imul(al0, bh9) | 0; + mid = mid + Math.imul(ah0, bl9) | 0; + hi = hi + Math.imul(ah0, bh9) | 0; + var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0; + w9 &= 67108863; + lo = Math.imul(al9, bl1); + mid = Math.imul(al9, bh1); + mid = mid + Math.imul(ah9, bl1) | 0; + hi = Math.imul(ah9, bh1); + lo = lo + Math.imul(al8, bl2) | 0; + mid = mid + Math.imul(al8, bh2) | 0; + mid = mid + Math.imul(ah8, bl2) | 0; + hi = hi + Math.imul(ah8, bh2) | 0; + lo = lo + Math.imul(al7, bl3) | 0; + mid = mid + Math.imul(al7, bh3) | 0; + mid = mid + Math.imul(ah7, bl3) | 0; + hi = hi + Math.imul(ah7, bh3) | 0; + lo = lo + Math.imul(al6, bl4) | 0; + mid = mid + Math.imul(al6, bh4) | 0; + mid = mid + Math.imul(ah6, bl4) | 0; + hi = hi + Math.imul(ah6, bh4) | 0; + lo = lo + Math.imul(al5, bl5) | 0; + mid = mid + Math.imul(al5, bh5) | 0; + mid = mid + Math.imul(ah5, bl5) | 0; + hi = hi + Math.imul(ah5, bh5) | 0; + lo = lo + Math.imul(al4, bl6) | 0; + mid = mid + Math.imul(al4, bh6) | 0; + mid = mid + Math.imul(ah4, bl6) | 0; + hi = hi + Math.imul(ah4, bh6) | 0; + lo = lo + Math.imul(al3, bl7) | 0; + mid = mid + Math.imul(al3, bh7) | 0; + mid = mid + Math.imul(ah3, bl7) | 0; + hi = hi + Math.imul(ah3, bh7) | 0; + lo = lo + Math.imul(al2, bl8) | 0; + mid = mid + Math.imul(al2, bh8) | 0; + mid = mid + Math.imul(ah2, bl8) | 0; + hi = hi + Math.imul(ah2, bh8) | 0; + lo = lo + Math.imul(al1, bl9) | 0; + mid = mid + Math.imul(al1, bh9) | 0; + mid = mid + Math.imul(ah1, bl9) | 0; + hi = hi + Math.imul(ah1, bh9) | 0; + var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0; + w10 &= 67108863; + lo = Math.imul(al9, bl2); + mid = Math.imul(al9, bh2); + mid = mid + Math.imul(ah9, bl2) | 0; + hi = Math.imul(ah9, bh2); + lo = lo + Math.imul(al8, bl3) | 0; + mid = mid + Math.imul(al8, bh3) | 0; + mid = mid + Math.imul(ah8, bl3) | 0; + hi = hi + Math.imul(ah8, bh3) | 0; + lo = lo + Math.imul(al7, bl4) | 0; + mid = mid + Math.imul(al7, bh4) | 0; + mid = mid + Math.imul(ah7, bl4) | 0; + hi = hi + Math.imul(ah7, bh4) | 0; + lo = lo + Math.imul(al6, bl5) | 0; + mid = mid + Math.imul(al6, bh5) | 0; + mid = mid + Math.imul(ah6, bl5) | 0; + hi = hi + Math.imul(ah6, bh5) | 0; + lo = lo + Math.imul(al5, bl6) | 0; + mid = mid + Math.imul(al5, bh6) | 0; + mid = mid + Math.imul(ah5, bl6) | 0; + hi = hi + Math.imul(ah5, bh6) | 0; + lo = lo + Math.imul(al4, bl7) | 0; + mid = mid + Math.imul(al4, bh7) | 0; + mid = mid + Math.imul(ah4, bl7) | 0; + hi = hi + Math.imul(ah4, bh7) | 0; + lo = lo + Math.imul(al3, bl8) | 0; + mid = mid + Math.imul(al3, bh8) | 0; + mid = mid + Math.imul(ah3, bl8) | 0; + hi = hi + Math.imul(ah3, bh8) | 0; + lo = lo + Math.imul(al2, bl9) | 0; + mid = mid + Math.imul(al2, bh9) | 0; + mid = mid + Math.imul(ah2, bl9) | 0; + hi = hi + Math.imul(ah2, bh9) | 0; + var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0; + w11 &= 67108863; + lo = Math.imul(al9, bl3); + mid = Math.imul(al9, bh3); + mid = mid + Math.imul(ah9, bl3) | 0; + hi = Math.imul(ah9, bh3); + lo = lo + Math.imul(al8, bl4) | 0; + mid = mid + Math.imul(al8, bh4) | 0; + mid = mid + Math.imul(ah8, bl4) | 0; + hi = hi + Math.imul(ah8, bh4) | 0; + lo = lo + Math.imul(al7, bl5) | 0; + mid = mid + Math.imul(al7, bh5) | 0; + mid = mid + Math.imul(ah7, bl5) | 0; + hi = hi + Math.imul(ah7, bh5) | 0; + lo = lo + Math.imul(al6, bl6) | 0; + mid = mid + Math.imul(al6, bh6) | 0; + mid = mid + Math.imul(ah6, bl6) | 0; + hi = hi + Math.imul(ah6, bh6) | 0; + lo = lo + Math.imul(al5, bl7) | 0; + mid = mid + Math.imul(al5, bh7) | 0; + mid = mid + Math.imul(ah5, bl7) | 0; + hi = hi + Math.imul(ah5, bh7) | 0; + lo = lo + Math.imul(al4, bl8) | 0; + mid = mid + Math.imul(al4, bh8) | 0; + mid = mid + Math.imul(ah4, bl8) | 0; + hi = hi + Math.imul(ah4, bh8) | 0; + lo = lo + Math.imul(al3, bl9) | 0; + mid = mid + Math.imul(al3, bh9) | 0; + mid = mid + Math.imul(ah3, bl9) | 0; + hi = hi + Math.imul(ah3, bh9) | 0; + var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0; + w12 &= 67108863; + lo = Math.imul(al9, bl4); + mid = Math.imul(al9, bh4); + mid = mid + Math.imul(ah9, bl4) | 0; + hi = Math.imul(ah9, bh4); + lo = lo + Math.imul(al8, bl5) | 0; + mid = mid + Math.imul(al8, bh5) | 0; + mid = mid + Math.imul(ah8, bl5) | 0; + hi = hi + Math.imul(ah8, bh5) | 0; + lo = lo + Math.imul(al7, bl6) | 0; + mid = mid + Math.imul(al7, bh6) | 0; + mid = mid + Math.imul(ah7, bl6) | 0; + hi = hi + Math.imul(ah7, bh6) | 0; + lo = lo + Math.imul(al6, bl7) | 0; + mid = mid + Math.imul(al6, bh7) | 0; + mid = mid + Math.imul(ah6, bl7) | 0; + hi = hi + Math.imul(ah6, bh7) | 0; + lo = lo + Math.imul(al5, bl8) | 0; + mid = mid + Math.imul(al5, bh8) | 0; + mid = mid + Math.imul(ah5, bl8) | 0; + hi = hi + Math.imul(ah5, bh8) | 0; + lo = lo + Math.imul(al4, bl9) | 0; + mid = mid + Math.imul(al4, bh9) | 0; + mid = mid + Math.imul(ah4, bl9) | 0; + hi = hi + Math.imul(ah4, bh9) | 0; + var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0; + w13 &= 67108863; + lo = Math.imul(al9, bl5); + mid = Math.imul(al9, bh5); + mid = mid + Math.imul(ah9, bl5) | 0; + hi = Math.imul(ah9, bh5); + lo = lo + Math.imul(al8, bl6) | 0; + mid = mid + Math.imul(al8, bh6) | 0; + mid = mid + Math.imul(ah8, bl6) | 0; + hi = hi + Math.imul(ah8, bh6) | 0; + lo = lo + Math.imul(al7, bl7) | 0; + mid = mid + Math.imul(al7, bh7) | 0; + mid = mid + Math.imul(ah7, bl7) | 0; + hi = hi + Math.imul(ah7, bh7) | 0; + lo = lo + Math.imul(al6, bl8) | 0; + mid = mid + Math.imul(al6, bh8) | 0; + mid = mid + Math.imul(ah6, bl8) | 0; + hi = hi + Math.imul(ah6, bh8) | 0; + lo = lo + Math.imul(al5, bl9) | 0; + mid = mid + Math.imul(al5, bh9) | 0; + mid = mid + Math.imul(ah5, bl9) | 0; + hi = hi + Math.imul(ah5, bh9) | 0; + var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0; + w14 &= 67108863; + lo = Math.imul(al9, bl6); + mid = Math.imul(al9, bh6); + mid = mid + Math.imul(ah9, bl6) | 0; + hi = Math.imul(ah9, bh6); + lo = lo + Math.imul(al8, bl7) | 0; + mid = mid + Math.imul(al8, bh7) | 0; + mid = mid + Math.imul(ah8, bl7) | 0; + hi = hi + Math.imul(ah8, bh7) | 0; + lo = lo + Math.imul(al7, bl8) | 0; + mid = mid + Math.imul(al7, bh8) | 0; + mid = mid + Math.imul(ah7, bl8) | 0; + hi = hi + Math.imul(ah7, bh8) | 0; + lo = lo + Math.imul(al6, bl9) | 0; + mid = mid + Math.imul(al6, bh9) | 0; + mid = mid + Math.imul(ah6, bl9) | 0; + hi = hi + Math.imul(ah6, bh9) | 0; + var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0; + w15 &= 67108863; + lo = Math.imul(al9, bl7); + mid = Math.imul(al9, bh7); + mid = mid + Math.imul(ah9, bl7) | 0; + hi = Math.imul(ah9, bh7); + lo = lo + Math.imul(al8, bl8) | 0; + mid = mid + Math.imul(al8, bh8) | 0; + mid = mid + Math.imul(ah8, bl8) | 0; + hi = hi + Math.imul(ah8, bh8) | 0; + lo = lo + Math.imul(al7, bl9) | 0; + mid = mid + Math.imul(al7, bh9) | 0; + mid = mid + Math.imul(ah7, bl9) | 0; + hi = hi + Math.imul(ah7, bh9) | 0; + var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0; + w16 &= 67108863; + lo = Math.imul(al9, bl8); + mid = Math.imul(al9, bh8); + mid = mid + Math.imul(ah9, bl8) | 0; + hi = Math.imul(ah9, bh8); + lo = lo + Math.imul(al8, bl9) | 0; + mid = mid + Math.imul(al8, bh9) | 0; + mid = mid + Math.imul(ah8, bl9) | 0; + hi = hi + Math.imul(ah8, bh9) | 0; + var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0; + w17 &= 67108863; + lo = Math.imul(al9, bl9); + mid = Math.imul(al9, bh9); + mid = mid + Math.imul(ah9, bl9) | 0; + hi = Math.imul(ah9, bh9); + var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0; + w18 &= 67108863; + o[0] = w0; + o[1] = w1; + o[2] = w2; + o[3] = w3; + o[4] = w4; + o[5] = w5; + o[6] = w6; + o[7] = w7; + o[8] = w8; + o[9] = w9; + o[10] = w10; + o[11] = w11; + o[12] = w12; + o[13] = w13; + o[14] = w14; + o[15] = w15; + o[16] = w16; + o[17] = w17; + o[18] = w18; + if (c !== 0) { + o[19] = c; + out.length++; + } + return out; + }; + if (!Math.imul) { + comb10MulTo = smallMulTo; + } + function bigMulTo(self2, num, out) { + out.negative = num.negative ^ self2.negative; + out.length = self2.length + num.length; + var carry = 0; + var hncarry = 0; + for (var k = 0; k < out.length - 1; k++) { + var ncarry = hncarry; + hncarry = 0; + var rword = carry & 67108863; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) { + var i = k - j; + var a = self2.words[i] | 0; + var b = num.words[j] | 0; + var r = a * b; + var lo = r & 67108863; + ncarry = ncarry + (r / 67108864 | 0) | 0; + lo = lo + rword | 0; + rword = lo & 67108863; + ncarry = ncarry + (lo >>> 26) | 0; + hncarry += ncarry >>> 26; + ncarry &= 67108863; + } + out.words[k] = rword; + carry = ncarry; + ncarry = hncarry; + } + if (carry !== 0) { + out.words[k] = carry; + } else { + out.length--; + } + return out.strip(); + } + function jumboMulTo(self2, num, out) { + var fftm = new FFTM(); + return fftm.mulp(self2, num, out); + } + BN.prototype.mulTo = function mulTo(num, out) { + var res; + var len = this.length + num.length; + if (this.length === 10 && num.length === 10) { + res = comb10MulTo(this, num, out); + } else if (len < 63) { + res = smallMulTo(this, num, out); + } else if (len < 1024) { + res = bigMulTo(this, num, out); + } else { + res = jumboMulTo(this, num, out); + } + return res; + }; + function FFTM(x, y) { + this.x = x; + this.y = y; + } + FFTM.prototype.makeRBT = function makeRBT(N) { + var t = new Array(N); + var l = BN.prototype._countBits(N) - 1; + for (var i = 0; i < N; i++) { + t[i] = this.revBin(i, l, N); + } + return t; + }; + FFTM.prototype.revBin = function revBin(x, l, N) { + if (x === 0 || x === N - 1) return x; + var rb = 0; + for (var i = 0; i < l; i++) { + rb |= (x & 1) << l - i - 1; + x >>= 1; + } + return rb; + }; + FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) { + for (var i = 0; i < N; i++) { + rtws[i] = rws[rbt[i]]; + itws[i] = iws[rbt[i]]; + } + }; + FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) { + this.permute(rbt, rws, iws, rtws, itws, N); + for (var s = 1; s < N; s <<= 1) { + var l = s << 1; + var rtwdf = Math.cos(2 * Math.PI / l); + var itwdf = Math.sin(2 * Math.PI / l); + for (var p = 0; p < N; p += l) { + var rtwdf_ = rtwdf; + var itwdf_ = itwdf; + for (var j = 0; j < s; j++) { + var re = rtws[p + j]; + var ie = itws[p + j]; + var ro = rtws[p + j + s]; + var io = itws[p + j + s]; + var rx = rtwdf_ * ro - itwdf_ * io; + io = rtwdf_ * io + itwdf_ * ro; + ro = rx; + rtws[p + j] = re + ro; + itws[p + j] = ie + io; + rtws[p + j + s] = re - ro; + itws[p + j + s] = ie - io; + if (j !== l) { + rx = rtwdf * rtwdf_ - itwdf * itwdf_; + itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; + rtwdf_ = rx; + } + } + } + } + }; + FFTM.prototype.guessLen13b = function guessLen13b(n, m) { + var N = Math.max(m, n) | 1; + var odd = N & 1; + var i = 0; + for (N = N / 2 | 0; N; N = N >>> 1) { + i++; + } + return 1 << i + 1 + odd; + }; + FFTM.prototype.conjugate = function conjugate(rws, iws, N) { + if (N <= 1) return; + for (var i = 0; i < N / 2; i++) { + var t = rws[i]; + rws[i] = rws[N - i - 1]; + rws[N - i - 1] = t; + t = iws[i]; + iws[i] = -iws[N - i - 1]; + iws[N - i - 1] = -t; + } + }; + FFTM.prototype.normalize13b = function normalize13b(ws, N) { + var carry = 0; + for (var i = 0; i < N / 2; i++) { + var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; + ws[i] = w & 67108863; + if (w < 67108864) { + carry = 0; + } else { + carry = w / 67108864 | 0; + } + } + return ws; + }; + FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) { + var carry = 0; + for (var i = 0; i < len; i++) { + carry = carry + (ws[i] | 0); + rws[2 * i] = carry & 8191; + carry = carry >>> 13; + rws[2 * i + 1] = carry & 8191; + carry = carry >>> 13; + } + for (i = 2 * len; i < N; ++i) { + rws[i] = 0; + } + assert(carry === 0); + assert((carry & ~8191) === 0); + }; + FFTM.prototype.stub = function stub(N) { + var ph = new Array(N); + for (var i = 0; i < N; i++) { + ph[i] = 0; + } + return ph; + }; + FFTM.prototype.mulp = function mulp(x, y, out) { + var N = 2 * this.guessLen13b(x.length, y.length); + var rbt = this.makeRBT(N); + var _ = this.stub(N); + var rws = new Array(N); + var rwst = new Array(N); + var iwst = new Array(N); + var nrws = new Array(N); + var nrwst = new Array(N); + var niwst = new Array(N); + var rmws = out.words; + rmws.length = N; + this.convert13b(x.words, x.length, rws, N); + this.convert13b(y.words, y.length, nrws, N); + this.transform(rws, _, rwst, iwst, N, rbt); + this.transform(nrws, _, nrwst, niwst, N, rbt); + for (var i = 0; i < N; i++) { + var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; + iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; + rwst[i] = rx; + } + this.conjugate(rwst, iwst, N); + this.transform(rwst, iwst, rmws, _, N, rbt); + this.conjugate(rmws, _, N); + this.normalize13b(rmws, N); + out.negative = x.negative ^ y.negative; + out.length = x.length + y.length; + return out.strip(); + }; + BN.prototype.mul = function mul(num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return this.mulTo(num, out); + }; + BN.prototype.mulf = function mulf(num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return jumboMulTo(this, num, out); + }; + BN.prototype.imul = function imul(num) { + return this.clone().mulTo(num, this); + }; + BN.prototype.imuln = function imuln(num) { + assert(typeof num === "number"); + assert(num < 67108864); + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 67108863) + (carry & 67108863); + carry >>= 26; + carry += w / 67108864 | 0; + carry += lo >>> 26; + this.words[i] = lo & 67108863; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + this.length = num === 0 ? 1 : this.length; + return this; + }; + BN.prototype.muln = function muln(num) { + return this.clone().imuln(num); + }; + BN.prototype.sqr = function sqr() { + return this.mul(this); + }; + BN.prototype.isqr = function isqr() { + return this.imul(this.clone()); + }; + BN.prototype.pow = function pow(num) { + var w = toBitArray(num); + if (w.length === 0) return new BN(1); + var res = this; + for (var i = 0; i < w.length; i++, res = res.sqr()) { + if (w[i] !== 0) break; + } + if (++i < w.length) { + for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { + if (w[i] === 0) continue; + res = res.mul(q); + } + } + return res; + }; + BN.prototype.iushln = function iushln(bits) { + assert(typeof bits === "number" && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + var carryMask = 67108863 >>> 26 - r << 26 - r; + var i; + if (r !== 0) { + var carry = 0; + for (i = 0; i < this.length; i++) { + var newCarry = this.words[i] & carryMask; + var c = (this.words[i] | 0) - newCarry << r; + this.words[i] = c | carry; + carry = newCarry >>> 26 - r; + } + if (carry) { + this.words[i] = carry; + this.length++; + } + } + if (s !== 0) { + for (i = this.length - 1; i >= 0; i--) { + this.words[i + s] = this.words[i]; + } + for (i = 0; i < s; i++) { + this.words[i] = 0; + } + this.length += s; + } + return this.strip(); + }; + BN.prototype.ishln = function ishln(bits) { + assert(this.negative === 0); + return this.iushln(bits); + }; + BN.prototype.iushrn = function iushrn(bits, hint, extended) { + assert(typeof bits === "number" && bits >= 0); + var h; + if (hint) { + h = (hint - hint % 26) / 26; + } else { + h = 0; + } + var r = bits % 26; + var s = Math.min((bits - r) / 26, this.length); + var mask = 67108863 ^ 67108863 >>> r << r; + var maskedWords = extended; + h -= s; + h = Math.max(0, h); + if (maskedWords) { + for (var i = 0; i < s; i++) { + maskedWords.words[i] = this.words[i]; + } + maskedWords.length = s; + } + if (s === 0) { + } else if (this.length > s) { + this.length -= s; + for (i = 0; i < this.length; i++) { + this.words[i] = this.words[i + s]; + } + } else { + this.words[0] = 0; + this.length = 1; + } + var carry = 0; + for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { + var word = this.words[i] | 0; + this.words[i] = carry << 26 - r | word >>> r; + carry = word & mask; + } + if (maskedWords && carry !== 0) { + maskedWords.words[maskedWords.length++] = carry; + } + if (this.length === 0) { + this.words[0] = 0; + this.length = 1; + } + return this.strip(); + }; + BN.prototype.ishrn = function ishrn(bits, hint, extended) { + assert(this.negative === 0); + return this.iushrn(bits, hint, extended); + }; + BN.prototype.shln = function shln(bits) { + return this.clone().ishln(bits); + }; + BN.prototype.ushln = function ushln(bits) { + return this.clone().iushln(bits); + }; + BN.prototype.shrn = function shrn(bits) { + return this.clone().ishrn(bits); + }; + BN.prototype.ushrn = function ushrn(bits) { + return this.clone().iushrn(bits); + }; + BN.prototype.testn = function testn(bit) { + assert(typeof bit === "number" && bit >= 0); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + if (this.length <= s) return false; + var w = this.words[s]; + return !!(w & q); + }; + BN.prototype.imaskn = function imaskn(bits) { + assert(typeof bits === "number" && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + assert(this.negative === 0, "imaskn works only with positive numbers"); + if (this.length <= s) { + return this; + } + if (r !== 0) { + s++; + } + this.length = Math.min(s, this.length); + if (r !== 0) { + var mask = 67108863 ^ 67108863 >>> r << r; + this.words[this.length - 1] &= mask; + } + return this.strip(); + }; + BN.prototype.maskn = function maskn(bits) { + return this.clone().imaskn(bits); + }; + BN.prototype.iaddn = function iaddn(num) { + assert(typeof num === "number"); + assert(num < 67108864); + if (num < 0) return this.isubn(-num); + if (this.negative !== 0) { + if (this.length === 1 && (this.words[0] | 0) < num) { + this.words[0] = num - (this.words[0] | 0); + this.negative = 0; + return this; + } + this.negative = 0; + this.isubn(num); + this.negative = 1; + return this; + } + return this._iaddn(num); + }; + BN.prototype._iaddn = function _iaddn(num) { + this.words[0] += num; + for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) { + this.words[i] -= 67108864; + if (i === this.length - 1) { + this.words[i + 1] = 1; + } else { + this.words[i + 1]++; + } + } + this.length = Math.max(this.length, i + 1); + return this; + }; + BN.prototype.isubn = function isubn(num) { + assert(typeof num === "number"); + assert(num < 67108864); + if (num < 0) return this.iaddn(-num); + if (this.negative !== 0) { + this.negative = 0; + this.iaddn(num); + this.negative = 1; + return this; + } + this.words[0] -= num; + if (this.length === 1 && this.words[0] < 0) { + this.words[0] = -this.words[0]; + this.negative = 1; + } else { + for (var i = 0; i < this.length && this.words[i] < 0; i++) { + this.words[i] += 67108864; + this.words[i + 1] -= 1; + } + } + return this.strip(); + }; + BN.prototype.addn = function addn(num) { + return this.clone().iaddn(num); + }; + BN.prototype.subn = function subn(num) { + return this.clone().isubn(num); + }; + BN.prototype.iabs = function iabs() { + this.negative = 0; + return this; + }; + BN.prototype.abs = function abs() { + return this.clone().iabs(); + }; + BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) { + var len = num.length + shift; + var i; + this._expand(len); + var w; + var carry = 0; + for (i = 0; i < num.length; i++) { + w = (this.words[i + shift] | 0) + carry; + var right = (num.words[i] | 0) * mul; + w -= right & 67108863; + carry = (w >> 26) - (right / 67108864 | 0); + this.words[i + shift] = w & 67108863; + } + for (; i < this.length - shift; i++) { + w = (this.words[i + shift] | 0) + carry; + carry = w >> 26; + this.words[i + shift] = w & 67108863; + } + if (carry === 0) return this.strip(); + assert(carry === -1); + carry = 0; + for (i = 0; i < this.length; i++) { + w = -(this.words[i] | 0) + carry; + carry = w >> 26; + this.words[i] = w & 67108863; + } + this.negative = 1; + return this.strip(); + }; + BN.prototype._wordDiv = function _wordDiv(num, mode) { + var shift = this.length - num.length; + var a = this.clone(); + var b = num; + var bhi = b.words[b.length - 1] | 0; + var bhiBits = this._countBits(bhi); + shift = 26 - bhiBits; + if (shift !== 0) { + b = b.ushln(shift); + a.iushln(shift); + bhi = b.words[b.length - 1] | 0; + } + var m = a.length - b.length; + var q; + if (mode !== "mod") { + q = new BN(null); + q.length = m + 1; + q.words = new Array(q.length); + for (var i = 0; i < q.length; i++) { + q.words[i] = 0; + } + } + var diff = a.clone()._ishlnsubmul(b, 1, m); + if (diff.negative === 0) { + a = diff; + if (q) { + q.words[m] = 1; + } + } + for (var j = m - 1; j >= 0; j--) { + var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); + qj = Math.min(qj / bhi | 0, 67108863); + a._ishlnsubmul(b, qj, j); + while (a.negative !== 0) { + qj--; + a.negative = 0; + a._ishlnsubmul(b, 1, j); + if (!a.isZero()) { + a.negative ^= 1; + } + } + if (q) { + q.words[j] = qj; + } + } + if (q) { + q.strip(); + } + a.strip(); + if (mode !== "div" && shift !== 0) { + a.iushrn(shift); + } + return { + div: q || null, + mod: a + }; + }; + BN.prototype.divmod = function divmod(num, mode, positive) { + assert(!num.isZero()); + if (this.isZero()) { + return { + div: new BN(0), + mod: new BN(0) + }; + } + var div, mod, res; + if (this.negative !== 0 && num.negative === 0) { + res = this.neg().divmod(num, mode); + if (mode !== "mod") { + div = res.div.neg(); + } + if (mode !== "div") { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.iadd(num); + } + } + return { + div, + mod + }; + } + if (this.negative === 0 && num.negative !== 0) { + res = this.divmod(num.neg(), mode); + if (mode !== "mod") { + div = res.div.neg(); + } + return { + div, + mod: res.mod + }; + } + if ((this.negative & num.negative) !== 0) { + res = this.neg().divmod(num.neg(), mode); + if (mode !== "div") { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.isub(num); + } + } + return { + div: res.div, + mod + }; + } + if (num.length > this.length || this.cmp(num) < 0) { + return { + div: new BN(0), + mod: this + }; + } + if (num.length === 1) { + if (mode === "div") { + return { + div: this.divn(num.words[0]), + mod: null + }; + } + if (mode === "mod") { + return { + div: null, + mod: new BN(this.modn(num.words[0])) + }; + } + return { + div: this.divn(num.words[0]), + mod: new BN(this.modn(num.words[0])) + }; + } + return this._wordDiv(num, mode); + }; + BN.prototype.div = function div(num) { + return this.divmod(num, "div", false).div; + }; + BN.prototype.mod = function mod(num) { + return this.divmod(num, "mod", false).mod; + }; + BN.prototype.umod = function umod(num) { + return this.divmod(num, "mod", true).mod; + }; + BN.prototype.divRound = function divRound(num) { + var dm = this.divmod(num); + if (dm.mod.isZero()) return dm.div; + var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; + var half = num.ushrn(1); + var r2 = num.andln(1); + var cmp = mod.cmp(half); + if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; + return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); + }; + BN.prototype.modn = function modn(num) { + assert(num <= 67108863); + var p = (1 << 26) % num; + var acc = 0; + for (var i = this.length - 1; i >= 0; i--) { + acc = (p * acc + (this.words[i] | 0)) % num; + } + return acc; + }; + BN.prototype.idivn = function idivn(num) { + assert(num <= 67108863); + var carry = 0; + for (var i = this.length - 1; i >= 0; i--) { + var w = (this.words[i] | 0) + carry * 67108864; + this.words[i] = w / num | 0; + carry = w % num; + } + return this.strip(); + }; + BN.prototype.divn = function divn(num) { + return this.clone().idivn(num); + }; + BN.prototype.egcd = function egcd(p) { + assert(p.negative === 0); + assert(!p.isZero()); + var x = this; + var y = p.clone(); + if (x.negative !== 0) { + x = x.umod(p); + } else { + x = x.clone(); + } + var A = new BN(1); + var B = new BN(0); + var C = new BN(0); + var D = new BN(1); + var g = 0; + while (x.isEven() && y.isEven()) { + x.iushrn(1); + y.iushrn(1); + ++g; + } + var yp = y.clone(); + var xp = x.clone(); + while (!x.isZero()) { + for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ; + if (i > 0) { + x.iushrn(i); + while (i-- > 0) { + if (A.isOdd() || B.isOdd()) { + A.iadd(yp); + B.isub(xp); + } + A.iushrn(1); + B.iushrn(1); + } + } + for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ; + if (j > 0) { + y.iushrn(j); + while (j-- > 0) { + if (C.isOdd() || D.isOdd()) { + C.iadd(yp); + D.isub(xp); + } + C.iushrn(1); + D.iushrn(1); + } + } + if (x.cmp(y) >= 0) { + x.isub(y); + A.isub(C); + B.isub(D); + } else { + y.isub(x); + C.isub(A); + D.isub(B); + } + } + return { + a: C, + b: D, + gcd: y.iushln(g) + }; + }; + BN.prototype._invmp = function _invmp(p) { + assert(p.negative === 0); + assert(!p.isZero()); + var a = this; + var b = p.clone(); + if (a.negative !== 0) { + a = a.umod(p); + } else { + a = a.clone(); + } + var x1 = new BN(1); + var x2 = new BN(0); + var delta = b.clone(); + while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { + for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ; + if (i > 0) { + a.iushrn(i); + while (i-- > 0) { + if (x1.isOdd()) { + x1.iadd(delta); + } + x1.iushrn(1); + } + } + for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ; + if (j > 0) { + b.iushrn(j); + while (j-- > 0) { + if (x2.isOdd()) { + x2.iadd(delta); + } + x2.iushrn(1); + } + } + if (a.cmp(b) >= 0) { + a.isub(b); + x1.isub(x2); + } else { + b.isub(a); + x2.isub(x1); + } + } + var res; + if (a.cmpn(1) === 0) { + res = x1; + } else { + res = x2; + } + if (res.cmpn(0) < 0) { + res.iadd(p); + } + return res; + }; + BN.prototype.gcd = function gcd(num) { + if (this.isZero()) return num.abs(); + if (num.isZero()) return this.abs(); + var a = this.clone(); + var b = num.clone(); + a.negative = 0; + b.negative = 0; + for (var shift = 0; a.isEven() && b.isEven(); shift++) { + a.iushrn(1); + b.iushrn(1); + } + do { + while (a.isEven()) { + a.iushrn(1); + } + while (b.isEven()) { + b.iushrn(1); + } + var r = a.cmp(b); + if (r < 0) { + var t = a; + a = b; + b = t; + } else if (r === 0 || b.cmpn(1) === 0) { + break; + } + a.isub(b); + } while (true); + return b.iushln(shift); + }; + BN.prototype.invm = function invm(num) { + return this.egcd(num).a.umod(num); + }; + BN.prototype.isEven = function isEven() { + return (this.words[0] & 1) === 0; + }; + BN.prototype.isOdd = function isOdd() { + return (this.words[0] & 1) === 1; + }; + BN.prototype.andln = function andln(num) { + return this.words[0] & num; + }; + BN.prototype.bincn = function bincn(bit) { + assert(typeof bit === "number"); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + if (this.length <= s) { + this._expand(s + 1); + this.words[s] |= q; + return this; + } + var carry = q; + for (var i = s; carry !== 0 && i < this.length; i++) { + var w = this.words[i] | 0; + w += carry; + carry = w >>> 26; + w &= 67108863; + this.words[i] = w; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + return this; + }; + BN.prototype.isZero = function isZero() { + return this.length === 1 && this.words[0] === 0; + }; + BN.prototype.cmpn = function cmpn(num) { + var negative = num < 0; + if (this.negative !== 0 && !negative) return -1; + if (this.negative === 0 && negative) return 1; + this.strip(); + var res; + if (this.length > 1) { + res = 1; + } else { + if (negative) { + num = -num; + } + assert(num <= 67108863, "Number is too big"); + var w = this.words[0] | 0; + res = w === num ? 0 : w < num ? -1 : 1; + } + if (this.negative !== 0) return -res | 0; + return res; + }; + BN.prototype.cmp = function cmp(num) { + if (this.negative !== 0 && num.negative === 0) return -1; + if (this.negative === 0 && num.negative !== 0) return 1; + var res = this.ucmp(num); + if (this.negative !== 0) return -res | 0; + return res; + }; + BN.prototype.ucmp = function ucmp(num) { + if (this.length > num.length) return 1; + if (this.length < num.length) return -1; + var res = 0; + for (var i = this.length - 1; i >= 0; i--) { + var a = this.words[i] | 0; + var b = num.words[i] | 0; + if (a === b) continue; + if (a < b) { + res = -1; + } else if (a > b) { + res = 1; + } + break; + } + return res; + }; + BN.prototype.gtn = function gtn(num) { + return this.cmpn(num) === 1; + }; + BN.prototype.gt = function gt(num) { + return this.cmp(num) === 1; + }; + BN.prototype.gten = function gten(num) { + return this.cmpn(num) >= 0; + }; + BN.prototype.gte = function gte(num) { + return this.cmp(num) >= 0; + }; + BN.prototype.ltn = function ltn(num) { + return this.cmpn(num) === -1; + }; + BN.prototype.lt = function lt(num) { + return this.cmp(num) === -1; + }; + BN.prototype.lten = function lten(num) { + return this.cmpn(num) <= 0; + }; + BN.prototype.lte = function lte(num) { + return this.cmp(num) <= 0; + }; + BN.prototype.eqn = function eqn(num) { + return this.cmpn(num) === 0; + }; + BN.prototype.eq = function eq(num) { + return this.cmp(num) === 0; + }; + BN.red = function red(num) { + return new Red(num); + }; + BN.prototype.toRed = function toRed(ctx) { + assert(!this.red, "Already a number in reduction context"); + assert(this.negative === 0, "red works only with positives"); + return ctx.convertTo(this)._forceRed(ctx); + }; + BN.prototype.fromRed = function fromRed() { + assert(this.red, "fromRed works only with numbers in reduction context"); + return this.red.convertFrom(this); + }; + BN.prototype._forceRed = function _forceRed(ctx) { + this.red = ctx; + return this; + }; + BN.prototype.forceRed = function forceRed(ctx) { + assert(!this.red, "Already a number in reduction context"); + return this._forceRed(ctx); + }; + BN.prototype.redAdd = function redAdd(num) { + assert(this.red, "redAdd works only with red numbers"); + return this.red.add(this, num); + }; + BN.prototype.redIAdd = function redIAdd(num) { + assert(this.red, "redIAdd works only with red numbers"); + return this.red.iadd(this, num); + }; + BN.prototype.redSub = function redSub(num) { + assert(this.red, "redSub works only with red numbers"); + return this.red.sub(this, num); + }; + BN.prototype.redISub = function redISub(num) { + assert(this.red, "redISub works only with red numbers"); + return this.red.isub(this, num); + }; + BN.prototype.redShl = function redShl(num) { + assert(this.red, "redShl works only with red numbers"); + return this.red.shl(this, num); + }; + BN.prototype.redMul = function redMul(num) { + assert(this.red, "redMul works only with red numbers"); + this.red._verify2(this, num); + return this.red.mul(this, num); + }; + BN.prototype.redIMul = function redIMul(num) { + assert(this.red, "redMul works only with red numbers"); + this.red._verify2(this, num); + return this.red.imul(this, num); + }; + BN.prototype.redSqr = function redSqr() { + assert(this.red, "redSqr works only with red numbers"); + this.red._verify1(this); + return this.red.sqr(this); + }; + BN.prototype.redISqr = function redISqr() { + assert(this.red, "redISqr works only with red numbers"); + this.red._verify1(this); + return this.red.isqr(this); + }; + BN.prototype.redSqrt = function redSqrt() { + assert(this.red, "redSqrt works only with red numbers"); + this.red._verify1(this); + return this.red.sqrt(this); + }; + BN.prototype.redInvm = function redInvm() { + assert(this.red, "redInvm works only with red numbers"); + this.red._verify1(this); + return this.red.invm(this); + }; + BN.prototype.redNeg = function redNeg() { + assert(this.red, "redNeg works only with red numbers"); + this.red._verify1(this); + return this.red.neg(this); + }; + BN.prototype.redPow = function redPow(num) { + assert(this.red && !num.red, "redPow(normalNum)"); + this.red._verify1(this); + return this.red.pow(this, num); + }; + var primes = { + k256: null, + p224: null, + p192: null, + p25519: null + }; + function MPrime(name, p) { + this.name = name; + this.p = new BN(p, 16); + this.n = this.p.bitLength(); + this.k = new BN(1).iushln(this.n).isub(this.p); + this.tmp = this._tmp(); + } + MPrime.prototype._tmp = function _tmp() { + var tmp = new BN(null); + tmp.words = new Array(Math.ceil(this.n / 13)); + return tmp; + }; + MPrime.prototype.ireduce = function ireduce(num) { + var r = num; + var rlen; + do { + this.split(r, this.tmp); + r = this.imulK(r); + r = r.iadd(this.tmp); + rlen = r.bitLength(); + } while (rlen > this.n); + var cmp = rlen < this.n ? -1 : r.ucmp(this.p); + if (cmp === 0) { + r.words[0] = 0; + r.length = 1; + } else if (cmp > 0) { + r.isub(this.p); + } else { + if (r.strip !== void 0) { + r.strip(); + } else { + r._strip(); + } + } + return r; + }; + MPrime.prototype.split = function split(input, out) { + input.iushrn(this.n, 0, out); + }; + MPrime.prototype.imulK = function imulK(num) { + return num.imul(this.k); + }; + function K256() { + MPrime.call( + this, + "k256", + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f" + ); + } + inherits(K256, MPrime); + K256.prototype.split = function split(input, output) { + var mask = 4194303; + var outLen = Math.min(input.length, 9); + for (var i = 0; i < outLen; i++) { + output.words[i] = input.words[i]; + } + output.length = outLen; + if (input.length <= 9) { + input.words[0] = 0; + input.length = 1; + return; + } + var prev = input.words[9]; + output.words[output.length++] = prev & mask; + for (i = 10; i < input.length; i++) { + var next = input.words[i] | 0; + input.words[i - 10] = (next & mask) << 4 | prev >>> 22; + prev = next; + } + prev >>>= 22; + input.words[i - 10] = prev; + if (prev === 0 && input.length > 10) { + input.length -= 10; + } else { + input.length -= 9; + } + }; + K256.prototype.imulK = function imulK(num) { + num.words[num.length] = 0; + num.words[num.length + 1] = 0; + num.length += 2; + var lo = 0; + for (var i = 0; i < num.length; i++) { + var w = num.words[i] | 0; + lo += w * 977; + num.words[i] = lo & 67108863; + lo = w * 64 + (lo / 67108864 | 0); + } + if (num.words[num.length - 1] === 0) { + num.length--; + if (num.words[num.length - 1] === 0) { + num.length--; + } + } + return num; + }; + function P224() { + MPrime.call( + this, + "p224", + "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001" + ); + } + inherits(P224, MPrime); + function P192() { + MPrime.call( + this, + "p192", + "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff" + ); + } + inherits(P192, MPrime); + function P25519() { + MPrime.call( + this, + "25519", + "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed" + ); + } + inherits(P25519, MPrime); + P25519.prototype.imulK = function imulK(num) { + var carry = 0; + for (var i = 0; i < num.length; i++) { + var hi = (num.words[i] | 0) * 19 + carry; + var lo = hi & 67108863; + hi >>>= 26; + num.words[i] = lo; + carry = hi; + } + if (carry !== 0) { + num.words[num.length++] = carry; + } + return num; + }; + BN._prime = function prime(name) { + if (primes[name]) return primes[name]; + var prime2; + if (name === "k256") { + prime2 = new K256(); + } else if (name === "p224") { + prime2 = new P224(); + } else if (name === "p192") { + prime2 = new P192(); + } else if (name === "p25519") { + prime2 = new P25519(); + } else { + throw new Error("Unknown prime " + name); + } + primes[name] = prime2; + return prime2; + }; + function Red(m) { + if (typeof m === "string") { + var prime = BN._prime(m); + this.m = prime.p; + this.prime = prime; + } else { + assert(m.gtn(1), "modulus must be greater than 1"); + this.m = m; + this.prime = null; + } + } + Red.prototype._verify1 = function _verify1(a) { + assert(a.negative === 0, "red works only with positives"); + assert(a.red, "red works only with red numbers"); + }; + Red.prototype._verify2 = function _verify2(a, b) { + assert((a.negative | b.negative) === 0, "red works only with positives"); + assert( + a.red && a.red === b.red, + "red works only with red numbers" + ); + }; + Red.prototype.imod = function imod(a) { + if (this.prime) return this.prime.ireduce(a)._forceRed(this); + return a.umod(this.m)._forceRed(this); + }; + Red.prototype.neg = function neg(a) { + if (a.isZero()) { + return a.clone(); + } + return this.m.sub(a)._forceRed(this); + }; + Red.prototype.add = function add(a, b) { + this._verify2(a, b); + var res = a.add(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res._forceRed(this); + }; + Red.prototype.iadd = function iadd(a, b) { + this._verify2(a, b); + var res = a.iadd(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res; + }; + Red.prototype.sub = function sub(a, b) { + this._verify2(a, b); + var res = a.sub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res._forceRed(this); + }; + Red.prototype.isub = function isub(a, b) { + this._verify2(a, b); + var res = a.isub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res; + }; + Red.prototype.shl = function shl(a, num) { + this._verify1(a); + return this.imod(a.ushln(num)); + }; + Red.prototype.imul = function imul(a, b) { + this._verify2(a, b); + return this.imod(a.imul(b)); + }; + Red.prototype.mul = function mul(a, b) { + this._verify2(a, b); + return this.imod(a.mul(b)); + }; + Red.prototype.isqr = function isqr(a) { + return this.imul(a, a.clone()); + }; + Red.prototype.sqr = function sqr(a) { + return this.mul(a, a); + }; + Red.prototype.sqrt = function sqrt(a) { + if (a.isZero()) return a.clone(); + var mod3 = this.m.andln(3); + assert(mod3 % 2 === 1); + if (mod3 === 3) { + var pow = this.m.add(new BN(1)).iushrn(2); + return this.pow(a, pow); + } + var q = this.m.subn(1); + var s = 0; + while (!q.isZero() && q.andln(1) === 0) { + s++; + q.iushrn(1); + } + assert(!q.isZero()); + var one = new BN(1).toRed(this); + var nOne = one.redNeg(); + var lpow = this.m.subn(1).iushrn(1); + var z = this.m.bitLength(); + z = new BN(2 * z * z).toRed(this); + while (this.pow(z, lpow).cmp(nOne) !== 0) { + z.redIAdd(nOne); + } + var c = this.pow(z, q); + var r = this.pow(a, q.addn(1).iushrn(1)); + var t = this.pow(a, q); + var m = s; + while (t.cmp(one) !== 0) { + var tmp = t; + for (var i = 0; tmp.cmp(one) !== 0; i++) { + tmp = tmp.redSqr(); + } + assert(i < m); + var b = this.pow(c, new BN(1).iushln(m - i - 1)); + r = r.redMul(b); + c = b.redSqr(); + t = t.redMul(c); + m = i; + } + return r; + }; + Red.prototype.invm = function invm(a) { + var inv = a._invmp(this.m); + if (inv.negative !== 0) { + inv.negative = 0; + return this.imod(inv).redNeg(); + } else { + return this.imod(inv); + } + }; + Red.prototype.pow = function pow(a, num) { + if (num.isZero()) return new BN(1).toRed(this); + if (num.cmpn(1) === 0) return a.clone(); + var windowSize = 4; + var wnd = new Array(1 << windowSize); + wnd[0] = new BN(1).toRed(this); + wnd[1] = a; + for (var i = 2; i < wnd.length; i++) { + wnd[i] = this.mul(wnd[i - 1], a); + } + var res = wnd[0]; + var current = 0; + var currentLen = 0; + var start = num.bitLength() % 26; + if (start === 0) { + start = 26; + } + for (i = num.length - 1; i >= 0; i--) { + var word = num.words[i]; + for (var j = start - 1; j >= 0; j--) { + var bit = word >> j & 1; + if (res !== wnd[0]) { + res = this.sqr(res); + } + if (bit === 0 && current === 0) { + currentLen = 0; + continue; + } + current <<= 1; + current |= bit; + currentLen++; + if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; + res = this.mul(res, wnd[current]); + currentLen = 0; + current = 0; + } + start = 26; + } + return res; + }; + Red.prototype.convertTo = function convertTo(num) { + var r = num.umod(this.m); + return r === num ? r.clone() : r; + }; + Red.prototype.convertFrom = function convertFrom(num) { + var res = num.clone(); + res.red = null; + return res; + }; + BN.mont = function mont(num) { + return new Mont(num); + }; + function Mont(m) { + Red.call(this, m); + this.shift = this.m.bitLength(); + if (this.shift % 26 !== 0) { + this.shift += 26 - this.shift % 26; + } + this.r = new BN(1).iushln(this.shift); + this.r2 = this.imod(this.r.sqr()); + this.rinv = this.r._invmp(this.m); + this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); + this.minv = this.minv.umod(this.r); + this.minv = this.r.sub(this.minv); + } + inherits(Mont, Red); + Mont.prototype.convertTo = function convertTo(num) { + return this.imod(num.ushln(this.shift)); + }; + Mont.prototype.convertFrom = function convertFrom(num) { + var r = this.imod(num.mul(this.rinv)); + r.red = null; + return r; + }; + Mont.prototype.imul = function imul(a, b) { + if (a.isZero() || b.isZero()) { + a.words[0] = 0; + a.length = 1; + return a; + } + var t = a.imul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + return res._forceRed(this); + }; + Mont.prototype.mul = function mul(a, b) { + if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); + var t = a.mul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + return res._forceRed(this); + }; + Mont.prototype.invm = function invm(a) { + var res = this.imod(a._invmp(this.m).mul(this.r2)); + return res._forceRed(this); + }; + })(typeof module === "undefined" || module, exports); + } +}); + +// node_modules/minimalistic-assert/index.js +var require_minimalistic_assert = __commonJS({ + "node_modules/minimalistic-assert/index.js"(exports, module) { + module.exports = assert; + function assert(val, msg) { + if (!val) + throw new Error(msg || "Assertion failed"); + } + assert.equal = function assertEqual(l, r, msg) { + if (l != r) + throw new Error(msg || "Assertion failed: " + l + " != " + r); + }; + } +}); + +// node_modules/minimalistic-crypto-utils/lib/utils.js +var require_utils = __commonJS({ + "node_modules/minimalistic-crypto-utils/lib/utils.js"(exports) { + "use strict"; + var utils = exports; + function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg !== "string") { + for (var i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + return res; + } + if (enc === "hex") { + msg = msg.replace(/[^a-z0-9]+/ig, ""); + if (msg.length % 2 !== 0) + msg = "0" + msg; + for (var i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } else { + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + var hi = c >> 8; + var lo = c & 255; + if (hi) + res.push(hi, lo); + else + res.push(lo); + } + } + return res; + } + utils.toArray = toArray; + function zero2(word) { + if (word.length === 1) + return "0" + word; + else + return word; + } + utils.zero2 = zero2; + function toHex(msg) { + var res = ""; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; + } + utils.toHex = toHex; + utils.encode = function encode(arr, enc) { + if (enc === "hex") + return toHex(arr); + else + return arr; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/utils.js +var require_utils2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/utils.js"(exports) { + "use strict"; + var utils = exports; + var BN = require_bn(); + var minAssert = require_minimalistic_assert(); + var minUtils = require_utils(); + utils.assert = minAssert; + utils.toArray = minUtils.toArray; + utils.zero2 = minUtils.zero2; + utils.toHex = minUtils.toHex; + utils.encode = minUtils.encode; + function getNAF(num, w, bits) { + var naf = new Array(Math.max(num.bitLength(), bits) + 1); + var i; + for (i = 0; i < naf.length; i += 1) { + naf[i] = 0; + } + var ws = 1 << w + 1; + var k = num.clone(); + for (i = 0; i < naf.length; i++) { + var z; + var mod = k.andln(ws - 1); + if (k.isOdd()) { + if (mod > (ws >> 1) - 1) + z = (ws >> 1) - mod; + else + z = mod; + k.isubn(z); + } else { + z = 0; + } + naf[i] = z; + k.iushrn(1); + } + return naf; + } + utils.getNAF = getNAF; + function getJSF(k1, k2) { + var jsf = [ + [], + [] + ]; + k1 = k1.clone(); + k2 = k2.clone(); + var d1 = 0; + var d2 = 0; + var m8; + while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { + var m14 = k1.andln(3) + d1 & 3; + var m24 = k2.andln(3) + d2 & 3; + if (m14 === 3) + m14 = -1; + if (m24 === 3) + m24 = -1; + var u1; + if ((m14 & 1) === 0) { + u1 = 0; + } else { + m8 = k1.andln(7) + d1 & 7; + if ((m8 === 3 || m8 === 5) && m24 === 2) + u1 = -m14; + else + u1 = m14; + } + jsf[0].push(u1); + var u2; + if ((m24 & 1) === 0) { + u2 = 0; + } else { + m8 = k2.andln(7) + d2 & 7; + if ((m8 === 3 || m8 === 5) && m14 === 2) + u2 = -m24; + else + u2 = m24; + } + jsf[1].push(u2); + if (2 * d1 === u1 + 1) + d1 = 1 - d1; + if (2 * d2 === u2 + 1) + d2 = 1 - d2; + k1.iushrn(1); + k2.iushrn(1); + } + return jsf; + } + utils.getJSF = getJSF; + function cachedProperty(obj, name, computer) { + var key = "_" + name; + obj.prototype[name] = function cachedProperty2() { + return this[key] !== void 0 ? this[key] : this[key] = computer.call(this); + }; + } + utils.cachedProperty = cachedProperty; + function parseBytes(bytes) { + return typeof bytes === "string" ? utils.toArray(bytes, "hex") : bytes; + } + utils.parseBytes = parseBytes; + function intFromLE(bytes) { + return new BN(bytes, "hex", "le"); + } + utils.intFromLE = intFromLE; + } +}); + +// node_modules/brorand/index.js +var require_brorand = __commonJS({ + "node_modules/brorand/index.js"(exports, module) { + var r; + module.exports = function rand(len) { + if (!r) + r = new Rand(null); + return r.generate(len); + }; + function Rand(rand) { + this.rand = rand; + } + module.exports.Rand = Rand; + Rand.prototype.generate = function generate(len) { + return this._rand(len); + }; + Rand.prototype._rand = function _rand(n) { + if (this.rand.getBytes) + return this.rand.getBytes(n); + var res = new Uint8Array(n); + for (var i = 0; i < res.length; i++) + res[i] = this.rand.getByte(); + return res; + }; + if (typeof self === "object") { + if (self.crypto && self.crypto.getRandomValues) { + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.crypto.getRandomValues(arr); + return arr; + }; + } else if (self.msCrypto && self.msCrypto.getRandomValues) { + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.msCrypto.getRandomValues(arr); + return arr; + }; + } else if (typeof window === "object") { + Rand.prototype._rand = function() { + throw new Error("Not implemented yet"); + }; + } + } else { + try { + crypto = require_crypto(); + if (typeof crypto.randomBytes !== "function") + throw new Error("Not supported"); + Rand.prototype._rand = function _rand(n) { + return crypto.randomBytes(n); + }; + } catch (e) { + } + } + var crypto; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/base.js +var require_base = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/base.js"(exports, module) { + "use strict"; + var BN = require_bn(); + var utils = require_utils2(); + var getNAF = utils.getNAF; + var getJSF = utils.getJSF; + var assert = utils.assert; + function BaseCurve(type, conf) { + this.type = type; + this.p = new BN(conf.p, 16); + this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); + this.zero = new BN(0).toRed(this.red); + this.one = new BN(1).toRed(this.red); + this.two = new BN(2).toRed(this.red); + this.n = conf.n && new BN(conf.n, 16); + this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); + this._wnafT1 = new Array(4); + this._wnafT2 = new Array(4); + this._wnafT3 = new Array(4); + this._wnafT4 = new Array(4); + this._bitLength = this.n ? this.n.bitLength() : 0; + var adjustCount = this.n && this.p.div(this.n); + if (!adjustCount || adjustCount.cmpn(100) > 0) { + this.redN = null; + } else { + this._maxwellTrick = true; + this.redN = this.n.toRed(this.red); + } + } + module.exports = BaseCurve; + BaseCurve.prototype.point = function point() { + throw new Error("Not implemented"); + }; + BaseCurve.prototype.validate = function validate() { + throw new Error("Not implemented"); + }; + BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { + assert(p.precomputed); + var doubles = p._getDoubles(); + var naf = getNAF(k, 1, this._bitLength); + var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1); + I /= 3; + var repr = []; + var j; + var nafW; + for (j = 0; j < naf.length; j += doubles.step) { + nafW = 0; + for (var l = j + doubles.step - 1; l >= j; l--) + nafW = (nafW << 1) + naf[l]; + repr.push(nafW); + } + var a = this.jpoint(null, null, null); + var b = this.jpoint(null, null, null); + for (var i = I; i > 0; i--) { + for (j = 0; j < repr.length; j++) { + nafW = repr[j]; + if (nafW === i) + b = b.mixedAdd(doubles.points[j]); + else if (nafW === -i) + b = b.mixedAdd(doubles.points[j].neg()); + } + a = a.add(b); + } + return a.toP(); + }; + BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { + var w = 4; + var nafPoints = p._getNAFPoints(w); + w = nafPoints.wnd; + var wnd = nafPoints.points; + var naf = getNAF(k, w, this._bitLength); + var acc = this.jpoint(null, null, null); + for (var i = naf.length - 1; i >= 0; i--) { + for (var l = 0; i >= 0 && naf[i] === 0; i--) + l++; + if (i >= 0) + l++; + acc = acc.dblp(l); + if (i < 0) + break; + var z = naf[i]; + assert(z !== 0); + if (p.type === "affine") { + if (z > 0) + acc = acc.mixedAdd(wnd[z - 1 >> 1]); + else + acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg()); + } else { + if (z > 0) + acc = acc.add(wnd[z - 1 >> 1]); + else + acc = acc.add(wnd[-z - 1 >> 1].neg()); + } + } + return p.type === "affine" ? acc.toP() : acc; + }; + BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) { + var wndWidth = this._wnafT1; + var wnd = this._wnafT2; + var naf = this._wnafT3; + var max = 0; + var i; + var j; + var p; + for (i = 0; i < len; i++) { + p = points[i]; + var nafPoints = p._getNAFPoints(defW); + wndWidth[i] = nafPoints.wnd; + wnd[i] = nafPoints.points; + } + for (i = len - 1; i >= 1; i -= 2) { + var a = i - 1; + var b = i; + if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { + naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); + naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); + max = Math.max(naf[a].length, max); + max = Math.max(naf[b].length, max); + continue; + } + var comb = [ + points[a], + /* 1 */ + null, + /* 3 */ + null, + /* 5 */ + points[b] + /* 7 */ + ]; + if (points[a].y.cmp(points[b].y) === 0) { + comb[1] = points[a].add(points[b]); + comb[2] = points[a].toJ().mixedAdd(points[b].neg()); + } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { + comb[1] = points[a].toJ().mixedAdd(points[b]); + comb[2] = points[a].add(points[b].neg()); + } else { + comb[1] = points[a].toJ().mixedAdd(points[b]); + comb[2] = points[a].toJ().mixedAdd(points[b].neg()); + } + var index = [ + -3, + /* -1 -1 */ + -1, + /* -1 0 */ + -5, + /* -1 1 */ + -7, + /* 0 -1 */ + 0, + /* 0 0 */ + 7, + /* 0 1 */ + 5, + /* 1 -1 */ + 1, + /* 1 0 */ + 3 + /* 1 1 */ + ]; + var jsf = getJSF(coeffs[a], coeffs[b]); + max = Math.max(jsf[0].length, max); + naf[a] = new Array(max); + naf[b] = new Array(max); + for (j = 0; j < max; j++) { + var ja = jsf[0][j] | 0; + var jb = jsf[1][j] | 0; + naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; + naf[b][j] = 0; + wnd[a] = comb; + } + } + var acc = this.jpoint(null, null, null); + var tmp = this._wnafT4; + for (i = max; i >= 0; i--) { + var k = 0; + while (i >= 0) { + var zero = true; + for (j = 0; j < len; j++) { + tmp[j] = naf[j][i] | 0; + if (tmp[j] !== 0) + zero = false; + } + if (!zero) + break; + k++; + i--; + } + if (i >= 0) + k++; + acc = acc.dblp(k); + if (i < 0) + break; + for (j = 0; j < len; j++) { + var z = tmp[j]; + p; + if (z === 0) + continue; + else if (z > 0) + p = wnd[j][z - 1 >> 1]; + else if (z < 0) + p = wnd[j][-z - 1 >> 1].neg(); + if (p.type === "affine") + acc = acc.mixedAdd(p); + else + acc = acc.add(p); + } + } + for (i = 0; i < len; i++) + wnd[i] = null; + if (jacobianResult) + return acc; + else + return acc.toP(); + }; + function BasePoint(curve, type) { + this.curve = curve; + this.type = type; + this.precomputed = null; + } + BaseCurve.BasePoint = BasePoint; + BasePoint.prototype.eq = function eq() { + throw new Error("Not implemented"); + }; + BasePoint.prototype.validate = function validate() { + return this.curve.validate(this); + }; + BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { + bytes = utils.toArray(bytes, enc); + var len = this.p.byteLength(); + if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) { + if (bytes[0] === 6) + assert(bytes[bytes.length - 1] % 2 === 0); + else if (bytes[0] === 7) + assert(bytes[bytes.length - 1] % 2 === 1); + var res = this.point( + bytes.slice(1, 1 + len), + bytes.slice(1 + len, 1 + 2 * len) + ); + return res; + } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) { + return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3); + } + throw new Error("Unknown point format"); + }; + BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { + return this.encode(enc, true); + }; + BasePoint.prototype._encode = function _encode(compact) { + var len = this.curve.p.byteLength(); + var x = this.getX().toArray("be", len); + if (compact) + return [this.getY().isEven() ? 2 : 3].concat(x); + return [4].concat(x, this.getY().toArray("be", len)); + }; + BasePoint.prototype.encode = function encode(enc, compact) { + return utils.encode(this._encode(compact), enc); + }; + BasePoint.prototype.precompute = function precompute(power) { + if (this.precomputed) + return this; + var precomputed = { + doubles: null, + naf: null, + beta: null + }; + precomputed.naf = this._getNAFPoints(8); + precomputed.doubles = this._getDoubles(4, power); + precomputed.beta = this._getBeta(); + this.precomputed = precomputed; + return this; + }; + BasePoint.prototype._hasDoubles = function _hasDoubles(k) { + if (!this.precomputed) + return false; + var doubles = this.precomputed.doubles; + if (!doubles) + return false; + return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); + }; + BasePoint.prototype._getDoubles = function _getDoubles(step, power) { + if (this.precomputed && this.precomputed.doubles) + return this.precomputed.doubles; + var doubles = [this]; + var acc = this; + for (var i = 0; i < power; i += step) { + for (var j = 0; j < step; j++) + acc = acc.dbl(); + doubles.push(acc); + } + return { + step, + points: doubles + }; + }; + BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { + if (this.precomputed && this.precomputed.naf) + return this.precomputed.naf; + var res = [this]; + var max = (1 << wnd) - 1; + var dbl = max === 1 ? null : this.dbl(); + for (var i = 1; i < max; i++) + res[i] = res[i - 1].add(dbl); + return { + wnd, + points: res + }; + }; + BasePoint.prototype._getBeta = function _getBeta() { + return null; + }; + BasePoint.prototype.dblp = function dblp(k) { + var r = this; + for (var i = 0; i < k; i++) + r = r.dbl(); + return r; + }; + } +}); + +// node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS({ + "node_modules/inherits/inherits_browser.js"(exports, module) { + if (typeof Object.create === "function") { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; + } + } +}); + +// node_modules/elliptic/lib/elliptic/curve/short.js +var require_short = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/short.js"(exports, module) { + "use strict"; + var utils = require_utils2(); + var BN = require_bn(); + var inherits = require_inherits_browser(); + var Base = require_base(); + var assert = utils.assert; + function ShortCurve(conf) { + Base.call(this, "short", conf); + this.a = new BN(conf.a, 16).toRed(this.red); + this.b = new BN(conf.b, 16).toRed(this.red); + this.tinv = this.two.redInvm(); + this.zeroA = this.a.fromRed().cmpn(0) === 0; + this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; + this.endo = this._getEndomorphism(conf); + this._endoWnafT1 = new Array(4); + this._endoWnafT2 = new Array(4); + } + inherits(ShortCurve, Base); + module.exports = ShortCurve; + ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { + if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) + return; + var beta; + var lambda; + if (conf.beta) { + beta = new BN(conf.beta, 16).toRed(this.red); + } else { + var betas = this._getEndoRoots(this.p); + beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; + beta = beta.toRed(this.red); + } + if (conf.lambda) { + lambda = new BN(conf.lambda, 16); + } else { + var lambdas = this._getEndoRoots(this.n); + if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { + lambda = lambdas[0]; + } else { + lambda = lambdas[1]; + assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); + } + } + var basis; + if (conf.basis) { + basis = conf.basis.map(function(vec) { + return { + a: new BN(vec.a, 16), + b: new BN(vec.b, 16) + }; + }); + } else { + basis = this._getEndoBasis(lambda); + } + return { + beta, + lambda, + basis + }; + }; + ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { + var red = num === this.p ? this.red : BN.mont(num); + var tinv = new BN(2).toRed(red).redInvm(); + var ntinv = tinv.redNeg(); + var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); + var l1 = ntinv.redAdd(s).fromRed(); + var l2 = ntinv.redSub(s).fromRed(); + return [l1, l2]; + }; + ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { + var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); + var u = lambda; + var v = this.n.clone(); + var x1 = new BN(1); + var y1 = new BN(0); + var x2 = new BN(0); + var y2 = new BN(1); + var a0; + var b0; + var a1; + var b1; + var a2; + var b2; + var prevR; + var i = 0; + var r; + var x; + while (u.cmpn(0) !== 0) { + var q = v.div(u); + r = v.sub(q.mul(u)); + x = x2.sub(q.mul(x1)); + var y = y2.sub(q.mul(y1)); + if (!a1 && r.cmp(aprxSqrt) < 0) { + a0 = prevR.neg(); + b0 = x1; + a1 = r.neg(); + b1 = x; + } else if (a1 && ++i === 2) { + break; + } + prevR = r; + v = u; + u = r; + x2 = x1; + x1 = x; + y2 = y1; + y1 = y; + } + a2 = r.neg(); + b2 = x; + var len1 = a1.sqr().add(b1.sqr()); + var len2 = a2.sqr().add(b2.sqr()); + if (len2.cmp(len1) >= 0) { + a2 = a0; + b2 = b0; + } + if (a1.negative) { + a1 = a1.neg(); + b1 = b1.neg(); + } + if (a2.negative) { + a2 = a2.neg(); + b2 = b2.neg(); + } + return [ + { a: a1, b: b1 }, + { a: a2, b: b2 } + ]; + }; + ShortCurve.prototype._endoSplit = function _endoSplit(k) { + var basis = this.endo.basis; + var v1 = basis[0]; + var v2 = basis[1]; + var c1 = v2.b.mul(k).divRound(this.n); + var c2 = v1.b.neg().mul(k).divRound(this.n); + var p1 = c1.mul(v1.a); + var p2 = c2.mul(v2.a); + var q1 = c1.mul(v1.b); + var q2 = c2.mul(v2.b); + var k1 = k.sub(p1).sub(p2); + var k2 = q1.add(q2).neg(); + return { k1, k2 }; + }; + ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { + x = new BN(x, 16); + if (!x.red) + x = x.toRed(this.red); + var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); + var y = y2.redSqrt(); + if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) + throw new Error("invalid point"); + var isOdd = y.fromRed().isOdd(); + if (odd && !isOdd || !odd && isOdd) + y = y.redNeg(); + return this.point(x, y); + }; + ShortCurve.prototype.validate = function validate(point) { + if (point.inf) + return true; + var x = point.x; + var y = point.y; + var ax = this.a.redMul(x); + var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); + return y.redSqr().redISub(rhs).cmpn(0) === 0; + }; + ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) { + var npoints = this._endoWnafT1; + var ncoeffs = this._endoWnafT2; + for (var i = 0; i < points.length; i++) { + var split = this._endoSplit(coeffs[i]); + var p = points[i]; + var beta = p._getBeta(); + if (split.k1.negative) { + split.k1.ineg(); + p = p.neg(true); + } + if (split.k2.negative) { + split.k2.ineg(); + beta = beta.neg(true); + } + npoints[i * 2] = p; + npoints[i * 2 + 1] = beta; + ncoeffs[i * 2] = split.k1; + ncoeffs[i * 2 + 1] = split.k2; + } + var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); + for (var j = 0; j < i * 2; j++) { + npoints[j] = null; + ncoeffs[j] = null; + } + return res; + }; + function Point(curve, x, y, isRed) { + Base.BasePoint.call(this, curve, "affine"); + if (x === null && y === null) { + this.x = null; + this.y = null; + this.inf = true; + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + if (isRed) { + this.x.forceRed(this.curve.red); + this.y.forceRed(this.curve.red); + } + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + this.inf = false; + } + } + inherits(Point, Base.BasePoint); + ShortCurve.prototype.point = function point(x, y, isRed) { + return new Point(this, x, y, isRed); + }; + ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { + return Point.fromJSON(this, obj, red); + }; + Point.prototype._getBeta = function _getBeta() { + if (!this.curve.endo) + return; + var pre = this.precomputed; + if (pre && pre.beta) + return pre.beta; + var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); + if (pre) { + var curve = this.curve; + var endoMul = function(p) { + return curve.point(p.x.redMul(curve.endo.beta), p.y); + }; + pre.beta = beta; + beta.precomputed = { + beta: null, + naf: pre.naf && { + wnd: pre.naf.wnd, + points: pre.naf.points.map(endoMul) + }, + doubles: pre.doubles && { + step: pre.doubles.step, + points: pre.doubles.points.map(endoMul) + } + }; + } + return beta; + }; + Point.prototype.toJSON = function toJSON() { + if (!this.precomputed) + return [this.x, this.y]; + return [this.x, this.y, this.precomputed && { + doubles: this.precomputed.doubles && { + step: this.precomputed.doubles.step, + points: this.precomputed.doubles.points.slice(1) + }, + naf: this.precomputed.naf && { + wnd: this.precomputed.naf.wnd, + points: this.precomputed.naf.points.slice(1) + } + }]; + }; + Point.fromJSON = function fromJSON(curve, obj, red) { + if (typeof obj === "string") + obj = JSON.parse(obj); + var res = curve.point(obj[0], obj[1], red); + if (!obj[2]) + return res; + function obj2point(obj2) { + return curve.point(obj2[0], obj2[1], red); + } + var pre = obj[2]; + res.precomputed = { + beta: null, + doubles: pre.doubles && { + step: pre.doubles.step, + points: [res].concat(pre.doubles.points.map(obj2point)) + }, + naf: pre.naf && { + wnd: pre.naf.wnd, + points: [res].concat(pre.naf.points.map(obj2point)) + } + }; + return res; + }; + Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + Point.prototype.isInfinity = function isInfinity() { + return this.inf; + }; + Point.prototype.add = function add(p) { + if (this.inf) + return p; + if (p.inf) + return this; + if (this.eq(p)) + return this.dbl(); + if (this.neg().eq(p)) + return this.curve.point(null, null); + if (this.x.cmp(p.x) === 0) + return this.curve.point(null, null); + var c = this.y.redSub(p.y); + if (c.cmpn(0) !== 0) + c = c.redMul(this.x.redSub(p.x).redInvm()); + var nx = c.redSqr().redISub(this.x).redISub(p.x); + var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); + return this.curve.point(nx, ny); + }; + Point.prototype.dbl = function dbl() { + if (this.inf) + return this; + var ys1 = this.y.redAdd(this.y); + if (ys1.cmpn(0) === 0) + return this.curve.point(null, null); + var a = this.curve.a; + var x2 = this.x.redSqr(); + var dyinv = ys1.redInvm(); + var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); + var nx = c.redSqr().redISub(this.x.redAdd(this.x)); + var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); + return this.curve.point(nx, ny); + }; + Point.prototype.getX = function getX() { + return this.x.fromRed(); + }; + Point.prototype.getY = function getY() { + return this.y.fromRed(); + }; + Point.prototype.mul = function mul(k) { + k = new BN(k, 16); + if (this.isInfinity()) + return this; + else if (this._hasDoubles(k)) + return this.curve._fixedNafMul(this, k); + else if (this.curve.endo) + return this.curve._endoWnafMulAdd([this], [k]); + else + return this.curve._wnafMul(this, k); + }; + Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { + var points = [this, p2]; + var coeffs = [k1, k2]; + if (this.curve.endo) + return this.curve._endoWnafMulAdd(points, coeffs); + else + return this.curve._wnafMulAdd(1, points, coeffs, 2); + }; + Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { + var points = [this, p2]; + var coeffs = [k1, k2]; + if (this.curve.endo) + return this.curve._endoWnafMulAdd(points, coeffs, true); + else + return this.curve._wnafMulAdd(1, points, coeffs, 2, true); + }; + Point.prototype.eq = function eq(p) { + return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); + }; + Point.prototype.neg = function neg(_precompute) { + if (this.inf) + return this; + var res = this.curve.point(this.x, this.y.redNeg()); + if (_precompute && this.precomputed) { + var pre = this.precomputed; + var negate = function(p) { + return p.neg(); + }; + res.precomputed = { + naf: pre.naf && { + wnd: pre.naf.wnd, + points: pre.naf.points.map(negate) + }, + doubles: pre.doubles && { + step: pre.doubles.step, + points: pre.doubles.points.map(negate) + } + }; + } + return res; + }; + Point.prototype.toJ = function toJ() { + if (this.inf) + return this.curve.jpoint(null, null, null); + var res = this.curve.jpoint(this.x, this.y, this.curve.one); + return res; + }; + function JPoint(curve, x, y, z) { + Base.BasePoint.call(this, curve, "jacobian"); + if (x === null && y === null && z === null) { + this.x = this.curve.one; + this.y = this.curve.one; + this.z = new BN(0); + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + this.z = new BN(z, 16); + } + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + this.zOne = this.z === this.curve.one; + } + inherits(JPoint, Base.BasePoint); + ShortCurve.prototype.jpoint = function jpoint(x, y, z) { + return new JPoint(this, x, y, z); + }; + JPoint.prototype.toP = function toP() { + if (this.isInfinity()) + return this.curve.point(null, null); + var zinv = this.z.redInvm(); + var zinv2 = zinv.redSqr(); + var ax = this.x.redMul(zinv2); + var ay = this.y.redMul(zinv2).redMul(zinv); + return this.curve.point(ax, ay); + }; + JPoint.prototype.neg = function neg() { + return this.curve.jpoint(this.x, this.y.redNeg(), this.z); + }; + JPoint.prototype.add = function add(p) { + if (this.isInfinity()) + return p; + if (p.isInfinity()) + return this; + var pz2 = p.z.redSqr(); + var z2 = this.z.redSqr(); + var u1 = this.x.redMul(pz2); + var u2 = p.x.redMul(z2); + var s1 = this.y.redMul(pz2.redMul(p.z)); + var s2 = p.y.redMul(z2.redMul(this.z)); + var h = u1.redSub(u2); + var r = s1.redSub(s2); + if (h.cmpn(0) === 0) { + if (r.cmpn(0) !== 0) + return this.curve.jpoint(null, null, null); + else + return this.dbl(); + } + var h2 = h.redSqr(); + var h3 = h2.redMul(h); + var v = u1.redMul(h2); + var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); + var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); + var nz = this.z.redMul(p.z).redMul(h); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.mixedAdd = function mixedAdd(p) { + if (this.isInfinity()) + return p.toJ(); + if (p.isInfinity()) + return this; + var z2 = this.z.redSqr(); + var u1 = this.x; + var u2 = p.x.redMul(z2); + var s1 = this.y; + var s2 = p.y.redMul(z2).redMul(this.z); + var h = u1.redSub(u2); + var r = s1.redSub(s2); + if (h.cmpn(0) === 0) { + if (r.cmpn(0) !== 0) + return this.curve.jpoint(null, null, null); + else + return this.dbl(); + } + var h2 = h.redSqr(); + var h3 = h2.redMul(h); + var v = u1.redMul(h2); + var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); + var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); + var nz = this.z.redMul(h); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.dblp = function dblp(pow) { + if (pow === 0) + return this; + if (this.isInfinity()) + return this; + if (!pow) + return this.dbl(); + var i; + if (this.curve.zeroA || this.curve.threeA) { + var r = this; + for (i = 0; i < pow; i++) + r = r.dbl(); + return r; + } + var a = this.curve.a; + var tinv = this.curve.tinv; + var jx = this.x; + var jy = this.y; + var jz = this.z; + var jz4 = jz.redSqr().redSqr(); + var jyd = jy.redAdd(jy); + for (i = 0; i < pow; i++) { + var jx2 = jx.redSqr(); + var jyd2 = jyd.redSqr(); + var jyd4 = jyd2.redSqr(); + var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); + var t1 = jx.redMul(jyd2); + var nx = c.redSqr().redISub(t1.redAdd(t1)); + var t2 = t1.redISub(nx); + var dny = c.redMul(t2); + dny = dny.redIAdd(dny).redISub(jyd4); + var nz = jyd.redMul(jz); + if (i + 1 < pow) + jz4 = jz4.redMul(jyd4); + jx = nx; + jz = nz; + jyd = dny; + } + return this.curve.jpoint(jx, jyd.redMul(tinv), jz); + }; + JPoint.prototype.dbl = function dbl() { + if (this.isInfinity()) + return this; + if (this.curve.zeroA) + return this._zeroDbl(); + else if (this.curve.threeA) + return this._threeDbl(); + else + return this._dbl(); + }; + JPoint.prototype._zeroDbl = function _zeroDbl() { + var nx; + var ny; + var nz; + if (this.zOne) { + var xx = this.x.redSqr(); + var yy = this.y.redSqr(); + var yyyy = yy.redSqr(); + var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + s = s.redIAdd(s); + var m = xx.redAdd(xx).redIAdd(xx); + var t = m.redSqr().redISub(s).redISub(s); + var yyyy8 = yyyy.redIAdd(yyyy); + yyyy8 = yyyy8.redIAdd(yyyy8); + yyyy8 = yyyy8.redIAdd(yyyy8); + nx = t; + ny = m.redMul(s.redISub(t)).redISub(yyyy8); + nz = this.y.redAdd(this.y); + } else { + var a = this.x.redSqr(); + var b = this.y.redSqr(); + var c = b.redSqr(); + var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); + d = d.redIAdd(d); + var e = a.redAdd(a).redIAdd(a); + var f = e.redSqr(); + var c8 = c.redIAdd(c); + c8 = c8.redIAdd(c8); + c8 = c8.redIAdd(c8); + nx = f.redISub(d).redISub(d); + ny = e.redMul(d.redISub(nx)).redISub(c8); + nz = this.y.redMul(this.z); + nz = nz.redIAdd(nz); + } + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype._threeDbl = function _threeDbl() { + var nx; + var ny; + var nz; + if (this.zOne) { + var xx = this.x.redSqr(); + var yy = this.y.redSqr(); + var yyyy = yy.redSqr(); + var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + s = s.redIAdd(s); + var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); + var t = m.redSqr().redISub(s).redISub(s); + nx = t; + var yyyy8 = yyyy.redIAdd(yyyy); + yyyy8 = yyyy8.redIAdd(yyyy8); + yyyy8 = yyyy8.redIAdd(yyyy8); + ny = m.redMul(s.redISub(t)).redISub(yyyy8); + nz = this.y.redAdd(this.y); + } else { + var delta = this.z.redSqr(); + var gamma = this.y.redSqr(); + var beta = this.x.redMul(gamma); + var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); + alpha = alpha.redAdd(alpha).redIAdd(alpha); + var beta4 = beta.redIAdd(beta); + beta4 = beta4.redIAdd(beta4); + var beta8 = beta4.redAdd(beta4); + nx = alpha.redSqr().redISub(beta8); + nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); + var ggamma8 = gamma.redSqr(); + ggamma8 = ggamma8.redIAdd(ggamma8); + ggamma8 = ggamma8.redIAdd(ggamma8); + ggamma8 = ggamma8.redIAdd(ggamma8); + ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); + } + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype._dbl = function _dbl() { + var a = this.curve.a; + var jx = this.x; + var jy = this.y; + var jz = this.z; + var jz4 = jz.redSqr().redSqr(); + var jx2 = jx.redSqr(); + var jy2 = jy.redSqr(); + var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); + var jxd4 = jx.redAdd(jx); + jxd4 = jxd4.redIAdd(jxd4); + var t1 = jxd4.redMul(jy2); + var nx = c.redSqr().redISub(t1.redAdd(t1)); + var t2 = t1.redISub(nx); + var jyd8 = jy2.redSqr(); + jyd8 = jyd8.redIAdd(jyd8); + jyd8 = jyd8.redIAdd(jyd8); + jyd8 = jyd8.redIAdd(jyd8); + var ny = c.redMul(t2).redISub(jyd8); + var nz = jy.redAdd(jy).redMul(jz); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.trpl = function trpl() { + if (!this.curve.zeroA) + return this.dbl().add(this); + var xx = this.x.redSqr(); + var yy = this.y.redSqr(); + var zz = this.z.redSqr(); + var yyyy = yy.redSqr(); + var m = xx.redAdd(xx).redIAdd(xx); + var mm = m.redSqr(); + var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + e = e.redIAdd(e); + e = e.redAdd(e).redIAdd(e); + e = e.redISub(mm); + var ee = e.redSqr(); + var t = yyyy.redIAdd(yyyy); + t = t.redIAdd(t); + t = t.redIAdd(t); + t = t.redIAdd(t); + var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); + var yyu4 = yy.redMul(u); + yyu4 = yyu4.redIAdd(yyu4); + yyu4 = yyu4.redIAdd(yyu4); + var nx = this.x.redMul(ee).redISub(yyu4); + nx = nx.redIAdd(nx); + nx = nx.redIAdd(nx); + var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); + ny = ny.redIAdd(ny); + ny = ny.redIAdd(ny); + ny = ny.redIAdd(ny); + var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.mul = function mul(k, kbase) { + k = new BN(k, kbase); + return this.curve._wnafMul(this, k); + }; + JPoint.prototype.eq = function eq(p) { + if (p.type === "affine") + return this.eq(p.toJ()); + if (this === p) + return true; + var z2 = this.z.redSqr(); + var pz2 = p.z.redSqr(); + if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) + return false; + var z3 = z2.redMul(this.z); + var pz3 = pz2.redMul(p.z); + return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; + }; + JPoint.prototype.eqXToP = function eqXToP(x) { + var zs = this.z.redSqr(); + var rx = x.toRed(this.curve.red).redMul(zs); + if (this.x.cmp(rx) === 0) + return true; + var xc = x.clone(); + var t = this.curve.redN.redMul(zs); + for (; ; ) { + xc.iadd(this.curve.n); + if (xc.cmp(this.curve.p) >= 0) + return false; + rx.redIAdd(t); + if (this.x.cmp(rx) === 0) + return true; + } + }; + JPoint.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + JPoint.prototype.isInfinity = function isInfinity() { + return this.z.cmpn(0) === 0; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/mont.js +var require_mont = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/mont.js"(exports, module) { + "use strict"; + var BN = require_bn(); + var inherits = require_inherits_browser(); + var Base = require_base(); + var utils = require_utils2(); + function MontCurve(conf) { + Base.call(this, "mont", conf); + this.a = new BN(conf.a, 16).toRed(this.red); + this.b = new BN(conf.b, 16).toRed(this.red); + this.i4 = new BN(4).toRed(this.red).redInvm(); + this.two = new BN(2).toRed(this.red); + this.a24 = this.i4.redMul(this.a.redAdd(this.two)); + } + inherits(MontCurve, Base); + module.exports = MontCurve; + MontCurve.prototype.validate = function validate(point) { + var x = point.normalize().x; + var x2 = x.redSqr(); + var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); + var y = rhs.redSqrt(); + return y.redSqr().cmp(rhs) === 0; + }; + function Point(curve, x, z) { + Base.BasePoint.call(this, curve, "projective"); + if (x === null && z === null) { + this.x = this.curve.one; + this.z = this.curve.zero; + } else { + this.x = new BN(x, 16); + this.z = new BN(z, 16); + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + } + } + inherits(Point, Base.BasePoint); + MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { + return this.point(utils.toArray(bytes, enc), 1); + }; + MontCurve.prototype.point = function point(x, z) { + return new Point(this, x, z); + }; + MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { + return Point.fromJSON(this, obj); + }; + Point.prototype.precompute = function precompute() { + }; + Point.prototype._encode = function _encode() { + return this.getX().toArray("be", this.curve.p.byteLength()); + }; + Point.fromJSON = function fromJSON(curve, obj) { + return new Point(curve, obj[0], obj[1] || curve.one); + }; + Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + Point.prototype.isInfinity = function isInfinity() { + return this.z.cmpn(0) === 0; + }; + Point.prototype.dbl = function dbl() { + var a = this.x.redAdd(this.z); + var aa = a.redSqr(); + var b = this.x.redSub(this.z); + var bb = b.redSqr(); + var c = aa.redSub(bb); + var nx = aa.redMul(bb); + var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); + return this.curve.point(nx, nz); + }; + Point.prototype.add = function add() { + throw new Error("Not supported on Montgomery curve"); + }; + Point.prototype.diffAdd = function diffAdd(p, diff) { + var a = this.x.redAdd(this.z); + var b = this.x.redSub(this.z); + var c = p.x.redAdd(p.z); + var d = p.x.redSub(p.z); + var da = d.redMul(a); + var cb = c.redMul(b); + var nx = diff.z.redMul(da.redAdd(cb).redSqr()); + var nz = diff.x.redMul(da.redISub(cb).redSqr()); + return this.curve.point(nx, nz); + }; + Point.prototype.mul = function mul(k) { + var t = k.clone(); + var a = this; + var b = this.curve.point(null, null); + var c = this; + for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) + bits.push(t.andln(1)); + for (var i = bits.length - 1; i >= 0; i--) { + if (bits[i] === 0) { + a = a.diffAdd(b, c); + b = b.dbl(); + } else { + b = a.diffAdd(b, c); + a = a.dbl(); + } + } + return b; + }; + Point.prototype.mulAdd = function mulAdd() { + throw new Error("Not supported on Montgomery curve"); + }; + Point.prototype.jumlAdd = function jumlAdd() { + throw new Error("Not supported on Montgomery curve"); + }; + Point.prototype.eq = function eq(other) { + return this.getX().cmp(other.getX()) === 0; + }; + Point.prototype.normalize = function normalize() { + this.x = this.x.redMul(this.z.redInvm()); + this.z = this.curve.one; + return this; + }; + Point.prototype.getX = function getX() { + this.normalize(); + return this.x.fromRed(); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/edwards.js +var require_edwards = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/edwards.js"(exports, module) { + "use strict"; + var utils = require_utils2(); + var BN = require_bn(); + var inherits = require_inherits_browser(); + var Base = require_base(); + var assert = utils.assert; + function EdwardsCurve(conf) { + this.twisted = (conf.a | 0) !== 1; + this.mOneA = this.twisted && (conf.a | 0) === -1; + this.extended = this.mOneA; + Base.call(this, "edwards", conf); + this.a = new BN(conf.a, 16).umod(this.red.m); + this.a = this.a.toRed(this.red); + this.c = new BN(conf.c, 16).toRed(this.red); + this.c2 = this.c.redSqr(); + this.d = new BN(conf.d, 16).toRed(this.red); + this.dd = this.d.redAdd(this.d); + assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); + this.oneC = (conf.c | 0) === 1; + } + inherits(EdwardsCurve, Base); + module.exports = EdwardsCurve; + EdwardsCurve.prototype._mulA = function _mulA(num) { + if (this.mOneA) + return num.redNeg(); + else + return this.a.redMul(num); + }; + EdwardsCurve.prototype._mulC = function _mulC(num) { + if (this.oneC) + return num; + else + return this.c.redMul(num); + }; + EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { + return this.point(x, y, z, t); + }; + EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { + x = new BN(x, 16); + if (!x.red) + x = x.toRed(this.red); + var x2 = x.redSqr(); + var rhs = this.c2.redSub(this.a.redMul(x2)); + var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); + var y2 = rhs.redMul(lhs.redInvm()); + var y = y2.redSqrt(); + if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) + throw new Error("invalid point"); + var isOdd = y.fromRed().isOdd(); + if (odd && !isOdd || !odd && isOdd) + y = y.redNeg(); + return this.point(x, y); + }; + EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { + y = new BN(y, 16); + if (!y.red) + y = y.toRed(this.red); + var y2 = y.redSqr(); + var lhs = y2.redSub(this.c2); + var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); + var x2 = lhs.redMul(rhs.redInvm()); + if (x2.cmp(this.zero) === 0) { + if (odd) + throw new Error("invalid point"); + else + return this.point(this.zero, y); + } + var x = x2.redSqrt(); + if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) + throw new Error("invalid point"); + if (x.fromRed().isOdd() !== odd) + x = x.redNeg(); + return this.point(x, y); + }; + EdwardsCurve.prototype.validate = function validate(point) { + if (point.isInfinity()) + return true; + point.normalize(); + var x2 = point.x.redSqr(); + var y2 = point.y.redSqr(); + var lhs = x2.redMul(this.a).redAdd(y2); + var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); + return lhs.cmp(rhs) === 0; + }; + function Point(curve, x, y, z, t) { + Base.BasePoint.call(this, curve, "projective"); + if (x === null && y === null && z === null) { + this.x = this.curve.zero; + this.y = this.curve.one; + this.z = this.curve.one; + this.t = this.curve.zero; + this.zOne = true; + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + this.z = z ? new BN(z, 16) : this.curve.one; + this.t = t && new BN(t, 16); + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + if (this.t && !this.t.red) + this.t = this.t.toRed(this.curve.red); + this.zOne = this.z === this.curve.one; + if (this.curve.extended && !this.t) { + this.t = this.x.redMul(this.y); + if (!this.zOne) + this.t = this.t.redMul(this.z.redInvm()); + } + } + } + inherits(Point, Base.BasePoint); + EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { + return Point.fromJSON(this, obj); + }; + EdwardsCurve.prototype.point = function point(x, y, z, t) { + return new Point(this, x, y, z, t); + }; + Point.fromJSON = function fromJSON(curve, obj) { + return new Point(curve, obj[0], obj[1], obj[2]); + }; + Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + Point.prototype.isInfinity = function isInfinity() { + return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0); + }; + Point.prototype._extDbl = function _extDbl() { + var a = this.x.redSqr(); + var b = this.y.redSqr(); + var c = this.z.redSqr(); + c = c.redIAdd(c); + var d = this.curve._mulA(a); + var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); + var g = d.redAdd(b); + var f = g.redSub(c); + var h = d.redSub(b); + var nx = e.redMul(f); + var ny = g.redMul(h); + var nt = e.redMul(h); + var nz = f.redMul(g); + return this.curve.point(nx, ny, nz, nt); + }; + Point.prototype._projDbl = function _projDbl() { + var b = this.x.redAdd(this.y).redSqr(); + var c = this.x.redSqr(); + var d = this.y.redSqr(); + var nx; + var ny; + var nz; + var e; + var h; + var j; + if (this.curve.twisted) { + e = this.curve._mulA(c); + var f = e.redAdd(d); + if (this.zOne) { + nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); + ny = f.redMul(e.redSub(d)); + nz = f.redSqr().redSub(f).redSub(f); + } else { + h = this.z.redSqr(); + j = f.redSub(h).redISub(h); + nx = b.redSub(c).redISub(d).redMul(j); + ny = f.redMul(e.redSub(d)); + nz = f.redMul(j); + } + } else { + e = c.redAdd(d); + h = this.curve._mulC(this.z).redSqr(); + j = e.redSub(h).redSub(h); + nx = this.curve._mulC(b.redISub(e)).redMul(j); + ny = this.curve._mulC(e).redMul(c.redISub(d)); + nz = e.redMul(j); + } + return this.curve.point(nx, ny, nz); + }; + Point.prototype.dbl = function dbl() { + if (this.isInfinity()) + return this; + if (this.curve.extended) + return this._extDbl(); + else + return this._projDbl(); + }; + Point.prototype._extAdd = function _extAdd(p) { + var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); + var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); + var c = this.t.redMul(this.curve.dd).redMul(p.t); + var d = this.z.redMul(p.z.redAdd(p.z)); + var e = b.redSub(a); + var f = d.redSub(c); + var g = d.redAdd(c); + var h = b.redAdd(a); + var nx = e.redMul(f); + var ny = g.redMul(h); + var nt = e.redMul(h); + var nz = f.redMul(g); + return this.curve.point(nx, ny, nz, nt); + }; + Point.prototype._projAdd = function _projAdd(p) { + var a = this.z.redMul(p.z); + var b = a.redSqr(); + var c = this.x.redMul(p.x); + var d = this.y.redMul(p.y); + var e = this.curve.d.redMul(c).redMul(d); + var f = b.redSub(e); + var g = b.redAdd(e); + var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); + var nx = a.redMul(f).redMul(tmp); + var ny; + var nz; + if (this.curve.twisted) { + ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); + nz = f.redMul(g); + } else { + ny = a.redMul(g).redMul(d.redSub(c)); + nz = this.curve._mulC(f).redMul(g); + } + return this.curve.point(nx, ny, nz); + }; + Point.prototype.add = function add(p) { + if (this.isInfinity()) + return p; + if (p.isInfinity()) + return this; + if (this.curve.extended) + return this._extAdd(p); + else + return this._projAdd(p); + }; + Point.prototype.mul = function mul(k) { + if (this._hasDoubles(k)) + return this.curve._fixedNafMul(this, k); + else + return this.curve._wnafMul(this, k); + }; + Point.prototype.mulAdd = function mulAdd(k1, p, k2) { + return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false); + }; + Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { + return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true); + }; + Point.prototype.normalize = function normalize() { + if (this.zOne) + return this; + var zi = this.z.redInvm(); + this.x = this.x.redMul(zi); + this.y = this.y.redMul(zi); + if (this.t) + this.t = this.t.redMul(zi); + this.z = this.curve.one; + this.zOne = true; + return this; + }; + Point.prototype.neg = function neg() { + return this.curve.point( + this.x.redNeg(), + this.y, + this.z, + this.t && this.t.redNeg() + ); + }; + Point.prototype.getX = function getX() { + this.normalize(); + return this.x.fromRed(); + }; + Point.prototype.getY = function getY() { + this.normalize(); + return this.y.fromRed(); + }; + Point.prototype.eq = function eq(other) { + return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0; + }; + Point.prototype.eqXToP = function eqXToP(x) { + var rx = x.toRed(this.curve.red).redMul(this.z); + if (this.x.cmp(rx) === 0) + return true; + var xc = x.clone(); + var t = this.curve.redN.redMul(this.z); + for (; ; ) { + xc.iadd(this.curve.n); + if (xc.cmp(this.curve.p) >= 0) + return false; + rx.redIAdd(t); + if (this.x.cmp(rx) === 0) + return true; + } + }; + Point.prototype.toP = Point.prototype.normalize; + Point.prototype.mixedAdd = Point.prototype.add; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/index.js +var require_curve = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/index.js"(exports) { + "use strict"; + var curve = exports; + curve.base = require_base(); + curve.short = require_short(); + curve.mont = require_mont(); + curve.edwards = require_edwards(); + } +}); + +// node_modules/hash.js/lib/hash/utils.js +var require_utils3 = __commonJS({ + "node_modules/hash.js/lib/hash/utils.js"(exports) { + "use strict"; + var assert = require_minimalistic_assert(); + var inherits = require_inherits_browser(); + exports.inherits = inherits; + function isSurrogatePair(msg, i) { + if ((msg.charCodeAt(i) & 64512) !== 55296) { + return false; + } + if (i < 0 || i + 1 >= msg.length) { + return false; + } + return (msg.charCodeAt(i + 1) & 64512) === 56320; + } + function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg === "string") { + if (!enc) { + var p = 0; + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + if (c < 128) { + res[p++] = c; + } else if (c < 2048) { + res[p++] = c >> 6 | 192; + res[p++] = c & 63 | 128; + } else if (isSurrogatePair(msg, i)) { + c = 65536 + ((c & 1023) << 10) + (msg.charCodeAt(++i) & 1023); + res[p++] = c >> 18 | 240; + res[p++] = c >> 12 & 63 | 128; + res[p++] = c >> 6 & 63 | 128; + res[p++] = c & 63 | 128; + } else { + res[p++] = c >> 12 | 224; + res[p++] = c >> 6 & 63 | 128; + res[p++] = c & 63 | 128; + } + } + } else if (enc === "hex") { + msg = msg.replace(/[^a-z0-9]+/ig, ""); + if (msg.length % 2 !== 0) + msg = "0" + msg; + for (i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } + } else { + for (i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + } + return res; + } + exports.toArray = toArray; + function toHex(msg) { + var res = ""; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; + } + exports.toHex = toHex; + function htonl(w) { + var res = w >>> 24 | w >>> 8 & 65280 | w << 8 & 16711680 | (w & 255) << 24; + return res >>> 0; + } + exports.htonl = htonl; + function toHex32(msg, endian) { + var res = ""; + for (var i = 0; i < msg.length; i++) { + var w = msg[i]; + if (endian === "little") + w = htonl(w); + res += zero8(w.toString(16)); + } + return res; + } + exports.toHex32 = toHex32; + function zero2(word) { + if (word.length === 1) + return "0" + word; + else + return word; + } + exports.zero2 = zero2; + function zero8(word) { + if (word.length === 7) + return "0" + word; + else if (word.length === 6) + return "00" + word; + else if (word.length === 5) + return "000" + word; + else if (word.length === 4) + return "0000" + word; + else if (word.length === 3) + return "00000" + word; + else if (word.length === 2) + return "000000" + word; + else if (word.length === 1) + return "0000000" + word; + else + return word; + } + exports.zero8 = zero8; + function join32(msg, start, end, endian) { + var len = end - start; + assert(len % 4 === 0); + var res = new Array(len / 4); + for (var i = 0, k = start; i < res.length; i++, k += 4) { + var w; + if (endian === "big") + w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3]; + else + w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k]; + res[i] = w >>> 0; + } + return res; + } + exports.join32 = join32; + function split32(msg, endian) { + var res = new Array(msg.length * 4); + for (var i = 0, k = 0; i < msg.length; i++, k += 4) { + var m = msg[i]; + if (endian === "big") { + res[k] = m >>> 24; + res[k + 1] = m >>> 16 & 255; + res[k + 2] = m >>> 8 & 255; + res[k + 3] = m & 255; + } else { + res[k + 3] = m >>> 24; + res[k + 2] = m >>> 16 & 255; + res[k + 1] = m >>> 8 & 255; + res[k] = m & 255; + } + } + return res; + } + exports.split32 = split32; + function rotr32(w, b) { + return w >>> b | w << 32 - b; + } + exports.rotr32 = rotr32; + function rotl32(w, b) { + return w << b | w >>> 32 - b; + } + exports.rotl32 = rotl32; + function sum32(a, b) { + return a + b >>> 0; + } + exports.sum32 = sum32; + function sum32_3(a, b, c) { + return a + b + c >>> 0; + } + exports.sum32_3 = sum32_3; + function sum32_4(a, b, c, d) { + return a + b + c + d >>> 0; + } + exports.sum32_4 = sum32_4; + function sum32_5(a, b, c, d, e) { + return a + b + c + d + e >>> 0; + } + exports.sum32_5 = sum32_5; + function sum64(buf, pos, ah, al) { + var bh = buf[pos]; + var bl = buf[pos + 1]; + var lo = al + bl >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + buf[pos] = hi >>> 0; + buf[pos + 1] = lo; + } + exports.sum64 = sum64; + function sum64_hi(ah, al, bh, bl) { + var lo = al + bl >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + return hi >>> 0; + } + exports.sum64_hi = sum64_hi; + function sum64_lo(ah, al, bh, bl) { + var lo = al + bl; + return lo >>> 0; + } + exports.sum64_lo = sum64_lo; + function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { + var carry = 0; + var lo = al; + lo = lo + bl >>> 0; + carry += lo < al ? 1 : 0; + lo = lo + cl >>> 0; + carry += lo < cl ? 1 : 0; + lo = lo + dl >>> 0; + carry += lo < dl ? 1 : 0; + var hi = ah + bh + ch + dh + carry; + return hi >>> 0; + } + exports.sum64_4_hi = sum64_4_hi; + function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { + var lo = al + bl + cl + dl; + return lo >>> 0; + } + exports.sum64_4_lo = sum64_4_lo; + function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var carry = 0; + var lo = al; + lo = lo + bl >>> 0; + carry += lo < al ? 1 : 0; + lo = lo + cl >>> 0; + carry += lo < cl ? 1 : 0; + lo = lo + dl >>> 0; + carry += lo < dl ? 1 : 0; + lo = lo + el >>> 0; + carry += lo < el ? 1 : 0; + var hi = ah + bh + ch + dh + eh + carry; + return hi >>> 0; + } + exports.sum64_5_hi = sum64_5_hi; + function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var lo = al + bl + cl + dl + el; + return lo >>> 0; + } + exports.sum64_5_lo = sum64_5_lo; + function rotr64_hi(ah, al, num) { + var r = al << 32 - num | ah >>> num; + return r >>> 0; + } + exports.rotr64_hi = rotr64_hi; + function rotr64_lo(ah, al, num) { + var r = ah << 32 - num | al >>> num; + return r >>> 0; + } + exports.rotr64_lo = rotr64_lo; + function shr64_hi(ah, al, num) { + return ah >>> num; + } + exports.shr64_hi = shr64_hi; + function shr64_lo(ah, al, num) { + var r = ah << 32 - num | al >>> num; + return r >>> 0; + } + exports.shr64_lo = shr64_lo; + } +}); + +// node_modules/hash.js/lib/hash/common.js +var require_common = __commonJS({ + "node_modules/hash.js/lib/hash/common.js"(exports) { + "use strict"; + var utils = require_utils3(); + var assert = require_minimalistic_assert(); + function BlockHash() { + this.pending = null; + this.pendingTotal = 0; + this.blockSize = this.constructor.blockSize; + this.outSize = this.constructor.outSize; + this.hmacStrength = this.constructor.hmacStrength; + this.padLength = this.constructor.padLength / 8; + this.endian = "big"; + this._delta8 = this.blockSize / 8; + this._delta32 = this.blockSize / 32; + } + exports.BlockHash = BlockHash; + BlockHash.prototype.update = function update(msg, enc) { + msg = utils.toArray(msg, enc); + if (!this.pending) + this.pending = msg; + else + this.pending = this.pending.concat(msg); + this.pendingTotal += msg.length; + if (this.pending.length >= this._delta8) { + msg = this.pending; + var r = msg.length % this._delta8; + this.pending = msg.slice(msg.length - r, msg.length); + if (this.pending.length === 0) + this.pending = null; + msg = utils.join32(msg, 0, msg.length - r, this.endian); + for (var i = 0; i < msg.length; i += this._delta32) + this._update(msg, i, i + this._delta32); + } + return this; + }; + BlockHash.prototype.digest = function digest(enc) { + this.update(this._pad()); + assert(this.pending === null); + return this._digest(enc); + }; + BlockHash.prototype._pad = function pad() { + var len = this.pendingTotal; + var bytes = this._delta8; + var k = bytes - (len + this.padLength) % bytes; + var res = new Array(k + this.padLength); + res[0] = 128; + for (var i = 1; i < k; i++) + res[i] = 0; + len <<= 3; + if (this.endian === "big") { + for (var t = 8; t < this.padLength; t++) + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = len >>> 24 & 255; + res[i++] = len >>> 16 & 255; + res[i++] = len >>> 8 & 255; + res[i++] = len & 255; + } else { + res[i++] = len & 255; + res[i++] = len >>> 8 & 255; + res[i++] = len >>> 16 & 255; + res[i++] = len >>> 24 & 255; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + for (t = 8; t < this.padLength; t++) + res[i++] = 0; + } + return res; + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/common.js +var require_common2 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/common.js"(exports) { + "use strict"; + var utils = require_utils3(); + var rotr32 = utils.rotr32; + function ft_1(s, x, y, z) { + if (s === 0) + return ch32(x, y, z); + if (s === 1 || s === 3) + return p32(x, y, z); + if (s === 2) + return maj32(x, y, z); + } + exports.ft_1 = ft_1; + function ch32(x, y, z) { + return x & y ^ ~x & z; + } + exports.ch32 = ch32; + function maj32(x, y, z) { + return x & y ^ x & z ^ y & z; + } + exports.maj32 = maj32; + function p32(x, y, z) { + return x ^ y ^ z; + } + exports.p32 = p32; + function s0_256(x) { + return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); + } + exports.s0_256 = s0_256; + function s1_256(x) { + return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); + } + exports.s1_256 = s1_256; + function g0_256(x) { + return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3; + } + exports.g0_256 = g0_256; + function g1_256(x) { + return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10; + } + exports.g1_256 = g1_256; + } +}); + +// node_modules/hash.js/lib/hash/sha/1.js +var require__ = __commonJS({ + "node_modules/hash.js/lib/hash/sha/1.js"(exports, module) { + "use strict"; + var utils = require_utils3(); + var common = require_common(); + var shaCommon = require_common2(); + var rotl32 = utils.rotl32; + var sum32 = utils.sum32; + var sum32_5 = utils.sum32_5; + var ft_1 = shaCommon.ft_1; + var BlockHash = common.BlockHash; + var sha1_K = [ + 1518500249, + 1859775393, + 2400959708, + 3395469782 + ]; + function SHA1() { + if (!(this instanceof SHA1)) + return new SHA1(); + BlockHash.call(this); + this.h = [ + 1732584193, + 4023233417, + 2562383102, + 271733878, + 3285377520 + ]; + this.W = new Array(80); + } + utils.inherits(SHA1, BlockHash); + module.exports = SHA1; + SHA1.blockSize = 512; + SHA1.outSize = 160; + SHA1.hmacStrength = 80; + SHA1.padLength = 64; + SHA1.prototype._update = function _update(msg, start) { + var W = this.W; + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + for (; i < W.length; i++) + W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + for (i = 0; i < W.length; i++) { + var s = ~~(i / 20); + var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); + e = d; + d = c; + c = rotl32(b, 30); + b = a; + a = t; + } + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); + }; + SHA1.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "big"); + else + return utils.split32(this.h, "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/256.js +var require__2 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/256.js"(exports, module) { + "use strict"; + var utils = require_utils3(); + var common = require_common(); + var shaCommon = require_common2(); + var assert = require_minimalistic_assert(); + var sum32 = utils.sum32; + var sum32_4 = utils.sum32_4; + var sum32_5 = utils.sum32_5; + var ch32 = shaCommon.ch32; + var maj32 = shaCommon.maj32; + var s0_256 = shaCommon.s0_256; + var s1_256 = shaCommon.s1_256; + var g0_256 = shaCommon.g0_256; + var g1_256 = shaCommon.g1_256; + var BlockHash = common.BlockHash; + var sha256_K = [ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]; + function SHA256() { + if (!(this instanceof SHA256)) + return new SHA256(); + BlockHash.call(this); + this.h = [ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]; + this.k = sha256_K; + this.W = new Array(64); + } + utils.inherits(SHA256, BlockHash); + module.exports = SHA256; + SHA256.blockSize = 512; + SHA256.outSize = 256; + SHA256.hmacStrength = 192; + SHA256.padLength = 64; + SHA256.prototype._update = function _update(msg, start) { + var W = this.W; + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + for (; i < W.length; i++) + W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + var f = this.h[5]; + var g = this.h[6]; + var h = this.h[7]; + assert(this.k.length === W.length); + for (i = 0; i < W.length; i++) { + var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); + var T2 = sum32(s0_256(a), maj32(a, b, c)); + h = g; + g = f; + f = e; + e = sum32(d, T1); + d = c; + c = b; + b = a; + a = sum32(T1, T2); + } + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); + this.h[5] = sum32(this.h[5], f); + this.h[6] = sum32(this.h[6], g); + this.h[7] = sum32(this.h[7], h); + }; + SHA256.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "big"); + else + return utils.split32(this.h, "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/224.js +var require__3 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/224.js"(exports, module) { + "use strict"; + var utils = require_utils3(); + var SHA256 = require__2(); + function SHA224() { + if (!(this instanceof SHA224)) + return new SHA224(); + SHA256.call(this); + this.h = [ + 3238371032, + 914150663, + 812702999, + 4144912697, + 4290775857, + 1750603025, + 1694076839, + 3204075428 + ]; + } + utils.inherits(SHA224, SHA256); + module.exports = SHA224; + SHA224.blockSize = 512; + SHA224.outSize = 224; + SHA224.hmacStrength = 192; + SHA224.padLength = 64; + SHA224.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h.slice(0, 7), "big"); + else + return utils.split32(this.h.slice(0, 7), "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/512.js +var require__4 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/512.js"(exports, module) { + "use strict"; + var utils = require_utils3(); + var common = require_common(); + var assert = require_minimalistic_assert(); + var rotr64_hi = utils.rotr64_hi; + var rotr64_lo = utils.rotr64_lo; + var shr64_hi = utils.shr64_hi; + var shr64_lo = utils.shr64_lo; + var sum64 = utils.sum64; + var sum64_hi = utils.sum64_hi; + var sum64_lo = utils.sum64_lo; + var sum64_4_hi = utils.sum64_4_hi; + var sum64_4_lo = utils.sum64_4_lo; + var sum64_5_hi = utils.sum64_5_hi; + var sum64_5_lo = utils.sum64_5_lo; + var BlockHash = common.BlockHash; + var sha512_K = [ + 1116352408, + 3609767458, + 1899447441, + 602891725, + 3049323471, + 3964484399, + 3921009573, + 2173295548, + 961987163, + 4081628472, + 1508970993, + 3053834265, + 2453635748, + 2937671579, + 2870763221, + 3664609560, + 3624381080, + 2734883394, + 310598401, + 1164996542, + 607225278, + 1323610764, + 1426881987, + 3590304994, + 1925078388, + 4068182383, + 2162078206, + 991336113, + 2614888103, + 633803317, + 3248222580, + 3479774868, + 3835390401, + 2666613458, + 4022224774, + 944711139, + 264347078, + 2341262773, + 604807628, + 2007800933, + 770255983, + 1495990901, + 1249150122, + 1856431235, + 1555081692, + 3175218132, + 1996064986, + 2198950837, + 2554220882, + 3999719339, + 2821834349, + 766784016, + 2952996808, + 2566594879, + 3210313671, + 3203337956, + 3336571891, + 1034457026, + 3584528711, + 2466948901, + 113926993, + 3758326383, + 338241895, + 168717936, + 666307205, + 1188179964, + 773529912, + 1546045734, + 1294757372, + 1522805485, + 1396182291, + 2643833823, + 1695183700, + 2343527390, + 1986661051, + 1014477480, + 2177026350, + 1206759142, + 2456956037, + 344077627, + 2730485921, + 1290863460, + 2820302411, + 3158454273, + 3259730800, + 3505952657, + 3345764771, + 106217008, + 3516065817, + 3606008344, + 3600352804, + 1432725776, + 4094571909, + 1467031594, + 275423344, + 851169720, + 430227734, + 3100823752, + 506948616, + 1363258195, + 659060556, + 3750685593, + 883997877, + 3785050280, + 958139571, + 3318307427, + 1322822218, + 3812723403, + 1537002063, + 2003034995, + 1747873779, + 3602036899, + 1955562222, + 1575990012, + 2024104815, + 1125592928, + 2227730452, + 2716904306, + 2361852424, + 442776044, + 2428436474, + 593698344, + 2756734187, + 3733110249, + 3204031479, + 2999351573, + 3329325298, + 3815920427, + 3391569614, + 3928383900, + 3515267271, + 566280711, + 3940187606, + 3454069534, + 4118630271, + 4000239992, + 116418474, + 1914138554, + 174292421, + 2731055270, + 289380356, + 3203993006, + 460393269, + 320620315, + 685471733, + 587496836, + 852142971, + 1086792851, + 1017036298, + 365543100, + 1126000580, + 2618297676, + 1288033470, + 3409855158, + 1501505948, + 4234509866, + 1607167915, + 987167468, + 1816402316, + 1246189591 + ]; + function SHA512() { + if (!(this instanceof SHA512)) + return new SHA512(); + BlockHash.call(this); + this.h = [ + 1779033703, + 4089235720, + 3144134277, + 2227873595, + 1013904242, + 4271175723, + 2773480762, + 1595750129, + 1359893119, + 2917565137, + 2600822924, + 725511199, + 528734635, + 4215389547, + 1541459225, + 327033209 + ]; + this.k = sha512_K; + this.W = new Array(160); + } + utils.inherits(SHA512, BlockHash); + module.exports = SHA512; + SHA512.blockSize = 1024; + SHA512.outSize = 512; + SHA512.hmacStrength = 192; + SHA512.padLength = 128; + SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { + var W = this.W; + for (var i = 0; i < 32; i++) + W[i] = msg[start + i]; + for (; i < W.length; i += 2) { + var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); + var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); + var c1_hi = W[i - 14]; + var c1_lo = W[i - 13]; + var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); + var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); + var c3_hi = W[i - 32]; + var c3_lo = W[i - 31]; + W[i] = sum64_4_hi( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo + ); + W[i + 1] = sum64_4_lo( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo + ); + } + }; + SHA512.prototype._update = function _update(msg, start) { + this._prepareBlock(msg, start); + var W = this.W; + var ah = this.h[0]; + var al = this.h[1]; + var bh = this.h[2]; + var bl = this.h[3]; + var ch = this.h[4]; + var cl = this.h[5]; + var dh = this.h[6]; + var dl = this.h[7]; + var eh = this.h[8]; + var el = this.h[9]; + var fh = this.h[10]; + var fl = this.h[11]; + var gh = this.h[12]; + var gl = this.h[13]; + var hh = this.h[14]; + var hl = this.h[15]; + assert(this.k.length === W.length); + for (var i = 0; i < W.length; i += 2) { + var c0_hi = hh; + var c0_lo = hl; + var c1_hi = s1_512_hi(eh, el); + var c1_lo = s1_512_lo(eh, el); + var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); + var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); + var c3_hi = this.k[i]; + var c3_lo = this.k[i + 1]; + var c4_hi = W[i]; + var c4_lo = W[i + 1]; + var T1_hi = sum64_5_hi( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo, + c4_hi, + c4_lo + ); + var T1_lo = sum64_5_lo( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo, + c4_hi, + c4_lo + ); + c0_hi = s0_512_hi(ah, al); + c0_lo = s0_512_lo(ah, al); + c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); + c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); + var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); + var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + eh = sum64_hi(dh, dl, T1_hi, T1_lo); + el = sum64_lo(dl, dl, T1_hi, T1_lo); + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); + al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); + } + sum64(this.h, 0, ah, al); + sum64(this.h, 2, bh, bl); + sum64(this.h, 4, ch, cl); + sum64(this.h, 6, dh, dl); + sum64(this.h, 8, eh, el); + sum64(this.h, 10, fh, fl); + sum64(this.h, 12, gh, gl); + sum64(this.h, 14, hh, hl); + }; + SHA512.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "big"); + else + return utils.split32(this.h, "big"); + }; + function ch64_hi(xh, xl, yh, yl, zh) { + var r = xh & yh ^ ~xh & zh; + if (r < 0) + r += 4294967296; + return r; + } + function ch64_lo(xh, xl, yh, yl, zh, zl) { + var r = xl & yl ^ ~xl & zl; + if (r < 0) + r += 4294967296; + return r; + } + function maj64_hi(xh, xl, yh, yl, zh) { + var r = xh & yh ^ xh & zh ^ yh & zh; + if (r < 0) + r += 4294967296; + return r; + } + function maj64_lo(xh, xl, yh, yl, zh, zl) { + var r = xl & yl ^ xl & zl ^ yl & zl; + if (r < 0) + r += 4294967296; + return r; + } + function s0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 28); + var c1_hi = rotr64_hi(xl, xh, 2); + var c2_hi = rotr64_hi(xl, xh, 7); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function s0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 28); + var c1_lo = rotr64_lo(xl, xh, 2); + var c2_lo = rotr64_lo(xl, xh, 7); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + function s1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 14); + var c1_hi = rotr64_hi(xh, xl, 18); + var c2_hi = rotr64_hi(xl, xh, 9); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function s1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 14); + var c1_lo = rotr64_lo(xh, xl, 18); + var c2_lo = rotr64_lo(xl, xh, 9); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + function g0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 1); + var c1_hi = rotr64_hi(xh, xl, 8); + var c2_hi = shr64_hi(xh, xl, 7); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function g0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 1); + var c1_lo = rotr64_lo(xh, xl, 8); + var c2_lo = shr64_lo(xh, xl, 7); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + function g1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 19); + var c1_hi = rotr64_hi(xl, xh, 29); + var c2_hi = shr64_hi(xh, xl, 6); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function g1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 19); + var c1_lo = rotr64_lo(xl, xh, 29); + var c2_lo = shr64_lo(xh, xl, 6); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + } +}); + +// node_modules/hash.js/lib/hash/sha/384.js +var require__5 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/384.js"(exports, module) { + "use strict"; + var utils = require_utils3(); + var SHA512 = require__4(); + function SHA384() { + if (!(this instanceof SHA384)) + return new SHA384(); + SHA512.call(this); + this.h = [ + 3418070365, + 3238371032, + 1654270250, + 914150663, + 2438529370, + 812702999, + 355462360, + 4144912697, + 1731405415, + 4290775857, + 2394180231, + 1750603025, + 3675008525, + 1694076839, + 1203062813, + 3204075428 + ]; + } + utils.inherits(SHA384, SHA512); + module.exports = SHA384; + SHA384.blockSize = 1024; + SHA384.outSize = 384; + SHA384.hmacStrength = 192; + SHA384.padLength = 128; + SHA384.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h.slice(0, 12), "big"); + else + return utils.split32(this.h.slice(0, 12), "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha.js +var require_sha = __commonJS({ + "node_modules/hash.js/lib/hash/sha.js"(exports) { + "use strict"; + exports.sha1 = require__(); + exports.sha224 = require__3(); + exports.sha256 = require__2(); + exports.sha384 = require__5(); + exports.sha512 = require__4(); + } +}); + +// node_modules/hash.js/lib/hash/ripemd.js +var require_ripemd = __commonJS({ + "node_modules/hash.js/lib/hash/ripemd.js"(exports) { + "use strict"; + var utils = require_utils3(); + var common = require_common(); + var rotl32 = utils.rotl32; + var sum32 = utils.sum32; + var sum32_3 = utils.sum32_3; + var sum32_4 = utils.sum32_4; + var BlockHash = common.BlockHash; + function RIPEMD160() { + if (!(this instanceof RIPEMD160)) + return new RIPEMD160(); + BlockHash.call(this); + this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + this.endian = "little"; + } + utils.inherits(RIPEMD160, BlockHash); + exports.ripemd160 = RIPEMD160; + RIPEMD160.blockSize = 512; + RIPEMD160.outSize = 160; + RIPEMD160.hmacStrength = 192; + RIPEMD160.padLength = 64; + RIPEMD160.prototype._update = function update(msg, start) { + var A = this.h[0]; + var B = this.h[1]; + var C = this.h[2]; + var D = this.h[3]; + var E = this.h[4]; + var Ah = A; + var Bh = B; + var Ch = C; + var Dh = D; + var Eh = E; + for (var j = 0; j < 80; j++) { + var T = sum32( + rotl32( + sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), + s[j] + ), + E + ); + A = E; + E = D; + D = rotl32(C, 10); + C = B; + B = T; + T = sum32( + rotl32( + sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), + sh[j] + ), + Eh + ); + Ah = Eh; + Eh = Dh; + Dh = rotl32(Ch, 10); + Ch = Bh; + Bh = T; + } + T = sum32_3(this.h[1], C, Dh); + this.h[1] = sum32_3(this.h[2], D, Eh); + this.h[2] = sum32_3(this.h[3], E, Ah); + this.h[3] = sum32_3(this.h[4], A, Bh); + this.h[4] = sum32_3(this.h[0], B, Ch); + this.h[0] = T; + }; + RIPEMD160.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "little"); + else + return utils.split32(this.h, "little"); + }; + function f(j, x, y, z) { + if (j <= 15) + return x ^ y ^ z; + else if (j <= 31) + return x & y | ~x & z; + else if (j <= 47) + return (x | ~y) ^ z; + else if (j <= 63) + return x & z | y & ~z; + else + return x ^ (y | ~z); + } + function K(j) { + if (j <= 15) + return 0; + else if (j <= 31) + return 1518500249; + else if (j <= 47) + return 1859775393; + else if (j <= 63) + return 2400959708; + else + return 2840853838; + } + function Kh(j) { + if (j <= 15) + return 1352829926; + else if (j <= 31) + return 1548603684; + else if (j <= 47) + return 1836072691; + else if (j <= 63) + return 2053994217; + else + return 0; + } + var r = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 7, + 4, + 13, + 1, + 10, + 6, + 15, + 3, + 12, + 0, + 9, + 5, + 2, + 14, + 11, + 8, + 3, + 10, + 14, + 4, + 9, + 15, + 8, + 1, + 2, + 7, + 0, + 6, + 13, + 11, + 5, + 12, + 1, + 9, + 11, + 10, + 0, + 8, + 12, + 4, + 13, + 3, + 7, + 15, + 14, + 5, + 6, + 2, + 4, + 0, + 5, + 9, + 7, + 12, + 2, + 10, + 14, + 1, + 3, + 8, + 11, + 6, + 15, + 13 + ]; + var rh = [ + 5, + 14, + 7, + 0, + 9, + 2, + 11, + 4, + 13, + 6, + 15, + 8, + 1, + 10, + 3, + 12, + 6, + 11, + 3, + 7, + 0, + 13, + 5, + 10, + 14, + 15, + 8, + 12, + 4, + 9, + 1, + 2, + 15, + 5, + 1, + 3, + 7, + 14, + 6, + 9, + 11, + 8, + 12, + 2, + 10, + 0, + 4, + 13, + 8, + 6, + 4, + 1, + 3, + 11, + 15, + 0, + 5, + 12, + 2, + 13, + 9, + 7, + 10, + 14, + 12, + 15, + 10, + 4, + 1, + 5, + 8, + 7, + 6, + 2, + 13, + 14, + 0, + 3, + 9, + 11 + ]; + var s = [ + 11, + 14, + 15, + 12, + 5, + 8, + 7, + 9, + 11, + 13, + 14, + 15, + 6, + 7, + 9, + 8, + 7, + 6, + 8, + 13, + 11, + 9, + 7, + 15, + 7, + 12, + 15, + 9, + 11, + 7, + 13, + 12, + 11, + 13, + 6, + 7, + 14, + 9, + 13, + 15, + 14, + 8, + 13, + 6, + 5, + 12, + 7, + 5, + 11, + 12, + 14, + 15, + 14, + 15, + 9, + 8, + 9, + 14, + 5, + 6, + 8, + 6, + 5, + 12, + 9, + 15, + 5, + 11, + 6, + 8, + 13, + 12, + 5, + 12, + 13, + 14, + 11, + 8, + 5, + 6 + ]; + var sh = [ + 8, + 9, + 9, + 11, + 13, + 15, + 15, + 5, + 7, + 7, + 8, + 11, + 14, + 14, + 12, + 6, + 9, + 13, + 15, + 7, + 12, + 8, + 9, + 11, + 7, + 7, + 12, + 7, + 6, + 15, + 13, + 11, + 9, + 7, + 15, + 11, + 8, + 6, + 6, + 14, + 12, + 13, + 5, + 14, + 13, + 13, + 7, + 5, + 15, + 5, + 8, + 11, + 14, + 14, + 6, + 14, + 6, + 9, + 12, + 9, + 12, + 5, + 15, + 8, + 8, + 5, + 12, + 9, + 12, + 5, + 14, + 6, + 8, + 13, + 6, + 5, + 15, + 13, + 11, + 11 + ]; + } +}); + +// node_modules/hash.js/lib/hash/hmac.js +var require_hmac = __commonJS({ + "node_modules/hash.js/lib/hash/hmac.js"(exports, module) { + "use strict"; + var utils = require_utils3(); + var assert = require_minimalistic_assert(); + function Hmac(hash, key, enc) { + if (!(this instanceof Hmac)) + return new Hmac(hash, key, enc); + this.Hash = hash; + this.blockSize = hash.blockSize / 8; + this.outSize = hash.outSize / 8; + this.inner = null; + this.outer = null; + this._init(utils.toArray(key, enc)); + } + module.exports = Hmac; + Hmac.prototype._init = function init(key) { + if (key.length > this.blockSize) + key = new this.Hash().update(key).digest(); + assert(key.length <= this.blockSize); + for (var i = key.length; i < this.blockSize; i++) + key.push(0); + for (i = 0; i < key.length; i++) + key[i] ^= 54; + this.inner = new this.Hash().update(key); + for (i = 0; i < key.length; i++) + key[i] ^= 106; + this.outer = new this.Hash().update(key); + }; + Hmac.prototype.update = function update(msg, enc) { + this.inner.update(msg, enc); + return this; + }; + Hmac.prototype.digest = function digest(enc) { + this.outer.update(this.inner.digest()); + return this.outer.digest(enc); + }; + } +}); + +// node_modules/hash.js/lib/hash.js +var require_hash = __commonJS({ + "node_modules/hash.js/lib/hash.js"(exports) { + var hash = exports; + hash.utils = require_utils3(); + hash.common = require_common(); + hash.sha = require_sha(); + hash.ripemd = require_ripemd(); + hash.hmac = require_hmac(); + hash.sha1 = hash.sha.sha1; + hash.sha256 = hash.sha.sha256; + hash.sha224 = hash.sha.sha224; + hash.sha384 = hash.sha.sha384; + hash.sha512 = hash.sha.sha512; + hash.ripemd160 = hash.ripemd.ripemd160; + } +}); + +// node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js +var require_secp256k1 = __commonJS({ + "node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js"(exports, module) { + module.exports = { + doubles: { + step: 4, + points: [ + [ + "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a", + "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821" + ], + [ + "8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508", + "11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf" + ], + [ + "175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739", + "d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695" + ], + [ + "363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640", + "4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9" + ], + [ + "8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c", + "4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36" + ], + [ + "723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda", + "96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f" + ], + [ + "eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa", + "5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999" + ], + [ + "100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0", + "cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09" + ], + [ + "e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d", + "9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d" + ], + [ + "feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d", + "e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088" + ], + [ + "da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1", + "9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d" + ], + [ + "53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0", + "5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8" + ], + [ + "8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047", + "10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a" + ], + [ + "385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862", + "283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453" + ], + [ + "6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7", + "7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160" + ], + [ + "3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd", + "56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0" + ], + [ + "85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83", + "7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6" + ], + [ + "948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a", + "53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589" + ], + [ + "6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8", + "bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17" + ], + [ + "e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d", + "4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda" + ], + [ + "e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725", + "7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd" + ], + [ + "213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754", + "4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2" + ], + [ + "4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c", + "17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6" + ], + [ + "fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6", + "6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f" + ], + [ + "76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39", + "c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01" + ], + [ + "c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891", + "893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3" + ], + [ + "d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b", + "febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f" + ], + [ + "b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03", + "2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7" + ], + [ + "e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d", + "eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78" + ], + [ + "a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070", + "7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1" + ], + [ + "90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4", + "e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150" + ], + [ + "8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da", + "662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82" + ], + [ + "e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11", + "1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc" + ], + [ + "8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e", + "efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b" + ], + [ + "e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41", + "2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51" + ], + [ + "b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef", + "67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45" + ], + [ + "d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8", + "db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120" + ], + [ + "324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d", + "648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84" + ], + [ + "4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96", + "35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d" + ], + [ + "9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd", + "ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d" + ], + [ + "6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5", + "9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8" + ], + [ + "a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266", + "40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8" + ], + [ + "7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71", + "34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac" + ], + [ + "928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac", + "c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f" + ], + [ + "85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751", + "1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962" + ], + [ + "ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e", + "493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907" + ], + [ + "827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241", + "c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec" + ], + [ + "eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3", + "be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d" + ], + [ + "e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f", + "4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414" + ], + [ + "1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19", + "aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd" + ], + [ + "146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be", + "b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0" + ], + [ + "fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9", + "6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811" + ], + [ + "da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2", + "8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1" + ], + [ + "a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13", + "7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c" + ], + [ + "174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c", + "ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73" + ], + [ + "959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba", + "2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd" + ], + [ + "d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151", + "e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405" + ], + [ + "64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073", + "d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589" + ], + [ + "8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458", + "38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e" + ], + [ + "13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b", + "69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27" + ], + [ + "bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366", + "d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1" + ], + [ + "8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa", + "40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482" + ], + [ + "8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0", + "620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945" + ], + [ + "dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787", + "7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573" + ], + [ + "f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e", + "ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82" + ] + ] + }, + naf: { + wnd: 7, + points: [ + [ + "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", + "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672" + ], + [ + "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4", + "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6" + ], + [ + "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", + "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da" + ], + [ + "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe", + "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37" + ], + [ + "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb", + "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b" + ], + [ + "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8", + "ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81" + ], + [ + "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e", + "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58" + ], + [ + "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34", + "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77" + ], + [ + "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c", + "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a" + ], + [ + "352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", + "321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c" + ], + [ + "2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f", + "2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67" + ], + [ + "9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714", + "73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402" + ], + [ + "daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729", + "a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55" + ], + [ + "c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db", + "2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482" + ], + [ + "6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4", + "e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82" + ], + [ + "1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5", + "b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396" + ], + [ + "605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479", + "2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49" + ], + [ + "62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d", + "80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf" + ], + [ + "80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f", + "1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a" + ], + [ + "7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb", + "d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7" + ], + [ + "d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9", + "eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933" + ], + [ + "49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963", + "758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a" + ], + [ + "77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74", + "958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6" + ], + [ + "f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", + "e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37" + ], + [ + "463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b", + "5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e" + ], + [ + "f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247", + "cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6" + ], + [ + "caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1", + "cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476" + ], + [ + "2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120", + "4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40" + ], + [ + "7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435", + "91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61" + ], + [ + "754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18", + "673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683" + ], + [ + "e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8", + "59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5" + ], + [ + "186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb", + "3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b" + ], + [ + "df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f", + "55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417" + ], + [ + "5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143", + "efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868" + ], + [ + "290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba", + "e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a" + ], + [ + "af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45", + "f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6" + ], + [ + "766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a", + "744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996" + ], + [ + "59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e", + "c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e" + ], + [ + "f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8", + "e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d" + ], + [ + "7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c", + "30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2" + ], + [ + "948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519", + "e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e" + ], + [ + "7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab", + "100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437" + ], + [ + "3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca", + "ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311" + ], + [ + "d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf", + "8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4" + ], + [ + "1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610", + "68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575" + ], + [ + "733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4", + "f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d" + ], + [ + "15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c", + "d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d" + ], + [ + "a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940", + "edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629" + ], + [ + "e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980", + "a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06" + ], + [ + "311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3", + "66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374" + ], + [ + "34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf", + "9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee" + ], + [ + "f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63", + "4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1" + ], + [ + "d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448", + "fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b" + ], + [ + "32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf", + "5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661" + ], + [ + "7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5", + "8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6" + ], + [ + "ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6", + "8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e" + ], + [ + "16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5", + "5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d" + ], + [ + "eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99", + "f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc" + ], + [ + "78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51", + "f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4" + ], + [ + "494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5", + "42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c" + ], + [ + "a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5", + "204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b" + ], + [ + "c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997", + "4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913" + ], + [ + "841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881", + "73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154" + ], + [ + "5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5", + "39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865" + ], + [ + "36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66", + "d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc" + ], + [ + "336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726", + "ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224" + ], + [ + "8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede", + "6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e" + ], + [ + "1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94", + "60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6" + ], + [ + "85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31", + "3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511" + ], + [ + "29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51", + "b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b" + ], + [ + "a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252", + "ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2" + ], + [ + "4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5", + "cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c" + ], + [ + "d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b", + "6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3" + ], + [ + "ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4", + "322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d" + ], + [ + "af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f", + "6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700" + ], + [ + "e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889", + "2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4" + ], + [ + "591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246", + "b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196" + ], + [ + "11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984", + "998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4" + ], + [ + "3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a", + "b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257" + ], + [ + "cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030", + "bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13" + ], + [ + "c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197", + "6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096" + ], + [ + "c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593", + "c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38" + ], + [ + "a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef", + "21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f" + ], + [ + "347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38", + "60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448" + ], + [ + "da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a", + "49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a" + ], + [ + "c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111", + "5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4" + ], + [ + "4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502", + "7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437" + ], + [ + "3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea", + "be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7" + ], + [ + "cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26", + "8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d" + ], + [ + "b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986", + "39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a" + ], + [ + "d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e", + "62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54" + ], + [ + "48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4", + "25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77" + ], + [ + "dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda", + "ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517" + ], + [ + "6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859", + "cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10" + ], + [ + "e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f", + "f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125" + ], + [ + "eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c", + "6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e" + ], + [ + "13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942", + "fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1" + ], + [ + "ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a", + "1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2" + ], + [ + "b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80", + "5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423" + ], + [ + "ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d", + "438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8" + ], + [ + "8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1", + "cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758" + ], + [ + "52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63", + "c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375" + ], + [ + "e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352", + "6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d" + ], + [ + "7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193", + "ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec" + ], + [ + "5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00", + "9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0" + ], + [ + "32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58", + "ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c" + ], + [ + "e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7", + "d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4" + ], + [ + "8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8", + "c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f" + ], + [ + "4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e", + "67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649" + ], + [ + "3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d", + "cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826" + ], + [ + "674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b", + "299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5" + ], + [ + "d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f", + "f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87" + ], + [ + "30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6", + "462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b" + ], + [ + "be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297", + "62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc" + ], + [ + "93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a", + "7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c" + ], + [ + "b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c", + "ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f" + ], + [ + "d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52", + "4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a" + ], + [ + "d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb", + "bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46" + ], + [ + "463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065", + "bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f" + ], + [ + "7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917", + "603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03" + ], + [ + "74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9", + "cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08" + ], + [ + "30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3", + "553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8" + ], + [ + "9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57", + "712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373" + ], + [ + "176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66", + "ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3" + ], + [ + "75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8", + "9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8" + ], + [ + "809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721", + "9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1" + ], + [ + "1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180", + "4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9" + ] + ] + } + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curves.js +var require_curves = __commonJS({ + "node_modules/elliptic/lib/elliptic/curves.js"(exports) { + "use strict"; + var curves = exports; + var hash = require_hash(); + var curve = require_curve(); + var utils = require_utils2(); + var assert = utils.assert; + function PresetCurve(options) { + if (options.type === "short") + this.curve = new curve.short(options); + else if (options.type === "edwards") + this.curve = new curve.edwards(options); + else + this.curve = new curve.mont(options); + this.g = this.curve.g; + this.n = this.curve.n; + this.hash = options.hash; + assert(this.g.validate(), "Invalid curve"); + assert(this.g.mul(this.n).isInfinity(), "Invalid curve, G*N != O"); + } + curves.PresetCurve = PresetCurve; + function defineCurve(name, options) { + Object.defineProperty(curves, name, { + configurable: true, + enumerable: true, + get: function() { + var curve2 = new PresetCurve(options); + Object.defineProperty(curves, name, { + configurable: true, + enumerable: true, + value: curve2 + }); + return curve2; + } + }); + } + defineCurve("p192", { + type: "short", + prime: "p192", + p: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff", + a: "ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc", + b: "64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1", + n: "ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831", + hash: hash.sha256, + gRed: false, + g: [ + "188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012", + "07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811" + ] + }); + defineCurve("p224", { + type: "short", + prime: "p224", + p: "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001", + a: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe", + b: "b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4", + n: "ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d", + hash: hash.sha256, + gRed: false, + g: [ + "b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21", + "bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34" + ] + }); + defineCurve("p256", { + type: "short", + prime: null, + p: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff", + a: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc", + b: "5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b", + n: "ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551", + hash: hash.sha256, + gRed: false, + g: [ + "6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296", + "4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5" + ] + }); + defineCurve("p384", { + type: "short", + prime: null, + p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff", + a: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc", + b: "b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef", + n: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973", + hash: hash.sha384, + gRed: false, + g: [ + "aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7", + "3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f" + ] + }); + defineCurve("p521", { + type: "short", + prime: null, + p: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff", + a: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc", + b: "00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00", + n: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409", + hash: hash.sha512, + gRed: false, + g: [ + "000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66", + "00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650" + ] + }); + defineCurve("curve25519", { + type: "mont", + prime: "p25519", + p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", + a: "76d06", + b: "1", + n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", + hash: hash.sha256, + gRed: false, + g: [ + "9" + ] + }); + defineCurve("ed25519", { + type: "edwards", + prime: "p25519", + p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", + a: "-1", + c: "1", + // -121665 * (121666^(-1)) (mod P) + d: "52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3", + n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", + hash: hash.sha256, + gRed: false, + g: [ + "216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a", + // 4/5 + "6666666666666666666666666666666666666666666666666666666666666658" + ] + }); + var pre; + try { + pre = require_secp256k1(); + } catch (e) { + pre = void 0; + } + defineCurve("secp256k1", { + type: "short", + prime: "k256", + p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f", + a: "0", + b: "7", + n: "ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141", + h: "1", + hash: hash.sha256, + // Precomputed endomorphism + beta: "7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee", + lambda: "5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72", + basis: [ + { + a: "3086d221a7d46bcde86c90e49284eb15", + b: "-e4437ed6010e88286f547fa90abfe4c3" + }, + { + a: "114ca50f7a8e2f3f657c1108d9d44cfd8", + b: "3086d221a7d46bcde86c90e49284eb15" + } + ], + gRed: false, + g: [ + "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", + pre + ] + }); + } +}); + +// node_modules/hmac-drbg/lib/hmac-drbg.js +var require_hmac_drbg = __commonJS({ + "node_modules/hmac-drbg/lib/hmac-drbg.js"(exports, module) { + "use strict"; + var hash = require_hash(); + var utils = require_utils(); + var assert = require_minimalistic_assert(); + function HmacDRBG(options) { + if (!(this instanceof HmacDRBG)) + return new HmacDRBG(options); + this.hash = options.hash; + this.predResist = !!options.predResist; + this.outLen = this.hash.outSize; + this.minEntropy = options.minEntropy || this.hash.hmacStrength; + this._reseed = null; + this.reseedInterval = null; + this.K = null; + this.V = null; + var entropy = utils.toArray(options.entropy, options.entropyEnc || "hex"); + var nonce = utils.toArray(options.nonce, options.nonceEnc || "hex"); + var pers = utils.toArray(options.pers, options.persEnc || "hex"); + assert( + entropy.length >= this.minEntropy / 8, + "Not enough entropy. Minimum is: " + this.minEntropy + " bits" + ); + this._init(entropy, nonce, pers); + } + module.exports = HmacDRBG; + HmacDRBG.prototype._init = function init(entropy, nonce, pers) { + var seed = entropy.concat(nonce).concat(pers); + this.K = new Array(this.outLen / 8); + this.V = new Array(this.outLen / 8); + for (var i = 0; i < this.V.length; i++) { + this.K[i] = 0; + this.V[i] = 1; + } + this._update(seed); + this._reseed = 1; + this.reseedInterval = 281474976710656; + }; + HmacDRBG.prototype._hmac = function hmac() { + return new hash.hmac(this.hash, this.K); + }; + HmacDRBG.prototype._update = function update(seed) { + var kmac = this._hmac().update(this.V).update([0]); + if (seed) + kmac = kmac.update(seed); + this.K = kmac.digest(); + this.V = this._hmac().update(this.V).digest(); + if (!seed) + return; + this.K = this._hmac().update(this.V).update([1]).update(seed).digest(); + this.V = this._hmac().update(this.V).digest(); + }; + HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { + if (typeof entropyEnc !== "string") { + addEnc = add; + add = entropyEnc; + entropyEnc = null; + } + entropy = utils.toArray(entropy, entropyEnc); + add = utils.toArray(add, addEnc); + assert( + entropy.length >= this.minEntropy / 8, + "Not enough entropy. Minimum is: " + this.minEntropy + " bits" + ); + this._update(entropy.concat(add || [])); + this._reseed = 1; + }; + HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { + if (this._reseed > this.reseedInterval) + throw new Error("Reseed is required"); + if (typeof enc !== "string") { + addEnc = add; + add = enc; + enc = null; + } + if (add) { + add = utils.toArray(add, addEnc || "hex"); + this._update(add); + } + var temp = []; + while (temp.length < len) { + this.V = this._hmac().update(this.V).digest(); + temp = temp.concat(this.V); + } + var res = temp.slice(0, len); + this._update(add); + this._reseed++; + return utils.encode(res, enc); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/ec/key.js +var require_key = __commonJS({ + "node_modules/elliptic/lib/elliptic/ec/key.js"(exports, module) { + "use strict"; + var BN = require_bn(); + var utils = require_utils2(); + var assert = utils.assert; + function KeyPair(ec, options) { + this.ec = ec; + this.priv = null; + this.pub = null; + if (options.priv) + this._importPrivate(options.priv, options.privEnc); + if (options.pub) + this._importPublic(options.pub, options.pubEnc); + } + module.exports = KeyPair; + KeyPair.fromPublic = function fromPublic(ec, pub, enc) { + if (pub instanceof KeyPair) + return pub; + return new KeyPair(ec, { + pub, + pubEnc: enc + }); + }; + KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { + if (priv instanceof KeyPair) + return priv; + return new KeyPair(ec, { + priv, + privEnc: enc + }); + }; + KeyPair.prototype.validate = function validate() { + var pub = this.getPublic(); + if (pub.isInfinity()) + return { result: false, reason: "Invalid public key" }; + if (!pub.validate()) + return { result: false, reason: "Public key is not a point" }; + if (!pub.mul(this.ec.curve.n).isInfinity()) + return { result: false, reason: "Public key * N != O" }; + return { result: true, reason: null }; + }; + KeyPair.prototype.getPublic = function getPublic(compact, enc) { + if (typeof compact === "string") { + enc = compact; + compact = null; + } + if (!this.pub) + this.pub = this.ec.g.mul(this.priv); + if (!enc) + return this.pub; + return this.pub.encode(enc, compact); + }; + KeyPair.prototype.getPrivate = function getPrivate(enc) { + if (enc === "hex") + return this.priv.toString(16, 2); + else + return this.priv; + }; + KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { + this.priv = new BN(key, enc || 16); + this.priv = this.priv.umod(this.ec.curve.n); + }; + KeyPair.prototype._importPublic = function _importPublic(key, enc) { + if (key.x || key.y) { + if (this.ec.curve.type === "mont") { + assert(key.x, "Need x coordinate"); + } else if (this.ec.curve.type === "short" || this.ec.curve.type === "edwards") { + assert(key.x && key.y, "Need both x and y coordinate"); + } + this.pub = this.ec.curve.point(key.x, key.y); + return; + } + this.pub = this.ec.curve.decodePoint(key, enc); + }; + KeyPair.prototype.derive = function derive(pub) { + if (!pub.validate()) { + assert(pub.validate(), "public point not validated"); + } + return pub.mul(this.priv).getX(); + }; + KeyPair.prototype.sign = function sign(msg, enc, options) { + return this.ec.sign(msg, this, enc, options); + }; + KeyPair.prototype.verify = function verify(msg, signature, options) { + return this.ec.verify(msg, signature, this, void 0, options); + }; + KeyPair.prototype.inspect = function inspect() { + return ""; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/ec/signature.js +var require_signature = __commonJS({ + "node_modules/elliptic/lib/elliptic/ec/signature.js"(exports, module) { + "use strict"; + var BN = require_bn(); + var utils = require_utils2(); + var assert = utils.assert; + function Signature(options, enc) { + if (options instanceof Signature) + return options; + if (this._importDER(options, enc)) + return; + assert(options.r && options.s, "Signature without r or s"); + this.r = new BN(options.r, 16); + this.s = new BN(options.s, 16); + if (options.recoveryParam === void 0) + this.recoveryParam = null; + else + this.recoveryParam = options.recoveryParam; + } + module.exports = Signature; + function Position() { + this.place = 0; + } + function getLength(buf, p) { + var initial = buf[p.place++]; + if (!(initial & 128)) { + return initial; + } + var octetLen = initial & 15; + if (octetLen === 0 || octetLen > 4) { + return false; + } + if (buf[p.place] === 0) { + return false; + } + var val = 0; + for (var i = 0, off = p.place; i < octetLen; i++, off++) { + val <<= 8; + val |= buf[off]; + val >>>= 0; + } + if (val <= 127) { + return false; + } + p.place = off; + return val; + } + function rmPadding(buf) { + var i = 0; + var len = buf.length - 1; + while (!buf[i] && !(buf[i + 1] & 128) && i < len) { + i++; + } + if (i === 0) { + return buf; + } + return buf.slice(i); + } + Signature.prototype._importDER = function _importDER(data, enc) { + data = utils.toArray(data, enc); + var p = new Position(); + if (data[p.place++] !== 48) { + return false; + } + var len = getLength(data, p); + if (len === false) { + return false; + } + if (len + p.place !== data.length) { + return false; + } + if (data[p.place++] !== 2) { + return false; + } + var rlen = getLength(data, p); + if (rlen === false) { + return false; + } + if ((data[p.place] & 128) !== 0) { + return false; + } + var r = data.slice(p.place, rlen + p.place); + p.place += rlen; + if (data[p.place++] !== 2) { + return false; + } + var slen = getLength(data, p); + if (slen === false) { + return false; + } + if (data.length !== slen + p.place) { + return false; + } + if ((data[p.place] & 128) !== 0) { + return false; + } + var s = data.slice(p.place, slen + p.place); + if (r[0] === 0) { + if (r[1] & 128) { + r = r.slice(1); + } else { + return false; + } + } + if (s[0] === 0) { + if (s[1] & 128) { + s = s.slice(1); + } else { + return false; + } + } + this.r = new BN(r); + this.s = new BN(s); + this.recoveryParam = null; + return true; + }; + function constructLength(arr, len) { + if (len < 128) { + arr.push(len); + return; + } + var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); + arr.push(octets | 128); + while (--octets) { + arr.push(len >>> (octets << 3) & 255); + } + arr.push(len); + } + Signature.prototype.toDER = function toDER(enc) { + var r = this.r.toArray(); + var s = this.s.toArray(); + if (r[0] & 128) + r = [0].concat(r); + if (s[0] & 128) + s = [0].concat(s); + r = rmPadding(r); + s = rmPadding(s); + while (!s[0] && !(s[1] & 128)) { + s = s.slice(1); + } + var arr = [2]; + constructLength(arr, r.length); + arr = arr.concat(r); + arr.push(2); + constructLength(arr, s.length); + var backHalf = arr.concat(s); + var res = [48]; + constructLength(res, backHalf.length); + res = res.concat(backHalf); + return utils.encode(res, enc); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/ec/index.js +var require_ec = __commonJS({ + "node_modules/elliptic/lib/elliptic/ec/index.js"(exports, module) { + "use strict"; + var BN = require_bn(); + var HmacDRBG = require_hmac_drbg(); + var utils = require_utils2(); + var curves = require_curves(); + var rand = require_brorand(); + var assert = utils.assert; + var KeyPair = require_key(); + var Signature = require_signature(); + function EC(options) { + if (!(this instanceof EC)) + return new EC(options); + if (typeof options === "string") { + assert( + Object.prototype.hasOwnProperty.call(curves, options), + "Unknown curve " + options + ); + options = curves[options]; + } + if (options instanceof curves.PresetCurve) + options = { curve: options }; + this.curve = options.curve.curve; + this.n = this.curve.n; + this.nh = this.n.ushrn(1); + this.g = this.curve.g; + this.g = options.curve.g; + this.g.precompute(options.curve.n.bitLength() + 1); + this.hash = options.hash || options.curve.hash; + } + module.exports = EC; + EC.prototype.keyPair = function keyPair(options) { + return new KeyPair(this, options); + }; + EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { + return KeyPair.fromPrivate(this, priv, enc); + }; + EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { + return KeyPair.fromPublic(this, pub, enc); + }; + EC.prototype.genKeyPair = function genKeyPair(options) { + if (!options) + options = {}; + var drbg = new HmacDRBG({ + hash: this.hash, + pers: options.pers, + persEnc: options.persEnc || "utf8", + entropy: options.entropy || rand(this.hash.hmacStrength), + entropyEnc: options.entropy && options.entropyEnc || "utf8", + nonce: this.n.toArray() + }); + var bytes = this.n.byteLength(); + var ns2 = this.n.sub(new BN(2)); + for (; ; ) { + var priv = new BN(drbg.generate(bytes)); + if (priv.cmp(ns2) > 0) + continue; + priv.iaddn(1); + return this.keyFromPrivate(priv); + } + }; + EC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) { + var byteLength; + if (BN.isBN(msg) || typeof msg === "number") { + msg = new BN(msg, 16); + byteLength = msg.byteLength(); + } else if (typeof msg === "object") { + byteLength = msg.length; + msg = new BN(msg, 16); + } else { + var str = msg.toString(); + byteLength = str.length + 1 >>> 1; + msg = new BN(str, 16); + } + if (typeof bitLength !== "number") { + bitLength = byteLength * 8; + } + var delta = bitLength - this.n.bitLength(); + if (delta > 0) + msg = msg.ushrn(delta); + if (!truncOnly && msg.cmp(this.n) >= 0) + return msg.sub(this.n); + else + return msg; + }; + EC.prototype.sign = function sign(msg, key, enc, options) { + if (typeof enc === "object") { + options = enc; + enc = null; + } + if (!options) + options = {}; + if (typeof msg !== "string" && typeof msg !== "number" && !BN.isBN(msg)) { + assert( + typeof msg === "object" && msg && typeof msg.length === "number", + "Expected message to be an array-like, a hex string, or a BN instance" + ); + assert(msg.length >>> 0 === msg.length); + for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]); + } + key = this.keyFromPrivate(key, enc); + msg = this._truncateToN(msg, false, options.msgBitLength); + assert(!msg.isNeg(), "Can not sign a negative message"); + var bytes = this.n.byteLength(); + var bkey = key.getPrivate().toArray("be", bytes); + var nonce = msg.toArray("be", bytes); + assert(new BN(nonce).eq(msg), "Can not sign message"); + var drbg = new HmacDRBG({ + hash: this.hash, + entropy: bkey, + nonce, + pers: options.pers, + persEnc: options.persEnc || "utf8" + }); + var ns1 = this.n.sub(new BN(1)); + for (var iter = 0; ; iter++) { + var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength())); + k = this._truncateToN(k, true); + if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) + continue; + var kp = this.g.mul(k); + if (kp.isInfinity()) + continue; + var kpX = kp.getX(); + var r = kpX.umod(this.n); + if (r.cmpn(0) === 0) + continue; + var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); + s = s.umod(this.n); + if (s.cmpn(0) === 0) + continue; + var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); + if (options.canonical && s.cmp(this.nh) > 0) { + s = this.n.sub(s); + recoveryParam ^= 1; + } + return new Signature({ r, s, recoveryParam }); + } + }; + EC.prototype.verify = function verify(msg, signature, key, enc, options) { + if (!options) + options = {}; + msg = this._truncateToN(msg, false, options.msgBitLength); + key = this.keyFromPublic(key, enc); + signature = new Signature(signature, "hex"); + var r = signature.r; + var s = signature.s; + if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) + return false; + if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) + return false; + var sinv = s.invm(this.n); + var u1 = sinv.mul(msg).umod(this.n); + var u2 = sinv.mul(r).umod(this.n); + var p; + if (!this.curve._maxwellTrick) { + p = this.g.mulAdd(u1, key.getPublic(), u2); + if (p.isInfinity()) + return false; + return p.getX().umod(this.n).cmp(r) === 0; + } + p = this.g.jmulAdd(u1, key.getPublic(), u2); + if (p.isInfinity()) + return false; + return p.eqXToP(r); + }; + EC.prototype.recoverPubKey = function(msg, signature, j, enc) { + assert((3 & j) === j, "The recovery param is more than two bits"); + signature = new Signature(signature, enc); + var n = this.n; + var e = new BN(msg); + var r = signature.r; + var s = signature.s; + var isYOdd = j & 1; + var isSecondKey = j >> 1; + if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) + throw new Error("Unable to find sencond key candinate"); + if (isSecondKey) + r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); + else + r = this.curve.pointFromX(r, isYOdd); + var rInv = signature.r.invm(n); + var s1 = n.sub(e).mul(rInv).umod(n); + var s2 = s.mul(rInv).umod(n); + return this.g.mulAdd(s1, r, s2); + }; + EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { + signature = new Signature(signature, enc); + if (signature.recoveryParam !== null) + return signature.recoveryParam; + for (var i = 0; i < 4; i++) { + var Qprime; + try { + Qprime = this.recoverPubKey(e, signature, i); + } catch (e2) { + continue; + } + if (Qprime.eq(Q)) + return i; + } + throw new Error("Unable to find valid recovery factor"); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/eddsa/key.js +var require_key2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/eddsa/key.js"(exports, module) { + "use strict"; + var utils = require_utils2(); + var assert = utils.assert; + var parseBytes = utils.parseBytes; + var cachedProperty = utils.cachedProperty; + function KeyPair(eddsa, params) { + this.eddsa = eddsa; + this._secret = parseBytes(params.secret); + if (eddsa.isPoint(params.pub)) + this._pub = params.pub; + else + this._pubBytes = parseBytes(params.pub); + } + KeyPair.fromPublic = function fromPublic(eddsa, pub) { + if (pub instanceof KeyPair) + return pub; + return new KeyPair(eddsa, { pub }); + }; + KeyPair.fromSecret = function fromSecret(eddsa, secret) { + if (secret instanceof KeyPair) + return secret; + return new KeyPair(eddsa, { secret }); + }; + KeyPair.prototype.secret = function secret() { + return this._secret; + }; + cachedProperty(KeyPair, "pubBytes", function pubBytes() { + return this.eddsa.encodePoint(this.pub()); + }); + cachedProperty(KeyPair, "pub", function pub() { + if (this._pubBytes) + return this.eddsa.decodePoint(this._pubBytes); + return this.eddsa.g.mul(this.priv()); + }); + cachedProperty(KeyPair, "privBytes", function privBytes() { + var eddsa = this.eddsa; + var hash = this.hash(); + var lastIx = eddsa.encodingLength - 1; + var a = hash.slice(0, eddsa.encodingLength); + a[0] &= 248; + a[lastIx] &= 127; + a[lastIx] |= 64; + return a; + }); + cachedProperty(KeyPair, "priv", function priv() { + return this.eddsa.decodeInt(this.privBytes()); + }); + cachedProperty(KeyPair, "hash", function hash() { + return this.eddsa.hash().update(this.secret()).digest(); + }); + cachedProperty(KeyPair, "messagePrefix", function messagePrefix() { + return this.hash().slice(this.eddsa.encodingLength); + }); + KeyPair.prototype.sign = function sign(message) { + assert(this._secret, "KeyPair can only verify"); + return this.eddsa.sign(message, this); + }; + KeyPair.prototype.verify = function verify(message, sig) { + return this.eddsa.verify(message, sig, this); + }; + KeyPair.prototype.getSecret = function getSecret(enc) { + assert(this._secret, "KeyPair is public only"); + return utils.encode(this.secret(), enc); + }; + KeyPair.prototype.getPublic = function getPublic(enc) { + return utils.encode(this.pubBytes(), enc); + }; + module.exports = KeyPair; + } +}); + +// node_modules/elliptic/lib/elliptic/eddsa/signature.js +var require_signature2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/eddsa/signature.js"(exports, module) { + "use strict"; + var BN = require_bn(); + var utils = require_utils2(); + var assert = utils.assert; + var cachedProperty = utils.cachedProperty; + var parseBytes = utils.parseBytes; + function Signature(eddsa, sig) { + this.eddsa = eddsa; + if (typeof sig !== "object") + sig = parseBytes(sig); + if (Array.isArray(sig)) { + assert(sig.length === eddsa.encodingLength * 2, "Signature has invalid size"); + sig = { + R: sig.slice(0, eddsa.encodingLength), + S: sig.slice(eddsa.encodingLength) + }; + } + assert(sig.R && sig.S, "Signature without R or S"); + if (eddsa.isPoint(sig.R)) + this._R = sig.R; + if (sig.S instanceof BN) + this._S = sig.S; + this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; + this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; + } + cachedProperty(Signature, "S", function S() { + return this.eddsa.decodeInt(this.Sencoded()); + }); + cachedProperty(Signature, "R", function R() { + return this.eddsa.decodePoint(this.Rencoded()); + }); + cachedProperty(Signature, "Rencoded", function Rencoded() { + return this.eddsa.encodePoint(this.R()); + }); + cachedProperty(Signature, "Sencoded", function Sencoded() { + return this.eddsa.encodeInt(this.S()); + }); + Signature.prototype.toBytes = function toBytes() { + return this.Rencoded().concat(this.Sencoded()); + }; + Signature.prototype.toHex = function toHex() { + return utils.encode(this.toBytes(), "hex").toUpperCase(); + }; + module.exports = Signature; + } +}); + +// node_modules/elliptic/lib/elliptic/eddsa/index.js +var require_eddsa = __commonJS({ + "node_modules/elliptic/lib/elliptic/eddsa/index.js"(exports, module) { + "use strict"; + var hash = require_hash(); + var curves = require_curves(); + var utils = require_utils2(); + var assert = utils.assert; + var parseBytes = utils.parseBytes; + var KeyPair = require_key2(); + var Signature = require_signature2(); + function EDDSA(curve) { + assert(curve === "ed25519", "only tested with ed25519 so far"); + if (!(this instanceof EDDSA)) + return new EDDSA(curve); + curve = curves[curve].curve; + this.curve = curve; + this.g = curve.g; + this.g.precompute(curve.n.bitLength() + 1); + this.pointClass = curve.point().constructor; + this.encodingLength = Math.ceil(curve.n.bitLength() / 8); + this.hash = hash.sha512; + } + module.exports = EDDSA; + EDDSA.prototype.sign = function sign(message, secret) { + message = parseBytes(message); + var key = this.keyFromSecret(secret); + var r = this.hashInt(key.messagePrefix(), message); + var R = this.g.mul(r); + var Rencoded = this.encodePoint(R); + var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv()); + var S = r.add(s_).umod(this.curve.n); + return this.makeSignature({ R, S, Rencoded }); + }; + EDDSA.prototype.verify = function verify(message, sig, pub) { + message = parseBytes(message); + sig = this.makeSignature(sig); + if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) { + return false; + } + var key = this.keyFromPublic(pub); + var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); + var SG = this.g.mul(sig.S()); + var RplusAh = sig.R().add(key.pub().mul(h)); + return RplusAh.eq(SG); + }; + EDDSA.prototype.hashInt = function hashInt() { + var hash2 = this.hash(); + for (var i = 0; i < arguments.length; i++) + hash2.update(arguments[i]); + return utils.intFromLE(hash2.digest()).umod(this.curve.n); + }; + EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { + return KeyPair.fromPublic(this, pub); + }; + EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { + return KeyPair.fromSecret(this, secret); + }; + EDDSA.prototype.makeSignature = function makeSignature(sig) { + if (sig instanceof Signature) + return sig; + return new Signature(this, sig); + }; + EDDSA.prototype.encodePoint = function encodePoint(point) { + var enc = point.getY().toArray("le", this.encodingLength); + enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0; + return enc; + }; + EDDSA.prototype.decodePoint = function decodePoint(bytes) { + bytes = utils.parseBytes(bytes); + var lastIx = bytes.length - 1; + var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128); + var xIsOdd = (bytes[lastIx] & 128) !== 0; + var y = utils.intFromLE(normed); + return this.curve.pointFromY(y, xIsOdd); + }; + EDDSA.prototype.encodeInt = function encodeInt(num) { + return num.toArray("le", this.encodingLength); + }; + EDDSA.prototype.decodeInt = function decodeInt(bytes) { + return utils.intFromLE(bytes); + }; + EDDSA.prototype.isPoint = function isPoint(val) { + return val instanceof this.pointClass; + }; + } +}); + +// node_modules/elliptic/lib/elliptic.js +var require_elliptic = __commonJS({ + "node_modules/elliptic/lib/elliptic.js"(exports) { + var elliptic = exports; + elliptic.version = require_package().version; + elliptic.utils = require_utils2(); + elliptic.rand = require_brorand(); + elliptic.curve = require_curve(); + elliptic.curves = require_curves(); + elliptic.ec = require_ec(); + elliptic.eddsa = require_eddsa(); + } +}); +export default require_elliptic(); +//# sourceMappingURL=elliptic.js.map diff --git a/node_modules/.vite/deps/elliptic.js.map b/node_modules/.vite/deps/elliptic.js.map new file mode 100644 index 0000000..df4fe91 --- /dev/null +++ b/node_modules/.vite/deps/elliptic.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../elliptic/package.json", "../../bn.js/lib/bn.js", "../../minimalistic-assert/index.js", "../../minimalistic-crypto-utils/lib/utils.js", "../../elliptic/lib/elliptic/utils.js", "../../brorand/index.js", "../../elliptic/lib/elliptic/curve/base.js", "../../inherits/inherits_browser.js", "../../elliptic/lib/elliptic/curve/short.js", "../../elliptic/lib/elliptic/curve/mont.js", "../../elliptic/lib/elliptic/curve/edwards.js", "../../elliptic/lib/elliptic/curve/index.js", "../../hash.js/lib/hash/utils.js", "../../hash.js/lib/hash/common.js", "../../hash.js/lib/hash/sha/common.js", "../../hash.js/lib/hash/sha/1.js", "../../hash.js/lib/hash/sha/256.js", "../../hash.js/lib/hash/sha/224.js", "../../hash.js/lib/hash/sha/512.js", "../../hash.js/lib/hash/sha/384.js", "../../hash.js/lib/hash/sha.js", "../../hash.js/lib/hash/ripemd.js", "../../hash.js/lib/hash/hmac.js", "../../hash.js/lib/hash.js", "../../elliptic/lib/elliptic/precomputed/secp256k1.js", "../../elliptic/lib/elliptic/curves.js", "../../hmac-drbg/lib/hmac-drbg.js", "../../elliptic/lib/elliptic/ec/key.js", "../../elliptic/lib/elliptic/ec/signature.js", "../../elliptic/lib/elliptic/ec/index.js", "../../elliptic/lib/elliptic/eddsa/key.js", "../../elliptic/lib/elliptic/eddsa/signature.js", "../../elliptic/lib/elliptic/eddsa/index.js", "../../elliptic/lib/elliptic.js"], + "sourcesContent": ["{\n \"name\": \"elliptic\",\n \"version\": \"6.6.1\",\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 \",\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", "(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 ? '';\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.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 this.length = num === 0 ? 1 : this.length;\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", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (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", "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", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar 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 '';\n return '';\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 '';\n return '';\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, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\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 if ((data[p.place] & 128) !== 0) {\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 if ((data[p.place] & 128) !== 0) {\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, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = (str.length + 1) >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - 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 if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number',\n 'Expected message to be an array-like, a hex string, or a BN instance');\n assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\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 // Recheck nonce to be bijective to msg\n assert((new BN(nonce)).eq(msg), 'Can not sign message');\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, options) {\n if (!options)\n options = {};\n\n msg = this._truncateToN(msg, false, options.msgBitLength);\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} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [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|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [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 assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\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 if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\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"], + "mappings": "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B,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM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ACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,KAAK;AAAA,QACH,KAAK;AAAA,QACL,QAAQ;AAAA,UACN;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;A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", + "names": ["module", "exports", "self", "comb10MulTo", "prime", "require_utils", "cachedProperty", "obj", "require_utils", "require_common", "require__", "require__", "require__", "require__", "curve", "e", "require_key", "require_signature", "hash"] +} diff --git a/node_modules/.vite/deps/emoji-picker-element.js b/node_modules/.vite/deps/emoji-picker-element.js new file mode 100644 index 0000000..c58cad1 --- /dev/null +++ b/node_modules/.vite/deps/emoji-picker-element.js @@ -0,0 +1,2045 @@ +import "./chunk-HKJ2B2AA.js"; + +// node_modules/emoji-picker-element/database.js +function assertNonEmptyString(str) { + if (typeof str !== "string" || !str) { + throw new Error("expected a non-empty string, got: " + str); + } +} +function assertNumber(number) { + if (typeof number !== "number") { + throw new Error("expected a number, got: " + number); + } +} +var DB_VERSION_CURRENT = 1; +var DB_VERSION_INITIAL = 1; +var STORE_EMOJI = "emoji"; +var STORE_KEYVALUE = "keyvalue"; +var STORE_FAVORITES = "favorites"; +var FIELD_TOKENS = "tokens"; +var INDEX_TOKENS = "tokens"; +var FIELD_UNICODE = "unicode"; +var INDEX_COUNT = "count"; +var FIELD_GROUP = "group"; +var FIELD_ORDER = "order"; +var INDEX_GROUP_AND_ORDER = "group-order"; +var KEY_ETAG = "eTag"; +var KEY_URL = "url"; +var KEY_PREFERRED_SKINTONE = "skinTone"; +var MODE_READONLY = "readonly"; +var MODE_READWRITE = "readwrite"; +var INDEX_SKIN_UNICODE = "skinUnicodes"; +var FIELD_SKIN_UNICODE = "skinUnicodes"; +var DEFAULT_DATA_SOURCE = "https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json"; +var DEFAULT_LOCALE = "en"; +function uniqBy(arr, func) { + const set2 = /* @__PURE__ */ new Set(); + const res = []; + for (const item of arr) { + const key = func(item); + if (!set2.has(key)) { + set2.add(key); + res.push(item); + } + } + return res; +} +function uniqEmoji(emojis) { + return uniqBy(emojis, (_) => _.unicode); +} +function initialMigration(db) { + function createObjectStore(name, keyPath, indexes) { + const store = keyPath ? db.createObjectStore(name, { keyPath }) : db.createObjectStore(name); + if (indexes) { + for (const [indexName, [keyPath2, multiEntry]] of Object.entries(indexes)) { + store.createIndex(indexName, keyPath2, { multiEntry }); + } + } + return store; + } + createObjectStore(STORE_KEYVALUE); + createObjectStore( + STORE_EMOJI, + /* keyPath */ + FIELD_UNICODE, + { + [INDEX_TOKENS]: [ + FIELD_TOKENS, + /* multiEntry */ + true + ], + [INDEX_GROUP_AND_ORDER]: [[FIELD_GROUP, FIELD_ORDER]], + [INDEX_SKIN_UNICODE]: [ + FIELD_SKIN_UNICODE, + /* multiEntry */ + true + ] + } + ); + createObjectStore(STORE_FAVORITES, void 0, { + [INDEX_COUNT]: [""] + }); +} +var openIndexedDBRequests = {}; +var databaseCache = {}; +var onCloseListeners = {}; +function handleOpenOrDeleteReq(resolve, reject, req) { + req.onerror = () => reject(req.error); + req.onblocked = () => reject(new Error("IDB blocked")); + req.onsuccess = () => resolve(req.result); +} +async function createDatabase(dbName) { + const db = await new Promise((resolve, reject) => { + const req = indexedDB.open(dbName, DB_VERSION_CURRENT); + openIndexedDBRequests[dbName] = req; + req.onupgradeneeded = (e) => { + if (e.oldVersion < DB_VERSION_INITIAL) { + initialMigration(req.result); + } + }; + handleOpenOrDeleteReq(resolve, reject, req); + }); + db.onclose = () => closeDatabase(dbName); + return db; +} +function openDatabase(dbName) { + if (!databaseCache[dbName]) { + databaseCache[dbName] = createDatabase(dbName); + } + return databaseCache[dbName]; +} +function dbPromise(db, storeName, readOnlyOrReadWrite, cb) { + return new Promise((resolve, reject) => { + const txn = db.transaction(storeName, readOnlyOrReadWrite, { durability: "relaxed" }); + const store = typeof storeName === "string" ? txn.objectStore(storeName) : storeName.map((name) => txn.objectStore(name)); + let res; + cb(store, txn, (result) => { + res = result; + }); + txn.oncomplete = () => resolve(res); + txn.onerror = () => reject(txn.error); + }); +} +function closeDatabase(dbName) { + const req = openIndexedDBRequests[dbName]; + const db = req && req.result; + if (db) { + db.close(); + const listeners = onCloseListeners[dbName]; + if (listeners) { + for (const listener of listeners) { + listener(); + } + } + } + delete openIndexedDBRequests[dbName]; + delete databaseCache[dbName]; + delete onCloseListeners[dbName]; +} +function deleteDatabase(dbName) { + return new Promise((resolve, reject) => { + closeDatabase(dbName); + const req = indexedDB.deleteDatabase(dbName); + handleOpenOrDeleteReq(resolve, reject, req); + }); +} +function addOnCloseListener(dbName, listener) { + let listeners = onCloseListeners[dbName]; + if (!listeners) { + listeners = onCloseListeners[dbName] = []; + } + listeners.push(listener); +} +var irregularEmoticons = /* @__PURE__ */ new Set([ + ":D", + "XD", + ":'D", + "O:)", + ":X", + ":P", + ";P", + "XP", + ":L", + ":Z", + ":j", + "8D", + "XO", + "8)", + ":B", + ":O", + ":S", + ":'o", + "Dx", + "X(", + "D:", + ":C", + ">0)", + ":3", + " { + if (!word.match(/\w/) || irregularEmoticons.has(word)) { + return word.toLowerCase(); + } + return word.replace(/[)(:,]/g, "").replace(/’/g, "'").toLowerCase(); + }).filter(Boolean); +} +var MIN_SEARCH_TEXT_LENGTH = 2; +function normalizeTokens(str) { + return str.filter(Boolean).map((_) => _.toLowerCase()).filter((_) => _.length >= MIN_SEARCH_TEXT_LENGTH); +} +function transformEmojiData(emojiData) { + const res = emojiData.map(({ annotation, emoticon, group, order, shortcodes, skins, tags, emoji, version }) => { + const tokens = [...new Set( + normalizeTokens([ + ...(shortcodes || []).map(extractTokens).flat(), + ...(tags || []).map(extractTokens).flat(), + ...extractTokens(annotation), + emoticon + ]) + )].sort(); + const res2 = { + annotation, + group, + order, + tags, + tokens, + unicode: emoji, + version + }; + if (emoticon) { + res2.emoticon = emoticon; + } + if (shortcodes) { + res2.shortcodes = shortcodes; + } + if (skins) { + res2.skinTones = []; + res2.skinUnicodes = []; + res2.skinVersions = []; + for (const { tone, emoji: emoji2, version: version2 } of skins) { + res2.skinTones.push(tone); + res2.skinUnicodes.push(emoji2); + res2.skinVersions.push(version2); + } + } + return res2; + }); + return res; +} +function callStore(store, method, key, cb) { + store[method](key).onsuccess = (e) => cb && cb(e.target.result); +} +function getIDB(store, key, cb) { + callStore(store, "get", key, cb); +} +function getAllIDB(store, key, cb) { + callStore(store, "getAll", key, cb); +} +function commit(txn) { + if (txn.commit) { + txn.commit(); + } +} +function minBy(array, func) { + let minItem = array[0]; + for (let i = 1; i < array.length; i++) { + const item = array[i]; + if (func(minItem) > func(item)) { + minItem = item; + } + } + return minItem; +} +function findCommonMembers(arrays, uniqByFunc) { + const shortestArray = minBy(arrays, (_) => _.length); + const results = []; + for (const item of shortestArray) { + if (!arrays.some((array) => array.findIndex((_) => uniqByFunc(_) === uniqByFunc(item)) === -1)) { + results.push(item); + } + } + return results; +} +async function isEmpty(db) { + return !await get(db, STORE_KEYVALUE, KEY_URL); +} +async function hasData(db, url, eTag) { + const [oldETag, oldUrl] = await Promise.all([KEY_ETAG, KEY_URL].map((key) => get(db, STORE_KEYVALUE, key))); + return oldETag === eTag && oldUrl === url; +} +async function doFullDatabaseScanForSingleResult(db, predicate) { + const BATCH_SIZE = 50; + return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => { + let lastKey; + const processNextBatch = () => { + emojiStore.getAll(lastKey && IDBKeyRange.lowerBound(lastKey, true), BATCH_SIZE).onsuccess = (e) => { + const results = e.target.result; + for (const result of results) { + lastKey = result.unicode; + if (predicate(result)) { + return cb(result); + } + } + if (results.length < BATCH_SIZE) { + return cb(); + } + processNextBatch(); + }; + }; + processNextBatch(); + }); +} +async function loadData(db, emojiData, url, eTag) { + try { + const transformedData = transformEmojiData(emojiData); + await dbPromise(db, [STORE_EMOJI, STORE_KEYVALUE], MODE_READWRITE, ([emojiStore, metaStore], txn) => { + let oldETag; + let oldUrl; + let todo = 0; + function checkFetched() { + if (++todo === 2) { + onFetched(); + } + } + function onFetched() { + if (oldETag === eTag && oldUrl === url) { + return; + } + emojiStore.clear(); + for (const data of transformedData) { + emojiStore.put(data); + } + metaStore.put(eTag, KEY_ETAG); + metaStore.put(url, KEY_URL); + commit(txn); + } + getIDB(metaStore, KEY_ETAG, (result) => { + oldETag = result; + checkFetched(); + }); + getIDB(metaStore, KEY_URL, (result) => { + oldUrl = result; + checkFetched(); + }); + }); + } finally { + } +} +async function getEmojiByGroup(db, group) { + return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => { + const range = IDBKeyRange.bound([group, 0], [group + 1, 0], false, true); + getAllIDB(emojiStore.index(INDEX_GROUP_AND_ORDER), range, cb); + }); +} +async function getEmojiBySearchQuery(db, query) { + const tokens = normalizeTokens(extractTokens(query)); + if (!tokens.length) { + return []; + } + return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => { + const intermediateResults = []; + const checkDone = () => { + if (intermediateResults.length === tokens.length) { + onDone(); + } + }; + const onDone = () => { + const results = findCommonMembers(intermediateResults, (_) => _.unicode); + cb(results.sort((a, b) => a.order < b.order ? -1 : 1)); + }; + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const range = i === tokens.length - 1 ? IDBKeyRange.bound(token, token + "￿", false, true) : IDBKeyRange.only(token); + getAllIDB(emojiStore.index(INDEX_TOKENS), range, (result) => { + intermediateResults.push(result); + checkDone(); + }); + } + }); +} +async function getEmojiByShortcode(db, shortcode) { + const emojis = await getEmojiBySearchQuery(db, shortcode); + if (!emojis.length) { + const predicate = (_) => (_.shortcodes || []).includes(shortcode.toLowerCase()); + return await doFullDatabaseScanForSingleResult(db, predicate) || null; + } + return emojis.filter((_) => { + const lowerShortcodes = (_.shortcodes || []).map((_2) => _2.toLowerCase()); + return lowerShortcodes.includes(shortcode.toLowerCase()); + })[0] || null; +} +async function getEmojiByUnicode(db, unicode) { + return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => getIDB(emojiStore, unicode, (result) => { + if (result) { + return cb(result); + } + getIDB(emojiStore.index(INDEX_SKIN_UNICODE), unicode, (result2) => cb(result2 || null)); + })); +} +function get(db, storeName, key) { + return dbPromise(db, storeName, MODE_READONLY, (store, txn, cb) => getIDB(store, key, cb)); +} +function set(db, storeName, key, value) { + return dbPromise(db, storeName, MODE_READWRITE, (store, txn) => { + store.put(value, key); + commit(txn); + }); +} +function incrementFavoriteEmojiCount(db, unicode) { + return dbPromise(db, STORE_FAVORITES, MODE_READWRITE, (store, txn) => getIDB(store, unicode, (result) => { + store.put((result || 0) + 1, unicode); + commit(txn); + })); +} +function getTopFavoriteEmoji(db, customEmojiIndex2, limit) { + if (limit === 0) { + return []; + } + return dbPromise(db, [STORE_FAVORITES, STORE_EMOJI], MODE_READONLY, ([favoritesStore, emojiStore], txn, cb) => { + const results = []; + favoritesStore.index(INDEX_COUNT).openCursor(void 0, "prev").onsuccess = (e) => { + const cursor = e.target.result; + if (!cursor) { + return cb(results); + } + function addResult(result) { + results.push(result); + if (results.length === limit) { + return cb(results); + } + cursor.continue(); + } + const unicodeOrName = cursor.primaryKey; + const custom = customEmojiIndex2.byName(unicodeOrName); + if (custom) { + return addResult(custom); + } + getIDB(emojiStore, unicodeOrName, (emoji) => { + if (emoji) { + return addResult(emoji); + } + cursor.continue(); + }); + }; + }); +} +var CODA_MARKER = ""; +function trie(arr, itemToTokens) { + const map = /* @__PURE__ */ new Map(); + for (const item of arr) { + const tokens = itemToTokens(item); + for (const token of tokens) { + let currentMap = map; + for (let i = 0; i < token.length; i++) { + const char = token.charAt(i); + let nextMap = currentMap.get(char); + if (!nextMap) { + nextMap = /* @__PURE__ */ new Map(); + currentMap.set(char, nextMap); + } + currentMap = nextMap; + } + let valuesAtCoda = currentMap.get(CODA_MARKER); + if (!valuesAtCoda) { + valuesAtCoda = []; + currentMap.set(CODA_MARKER, valuesAtCoda); + } + valuesAtCoda.push(item); + } + } + const search = (query, exact) => { + let currentMap = map; + for (let i = 0; i < query.length; i++) { + const char = query.charAt(i); + const nextMap = currentMap.get(char); + if (nextMap) { + currentMap = nextMap; + } else { + return []; + } + } + if (exact) { + const results2 = currentMap.get(CODA_MARKER); + return results2 || []; + } + const results = []; + const queue = [currentMap]; + while (queue.length) { + const currentMap2 = queue.shift(); + const entriesSortedByKey = [...currentMap2.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1); + for (const [key, value] of entriesSortedByKey) { + if (key === CODA_MARKER) { + results.push(...value); + } else { + queue.push(value); + } + } + } + return results; + }; + return search; +} +var requiredKeys$1 = [ + "name", + "url" +]; +function assertCustomEmojis(customEmojis) { + const isArray = customEmojis && Array.isArray(customEmojis); + const firstItemIsFaulty = isArray && customEmojis.length && (!customEmojis[0] || requiredKeys$1.some((key) => !(key in customEmojis[0]))); + if (!isArray || firstItemIsFaulty) { + throw new Error("Custom emojis are in the wrong format"); + } +} +function customEmojiIndex(customEmojis) { + assertCustomEmojis(customEmojis); + const sortByName = (a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; + const all = customEmojis.sort(sortByName); + const emojiToTokens = (emoji) => { + const set2 = /* @__PURE__ */ new Set(); + if (emoji.shortcodes) { + for (const shortcode of emoji.shortcodes) { + for (const token of extractTokens(shortcode)) { + set2.add(token); + } + } + } + return set2; + }; + const searchTrie = trie(customEmojis, emojiToTokens); + const searchByExactMatch = (_) => searchTrie(_, true); + const searchByPrefix = (_) => searchTrie(_, false); + const search = (query) => { + const tokens = extractTokens(query); + const intermediateResults = tokens.map((token, i) => (i < tokens.length - 1 ? searchByExactMatch : searchByPrefix)(token)); + return findCommonMembers(intermediateResults, (_) => _.name).sort(sortByName); + }; + const shortcodeToEmoji = /* @__PURE__ */ new Map(); + const nameToEmoji = /* @__PURE__ */ new Map(); + for (const customEmoji of customEmojis) { + nameToEmoji.set(customEmoji.name.toLowerCase(), customEmoji); + for (const shortcode of customEmoji.shortcodes || []) { + shortcodeToEmoji.set(shortcode.toLowerCase(), customEmoji); + } + } + const byShortcode = (shortcode) => shortcodeToEmoji.get(shortcode.toLowerCase()); + const byName = (name) => nameToEmoji.get(name.toLowerCase()); + return { + all, + search, + byShortcode, + byName + }; +} +var isFirefoxContentScript = typeof wrappedJSObject !== "undefined"; +function cleanEmoji(emoji) { + if (!emoji) { + return emoji; + } + if (isFirefoxContentScript) { + emoji = structuredClone(emoji); + } + delete emoji.tokens; + if (emoji.skinTones) { + const len = emoji.skinTones.length; + emoji.skins = Array(len); + for (let i = 0; i < len; i++) { + emoji.skins[i] = { + tone: emoji.skinTones[i], + unicode: emoji.skinUnicodes[i], + version: emoji.skinVersions[i] + }; + } + delete emoji.skinTones; + delete emoji.skinUnicodes; + delete emoji.skinVersions; + } + return emoji; +} +function warnETag(eTag) { + if (!eTag) { + console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header."); + } +} +var requiredKeys = [ + "annotation", + "emoji", + "group", + "order", + "version" +]; +function assertEmojiData(emojiData) { + if (!emojiData || !Array.isArray(emojiData) || !emojiData[0] || typeof emojiData[0] !== "object" || requiredKeys.some((key) => !(key in emojiData[0]))) { + throw new Error("Emoji data is in the wrong format"); + } +} +function assertStatus(response, dataSource) { + if (Math.floor(response.status / 100) !== 2) { + throw new Error("Failed to fetch: " + dataSource + ": " + response.status); + } +} +async function getETag(dataSource) { + const response = await fetch(dataSource, { method: "HEAD" }); + assertStatus(response, dataSource); + const eTag = response.headers.get("etag"); + warnETag(eTag); + return eTag; +} +async function getETagAndData(dataSource) { + const response = await fetch(dataSource); + assertStatus(response, dataSource); + const eTag = response.headers.get("etag"); + warnETag(eTag); + const emojiData = await response.json(); + assertEmojiData(emojiData); + return [eTag, emojiData]; +} +function arrayBufferToBinaryString(buffer) { + var binary = ""; + var bytes = new Uint8Array(buffer); + var length = bytes.byteLength; + var i = -1; + while (++i < length) { + binary += String.fromCharCode(bytes[i]); + } + return binary; +} +function binaryStringToArrayBuffer(binary) { + var length = binary.length; + var buf = new ArrayBuffer(length); + var arr = new Uint8Array(buf); + var i = -1; + while (++i < length) { + arr[i] = binary.charCodeAt(i); + } + return buf; +} +async function jsonChecksum(object) { + const inString = JSON.stringify(object); + let inBuffer = binaryStringToArrayBuffer(inString); + const outBuffer = await crypto.subtle.digest("SHA-1", inBuffer); + const outBinString = arrayBufferToBinaryString(outBuffer); + const res = btoa(outBinString); + return res; +} +async function doCheckForUpdates(db, dataSource) { + let emojiData; + let eTag = await getETag(dataSource); + if (!eTag) { + const eTagAndData = await getETagAndData(dataSource); + eTag = eTagAndData[0]; + emojiData = eTagAndData[1]; + if (!eTag) { + eTag = await jsonChecksum(emojiData); + } + } + if (await hasData(db, dataSource, eTag)) ; + else { + if (!emojiData) { + const eTagAndData = await getETagAndData(dataSource); + emojiData = eTagAndData[1]; + } + await loadData(db, emojiData, dataSource, eTag); + } +} +async function loadDataForFirstTime(db, dataSource) { + let [eTag, emojiData] = await getETagAndData(dataSource); + if (!eTag) { + eTag = await jsonChecksum(emojiData); + } + await loadData(db, emojiData, dataSource, eTag); +} +async function checkForUpdates(db, dataSource) { + try { + await doCheckForUpdates(db, dataSource); + } catch (err) { + if (err.name !== "InvalidStateError") { + throw err; + } + } +} +var Database = class { + constructor({ dataSource = DEFAULT_DATA_SOURCE, locale = DEFAULT_LOCALE, customEmoji = [] } = {}) { + this.dataSource = dataSource; + this.locale = locale; + this._dbName = `emoji-picker-element-${this.locale}`; + this._db = void 0; + this._lazyUpdate = void 0; + this._custom = customEmojiIndex(customEmoji); + this._clear = this._clear.bind(this); + this._ready = this._init(); + } + async _init() { + const db = this._db = await openDatabase(this._dbName); + addOnCloseListener(this._dbName, this._clear); + const dataSource = this.dataSource; + const empty = await isEmpty(db); + if (empty) { + await loadDataForFirstTime(db, dataSource); + } else { + this._lazyUpdate = checkForUpdates(db, dataSource); + } + } + async ready() { + const checkReady = async () => { + if (!this._ready) { + this._ready = this._init(); + } + return this._ready; + }; + await checkReady(); + if (!this._db) { + await checkReady(); + } + } + async getEmojiByGroup(group) { + assertNumber(group); + await this.ready(); + return uniqEmoji(await getEmojiByGroup(this._db, group)).map(cleanEmoji); + } + async getEmojiBySearchQuery(query) { + assertNonEmptyString(query); + await this.ready(); + const customs = this._custom.search(query); + const natives = uniqEmoji(await getEmojiBySearchQuery(this._db, query)).map(cleanEmoji); + return [ + ...customs, + ...natives + ]; + } + async getEmojiByShortcode(shortcode) { + assertNonEmptyString(shortcode); + await this.ready(); + const custom = this._custom.byShortcode(shortcode); + if (custom) { + return custom; + } + return cleanEmoji(await getEmojiByShortcode(this._db, shortcode)); + } + async getEmojiByUnicodeOrName(unicodeOrName) { + assertNonEmptyString(unicodeOrName); + await this.ready(); + const custom = this._custom.byName(unicodeOrName); + if (custom) { + return custom; + } + return cleanEmoji(await getEmojiByUnicode(this._db, unicodeOrName)); + } + async getPreferredSkinTone() { + await this.ready(); + return await get(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE) || 0; + } + async setPreferredSkinTone(skinTone) { + assertNumber(skinTone); + await this.ready(); + return set(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE, skinTone); + } + async incrementFavoriteEmojiCount(unicodeOrName) { + assertNonEmptyString(unicodeOrName); + await this.ready(); + return incrementFavoriteEmojiCount(this._db, unicodeOrName); + } + async getTopFavoriteEmoji(limit) { + assertNumber(limit); + await this.ready(); + return (await getTopFavoriteEmoji(this._db, this._custom, limit)).map(cleanEmoji); + } + set customEmoji(customEmojis) { + this._custom = customEmojiIndex(customEmojis); + } + get customEmoji() { + return this._custom.all; + } + async _shutdown() { + await this.ready(); + try { + await this._lazyUpdate; + } catch (err) { + } + } + // clear references to IDB, e.g. during a close event + _clear() { + this._db = this._ready = this._lazyUpdate = void 0; + } + async close() { + await this._shutdown(); + await closeDatabase(this._dbName); + } + async delete() { + await this._shutdown(); + await deleteDatabase(this._dbName); + } +}; + +// node_modules/emoji-picker-element/picker.js +var allGroups = [ + [-1, "✨", "custom"], + [0, "😀", "smileys-emotion"], + [1, "👋", "people-body"], + [3, "🐱", "animals-nature"], + [4, "🍎", "food-drink"], + [5, "🏠️", "travel-places"], + [6, "⚽", "activities"], + [7, "📝", "objects"], + [8, "⛔️", "symbols"], + [9, "🏁", "flags"] +].map(([id, emoji, name]) => ({ id, emoji, name })); +var groups = allGroups.slice(1); +var MIN_SEARCH_TEXT_LENGTH2 = 2; +var NUM_SKIN_TONES = 6; +var rIC = typeof requestIdleCallback === "function" ? requestIdleCallback : setTimeout; +function hasZwj(emoji) { + return emoji.unicode.includes("‍"); +} +var versionsAndTestEmoji = { + "🫩": 16, + // face with bags under eyes + "🫨": 15.1, + // shaking head, technically from v15 but see note above + "🫠": 14, + "🥲": 13.1, + // smiling face with tear, technically from v13 but see note above + "🥻": 12.1, + // sari, technically from v12 but see note above + "🥰": 11, + "🤩": 5, + "👱‍♀️": 4, + "🤣": 3, + "👁️‍🗨️": 2, + "😀": 1, + "😐️": 0.7, + "😃": 0.6 +}; +var TIMEOUT_BEFORE_LOADING_MESSAGE = 1e3; +var DEFAULT_SKIN_TONE_EMOJI = "🖐️"; +var DEFAULT_NUM_COLUMNS = 8; +var MOST_COMMONLY_USED_EMOJI = [ + "😊", + "😒", + "❤️", + "👍️", + "😍", + "😂", + "😭", + "☺️", + "😔", + "😩", + "😏", + "💕", + "🙌", + "😘" +]; +var FONT_FAMILY = '"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif'; +var DEFAULT_CATEGORY_SORTING = (a, b) => a < b ? -1 : a > b ? 1 : 0; +var getTextFeature = (text, color) => { + const canvas = document.createElement("canvas"); + canvas.width = canvas.height = 1; + const ctx = canvas.getContext("2d", { + // Improves the performance of `getImageData()` + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getContextAttributes#willreadfrequently + willReadFrequently: true + }); + ctx.textBaseline = "top"; + ctx.font = `100px ${FONT_FAMILY}`; + ctx.fillStyle = color; + ctx.scale(0.01, 0.01); + ctx.fillText(text, 0, 0); + return ctx.getImageData(0, 0, 1, 1).data; +}; +var compareFeatures = (feature1, feature2) => { + const feature1Str = [...feature1].join(","); + const feature2Str = [...feature2].join(","); + return feature1Str === feature2Str && !feature1Str.startsWith("0,0,0,"); +}; +function testColorEmojiSupported(text) { + const feature1 = getTextFeature(text, "#000"); + const feature2 = getTextFeature(text, "#fff"); + return feature1 && feature2 && compareFeatures(feature1, feature2); +} +function determineEmojiSupportLevel() { + const entries = Object.entries(versionsAndTestEmoji); + try { + for (const [emoji, version] of entries) { + if (testColorEmojiSupported(emoji)) { + return version; + } + } + } catch (e) { + } finally { + } + return entries[0][1]; +} +var promise; +var detectEmojiSupportLevel = () => { + if (!promise) { + promise = new Promise((resolve) => rIC(() => resolve(determineEmojiSupportLevel()))); + } + return promise; +}; +var supportedZwjEmojis = /* @__PURE__ */ new Map(); +var VARIATION_SELECTOR = "️"; +var SKINTONE_MODIFIER = "\uD83C"; +var ZWJ = "‍"; +var LIGHT_SKIN_TONE = 127995; +var LIGHT_SKIN_TONE_MODIFIER = 57339; +function applySkinTone(str, skinTone) { + if (skinTone === 0) { + return str; + } + const zwjIndex = str.indexOf(ZWJ); + if (zwjIndex !== -1) { + return str.substring(0, zwjIndex) + String.fromCodePoint(LIGHT_SKIN_TONE + skinTone - 1) + str.substring(zwjIndex); + } + if (str.endsWith(VARIATION_SELECTOR)) { + str = str.substring(0, str.length - 1); + } + return str + SKINTONE_MODIFIER + String.fromCodePoint(LIGHT_SKIN_TONE_MODIFIER + skinTone - 1); +} +function halt(event) { + event.preventDefault(); + event.stopPropagation(); +} +function incrementOrDecrement(decrement, val, arr) { + val += decrement ? -1 : 1; + if (val < 0) { + val = arr.length - 1; + } else if (val >= arr.length) { + val = 0; + } + return val; +} +function uniqBy2(arr, func) { + const set2 = /* @__PURE__ */ new Set(); + const res = []; + for (const item of arr) { + const key = func(item); + if (!set2.has(key)) { + set2.add(key); + res.push(item); + } + } + return res; +} +function summarizeEmojisForUI(emojis, emojiSupportLevel) { + const toSimpleSkinsMap = (skins) => { + const res = {}; + for (const skin of skins) { + if (typeof skin.tone === "number" && skin.version <= emojiSupportLevel) { + res[skin.tone] = skin.unicode; + } + } + return res; + }; + return emojis.map(({ unicode, skins, shortcodes, url, name, category, annotation }) => ({ + unicode, + name, + shortcodes, + url, + category, + annotation, + id: unicode || name, + skins: skins && toSimpleSkinsMap(skins) + })); +} +var rAF = requestAnimationFrame; +var resizeObserverSupported = typeof ResizeObserver === "function"; +function resizeObserverAction(node, abortSignal, onUpdate) { + let resizeObserver; + if (resizeObserverSupported) { + resizeObserver = new ResizeObserver(onUpdate); + resizeObserver.observe(node); + } else { + rAF(onUpdate); + } + abortSignal.addEventListener("abort", () => { + if (resizeObserver) { + resizeObserver.disconnect(); + } + }); +} +function calculateTextWidth(node) { + { + const range = document.createRange(); + range.selectNode(node.firstChild); + return range.getBoundingClientRect().width; + } +} +var baselineEmojiWidth; +function checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode) { + let allSupported = true; + for (const emoji of zwjEmojisToCheck) { + const domNode = emojiToDomNode(emoji); + if (!domNode) { + continue; + } + const emojiWidth = calculateTextWidth(domNode); + if (typeof baselineEmojiWidth === "undefined") { + baselineEmojiWidth = calculateTextWidth(baselineEmoji); + } + const supported = emojiWidth / 1.8 < baselineEmojiWidth; + supportedZwjEmojis.set(emoji.unicode, supported); + if (!supported) { + allSupported = false; + } + } + return allSupported; +} +function uniq(arr) { + return uniqBy2(arr, (_) => _); +} +function resetScrollTopIfPossible(element) { + if (element) { + element.scrollTop = 0; + } +} +function getFromMap(cache, key, func) { + let cached = cache.get(key); + if (!cached) { + cached = func(); + cache.set(key, cached); + } + return cached; +} +function toString(value) { + return "" + value; +} +function parseTemplate(htmlString) { + const template = document.createElement("template"); + template.innerHTML = htmlString; + return template; +} +var parseCache = /* @__PURE__ */ new WeakMap(); +var domInstancesCache = /* @__PURE__ */ new WeakMap(); +var unkeyedSymbol = Symbol("un-keyed"); +var hasReplaceChildren = "replaceChildren" in Element.prototype; +function replaceChildren(parentNode, newChildren) { + if (hasReplaceChildren) { + parentNode.replaceChildren(...newChildren); + } else { + parentNode.innerHTML = ""; + parentNode.append(...newChildren); + } +} +function doChildrenNeedRerender(parentNode, newChildren) { + let oldChild = parentNode.firstChild; + let oldChildrenCount = 0; + while (oldChild) { + const newChild = newChildren[oldChildrenCount]; + if (newChild !== oldChild) { + return true; + } + oldChild = oldChild.nextSibling; + oldChildrenCount++; + } + return oldChildrenCount !== newChildren.length; +} +function patchChildren(newChildren, instanceBinding) { + const { targetNode } = instanceBinding; + let { targetParentNode } = instanceBinding; + let needsRerender = false; + if (targetParentNode) { + needsRerender = doChildrenNeedRerender(targetParentNode, newChildren); + } else { + needsRerender = true; + instanceBinding.targetNode = void 0; + instanceBinding.targetParentNode = targetParentNode = targetNode.parentNode; + } + if (needsRerender) { + replaceChildren(targetParentNode, newChildren); + } +} +function patch(expressions, instanceBindings) { + for (const instanceBinding of instanceBindings) { + const { + targetNode, + currentExpression, + binding: { + expressionIndex, + attributeName, + attributeValuePre, + attributeValuePost + } + } = instanceBinding; + const expression = expressions[expressionIndex]; + if (currentExpression === expression) { + continue; + } + instanceBinding.currentExpression = expression; + if (attributeName) { + if (expression === null) { + targetNode.removeAttribute(attributeName); + } else { + const newValue = attributeValuePre + toString(expression) + attributeValuePost; + targetNode.setAttribute(attributeName, newValue); + } + } else { + let newNode; + if (Array.isArray(expression)) { + patchChildren(expression, instanceBinding); + } else if (expression instanceof Element) { + newNode = expression; + targetNode.replaceWith(newNode); + } else { + targetNode.nodeValue = toString(expression); + } + if (newNode) { + instanceBinding.targetNode = newNode; + } + } + } +} +function parse(tokens) { + let htmlString = ""; + let withinTag = false; + let withinAttribute = false; + let elementIndexCounter = -1; + const elementsToBindings = /* @__PURE__ */ new Map(); + const elementIndexes = []; + let skipTokenChars = 0; + for (let i = 0, len = tokens.length; i < len; i++) { + const token = tokens[i]; + htmlString += token.slice(skipTokenChars); + if (i === len - 1) { + break; + } + for (let j = 0; j < token.length; j++) { + const char = token.charAt(j); + switch (char) { + case "<": { + const nextChar = token.charAt(j + 1); + if (nextChar === "/") { + elementIndexes.pop(); + } else { + withinTag = true; + elementIndexes.push(++elementIndexCounter); + } + break; + } + case ">": { + withinTag = false; + withinAttribute = false; + break; + } + case "=": { + withinAttribute = true; + break; + } + } + } + const elementIndex = elementIndexes[elementIndexes.length - 1]; + const bindings = getFromMap(elementsToBindings, elementIndex, () => []); + let attributeName; + let attributeValuePre; + let attributeValuePost; + if (withinAttribute) { + const attributePreMatch = /(\S+)="?([^"=]*)$/.exec(token); + attributeName = attributePreMatch[1]; + attributeValuePre = attributePreMatch[2]; + const attributePostMatch = /^([^">]*)("?)/.exec(tokens[i + 1]); + attributeValuePost = attributePostMatch[1]; + htmlString = htmlString.slice(0, -1 * attributePreMatch[0].length); + skipTokenChars = attributePostMatch[0].length; + } else { + skipTokenChars = 0; + } + const binding = { + attributeName, + attributeValuePre, + attributeValuePost, + expressionIndex: i + }; + bindings.push(binding); + if (!withinTag && !withinAttribute) { + htmlString += " "; + } + } + const template = parseTemplate(htmlString); + return { + template, + elementsToBindings + }; +} +function applyBindings(bindings, element, instanceBindings) { + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + const targetNode = binding.attributeName ? element : element.firstChild; + const instanceBinding = { + binding, + targetNode, + targetParentNode: void 0, + currentExpression: void 0 + }; + instanceBindings.push(instanceBinding); + } +} +function traverseAndSetupBindings(rootElement, elementsToBindings) { + const instanceBindings = []; + let topLevelBindings; + if (elementsToBindings.size === 1 && (topLevelBindings = elementsToBindings.get(0))) { + applyBindings(topLevelBindings, rootElement, instanceBindings); + } else { + const treeWalker = document.createTreeWalker(rootElement, NodeFilter.SHOW_ELEMENT); + let element = rootElement; + let elementIndex = -1; + do { + const bindings = elementsToBindings.get(++elementIndex); + if (bindings) { + applyBindings(bindings, element, instanceBindings); + } + } while (element = treeWalker.nextNode()); + } + return instanceBindings; +} +function parseHtml(tokens) { + const { template, elementsToBindings } = getFromMap(parseCache, tokens, () => parse(tokens)); + const dom = template.cloneNode(true).content.firstElementChild; + const instanceBindings = traverseAndSetupBindings(dom, elementsToBindings); + return function updateDomInstance(expressions) { + patch(expressions, instanceBindings); + return dom; + }; +} +function createFramework(state) { + const domInstances = getFromMap(domInstancesCache, state, () => /* @__PURE__ */ new Map()); + let domInstanceCacheKey = unkeyedSymbol; + function html(tokens, ...expressions) { + const domInstancesForTokens = getFromMap(domInstances, tokens, () => /* @__PURE__ */ new Map()); + const updateDomInstance = getFromMap(domInstancesForTokens, domInstanceCacheKey, () => parseHtml(tokens)); + return updateDomInstance(expressions); + } + function map(array, callback, keyFunction) { + return array.map((item, index) => { + const originalCacheKey = domInstanceCacheKey; + domInstanceCacheKey = keyFunction(item); + try { + return callback(item, index); + } finally { + domInstanceCacheKey = originalCacheKey; + } + }); + } + return { map, html }; +} +function render(container, state, helpers, events, actions, refs, abortSignal, actionContext, firstRender) { + const { labelWithSkin, titleForEmoji, unicodeWithSkin } = helpers; + const { html, map } = createFramework(state); + function emojiList(emojis, searchMode, prefix) { + return map(emojis, (emoji, i) => { + return html``; + }, (emoji) => `${prefix}-${emoji.id}`); + } + const section = () => { + return html`
${state.i18n.searchDescription}
${state.i18n.skinToneDescription}
${map(state.skinTones, (skinTone, i) => { + return html`
${skinTone}
`; + }, (skinTone) => skinTone)}
${map(state.currentEmojisWithCategories, (emojiWithCategory, i) => { + return html`
${emojiList( + emojiWithCategory.emojis, + state.searchMode, + /* prefix */ + "emo" + )}
`; + }, (emojiWithCategory) => emojiWithCategory.category)}
`; + }; + const rootDom = section(); + const forElementWithAttribute = (attributeName, callback) => { + for (const element of container.querySelectorAll(`[${attributeName}]`)) { + callback(element, element.getAttribute(attributeName)); + } + }; + if (firstRender) { + container.appendChild(rootDom); + for (const eventName of ["click", "focusout", "input", "keydown", "keyup"]) { + forElementWithAttribute(`data-on-${eventName}`, (element, listenerName) => { + element.addEventListener(eventName, events[listenerName]); + }); + } + forElementWithAttribute("data-ref", (element, ref) => { + refs[ref] = element; + }); + abortSignal.addEventListener("abort", () => { + container.removeChild(rootDom); + }); + } + forElementWithAttribute("data-action", (element, action) => { + let boundActions = actionContext.get(action); + if (!boundActions) { + actionContext.set(action, boundActions = /* @__PURE__ */ new WeakSet()); + } + if (!boundActions.has(element)) { + boundActions.add(element); + actions[action](element); + } + }); +} +var qM = typeof queueMicrotask === "function" ? queueMicrotask : (callback) => Promise.resolve().then(callback); +function createState(abortSignal) { + let destroyed = false; + let currentObserver; + const propsToObservers = /* @__PURE__ */ new Map(); + const dirtyObservers = /* @__PURE__ */ new Set(); + let queued; + const flush = () => { + if (destroyed) { + return; + } + const observersToRun = [...dirtyObservers]; + dirtyObservers.clear(); + try { + for (const observer of observersToRun) { + observer(); + } + } finally { + queued = false; + if (dirtyObservers.size) { + queued = true; + qM(flush); + } + } + }; + const state = new Proxy({}, { + get(target, prop) { + if (currentObserver) { + let observers = propsToObservers.get(prop); + if (!observers) { + observers = /* @__PURE__ */ new Set(); + propsToObservers.set(prop, observers); + } + observers.add(currentObserver); + } + return target[prop]; + }, + set(target, prop, newValue) { + if (target[prop] !== newValue) { + target[prop] = newValue; + const observers = propsToObservers.get(prop); + if (observers) { + for (const observer of observers) { + dirtyObservers.add(observer); + } + if (!queued) { + queued = true; + qM(flush); + } + } + } + return true; + } + }); + const createEffect = (callback) => { + const runnable = () => { + const oldObserver = currentObserver; + currentObserver = runnable; + try { + return callback(); + } finally { + currentObserver = oldObserver; + } + }; + return runnable(); + }; + abortSignal.addEventListener("abort", () => { + destroyed = true; + }); + return { + state, + createEffect + }; +} +function arraysAreEqualByFunction(left, right, areEqualFunc) { + if (left.length !== right.length) { + return false; + } + for (let i = 0; i < left.length; i++) { + if (!areEqualFunc(left[i], right[i])) { + return false; + } + } + return true; +} +var intersectionObserverCache = /* @__PURE__ */ new WeakMap(); +function intersectionObserverAction(node, abortSignal, listener) { + { + const root = node.closest(".tabpanel"); + let observer = intersectionObserverCache.get(root); + if (!observer) { + observer = new IntersectionObserver(listener, { + root, + // trigger if we are 1/2 scroll container height away so that the images load a bit quicker while scrolling + rootMargin: "50% 0px 50% 0px", + // trigger if any part of the emoji grid is intersecting + threshold: 0 + }); + intersectionObserverCache.set(root, observer); + abortSignal.addEventListener("abort", () => { + observer.disconnect(); + }); + } + observer.observe(node); + } +} +var EMPTY_ARRAY = []; +var { assign } = Object; +function createRoot(shadowRoot, props) { + const refs = {}; + const abortController = new AbortController(); + const abortSignal = abortController.signal; + const { state, createEffect } = createState(abortSignal); + const actionContext = /* @__PURE__ */ new Map(); + assign(state, { + skinToneEmoji: void 0, + i18n: void 0, + database: void 0, + customEmoji: void 0, + customCategorySorting: void 0, + emojiVersion: void 0 + }); + assign(state, props); + assign(state, { + initialLoad: true, + currentEmojis: [], + currentEmojisWithCategories: [], + rawSearchText: "", + searchText: "", + searchMode: false, + activeSearchItem: -1, + message: void 0, + skinTonePickerExpanded: false, + skinTonePickerExpandedAfterAnimation: false, + currentSkinTone: 0, + activeSkinTone: 0, + skinToneButtonText: void 0, + pickerStyle: void 0, + skinToneButtonLabel: "", + skinTones: [], + currentFavorites: [], + defaultFavoriteEmojis: void 0, + numColumns: DEFAULT_NUM_COLUMNS, + isRtl: false, + currentGroupIndex: 0, + groups, + databaseLoaded: false, + activeSearchItemId: void 0 + }); + createEffect(() => { + if (state.currentGroup !== state.groups[state.currentGroupIndex]) { + state.currentGroup = state.groups[state.currentGroupIndex]; + } + }); + const focus = (id) => { + shadowRoot.getElementById(id).focus(); + }; + const emojiToDomNode = (emoji) => shadowRoot.getElementById(`emo-${emoji.id}`); + const fireEvent = (name, detail) => { + refs.rootElement.dispatchEvent(new CustomEvent(name, { + detail, + bubbles: true, + composed: true + })); + }; + const compareEmojiArrays = (a, b) => a.id === b.id; + const compareCurrentEmojisWithCategories = (a, b) => { + const { category: aCategory, emojis: aEmojis } = a; + const { category: bCategory, emojis: bEmojis } = b; + if (aCategory !== bCategory) { + return false; + } + return arraysAreEqualByFunction(aEmojis, bEmojis, compareEmojiArrays); + }; + const updateCurrentEmojis = (newEmojis) => { + if (!arraysAreEqualByFunction(state.currentEmojis, newEmojis, compareEmojiArrays)) { + state.currentEmojis = newEmojis; + } + }; + const updateSearchMode = (newSearchMode) => { + if (state.searchMode !== newSearchMode) { + state.searchMode = newSearchMode; + } + }; + const updateCurrentEmojisWithCategories = (newEmojisWithCategories) => { + if (!arraysAreEqualByFunction(state.currentEmojisWithCategories, newEmojisWithCategories, compareCurrentEmojisWithCategories)) { + state.currentEmojisWithCategories = newEmojisWithCategories; + } + }; + const unicodeWithSkin = (emoji, currentSkinTone) => currentSkinTone && emoji.skins && emoji.skins[currentSkinTone] || emoji.unicode; + const labelWithSkin = (emoji, currentSkinTone) => uniq([ + emoji.name || unicodeWithSkin(emoji, currentSkinTone), + emoji.annotation, + ...emoji.shortcodes || EMPTY_ARRAY + ].filter(Boolean)).join(", "); + const titleForEmoji = (emoji) => emoji.annotation || (emoji.shortcodes || EMPTY_ARRAY).join(", "); + const helpers = { + labelWithSkin, + titleForEmoji, + unicodeWithSkin + }; + const events = { + onClickSkinToneButton, + onEmojiClick, + onNavClick, + onNavKeydown, + onSearchKeydown, + onSkinToneOptionsClick, + onSkinToneOptionsFocusOut, + onSkinToneOptionsKeydown, + onSkinToneOptionsKeyup, + onSearchInput + }; + const actions = { + calculateEmojiGridStyle, + updateOnIntersection + }; + let firstRender = true; + createEffect(() => { + render(shadowRoot, state, helpers, events, actions, refs, abortSignal, actionContext, firstRender); + firstRender = false; + }); + if (!state.emojiVersion) { + detectEmojiSupportLevel().then((level) => { + if (!level) { + state.message = state.i18n.emojiUnsupportedMessage; + } + }); + } + createEffect(() => { + async function handleDatabaseLoading() { + let showingLoadingMessage = false; + const timeoutHandle = setTimeout(() => { + showingLoadingMessage = true; + state.message = state.i18n.loadingMessage; + }, TIMEOUT_BEFORE_LOADING_MESSAGE); + try { + await state.database.ready(); + state.databaseLoaded = true; + } catch (err) { + console.error(err); + state.message = state.i18n.networkErrorMessage; + } finally { + clearTimeout(timeoutHandle); + if (showingLoadingMessage) { + showingLoadingMessage = false; + state.message = ""; + } + } + } + if (state.database) { + handleDatabaseLoading(); + } + }); + createEffect(() => { + state.pickerStyle = ` + --num-groups: ${state.groups.length}; + --indicator-opacity: ${state.searchMode ? 0 : 1}; + --num-skintones: ${NUM_SKIN_TONES};`; + }); + createEffect(() => { + if (state.customEmoji && state.database) { + updateCustomEmoji(); + } + }); + createEffect(() => { + if (state.customEmoji && state.customEmoji.length) { + if (state.groups !== allGroups) { + state.groups = allGroups; + } + } else if (state.groups !== groups) { + if (state.currentGroupIndex) { + state.currentGroupIndex--; + } + state.groups = groups; + } + }); + createEffect(() => { + async function updatePreferredSkinTone() { + if (state.databaseLoaded) { + state.currentSkinTone = await state.database.getPreferredSkinTone(); + } + } + updatePreferredSkinTone(); + }); + createEffect(() => { + state.skinTones = Array(NUM_SKIN_TONES).fill().map((_, i) => applySkinTone(state.skinToneEmoji, i)); + }); + createEffect(() => { + state.skinToneButtonText = state.skinTones[state.currentSkinTone]; + }); + createEffect(() => { + state.skinToneButtonLabel = state.i18n.skinToneLabel.replace("{skinTone}", state.i18n.skinTones[state.currentSkinTone]); + }); + createEffect(() => { + async function updateDefaultFavoriteEmojis() { + const { database } = state; + const favs = (await Promise.all(MOST_COMMONLY_USED_EMOJI.map((unicode) => database.getEmojiByUnicodeOrName(unicode)))).filter(Boolean); + state.defaultFavoriteEmojis = favs; + } + if (state.databaseLoaded) { + updateDefaultFavoriteEmojis(); + } + }); + function updateCustomEmoji() { + const { customEmoji, database } = state; + const databaseCustomEmoji = customEmoji || EMPTY_ARRAY; + if (database.customEmoji !== databaseCustomEmoji) { + database.customEmoji = databaseCustomEmoji; + } + } + createEffect(() => { + async function updateFavorites() { + updateCustomEmoji(); + const { database, defaultFavoriteEmojis, numColumns } = state; + const dbFavorites = await database.getTopFavoriteEmoji(numColumns); + const favorites = await summarizeEmojis(uniqBy2([ + ...dbFavorites, + ...defaultFavoriteEmojis + ], (_) => _.unicode || _.name).slice(0, numColumns)); + state.currentFavorites = favorites; + } + if (state.databaseLoaded && state.defaultFavoriteEmojis) { + updateFavorites(); + } + }); + function calculateEmojiGridStyle(node) { + resizeObserverAction(node, abortSignal, () => { + { + const style = getComputedStyle(refs.rootElement); + const newNumColumns = parseInt(style.getPropertyValue("--num-columns"), 10); + const newIsRtl = style.getPropertyValue("direction") === "rtl"; + state.numColumns = newNumColumns; + state.isRtl = newIsRtl; + } + }); + } + function updateOnIntersection(node) { + intersectionObserverAction(node, abortSignal, (entries) => { + for (const { target, isIntersecting } of entries) { + target.classList.toggle("onscreen", isIntersecting); + } + }); + } + createEffect(() => { + async function updateEmojis() { + const { searchText, currentGroup, databaseLoaded, customEmoji } = state; + if (!databaseLoaded) { + state.currentEmojis = []; + state.searchMode = false; + } else if (searchText.length >= MIN_SEARCH_TEXT_LENGTH2) { + const newEmojis = await getEmojisBySearchQuery(searchText); + if (state.searchText === searchText) { + updateCurrentEmojis(newEmojis); + updateSearchMode(true); + } + } else { + const { id: currentGroupId } = currentGroup; + if (currentGroupId !== -1 || customEmoji && customEmoji.length) { + const newEmojis = await getEmojisByGroup(currentGroupId); + if (state.currentGroup.id === currentGroupId) { + updateCurrentEmojis(newEmojis); + updateSearchMode(false); + } + } + } + } + updateEmojis(); + }); + const resetScrollTopInRaf = () => { + rAF(() => resetScrollTopIfPossible(refs.tabpanelElement)); + }; + createEffect(() => { + const { currentEmojis, emojiVersion } = state; + const zwjEmojisToCheck = currentEmojis.filter((emoji) => emoji.unicode).filter((emoji) => hasZwj(emoji) && !supportedZwjEmojis.has(emoji.unicode)); + if (!emojiVersion && zwjEmojisToCheck.length) { + updateCurrentEmojis(currentEmojis); + rAF(() => checkZwjSupportAndUpdate(zwjEmojisToCheck)); + } else { + const newEmojis = emojiVersion ? currentEmojis : currentEmojis.filter(isZwjSupported); + updateCurrentEmojis(newEmojis); + resetScrollTopInRaf(); + } + }); + function checkZwjSupportAndUpdate(zwjEmojisToCheck) { + const allSupported = checkZwjSupport(zwjEmojisToCheck, refs.baselineEmoji, emojiToDomNode); + if (allSupported) { + resetScrollTopInRaf(); + } else { + state.currentEmojis = [...state.currentEmojis]; + } + } + function isZwjSupported(emoji) { + return !emoji.unicode || !hasZwj(emoji) || supportedZwjEmojis.get(emoji.unicode); + } + async function filterEmojisByVersion(emojis) { + const emojiSupportLevel = state.emojiVersion || await detectEmojiSupportLevel(); + return emojis.filter(({ version }) => !version || version <= emojiSupportLevel); + } + async function summarizeEmojis(emojis) { + return summarizeEmojisForUI(emojis, state.emojiVersion || await detectEmojiSupportLevel()); + } + async function getEmojisByGroup(group) { + const emoji = group === -1 ? state.customEmoji : await state.database.getEmojiByGroup(group); + return summarizeEmojis(await filterEmojisByVersion(emoji)); + } + async function getEmojisBySearchQuery(query) { + return summarizeEmojis(await filterEmojisByVersion(await state.database.getEmojiBySearchQuery(query))); + } + createEffect(() => { + }); + createEffect(() => { + function calculateCurrentEmojisWithCategories() { + const { searchMode, currentEmojis } = state; + if (searchMode) { + return [ + { + category: "", + emojis: currentEmojis + } + ]; + } + const categoriesToEmoji = /* @__PURE__ */ new Map(); + for (const emoji of currentEmojis) { + const category = emoji.category || ""; + let emojis = categoriesToEmoji.get(category); + if (!emojis) { + emojis = []; + categoriesToEmoji.set(category, emojis); + } + emojis.push(emoji); + } + return [...categoriesToEmoji.entries()].map(([category, emojis]) => ({ category, emojis })).sort((a, b) => state.customCategorySorting(a.category, b.category)); + } + const newEmojisWithCategories = calculateCurrentEmojisWithCategories(); + updateCurrentEmojisWithCategories(newEmojisWithCategories); + }); + createEffect(() => { + state.activeSearchItemId = state.activeSearchItem !== -1 && state.currentEmojis[state.activeSearchItem].id; + }); + createEffect(() => { + const { rawSearchText } = state; + rIC(() => { + state.searchText = (rawSearchText || "").trim(); + state.activeSearchItem = -1; + }); + }); + function onSearchKeydown(event) { + if (!state.searchMode || !state.currentEmojis.length) { + return; + } + const goToNextOrPrevious = (previous) => { + halt(event); + state.activeSearchItem = incrementOrDecrement(previous, state.activeSearchItem, state.currentEmojis); + }; + switch (event.key) { + case "ArrowDown": + return goToNextOrPrevious(false); + case "ArrowUp": + return goToNextOrPrevious(true); + case "Enter": + if (state.activeSearchItem === -1) { + state.activeSearchItem = 0; + } else { + halt(event); + return clickEmoji(state.currentEmojis[state.activeSearchItem].id); + } + } + } + function onNavClick(event) { + const { target } = event; + const closestTarget = target.closest(".nav-button"); + if (!closestTarget) { + return; + } + const groupId = parseInt(closestTarget.dataset.groupId, 10); + refs.searchElement.value = ""; + state.rawSearchText = ""; + state.searchText = ""; + state.activeSearchItem = -1; + state.currentGroupIndex = state.groups.findIndex((_) => _.id === groupId); + } + function onNavKeydown(event) { + const { target, key } = event; + const doFocus = (el) => { + if (el) { + halt(event); + el.focus(); + } + }; + switch (key) { + case "ArrowLeft": + return doFocus(target.previousElementSibling); + case "ArrowRight": + return doFocus(target.nextElementSibling); + case "Home": + return doFocus(target.parentElement.firstElementChild); + case "End": + return doFocus(target.parentElement.lastElementChild); + } + } + async function clickEmoji(unicodeOrName) { + const emoji = await state.database.getEmojiByUnicodeOrName(unicodeOrName); + const emojiSummary = [...state.currentEmojis, ...state.currentFavorites].find((_) => _.id === unicodeOrName); + const skinTonedUnicode = emojiSummary.unicode && unicodeWithSkin(emojiSummary, state.currentSkinTone); + await state.database.incrementFavoriteEmojiCount(unicodeOrName); + fireEvent("emoji-click", { + emoji, + skinTone: state.currentSkinTone, + ...skinTonedUnicode && { unicode: skinTonedUnicode }, + ...emojiSummary.name && { name: emojiSummary.name } + }); + } + async function onEmojiClick(event) { + const { target } = event; + if (!target.classList.contains("emoji")) { + return; + } + halt(event); + const id = target.id.substring(4); + clickEmoji(id); + } + function changeSkinTone(skinTone) { + state.currentSkinTone = skinTone; + state.skinTonePickerExpanded = false; + focus("skintone-button"); + fireEvent("skin-tone-change", { skinTone }); + state.database.setPreferredSkinTone(skinTone); + } + function onSkinToneOptionsClick(event) { + const { target: { id } } = event; + const match = id && id.match(/^skintone-(\d)/); + if (!match) { + return; + } + halt(event); + const skinTone = parseInt(match[1], 10); + changeSkinTone(skinTone); + } + function onClickSkinToneButton(event) { + state.skinTonePickerExpanded = !state.skinTonePickerExpanded; + state.activeSkinTone = state.currentSkinTone; + if (state.skinTonePickerExpanded) { + halt(event); + rAF(() => focus("skintone-list")); + } + } + createEffect(() => { + if (state.skinTonePickerExpanded) { + refs.skinToneDropdown.addEventListener("transitionend", () => { + state.skinTonePickerExpandedAfterAnimation = true; + }, { once: true }); + } else { + state.skinTonePickerExpandedAfterAnimation = false; + } + }); + function onSkinToneOptionsKeydown(event) { + if (!state.skinTonePickerExpanded) { + return; + } + const changeActiveSkinTone = async (nextSkinTone) => { + halt(event); + state.activeSkinTone = nextSkinTone; + }; + switch (event.key) { + case "ArrowUp": + return changeActiveSkinTone(incrementOrDecrement(true, state.activeSkinTone, state.skinTones)); + case "ArrowDown": + return changeActiveSkinTone(incrementOrDecrement(false, state.activeSkinTone, state.skinTones)); + case "Home": + return changeActiveSkinTone(0); + case "End": + return changeActiveSkinTone(state.skinTones.length - 1); + case "Enter": + halt(event); + return changeSkinTone(state.activeSkinTone); + case "Escape": + halt(event); + state.skinTonePickerExpanded = false; + return focus("skintone-button"); + } + } + function onSkinToneOptionsKeyup(event) { + if (!state.skinTonePickerExpanded) { + return; + } + switch (event.key) { + case " ": + halt(event); + return changeSkinTone(state.activeSkinTone); + } + } + async function onSkinToneOptionsFocusOut(event) { + const { relatedTarget } = event; + if (!relatedTarget || relatedTarget.id !== "skintone-list") { + state.skinTonePickerExpanded = false; + } + } + function onSearchInput(event) { + state.rawSearchText = event.target.value; + } + return { + $set(newState) { + assign(state, newState); + }, + $destroy() { + abortController.abort(); + } + }; +} +var DEFAULT_DATA_SOURCE2 = "https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json"; +var DEFAULT_LOCALE2 = "en"; +var enI18n = { + categoriesLabel: "Categories", + emojiUnsupportedMessage: "Your browser does not support color emoji.", + favoritesLabel: "Favorites", + loadingMessage: "Loading…", + networkErrorMessage: "Could not load emoji.", + regionLabel: "Emoji picker", + searchDescription: "When search results are available, press up or down to select and enter to choose.", + searchLabel: "Search", + searchResultsLabel: "Search results", + skinToneDescription: "When expanded, press up or down to select and enter to choose.", + skinToneLabel: "Choose a skin tone (currently {skinTone})", + skinTonesLabel: "Skin tones", + skinTones: [ + "Default", + "Light", + "Medium-Light", + "Medium", + "Medium-Dark", + "Dark" + ], + categories: { + custom: "Custom", + "smileys-emotion": "Smileys and emoticons", + "people-body": "People and body", + "animals-nature": "Animals and nature", + "food-drink": "Food and drink", + "travel-places": "Travel and places", + activities: "Activities", + objects: "Objects", + symbols: "Symbols", + flags: "Flags" + } +}; +var baseStyles = ':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}'; +var PROPS = [ + "customEmoji", + "customCategorySorting", + "database", + "dataSource", + "i18n", + "locale", + "skinToneEmoji", + "emojiVersion" +]; +var EXTRA_STYLES = `:host{--emoji-font-family:${FONT_FAMILY}}`; +var PickerElement = class extends HTMLElement { + constructor(props) { + super(); + this.attachShadow({ mode: "open" }); + const style = document.createElement("style"); + style.textContent = baseStyles + EXTRA_STYLES; + this.shadowRoot.appendChild(style); + this._ctx = { + // Set defaults + locale: DEFAULT_LOCALE2, + dataSource: DEFAULT_DATA_SOURCE2, + skinToneEmoji: DEFAULT_SKIN_TONE_EMOJI, + customCategorySorting: DEFAULT_CATEGORY_SORTING, + customEmoji: null, + i18n: enI18n, + emojiVersion: null, + ...props + }; + for (const prop of PROPS) { + if (prop !== "database" && Object.prototype.hasOwnProperty.call(this, prop)) { + this._ctx[prop] = this[prop]; + delete this[prop]; + } + } + this._dbFlush(); + } + connectedCallback() { + if (!this._cmp) { + this._cmp = createRoot(this.shadowRoot, this._ctx); + } + } + disconnectedCallback() { + qM(() => { + if (!this.isConnected && this._cmp) { + this._cmp.$destroy(); + this._cmp = void 0; + const { database } = this._ctx; + database.close().catch((err) => console.error(err)); + } + }); + } + static get observedAttributes() { + return ["locale", "data-source", "skin-tone-emoji", "emoji-version"]; + } + attributeChangedCallback(attrName, oldValue, newValue) { + this._set( + // convert from kebab-case to camelcase + // see https://github.com/sveltejs/svelte/issues/3852#issuecomment-665037015 + attrName.replace(/-([a-z])/g, (_, up) => up.toUpperCase()), + // convert string attribute to float if necessary + attrName === "emoji-version" ? parseFloat(newValue) : newValue + ); + } + _set(prop, newValue) { + this._ctx[prop] = newValue; + if (this._cmp) { + this._cmp.$set({ [prop]: newValue }); + } + if (["locale", "dataSource"].includes(prop)) { + this._dbFlush(); + } + } + _dbCreate() { + const { locale, dataSource, database } = this._ctx; + if (!database || database.locale !== locale || database.dataSource !== dataSource) { + this._set("database", new Database({ locale, dataSource })); + } + } + // Update the Database in one microtask if the locale/dataSource change. We do one microtask + // so we don't create two Databases if e.g. both the locale and the dataSource change + _dbFlush() { + qM(() => this._dbCreate()); + } +}; +var definitions = {}; +for (const prop of PROPS) { + definitions[prop] = { + get() { + if (prop === "database") { + this._dbCreate(); + } + return this._ctx[prop]; + }, + set(val) { + if (prop === "database") { + throw new Error("database is read-only"); + } + this._set(prop, val); + } + }; +} +Object.defineProperties(PickerElement.prototype, definitions); +if (!customElements.get("emoji-picker")) { + customElements.define("emoji-picker", PickerElement); +} +export { + Database, + PickerElement as Picker +}; +//# sourceMappingURL=emoji-picker-element.js.map diff --git a/node_modules/.vite/deps/emoji-picker-element.js.map b/node_modules/.vite/deps/emoji-picker-element.js.map new file mode 100644 index 0000000..14e6720 --- /dev/null +++ b/node_modules/.vite/deps/emoji-picker-element.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../emoji-picker-element/database.js", "../../emoji-picker-element/picker.js"], + "sourcesContent": ["function assertNonEmptyString (str) {\n if (typeof str !== 'string' || !str) {\n throw new Error('expected a non-empty string, got: ' + str)\n }\n}\n\nfunction assertNumber (number) {\n if (typeof number !== 'number') {\n throw new Error('expected a number, got: ' + number)\n }\n}\n\nconst DB_VERSION_CURRENT = 1;\nconst DB_VERSION_INITIAL = 1;\nconst STORE_EMOJI = 'emoji';\nconst STORE_KEYVALUE = 'keyvalue';\nconst STORE_FAVORITES = 'favorites';\nconst FIELD_TOKENS = 'tokens';\nconst INDEX_TOKENS = 'tokens';\nconst FIELD_UNICODE = 'unicode';\nconst INDEX_COUNT = 'count';\nconst FIELD_GROUP = 'group';\nconst FIELD_ORDER = 'order';\nconst INDEX_GROUP_AND_ORDER = 'group-order';\nconst KEY_ETAG = 'eTag';\nconst KEY_URL = 'url';\nconst KEY_PREFERRED_SKINTONE = 'skinTone';\nconst MODE_READONLY = 'readonly';\nconst MODE_READWRITE = 'readwrite';\nconst INDEX_SKIN_UNICODE = 'skinUnicodes';\nconst FIELD_SKIN_UNICODE = 'skinUnicodes';\n\nconst DEFAULT_DATA_SOURCE = 'https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json';\nconst DEFAULT_LOCALE = 'en';\n\n// like lodash's uniqBy but much smaller\nfunction uniqBy (arr, func) {\n const set = new Set();\n const res = [];\n for (const item of arr) {\n const key = func(item);\n if (!set.has(key)) {\n set.add(key);\n res.push(item);\n }\n }\n return res\n}\n\nfunction uniqEmoji (emojis) {\n return uniqBy(emojis, _ => _.unicode)\n}\n\nfunction initialMigration (db) {\n function createObjectStore (name, keyPath, indexes) {\n const store = keyPath\n ? db.createObjectStore(name, { keyPath })\n : db.createObjectStore(name);\n if (indexes) {\n for (const [indexName, [keyPath, multiEntry]] of Object.entries(indexes)) {\n store.createIndex(indexName, keyPath, { multiEntry });\n }\n }\n return store\n }\n\n createObjectStore(STORE_KEYVALUE);\n createObjectStore(STORE_EMOJI, /* keyPath */ FIELD_UNICODE, {\n [INDEX_TOKENS]: [FIELD_TOKENS, /* multiEntry */ true],\n [INDEX_GROUP_AND_ORDER]: [[FIELD_GROUP, FIELD_ORDER]],\n [INDEX_SKIN_UNICODE]: [FIELD_SKIN_UNICODE, /* multiEntry */ true]\n });\n createObjectStore(STORE_FAVORITES, undefined, {\n [INDEX_COUNT]: ['']\n });\n}\n\nconst openIndexedDBRequests = {};\nconst databaseCache = {};\nconst onCloseListeners = {};\n\nfunction handleOpenOrDeleteReq (resolve, reject, req) {\n // These things are almost impossible to test with fakeIndexedDB sadly\n /* istanbul ignore next */\n req.onerror = () => reject(req.error);\n /* istanbul ignore next */\n req.onblocked = () => reject(new Error('IDB blocked'));\n req.onsuccess = () => resolve(req.result);\n}\n\nasync function createDatabase (dbName) {\n const db = await new Promise((resolve, reject) => {\n const req = indexedDB.open(dbName, DB_VERSION_CURRENT);\n openIndexedDBRequests[dbName] = req;\n req.onupgradeneeded = e => {\n // Technically there is only one version, so we don't need this `if` check\n // But if an old version of the JS is in another browser tab\n // and it gets upgraded in the future and we have a new DB version, well...\n // better safe than sorry.\n /* istanbul ignore else */\n if (e.oldVersion < DB_VERSION_INITIAL) {\n initialMigration(req.result);\n }\n };\n handleOpenOrDeleteReq(resolve, reject, req);\n });\n // Handle abnormal closes, e.g. \"delete database\" in chrome dev tools.\n // No need for removeEventListener, because once the DB can no longer\n // fire \"close\" events, it will auto-GC.\n // Unfortunately cannot test in fakeIndexedDB: https://github.com/dumbmatter/fakeIndexedDB/issues/50\n /* istanbul ignore next */\n db.onclose = () => closeDatabase(dbName);\n return db\n}\n\nfunction openDatabase (dbName) {\n if (!databaseCache[dbName]) {\n databaseCache[dbName] = createDatabase(dbName);\n }\n return databaseCache[dbName]\n}\n\nfunction dbPromise (db, storeName, readOnlyOrReadWrite, cb) {\n return new Promise((resolve, reject) => {\n // Use relaxed durability because neither the emoji data nor the favorites/preferred skin tone\n // are really irreplaceable data. IndexedDB is just a cache in this case.\n const txn = db.transaction(storeName, readOnlyOrReadWrite, { durability: 'relaxed' });\n const store = typeof storeName === 'string'\n ? txn.objectStore(storeName)\n : storeName.map(name => txn.objectStore(name));\n let res;\n cb(store, txn, (result) => {\n res = result;\n });\n\n txn.oncomplete = () => resolve(res);\n /* istanbul ignore next */\n txn.onerror = () => reject(txn.error);\n })\n}\n\nfunction closeDatabase (dbName) {\n // close any open requests\n const req = openIndexedDBRequests[dbName];\n const db = req && req.result;\n if (db) {\n db.close();\n const listeners = onCloseListeners[dbName];\n /* istanbul ignore else */\n if (listeners) {\n for (const listener of listeners) {\n listener();\n }\n }\n }\n delete openIndexedDBRequests[dbName];\n delete databaseCache[dbName];\n delete onCloseListeners[dbName];\n}\n\nfunction deleteDatabase (dbName) {\n return new Promise((resolve, reject) => {\n // close any open requests\n closeDatabase(dbName);\n const req = indexedDB.deleteDatabase(dbName);\n handleOpenOrDeleteReq(resolve, reject, req);\n })\n}\n\n// The \"close\" event occurs during an abnormal shutdown, e.g. a user clearing their browser data.\n// However, it doesn't occur with the normal \"close\" event, so we handle that separately.\n// https://www.w3.org/TR/IndexedDB/#close-a-database-connection\nfunction addOnCloseListener (dbName, listener) {\n let listeners = onCloseListeners[dbName];\n if (!listeners) {\n listeners = onCloseListeners[dbName] = [];\n }\n listeners.push(listener);\n}\n\n// list of emoticons that don't match a simple \\W+ regex\n// extracted using:\n// require('emoji-picker-element-data/en/emojibase/data.json').map(_ => _.emoticon).filter(Boolean).filter(_ => !/^\\W+$/.test(_))\nconst irregularEmoticons = new Set([\n ':D', 'XD', \":'D\", 'O:)',\n ':X', ':P', ';P', 'XP',\n ':L', ':Z', ':j', '8D',\n 'XO', '8)', ':B', ':O',\n ':S', \":'o\", 'Dx', 'X(',\n 'D:', ':C', '>0)', ':3',\n ' {\n if (!word.match(/\\w/) || irregularEmoticons.has(word)) {\n // for pure emoticons like :) or :-), just leave them as-is\n return word.toLowerCase()\n }\n\n return word\n .replace(/[)(:,]/g, '')\n .replace(/’/g, \"'\")\n .toLowerCase()\n }).filter(Boolean)\n}\n\nconst MIN_SEARCH_TEXT_LENGTH = 2;\n\n// This is an extra step in addition to extractTokens(). The difference here is that we expect\n// the input to have already been run through extractTokens(). This is useful for cases like\n// emoticons, where we don't want to do any tokenization (because it makes no sense to split up\n// \">:)\" by the colon) but we do want to lowercase it to have consistent search results, so that\n// the user can type ':P' or ':p' and still get the same result.\nfunction normalizeTokens (str) {\n return str\n .filter(Boolean)\n .map(_ => _.toLowerCase())\n .filter(_ => _.length >= MIN_SEARCH_TEXT_LENGTH)\n}\n\n// Transform emoji data for storage in IDB\nfunction transformEmojiData (emojiData) {\n const res = emojiData.map(({ annotation, emoticon, group, order, shortcodes, skins, tags, emoji, version }) => {\n const tokens = [...new Set(\n normalizeTokens([\n ...(shortcodes || []).map(extractTokens).flat(),\n ...(tags || []).map(extractTokens).flat(),\n ...extractTokens(annotation),\n emoticon\n ])\n )].sort();\n const res = {\n annotation,\n group,\n order,\n tags,\n tokens,\n unicode: emoji,\n version\n };\n if (emoticon) {\n res.emoticon = emoticon;\n }\n if (shortcodes) {\n res.shortcodes = shortcodes;\n }\n if (skins) {\n res.skinTones = [];\n res.skinUnicodes = [];\n res.skinVersions = [];\n for (const { tone, emoji, version } of skins) {\n res.skinTones.push(tone);\n res.skinUnicodes.push(emoji);\n res.skinVersions.push(version);\n }\n }\n return res\n });\n return res\n}\n\n// helper functions that help compress the code better\n\nfunction callStore (store, method, key, cb) {\n store[method](key).onsuccess = e => (cb && cb(e.target.result));\n}\n\nfunction getIDB (store, key, cb) {\n callStore(store, 'get', key, cb);\n}\n\nfunction getAllIDB (store, key, cb) {\n callStore(store, 'getAll', key, cb);\n}\n\nfunction commit (txn) {\n /* istanbul ignore else */\n if (txn.commit) {\n txn.commit();\n }\n}\n\n// like lodash's minBy\nfunction minBy (array, func) {\n let minItem = array[0];\n for (let i = 1; i < array.length; i++) {\n const item = array[i];\n if (func(minItem) > func(item)) {\n minItem = item;\n }\n }\n return minItem\n}\n\n// return an array of results representing all items that are found in each one of the arrays\n//\n\nfunction findCommonMembers (arrays, uniqByFunc) {\n const shortestArray = minBy(arrays, _ => _.length);\n const results = [];\n for (const item of shortestArray) {\n // if this item is included in every array in the intermediate results, add it to the final results\n if (!arrays.some(array => array.findIndex(_ => uniqByFunc(_) === uniqByFunc(item)) === -1)) {\n results.push(item);\n }\n }\n return results\n}\n\nasync function isEmpty (db) {\n return !(await get(db, STORE_KEYVALUE, KEY_URL))\n}\n\nasync function hasData (db, url, eTag) {\n const [oldETag, oldUrl] = await Promise.all([KEY_ETAG, KEY_URL]\n .map(key => get(db, STORE_KEYVALUE, key)));\n return (oldETag === eTag && oldUrl === url)\n}\n\nasync function doFullDatabaseScanForSingleResult (db, predicate) {\n // This batching algorithm is just a perf improvement over a basic\n // cursor. The BATCH_SIZE is an estimate of what would give the best\n // perf for doing a full DB scan (worst case).\n //\n // Mini-benchmark for determining the best batch size:\n //\n // PERF=1 pnpm build:rollup && pnpm test:adhoc\n //\n // (async () => {\n // performance.mark('start')\n // await $('emoji-picker').database.getEmojiByShortcode('doesnotexist')\n // performance.measure('total', 'start')\n // console.log(performance.getEntriesByName('total').slice(-1)[0].duration)\n // })()\n const BATCH_SIZE = 50; // Typically around 150ms for 6x slowdown in Chrome for above benchmark\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n let lastKey;\n\n const processNextBatch = () => {\n emojiStore.getAll(lastKey && IDBKeyRange.lowerBound(lastKey, true), BATCH_SIZE).onsuccess = e => {\n const results = e.target.result;\n for (const result of results) {\n lastKey = result.unicode;\n if (predicate(result)) {\n return cb(result)\n }\n }\n if (results.length < BATCH_SIZE) {\n return cb()\n }\n processNextBatch();\n };\n };\n processNextBatch();\n })\n}\n\nasync function loadData (db, emojiData, url, eTag) {\n try {\n const transformedData = transformEmojiData(emojiData);\n await dbPromise(db, [STORE_EMOJI, STORE_KEYVALUE], MODE_READWRITE, ([emojiStore, metaStore], txn) => {\n let oldETag;\n let oldUrl;\n let todo = 0;\n\n function checkFetched () {\n if (++todo === 2) { // 2 requests made\n onFetched();\n }\n }\n\n function onFetched () {\n if (oldETag === eTag && oldUrl === url) {\n // check again within the transaction to guard against concurrency, e.g. multiple browser tabs\n return\n }\n // delete old data\n emojiStore.clear();\n // insert new data\n for (const data of transformedData) {\n emojiStore.put(data);\n }\n metaStore.put(eTag, KEY_ETAG);\n metaStore.put(url, KEY_URL);\n commit(txn);\n }\n\n getIDB(metaStore, KEY_ETAG, result => {\n oldETag = result;\n checkFetched();\n });\n\n getIDB(metaStore, KEY_URL, result => {\n oldUrl = result;\n checkFetched();\n });\n });\n } finally {\n }\n}\n\nasync function getEmojiByGroup (db, group) {\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n const range = IDBKeyRange.bound([group, 0], [group + 1, 0], false, true);\n getAllIDB(emojiStore.index(INDEX_GROUP_AND_ORDER), range, cb);\n })\n}\n\nasync function getEmojiBySearchQuery (db, query) {\n const tokens = normalizeTokens(extractTokens(query));\n\n if (!tokens.length) {\n return []\n }\n\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n // get all results that contain all tokens (i.e. an AND query)\n const intermediateResults = [];\n\n const checkDone = () => {\n if (intermediateResults.length === tokens.length) {\n onDone();\n }\n };\n\n const onDone = () => {\n const results = findCommonMembers(intermediateResults, _ => _.unicode);\n cb(results.sort((a, b) => a.order < b.order ? -1 : 1));\n };\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const range = i === tokens.length - 1\n ? IDBKeyRange.bound(token, token + '\\uffff', false, true) // treat last token as a prefix search\n : IDBKeyRange.only(token); // treat all other tokens as an exact match\n getAllIDB(emojiStore.index(INDEX_TOKENS), range, result => {\n intermediateResults.push(result);\n checkDone();\n });\n }\n })\n}\n\n// This could have been implemented as an IDB index on shortcodes, but it seemed wasteful to do that\n// when we can already query by tokens and this will give us what we're looking for 99.9% of the time\nasync function getEmojiByShortcode (db, shortcode) {\n const emojis = await getEmojiBySearchQuery(db, shortcode);\n\n // In very rare cases (e.g. the shortcode \"v\" as in \"v for victory\"), we cannot search because\n // there are no usable tokens (too short in this case). In that case, we have to do an inefficient\n // full-database scan, which I believe is an acceptable tradeoff for not having to have an extra\n // index on shortcodes.\n\n if (!emojis.length) {\n const predicate = _ => ((_.shortcodes || []).includes(shortcode.toLowerCase()));\n return (await doFullDatabaseScanForSingleResult(db, predicate)) || null\n }\n\n return emojis.filter(_ => {\n const lowerShortcodes = (_.shortcodes || []).map(_ => _.toLowerCase());\n return lowerShortcodes.includes(shortcode.toLowerCase())\n })[0] || null\n}\n\nasync function getEmojiByUnicode (db, unicode) {\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => (\n getIDB(emojiStore, unicode, result => {\n if (result) {\n return cb(result)\n }\n getIDB(emojiStore.index(INDEX_SKIN_UNICODE), unicode, result => cb(result || null));\n })\n ))\n}\n\nfunction get (db, storeName, key) {\n return dbPromise(db, storeName, MODE_READONLY, (store, txn, cb) => (\n getIDB(store, key, cb)\n ))\n}\n\nfunction set (db, storeName, key, value) {\n return dbPromise(db, storeName, MODE_READWRITE, (store, txn) => {\n store.put(value, key);\n commit(txn);\n })\n}\n\nfunction incrementFavoriteEmojiCount (db, unicode) {\n return dbPromise(db, STORE_FAVORITES, MODE_READWRITE, (store, txn) => (\n getIDB(store, unicode, result => {\n store.put((result || 0) + 1, unicode);\n commit(txn);\n })\n ))\n}\n\nfunction getTopFavoriteEmoji (db, customEmojiIndex, limit) {\n if (limit === 0) {\n return []\n }\n return dbPromise(db, [STORE_FAVORITES, STORE_EMOJI], MODE_READONLY, ([favoritesStore, emojiStore], txn, cb) => {\n const results = [];\n favoritesStore.index(INDEX_COUNT).openCursor(undefined, 'prev').onsuccess = e => {\n const cursor = e.target.result;\n if (!cursor) { // no more results\n return cb(results)\n }\n\n function addResult (result) {\n results.push(result);\n if (results.length === limit) {\n return cb(results) // done, reached the limit\n }\n cursor.continue();\n }\n\n const unicodeOrName = cursor.primaryKey;\n const custom = customEmojiIndex.byName(unicodeOrName);\n if (custom) {\n return addResult(custom)\n }\n // This could be done in parallel (i.e. make the cursor and the get()s parallelized),\n // but my testing suggests it's not actually faster.\n getIDB(emojiStore, unicodeOrName, emoji => {\n if (emoji) {\n return addResult(emoji)\n }\n // emoji not found somehow, ignore (may happen if custom emoji change)\n cursor.continue();\n });\n };\n })\n}\n\n// trie data structure for prefix searches\n// loosely based on https://github.com/nolanlawson/substring-trie\n\nconst CODA_MARKER = ''; // marks the end of the string\n\nfunction trie (arr, itemToTokens) {\n const map = new Map();\n for (const item of arr) {\n const tokens = itemToTokens(item);\n for (const token of tokens) {\n let currentMap = map;\n for (let i = 0; i < token.length; i++) {\n const char = token.charAt(i);\n let nextMap = currentMap.get(char);\n if (!nextMap) {\n nextMap = new Map();\n currentMap.set(char, nextMap);\n }\n currentMap = nextMap;\n }\n let valuesAtCoda = currentMap.get(CODA_MARKER);\n if (!valuesAtCoda) {\n valuesAtCoda = [];\n currentMap.set(CODA_MARKER, valuesAtCoda);\n }\n valuesAtCoda.push(item);\n }\n }\n\n const search = (query, exact) => {\n let currentMap = map;\n for (let i = 0; i < query.length; i++) {\n const char = query.charAt(i);\n const nextMap = currentMap.get(char);\n if (nextMap) {\n currentMap = nextMap;\n } else {\n return []\n }\n }\n\n if (exact) {\n const results = currentMap.get(CODA_MARKER);\n return results || []\n }\n\n const results = [];\n // traverse\n const queue = [currentMap];\n while (queue.length) {\n const currentMap = queue.shift();\n const entriesSortedByKey = [...currentMap.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1);\n for (const [key, value] of entriesSortedByKey) {\n if (key === CODA_MARKER) { // CODA_MARKER always comes first; it's the empty string\n results.push(...value);\n } else {\n queue.push(value);\n }\n }\n }\n return results\n };\n\n return search\n}\n\nconst requiredKeys$1 = [\n 'name',\n 'url'\n];\n\nfunction assertCustomEmojis (customEmojis) {\n const isArray = customEmojis && Array.isArray(customEmojis);\n const firstItemIsFaulty = isArray &&\n customEmojis.length &&\n (!customEmojis[0] || requiredKeys$1.some(key => !(key in customEmojis[0])));\n if (!isArray || firstItemIsFaulty) {\n throw new Error('Custom emojis are in the wrong format')\n }\n}\n\nfunction customEmojiIndex (customEmojis) {\n assertCustomEmojis(customEmojis);\n\n const sortByName = (a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;\n\n //\n // all()\n //\n const all = customEmojis.sort(sortByName);\n\n //\n // search()\n //\n const emojiToTokens = emoji => {\n const set = new Set();\n if (emoji.shortcodes) {\n for (const shortcode of emoji.shortcodes) {\n for (const token of extractTokens(shortcode)) {\n set.add(token);\n }\n }\n }\n return set\n };\n const searchTrie = trie(customEmojis, emojiToTokens);\n const searchByExactMatch = _ => searchTrie(_, true);\n const searchByPrefix = _ => searchTrie(_, false);\n\n // Search by query for custom emoji. Similar to how we do this in IDB, the last token\n // is treated as a prefix search, but every other one is treated as an exact match.\n // Then we AND the results together\n const search = query => {\n const tokens = extractTokens(query);\n const intermediateResults = tokens.map((token, i) => (\n (i < tokens.length - 1 ? searchByExactMatch : searchByPrefix)(token)\n ));\n return findCommonMembers(intermediateResults, _ => _.name).sort(sortByName)\n };\n\n //\n // byShortcode, byName\n //\n const shortcodeToEmoji = new Map();\n const nameToEmoji = new Map();\n for (const customEmoji of customEmojis) {\n nameToEmoji.set(customEmoji.name.toLowerCase(), customEmoji);\n for (const shortcode of (customEmoji.shortcodes || [])) {\n shortcodeToEmoji.set(shortcode.toLowerCase(), customEmoji);\n }\n }\n\n const byShortcode = shortcode => shortcodeToEmoji.get(shortcode.toLowerCase());\n const byName = name => nameToEmoji.get(name.toLowerCase());\n\n return {\n all,\n search,\n byShortcode,\n byName\n }\n}\n\nconst isFirefoxContentScript = typeof wrappedJSObject !== 'undefined';\n\n// remove some internal implementation details, i.e. the \"tokens\" array on the emoji object\n// essentially, convert the emoji from the version stored in IDB to the version used in-memory\nfunction cleanEmoji (emoji) {\n if (!emoji) {\n return emoji\n }\n // if inside a Firefox content script, need to clone the emoji object to prevent Firefox from complaining about\n // cross-origin object. See: https://github.com/nolanlawson/emoji-picker-element/issues/356\n /* istanbul ignore if */\n if (isFirefoxContentScript) {\n emoji = structuredClone(emoji);\n }\n delete emoji.tokens;\n if (emoji.skinTones) {\n const len = emoji.skinTones.length;\n emoji.skins = Array(len);\n for (let i = 0; i < len; i++) {\n emoji.skins[i] = {\n tone: emoji.skinTones[i],\n unicode: emoji.skinUnicodes[i],\n version: emoji.skinVersions[i]\n };\n }\n delete emoji.skinTones;\n delete emoji.skinUnicodes;\n delete emoji.skinVersions;\n }\n return emoji\n}\n\nfunction warnETag (eTag) {\n if (!eTag) {\n console.warn('emoji-picker-element is more efficient if the dataSource server exposes an ETag header.');\n }\n}\n\nconst requiredKeys = [\n 'annotation',\n 'emoji',\n 'group',\n 'order',\n 'version'\n];\n\nfunction assertEmojiData (emojiData) {\n if (!emojiData ||\n !Array.isArray(emojiData) ||\n !emojiData[0] ||\n (typeof emojiData[0] !== 'object') ||\n requiredKeys.some(key => (!(key in emojiData[0])))) {\n throw new Error('Emoji data is in the wrong format')\n }\n}\n\nfunction assertStatus (response, dataSource) {\n if (Math.floor(response.status / 100) !== 2) {\n throw new Error('Failed to fetch: ' + dataSource + ': ' + response.status)\n }\n}\n\nasync function getETag (dataSource) {\n const response = await fetch(dataSource, { method: 'HEAD' });\n assertStatus(response, dataSource);\n const eTag = response.headers.get('etag');\n warnETag(eTag);\n return eTag\n}\n\nasync function getETagAndData (dataSource) {\n const response = await fetch(dataSource);\n assertStatus(response, dataSource);\n const eTag = response.headers.get('etag');\n warnETag(eTag);\n const emojiData = await response.json();\n assertEmojiData(emojiData);\n return [eTag, emojiData]\n}\n\n// TODO: including these in blob-util.ts causes typedoc to generate docs for them,\n// even with --excludePrivate ¯\\_(ツ)_/¯\n/** @private */\n/**\n * Convert an `ArrayBuffer` to a binary string.\n *\n * Example:\n *\n * ```js\n * var myString = blobUtil.arrayBufferToBinaryString(arrayBuff)\n * ```\n *\n * @param buffer - array buffer\n * @returns binary string\n */\nfunction arrayBufferToBinaryString(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n var i = -1;\n while (++i < length) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\n/**\n * Convert a binary string to an `ArrayBuffer`.\n *\n * ```js\n * var myBuffer = blobUtil.binaryStringToArrayBuffer(binaryString)\n * ```\n *\n * @param binary - binary string\n * @returns array buffer\n */\nfunction binaryStringToArrayBuffer(binary) {\n var length = binary.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n var i = -1;\n while (++i < length) {\n arr[i] = binary.charCodeAt(i);\n }\n return buf;\n}\n\n// generate a checksum based on the stringified JSON\nasync function jsonChecksum (object) {\n const inString = JSON.stringify(object);\n let inBuffer = binaryStringToArrayBuffer(inString);\n\n // this does not need to be cryptographically secure, SHA-1 is fine\n const outBuffer = await crypto.subtle.digest('SHA-1', inBuffer);\n const outBinString = arrayBufferToBinaryString(outBuffer);\n const res = btoa(outBinString);\n return res\n}\n\nasync function doCheckForUpdates (db, dataSource) {\n // just do a simple HEAD request first to see if the eTags match\n let emojiData;\n let eTag = await getETag(dataSource);\n if (!eTag) { // work around lack of ETag/Access-Control-Expose-Headers\n const eTagAndData = await getETagAndData(dataSource);\n eTag = eTagAndData[0];\n emojiData = eTagAndData[1];\n if (!eTag) {\n eTag = await jsonChecksum(emojiData);\n }\n }\n if (await hasData(db, dataSource, eTag)) ; else {\n if (!emojiData) {\n const eTagAndData = await getETagAndData(dataSource);\n emojiData = eTagAndData[1];\n }\n await loadData(db, emojiData, dataSource, eTag);\n }\n}\n\nasync function loadDataForFirstTime (db, dataSource) {\n let [eTag, emojiData] = await getETagAndData(dataSource);\n if (!eTag) {\n // Handle lack of support for ETag or Access-Control-Expose-Headers\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers#Browser_compatibility\n eTag = await jsonChecksum(emojiData);\n }\n\n await loadData(db, emojiData, dataSource, eTag);\n}\n\nasync function checkForUpdates (db, dataSource) {\n try {\n await doCheckForUpdates(db, dataSource);\n } catch (err) {\n // Checking for updates is not a critical operation, and it can fail if e.g. the picker is quickly removed and\n // re-added to the DOM. In those cases, we may get an IndexedDB InvalidStateError because we are attempting to close\n // the database connection, possibly while another request is inflight. So there's effectively no way to prevent\n // InvalidStateErrors unless we were to carefully sequence our IndexedDB operations. Much more simply, we can just\n // ignore IndexedDB InvalidStateErrors here and give users one less useless error message in their console.\n if (err.name !== 'InvalidStateError') {\n throw err\n }\n }\n}\n\nclass Database {\n constructor ({ dataSource = DEFAULT_DATA_SOURCE, locale = DEFAULT_LOCALE, customEmoji = [] } = {}) {\n this.dataSource = dataSource;\n this.locale = locale;\n this._dbName = `emoji-picker-element-${this.locale}`;\n this._db = undefined;\n this._lazyUpdate = undefined;\n this._custom = customEmojiIndex(customEmoji);\n\n this._clear = this._clear.bind(this);\n this._ready = this._init();\n }\n\n async _init () {\n const db = this._db = await openDatabase(this._dbName);\n\n addOnCloseListener(this._dbName, this._clear);\n const dataSource = this.dataSource;\n const empty = await isEmpty(db);\n\n if (empty) {\n await loadDataForFirstTime(db, dataSource);\n } else { // offline-first - do an update asynchronously\n this._lazyUpdate = checkForUpdates(db, dataSource);\n }\n }\n\n async ready () {\n const checkReady = async () => {\n if (!this._ready) {\n this._ready = this._init();\n }\n return this._ready\n };\n await checkReady();\n // There's a possibility of a race condition where the element gets added, removed, and then added again\n // with a particular timing, which would set the _db to undefined.\n // We *could* do a while loop here, but that seems excessive and could lead to an infinite loop.\n if (!this._db) {\n await checkReady();\n }\n }\n\n async getEmojiByGroup (group) {\n assertNumber(group);\n await this.ready();\n return uniqEmoji(await getEmojiByGroup(this._db, group)).map(cleanEmoji)\n }\n\n async getEmojiBySearchQuery (query) {\n assertNonEmptyString(query);\n await this.ready();\n const customs = this._custom.search(query);\n const natives = uniqEmoji(await getEmojiBySearchQuery(this._db, query)).map(cleanEmoji);\n return [\n ...customs,\n ...natives\n ]\n }\n\n async getEmojiByShortcode (shortcode) {\n assertNonEmptyString(shortcode);\n await this.ready();\n const custom = this._custom.byShortcode(shortcode);\n if (custom) {\n return custom\n }\n return cleanEmoji(await getEmojiByShortcode(this._db, shortcode))\n }\n\n async getEmojiByUnicodeOrName (unicodeOrName) {\n assertNonEmptyString(unicodeOrName);\n await this.ready();\n const custom = this._custom.byName(unicodeOrName);\n if (custom) {\n return custom\n }\n return cleanEmoji(await getEmojiByUnicode(this._db, unicodeOrName))\n }\n\n async getPreferredSkinTone () {\n await this.ready();\n return (await get(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE)) || 0\n }\n\n async setPreferredSkinTone (skinTone) {\n assertNumber(skinTone);\n await this.ready();\n return set(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE, skinTone)\n }\n\n async incrementFavoriteEmojiCount (unicodeOrName) {\n assertNonEmptyString(unicodeOrName);\n await this.ready();\n return incrementFavoriteEmojiCount(this._db, unicodeOrName)\n }\n\n async getTopFavoriteEmoji (limit) {\n assertNumber(limit);\n await this.ready();\n return (await getTopFavoriteEmoji(this._db, this._custom, limit)).map(cleanEmoji)\n }\n\n set customEmoji (customEmojis) {\n this._custom = customEmojiIndex(customEmojis);\n }\n\n get customEmoji () {\n return this._custom.all\n }\n\n async _shutdown () {\n await this.ready(); // reopen if we've already been closed/deleted\n try {\n await this._lazyUpdate; // allow any lazy updates to process before closing/deleting\n } catch (err) { /* ignore network errors (offline-first) */ }\n }\n\n // clear references to IDB, e.g. during a close event\n _clear () {\n // We don't need to call removeEventListener or remove the manual \"close\" listeners.\n // The memory leak tests prove this is unnecessary. It's because:\n // 1) IDBDatabases that can no longer fire \"close\" automatically have listeners GCed\n // 2) we clear the manual close listeners in databaseLifecycle.js.\n this._db = this._ready = this._lazyUpdate = undefined;\n }\n\n async close () {\n await this._shutdown();\n await closeDatabase(this._dbName);\n }\n\n async delete () {\n await this._shutdown();\n await deleteDatabase(this._dbName);\n }\n}\n\nexport { Database as default };\n", "import Database from './database.js';\n\n// via https://unpkg.com/browse/emojibase-data@6.0.0/meta/groups.json\nconst allGroups = [\n [-1, '✨', 'custom'],\n [0, '😀', 'smileys-emotion'],\n [1, '👋', 'people-body'],\n [3, '🐱', 'animals-nature'],\n [4, '🍎', 'food-drink'],\n [5, '🏠️', 'travel-places'],\n [6, '⚽', 'activities'],\n [7, '📝', 'objects'],\n [8, '⛔️', 'symbols'],\n [9, '🏁', 'flags']\n].map(([id, emoji, name]) => ({ id, emoji, name }));\n\nconst groups = allGroups.slice(1);\n\nconst MIN_SEARCH_TEXT_LENGTH = 2;\nconst NUM_SKIN_TONES = 6;\n\n/* istanbul ignore next */\nconst rIC = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n\n// check for ZWJ (zero width joiner) character\nfunction hasZwj (emoji) {\n return emoji.unicode.includes('\\u200d')\n}\n\n// Find one good representative emoji from each version to test by checking its color.\n// Ideally it should have color in the center. For some inspiration, see:\n// https://about.gitlab.com/blog/2018/05/30/journey-in-native-unicode-emoji/\n//\n// Note that for certain versions (12.1, 13.1), there is no point in testing them explicitly, because\n// all the emoji from this version are compound-emoji from previous versions. So they would pass a color\n// test, even in browsers that display them as double emoji. (E.g. \"face in clouds\" might render as\n// \"face without mouth\" plus \"fog\".) These emoji can only be filtered using the width test,\n// which happens in checkZwjSupport.js.\nconst versionsAndTestEmoji = {\n '🫩': 16, // face with bags under eyes\n '🫨': 15.1, // shaking head, technically from v15 but see note above\n '🫠': 14,\n '🥲': 13.1, // smiling face with tear, technically from v13 but see note above\n '🥻': 12.1, // sari, technically from v12 but see note above\n '🥰': 11,\n '🤩': 5,\n '👱‍♀️': 4,\n '🤣': 3,\n '👁️‍🗨️': 2,\n '😀': 1,\n '😐️': 0.7,\n '😃': 0.6\n};\n\nconst TIMEOUT_BEFORE_LOADING_MESSAGE = 1000; // 1 second\nconst DEFAULT_SKIN_TONE_EMOJI = '🖐️';\nconst DEFAULT_NUM_COLUMNS = 8;\n\n// Based on https://fivethirtyeight.com/features/the-100-most-used-emojis/ and\n// https://blog.emojipedia.org/facebook-reveals-most-and-least-used-emojis/ with\n// a bit of my own curation. (E.g. avoid the \"OK\" gesture because of connotations:\n// https://emojipedia.org/ok-hand/)\nconst MOST_COMMONLY_USED_EMOJI = [\n '😊',\n '😒',\n '❤️',\n '👍️',\n '😍',\n '😂',\n '😭',\n '☺️',\n '😔',\n '😩',\n '😏',\n '💕',\n '🙌',\n '😘'\n];\n\n// It's important to list Twemoji Mozilla before everything else, because Mozilla bundles their\n// own font on some platforms (notably Windows and Linux as of this writing). Typically, Mozilla\n// updates faster than the underlying OS, and we don't want to render older emoji in one font and\n// newer emoji in another font:\n// https://github.com/nolanlawson/emoji-picker-element/pull/268#issuecomment-1073347283\nconst FONT_FAMILY = '\"Twemoji Mozilla\",\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",' +\n '\"Noto Color Emoji\",\"EmojiOne Color\",\"Android Emoji\",sans-serif';\n\n/* istanbul ignore next */\nconst DEFAULT_CATEGORY_SORTING = (a, b) => a < b ? -1 : a > b ? 1 : 0;\n\n// Test if an emoji is supported by rendering it to canvas and checking that the color is not black\n// See https://about.gitlab.com/blog/2018/05/30/journey-in-native-unicode-emoji/\n// and https://www.npmjs.com/package/if-emoji for inspiration\n// This implementation is largely borrowed from if-emoji, adding the font-family\n\n\nconst getTextFeature = (text, color) => {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n\n const ctx = canvas.getContext('2d', {\n // Improves the performance of `getImageData()`\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getContextAttributes#willreadfrequently\n willReadFrequently: true\n });\n ctx.textBaseline = 'top';\n ctx.font = `100px ${FONT_FAMILY}`;\n ctx.fillStyle = color;\n ctx.scale(0.01, 0.01);\n ctx.fillText(text, 0, 0);\n\n return ctx.getImageData(0, 0, 1, 1).data\n};\n\nconst compareFeatures = (feature1, feature2) => {\n const feature1Str = [...feature1].join(',');\n const feature2Str = [...feature2].join(',');\n // This is RGBA, so for 0,0,0, we are checking that the first RGB is not all zeroes.\n // Most of the time when unsupported this is 0,0,0,0, but on Chrome on Mac it is\n // 0,0,0,61 - there is a transparency here.\n return feature1Str === feature2Str && !feature1Str.startsWith('0,0,0,')\n};\n\nfunction testColorEmojiSupported (text) {\n // Render white and black and then compare them to each other and ensure they're the same\n // color, and neither one is black. This shows that the emoji was rendered in color.\n const feature1 = getTextFeature(text, '#000');\n const feature2 = getTextFeature(text, '#fff');\n return feature1 && feature2 && compareFeatures(feature1, feature2)\n}\n\n// rather than check every emoji ever, which would be expensive, just check some representatives from the\n// different emoji releases to determine what the font supports\n\nfunction determineEmojiSupportLevel () {\n const entries = Object.entries(versionsAndTestEmoji);\n try {\n // start with latest emoji and work backwards\n for (const [emoji, version] of entries) {\n if (testColorEmojiSupported(emoji)) {\n return version\n }\n }\n } catch (e) { // canvas error\n } finally {\n }\n // In case of an error, be generous and just assume all emoji are supported (e.g. for canvas errors\n // due to anti-fingerprinting add-ons). Better to show some gray boxes than nothing at all.\n return entries[0][1] // first one in the list is the most recent version\n}\n\n// Check which emojis we know for sure aren't supported, based on Unicode version level\nlet promise;\nconst detectEmojiSupportLevel = () => {\n if (!promise) {\n // Delay so it can run while the IDB database is being created by the browser (on another thread).\n // This helps especially with first load – we want to start pre-populating the database on the main thread,\n // and then wait for IDB to commit everything, and while waiting we run this check.\n promise = new Promise(resolve => (\n rIC(() => (\n resolve(determineEmojiSupportLevel()) // delay so ideally this can run while IDB is first populating\n ))\n ));\n }\n return promise\n};\n// determine which emojis containing ZWJ (zero width joiner) characters\n// are supported (rendered as one glyph) rather than unsupported (rendered as two or more glyphs)\nconst supportedZwjEmojis = new Map();\n\nconst VARIATION_SELECTOR = '\\ufe0f';\nconst SKINTONE_MODIFIER = '\\ud83c';\nconst ZWJ = '\\u200d';\nconst LIGHT_SKIN_TONE = 0x1F3FB;\nconst LIGHT_SKIN_TONE_MODIFIER = 0xdffb;\n\n// TODO: this is a naive implementation, we can improve it later\n// It's only used for the skintone picker, so as long as people don't customize with\n// really exotic emoji then it should work fine\nfunction applySkinTone (str, skinTone) {\n if (skinTone === 0) {\n return str\n }\n const zwjIndex = str.indexOf(ZWJ);\n if (zwjIndex !== -1) {\n return str.substring(0, zwjIndex) +\n String.fromCodePoint(LIGHT_SKIN_TONE + skinTone - 1) +\n str.substring(zwjIndex)\n }\n if (str.endsWith(VARIATION_SELECTOR)) {\n str = str.substring(0, str.length - 1);\n }\n return str + SKINTONE_MODIFIER + String.fromCodePoint(LIGHT_SKIN_TONE_MODIFIER + skinTone - 1)\n}\n\nfunction halt (event) {\n event.preventDefault();\n event.stopPropagation();\n}\n\n// Implementation left/right or up/down navigation, circling back when you\n// reach the start/end of the list\nfunction incrementOrDecrement (decrement, val, arr) {\n val += (decrement ? -1 : 1);\n if (val < 0) {\n val = arr.length - 1;\n } else if (val >= arr.length) {\n val = 0;\n }\n return val\n}\n\n// like lodash's uniqBy but much smaller\nfunction uniqBy (arr, func) {\n const set = new Set();\n const res = [];\n for (const item of arr) {\n const key = func(item);\n if (!set.has(key)) {\n set.add(key);\n res.push(item);\n }\n }\n return res\n}\n\n// We don't need all the data on every emoji, and there are specific things we need\n// for the UI, so build a \"view model\" from the emoji object we got from the database\n\nfunction summarizeEmojisForUI (emojis, emojiSupportLevel) {\n const toSimpleSkinsMap = skins => {\n const res = {};\n for (const skin of skins) {\n // ignore arrays like [1, 2] with multiple skin tones\n // also ignore variants that are in an unsupported emoji version\n // (these do exist - variants from a different version than their base emoji)\n if (typeof skin.tone === 'number' && skin.version <= emojiSupportLevel) {\n res[skin.tone] = skin.unicode;\n }\n }\n return res\n };\n\n return emojis.map(({ unicode, skins, shortcodes, url, name, category, annotation }) => ({\n unicode,\n name,\n shortcodes,\n url,\n category,\n annotation,\n id: unicode || name,\n skins: skins && toSimpleSkinsMap(skins)\n }))\n}\n\n// import rAF from one place so that the bundle size is a bit smaller\nconst rAF = requestAnimationFrame;\n\n// \"Svelte action\"-like utility to detect layout changes via ResizeObserver.\n// If ResizeObserver is unsupported, we just use rAF once and don't bother to update.\n\n\nlet resizeObserverSupported = typeof ResizeObserver === 'function';\n\nfunction resizeObserverAction (node, abortSignal, onUpdate) {\n let resizeObserver;\n if (resizeObserverSupported) {\n resizeObserver = new ResizeObserver(onUpdate);\n resizeObserver.observe(node);\n } else { // just run once, don't bother trying to track it\n rAF(onUpdate);\n }\n\n // cleanup function (called on destroy)\n abortSignal.addEventListener('abort', () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n });\n}\n\n// get the width of the text inside of a DOM node, via https://stackoverflow.com/a/59525891/680742\nfunction calculateTextWidth (node) {\n // skip running this in jest/vitest because we don't need to check for emoji support in that environment\n /* istanbul ignore else */\n {\n const range = document.createRange();\n range.selectNode(node.firstChild);\n return range.getBoundingClientRect().width\n }\n}\n\nlet baselineEmojiWidth;\n\n/**\n * Check if the given emojis containing ZWJ characters are supported by the current browser (don't render\n * as double characters) and return true if all are supported.\n * @param zwjEmojisToCheck\n * @param baselineEmoji\n * @param emojiToDomNode\n */\nfunction checkZwjSupport (zwjEmojisToCheck, baselineEmoji, emojiToDomNode) {\n let allSupported = true;\n for (const emoji of zwjEmojisToCheck) {\n const domNode = emojiToDomNode(emoji);\n // sanity check to make sure the node is defined properly\n /* istanbul ignore if */\n if (!domNode) {\n // This is a race condition that can occur when the component is unmounted/remounted\n // It doesn't really matter what we do here since the old context is not going to render anymore.\n // Just bail out of emoji support detection and return `allSupported=true` since the rendering context is gone\n continue\n }\n const emojiWidth = calculateTextWidth(domNode);\n if (typeof baselineEmojiWidth === 'undefined') { // calculate the baseline emoji width only once\n baselineEmojiWidth = calculateTextWidth(baselineEmoji);\n }\n // On Windows, some supported emoji are ~50% bigger than the baseline emoji, but what we really want to guard\n // against are the ones that are 2x the size, because those are truly broken (person with red hair = person with\n // floating red wig, black cat = cat with black square, polar bear = bear with snowflake, etc.)\n // So here we set the threshold at 1.8 times the size of the baseline emoji.\n const supported = emojiWidth / 1.8 < baselineEmojiWidth;\n supportedZwjEmojis.set(emoji.unicode, supported);\n\n if (!supported) {\n allSupported = false;\n }\n }\n return allSupported\n}\n\n// like lodash's uniq\n\nfunction uniq (arr) {\n return uniqBy(arr, _ => _)\n}\n\n// Note we put this in its own function outside Picker.js to avoid Svelte doing an invalidation on the \"setter\" here.\n// At best the invalidation is useless, at worst it can cause infinite loops:\n// https://github.com/nolanlawson/emoji-picker-element/pull/180\n// https://github.com/sveltejs/svelte/issues/6521\n// Also note tabpanelElement can be null if the element is disconnected immediately after connected\nfunction resetScrollTopIfPossible (element) {\n /* istanbul ignore else */\n if (element) { // Makes me nervous not to have this `if` guard\n element.scrollTop = 0;\n }\n}\n\nfunction getFromMap (cache, key, func) {\n let cached = cache.get(key);\n if (!cached) {\n cached = func();\n cache.set(key, cached);\n }\n return cached\n}\n\nfunction toString (value) {\n return '' + value\n}\n\nfunction parseTemplate (htmlString) {\n const template = document.createElement('template');\n template.innerHTML = htmlString;\n return template\n}\n\nconst parseCache = new WeakMap();\nconst domInstancesCache = new WeakMap();\n// This needs to be a symbol because it needs to be different from any possible output of a key function\nconst unkeyedSymbol = Symbol('un-keyed');\n\n// Not supported in Safari <=13\nconst hasReplaceChildren = 'replaceChildren' in Element.prototype;\nfunction replaceChildren (parentNode, newChildren) {\n /* istanbul ignore else */\n if (hasReplaceChildren) {\n parentNode.replaceChildren(...newChildren);\n } else { // minimal polyfill for Element.prototype.replaceChildren\n parentNode.innerHTML = '';\n parentNode.append(...newChildren);\n }\n}\n\nfunction doChildrenNeedRerender (parentNode, newChildren) {\n let oldChild = parentNode.firstChild;\n let oldChildrenCount = 0;\n // iterate using firstChild/nextSibling because browsers use a linked list under the hood\n while (oldChild) {\n const newChild = newChildren[oldChildrenCount];\n // check if the old child and new child are the same\n if (newChild !== oldChild) {\n return true\n }\n oldChild = oldChild.nextSibling;\n oldChildrenCount++;\n }\n // if new children length is different from old, we must re-render\n return oldChildrenCount !== newChildren.length\n}\n\nfunction patchChildren (newChildren, instanceBinding) {\n const { targetNode } = instanceBinding;\n let { targetParentNode } = instanceBinding;\n\n let needsRerender = false;\n\n if (targetParentNode) { // already rendered once\n needsRerender = doChildrenNeedRerender(targetParentNode, newChildren);\n } else { // first render of list\n needsRerender = true;\n instanceBinding.targetNode = undefined; // placeholder node not needed anymore, free memory\n instanceBinding.targetParentNode = targetParentNode = targetNode.parentNode;\n }\n // avoid re-rendering list if the dom nodes are exactly the same before and after\n if (needsRerender) {\n replaceChildren(targetParentNode, newChildren);\n }\n}\n\nfunction patch (expressions, instanceBindings) {\n for (const instanceBinding of instanceBindings) {\n const {\n targetNode,\n currentExpression,\n binding: {\n expressionIndex,\n attributeName,\n attributeValuePre,\n attributeValuePost\n }\n } = instanceBinding;\n\n const expression = expressions[expressionIndex];\n\n if (currentExpression === expression) {\n // no need to update, same as before\n continue\n }\n\n instanceBinding.currentExpression = expression;\n\n if (attributeName) { // attribute replacement\n if (expression === null) {\n // null is treated as a special case by the framework - we don't render an attribute at all in this case\n targetNode.removeAttribute(attributeName);\n } else {\n // attribute value is not null; set a new attribute\n const newValue = attributeValuePre + toString(expression) + attributeValuePost;\n targetNode.setAttribute(attributeName, newValue);\n }\n } else { // text node / child element / children replacement\n let newNode;\n if (Array.isArray(expression)) { // array of DOM elements produced by tag template literals\n patchChildren(expression, instanceBinding);\n } else if (expression instanceof Element) { // html tag template returning a DOM element\n newNode = expression;\n targetNode.replaceWith(newNode);\n } else { // primitive - string, number, etc\n // nodeValue is faster than textContent supposedly https://www.youtube.com/watch?v=LY6y3HbDVmg\n // note we may be replacing the value in a placeholder text node\n targetNode.nodeValue = toString(expression);\n }\n if (newNode) {\n instanceBinding.targetNode = newNode;\n }\n }\n }\n}\n\nfunction parse (tokens) {\n let htmlString = '';\n\n let withinTag = false;\n let withinAttribute = false;\n let elementIndexCounter = -1; // depth-first traversal order\n\n const elementsToBindings = new Map();\n const elementIndexes = [];\n\n let skipTokenChars = 0;\n for (let i = 0, len = tokens.length; i < len; i++) {\n const token = tokens[i];\n htmlString += token.slice(skipTokenChars);\n\n if (i === len - 1) {\n break // no need to process characters - no more expressions to be found\n }\n\n for (let j = 0; j < token.length; j++) {\n const char = token.charAt(j);\n switch (char) {\n case '<': {\n const nextChar = token.charAt(j + 1);\n if (nextChar === '/') { // closing tag\n // leaving an element\n elementIndexes.pop();\n } else { // not a closing tag\n withinTag = true;\n elementIndexes.push(++elementIndexCounter);\n }\n break\n }\n case '>': {\n withinTag = false;\n withinAttribute = false;\n break\n }\n case '=': {\n withinAttribute = true;\n break\n }\n }\n }\n\n const elementIndex = elementIndexes[elementIndexes.length - 1];\n const bindings = getFromMap(elementsToBindings, elementIndex, () => []);\n\n let attributeName;\n let attributeValuePre;\n let attributeValuePost;\n if (withinAttribute) {\n // I never use single-quotes for attribute values in HTML, so just support double-quotes or no-quotes\n const attributePreMatch = /(\\S+)=\"?([^\"=]*)$/.exec(token);\n attributeName = attributePreMatch[1];\n attributeValuePre = attributePreMatch[2];\n const attributePostMatch = /^([^\">]*)(\"?)/.exec(tokens[i + 1]);\n attributeValuePost = attributePostMatch[1];\n // Optimization: remove the attribute itself, so we don't create a default attribute which is either empty or just\n // the \"pre\" text, e.g. `
` or `
`. It will be replaced by the expression anyway.\n htmlString = htmlString.slice(0, -1 * attributePreMatch[0].length);\n skipTokenChars = attributePostMatch[0].length;\n } else {\n skipTokenChars = 0;\n }\n\n const binding = {\n attributeName,\n attributeValuePre,\n attributeValuePost,\n expressionIndex: i\n };\n\n bindings.push(binding);\n\n if (!withinTag && !withinAttribute) {\n // Add a placeholder text node, so we can find it later. Note we only support one dynamic child text node\n htmlString += ' ';\n }\n }\n\n const template = parseTemplate(htmlString);\n\n return {\n template,\n elementsToBindings\n }\n}\n\nfunction applyBindings (bindings, element, instanceBindings) {\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n\n const targetNode = binding.attributeName\n ? element // attribute binding, just use the element itself\n : element.firstChild; // not an attribute binding, so has a placeholder text node\n\n const instanceBinding = {\n binding,\n targetNode,\n targetParentNode: undefined,\n currentExpression: undefined\n };\n\n instanceBindings.push(instanceBinding);\n }\n}\n\nfunction traverseAndSetupBindings (rootElement, elementsToBindings) {\n const instanceBindings = [];\n\n let topLevelBindings;\n if (elementsToBindings.size === 1 && (topLevelBindings = elementsToBindings.get(0))) {\n // Optimization for the common case where there's only one element and one binding\n // Skip creating a TreeWalker entirely and just handle the root DOM element\n applyBindings(topLevelBindings, rootElement, instanceBindings);\n } else {\n // traverse dom\n const treeWalker = document.createTreeWalker(rootElement, NodeFilter.SHOW_ELEMENT);\n\n let element = rootElement;\n let elementIndex = -1;\n do {\n const bindings = elementsToBindings.get(++elementIndex);\n if (bindings) {\n applyBindings(bindings, element, instanceBindings);\n }\n } while ((element = treeWalker.nextNode()))\n }\n\n return instanceBindings\n}\n\nfunction parseHtml (tokens) {\n // All templates and bound expressions are unique per tokens array\n const { template, elementsToBindings } = getFromMap(parseCache, tokens, () => parse(tokens));\n\n // When we parseHtml, we always return a fresh DOM instance ready to be updated\n const dom = template.cloneNode(true).content.firstElementChild;\n const instanceBindings = traverseAndSetupBindings(dom, elementsToBindings);\n\n return function updateDomInstance (expressions) {\n patch(expressions, instanceBindings);\n return dom\n }\n}\n\nfunction createFramework (state) {\n const domInstances = getFromMap(domInstancesCache, state, () => new Map());\n let domInstanceCacheKey = unkeyedSymbol;\n\n function html (tokens, ...expressions) {\n // Each unique lexical usage of map() is considered unique due to the html`` tagged template call it makes,\n // which has lexically unique tokens. The unkeyed symbol is just used for html`` usage outside of a map().\n const domInstancesForTokens = getFromMap(domInstances, tokens, () => new Map());\n const updateDomInstance = getFromMap(domInstancesForTokens, domInstanceCacheKey, () => parseHtml(tokens));\n\n return updateDomInstance(expressions) // update with expressions\n }\n\n function map (array, callback, keyFunction) {\n return array.map((item, index) => {\n const originalCacheKey = domInstanceCacheKey;\n domInstanceCacheKey = keyFunction(item);\n try {\n return callback(item, index)\n } finally {\n domInstanceCacheKey = originalCacheKey;\n }\n })\n }\n\n return { map, html }\n}\n\nfunction render (container, state, helpers, events, actions, refs, abortSignal, actionContext, firstRender) {\n const { labelWithSkin, titleForEmoji, unicodeWithSkin } = helpers;\n const { html, map } = createFramework(state);\n\n function emojiList (emojis, searchMode, prefix) {\n return map(emojis, (emoji, i) => {\n return html``\n // It's important for the cache key to be unique based on the prefix, because the framework caches based on the\n // unique tokens + cache key, and the same emoji may be used in the tab as well as in the fav bar\n }, emoji => `${prefix}-${emoji.id}`)\n }\n\n const section = () => {\n return html`
${state.i18n.searchDescription}
${state.i18n.skinToneDescription}
${\n map(state.skinTones, (skinTone, i) => {\n return html`
${skinTone}
`\n }, skinTone => skinTone)\n }
${\n map(state.groups, (group) => {\n return html``\n }, group => group.id)\n }
${state.message || ''}
${\n map(state.currentEmojisWithCategories, (emojiWithCategory, i) => {\n return html`
${\n state.searchMode\n ? state.i18n.searchResultsLabel\n : (\n emojiWithCategory.category\n ? emojiWithCategory.category\n : (\n state.currentEmojisWithCategories.length > 1\n ? state.i18n.categories.custom\n : state.i18n.categories[state.currentGroup.name]\n )\n )\n }
${\n emojiList(emojiWithCategory.emojis, state.searchMode, /* prefix */ 'emo')\n }
`\n }, emojiWithCategory => emojiWithCategory.category)\n }
${\n emojiList(state.currentFavorites, /* searchMode */ false, /* prefix */ 'fav')\n }
`\n };\n\n const rootDom = section();\n\n // helper for traversing the dom, finding elements by an attribute, and getting the attribute value\n const forElementWithAttribute = (attributeName, callback) => {\n for (const element of container.querySelectorAll(`[${attributeName}]`)) {\n callback(element, element.getAttribute(attributeName));\n }\n };\n\n if (firstRender) { // not a re-render\n container.appendChild(rootDom);\n\n // we only bind events/refs once - there is no need to find them again given this component structure\n\n // bind events\n for (const eventName of ['click', 'focusout', 'input', 'keydown', 'keyup']) {\n forElementWithAttribute(`data-on-${eventName}`, (element, listenerName) => {\n element.addEventListener(eventName, events[listenerName]);\n });\n }\n\n // find refs\n forElementWithAttribute('data-ref', (element, ref) => {\n refs[ref] = element;\n });\n\n // destroy/abort logic\n abortSignal.addEventListener('abort', () => {\n container.removeChild(rootDom);\n });\n }\n\n // set up actions - these are re-bound on every render\n forElementWithAttribute('data-action', (element, action) => {\n let boundActions = actionContext.get(action);\n if (!boundActions) {\n actionContext.set(action, (boundActions = new WeakSet()));\n }\n\n // avoid applying the same action to the same element multiple times\n if (!boundActions.has(element)) {\n boundActions.add(element);\n actions[action](element);\n }\n });\n}\n\n/* istanbul ignore next */\nconst qM = typeof queueMicrotask === 'function' ? queueMicrotask : callback => Promise.resolve().then(callback);\n\nfunction createState (abortSignal) {\n let destroyed = false;\n let currentObserver;\n\n const propsToObservers = new Map();\n const dirtyObservers = new Set();\n\n let queued;\n\n const flush = () => {\n if (destroyed) {\n return\n }\n const observersToRun = [...dirtyObservers];\n dirtyObservers.clear(); // clear before running to force any new updates to run in another tick of the loop\n try {\n for (const observer of observersToRun) {\n observer();\n }\n } finally {\n queued = false;\n if (dirtyObservers.size) { // new updates, queue another one\n queued = true;\n qM(flush);\n }\n }\n };\n\n const state = new Proxy({}, {\n get (target, prop) {\n if (currentObserver) {\n let observers = propsToObservers.get(prop);\n if (!observers) {\n observers = new Set();\n propsToObservers.set(prop, observers);\n }\n observers.add(currentObserver);\n }\n return target[prop]\n },\n set (target, prop, newValue) {\n if (target[prop] !== newValue) {\n target[prop] = newValue;\n const observers = propsToObservers.get(prop);\n if (observers) {\n for (const observer of observers) {\n dirtyObservers.add(observer);\n }\n if (!queued) {\n queued = true;\n qM(flush);\n }\n }\n }\n return true\n }\n });\n\n const createEffect = (callback) => {\n const runnable = () => {\n const oldObserver = currentObserver;\n currentObserver = runnable;\n try {\n return callback()\n } finally {\n currentObserver = oldObserver;\n }\n };\n return runnable()\n };\n\n // destroy logic\n abortSignal.addEventListener('abort', () => {\n destroyed = true;\n });\n\n return {\n state,\n createEffect\n }\n}\n\n// Compare two arrays, with a function called on each item in the two arrays that returns true if the items are equal\nfunction arraysAreEqualByFunction (left, right, areEqualFunc) {\n if (left.length !== right.length) {\n return false\n }\n for (let i = 0; i < left.length; i++) {\n if (!areEqualFunc(left[i], right[i])) {\n return false\n }\n }\n return true\n}\n\nconst intersectionObserverCache = new WeakMap();\n\nfunction intersectionObserverAction (node, abortSignal, listener) {\n /* istanbul ignore else */\n {\n // The scroll root is always `.tabpanel`\n const root = node.closest('.tabpanel');\n\n let observer = intersectionObserverCache.get(root);\n if (!observer) {\n // TODO: replace this with the contentvisibilityautostatechange event when all supported browsers support it.\n // For now we use IntersectionObserver because it has better cross-browser support, and it would be bad for\n // old Safari versions if they eagerly downloaded all custom emoji all at once.\n observer = new IntersectionObserver(listener, {\n root,\n // trigger if we are 1/2 scroll container height away so that the images load a bit quicker while scrolling\n rootMargin: '50% 0px 50% 0px',\n // trigger if any part of the emoji grid is intersecting\n threshold: 0\n });\n\n // avoid creating a new IntersectionObserver for every category; just use one for the whole root\n intersectionObserverCache.set(root, observer);\n\n // assume that the abortSignal is always the same for this root node; just add one event listener\n abortSignal.addEventListener('abort', () => {\n observer.disconnect();\n });\n }\n\n observer.observe(node);\n }\n}\n\n/* eslint-disable prefer-const,no-labels,no-inner-declarations */\n\n// constants\nconst EMPTY_ARRAY = [];\n\nconst { assign } = Object;\n\nfunction createRoot (shadowRoot, props) {\n const refs = {};\n const abortController = new AbortController();\n const abortSignal = abortController.signal;\n const { state, createEffect } = createState(abortSignal);\n const actionContext = new Map();\n\n // initial state\n assign(state, {\n skinToneEmoji: undefined,\n i18n: undefined,\n database: undefined,\n customEmoji: undefined,\n customCategorySorting: undefined,\n emojiVersion: undefined\n });\n\n // public props\n assign(state, props);\n\n // private props\n assign(state, {\n initialLoad: true,\n currentEmojis: [],\n currentEmojisWithCategories: [],\n rawSearchText: '',\n searchText: '',\n searchMode: false,\n activeSearchItem: -1,\n message: undefined,\n skinTonePickerExpanded: false,\n skinTonePickerExpandedAfterAnimation: false,\n currentSkinTone: 0,\n activeSkinTone: 0,\n skinToneButtonText: undefined,\n pickerStyle: undefined,\n skinToneButtonLabel: '',\n skinTones: [],\n currentFavorites: [],\n defaultFavoriteEmojis: undefined,\n numColumns: DEFAULT_NUM_COLUMNS,\n isRtl: false,\n currentGroupIndex: 0,\n groups: groups,\n databaseLoaded: false,\n activeSearchItemId: undefined\n });\n\n //\n // Update the current group based on the currentGroupIndex\n //\n createEffect(() => {\n if (state.currentGroup !== state.groups[state.currentGroupIndex]) {\n state.currentGroup = state.groups[state.currentGroupIndex];\n }\n });\n\n //\n // Utils/helpers\n //\n\n const focus = id => {\n shadowRoot.getElementById(id).focus();\n };\n\n const emojiToDomNode = emoji => shadowRoot.getElementById(`emo-${emoji.id}`);\n\n // fire a custom event that crosses the shadow boundary\n const fireEvent = (name, detail) => {\n refs.rootElement.dispatchEvent(new CustomEvent(name, {\n detail,\n bubbles: true,\n composed: true\n }));\n };\n\n //\n // Comparison utils\n //\n\n const compareEmojiArrays = (a, b) => a.id === b.id;\n\n const compareCurrentEmojisWithCategories = (a, b) => {\n const { category: aCategory, emojis: aEmojis } = a;\n const { category: bCategory, emojis: bEmojis } = b;\n\n if (aCategory !== bCategory) {\n return false\n }\n\n return arraysAreEqualByFunction(aEmojis, bEmojis, compareEmojiArrays)\n };\n\n //\n // Update utils to avoid excessive re-renders\n //\n\n // avoid excessive re-renders by checking the value before setting\n const updateCurrentEmojis = (newEmojis) => {\n if (!arraysAreEqualByFunction(state.currentEmojis, newEmojis, compareEmojiArrays)) {\n state.currentEmojis = newEmojis;\n }\n };\n\n // avoid excessive re-renders\n const updateSearchMode = (newSearchMode) => {\n if (state.searchMode !== newSearchMode) {\n state.searchMode = newSearchMode;\n }\n };\n\n // avoid excessive re-renders\n const updateCurrentEmojisWithCategories = (newEmojisWithCategories) => {\n if (!arraysAreEqualByFunction(state.currentEmojisWithCategories, newEmojisWithCategories, compareCurrentEmojisWithCategories)) {\n state.currentEmojisWithCategories = newEmojisWithCategories;\n }\n };\n\n // Helpers used by PickerTemplate\n\n const unicodeWithSkin = (emoji, currentSkinTone) => (\n (currentSkinTone && emoji.skins && emoji.skins[currentSkinTone]) || emoji.unicode\n );\n\n const labelWithSkin = (emoji, currentSkinTone) => (\n uniq([\n (emoji.name || unicodeWithSkin(emoji, currentSkinTone)),\n emoji.annotation,\n ...(emoji.shortcodes || EMPTY_ARRAY)\n ].filter(Boolean)).join(', ')\n );\n\n const titleForEmoji = (emoji) => (\n emoji.annotation || (emoji.shortcodes || EMPTY_ARRAY).join(', ')\n );\n\n const helpers = {\n labelWithSkin, titleForEmoji, unicodeWithSkin\n };\n const events = {\n onClickSkinToneButton,\n onEmojiClick,\n onNavClick,\n onNavKeydown,\n onSearchKeydown,\n onSkinToneOptionsClick,\n onSkinToneOptionsFocusOut,\n onSkinToneOptionsKeydown,\n onSkinToneOptionsKeyup,\n onSearchInput\n };\n const actions = {\n calculateEmojiGridStyle,\n updateOnIntersection\n };\n\n let firstRender = true;\n createEffect(() => {\n render(shadowRoot, state, helpers, events, actions, refs, abortSignal, actionContext, firstRender);\n firstRender = false;\n });\n\n //\n // Determine the emoji support level (in requestIdleCallback)\n //\n\n // mount logic\n if (!state.emojiVersion) {\n detectEmojiSupportLevel().then(level => {\n // Can't actually test emoji support in Jest/Vitest/JSDom, emoji never render in color in Cairo\n /* istanbul ignore next */\n if (!level) {\n state.message = state.i18n.emojiUnsupportedMessage;\n }\n });\n }\n\n //\n // Set or update the database object\n //\n\n createEffect(() => {\n // show a Loading message if it takes a long time, or show an error if there's a network/IDB error\n async function handleDatabaseLoading () {\n let showingLoadingMessage = false;\n const timeoutHandle = setTimeout(() => {\n showingLoadingMessage = true;\n state.message = state.i18n.loadingMessage;\n }, TIMEOUT_BEFORE_LOADING_MESSAGE);\n try {\n await state.database.ready();\n state.databaseLoaded = true; // eslint-disable-line no-unused-vars\n } catch (err) {\n console.error(err);\n state.message = state.i18n.networkErrorMessage;\n } finally {\n clearTimeout(timeoutHandle);\n if (showingLoadingMessage) { // Seems safer than checking the i18n string, which may change\n showingLoadingMessage = false;\n state.message = ''; // eslint-disable-line no-unused-vars\n }\n }\n }\n\n if (state.database) {\n /* no await */\n handleDatabaseLoading();\n }\n });\n\n //\n // Global styles for the entire picker\n //\n\n createEffect(() => {\n state.pickerStyle = `\n --num-groups: ${state.groups.length}; \n --indicator-opacity: ${state.searchMode ? 0 : 1}; \n --num-skintones: ${NUM_SKIN_TONES};`;\n });\n\n //\n // Set or update the customEmoji\n //\n\n createEffect(() => {\n if (state.customEmoji && state.database) {\n updateCustomEmoji(); // re-run whenever customEmoji change\n }\n });\n\n createEffect(() => {\n if (state.customEmoji && state.customEmoji.length) {\n if (state.groups !== allGroups) { // don't update unnecessarily\n state.groups = allGroups;\n }\n } else if (state.groups !== groups) {\n if (state.currentGroupIndex) {\n // If the current group is anything other than \"custom\" (which is first), decrement.\n // This fixes the odd case where you set customEmoji, then pick a category, then unset customEmoji\n state.currentGroupIndex--;\n }\n state.groups = groups;\n }\n });\n\n //\n // Set or update the preferred skin tone\n //\n\n createEffect(() => {\n async function updatePreferredSkinTone () {\n if (state.databaseLoaded) {\n state.currentSkinTone = await state.database.getPreferredSkinTone();\n }\n }\n\n /* no await */ updatePreferredSkinTone();\n });\n\n createEffect(() => {\n state.skinTones = Array(NUM_SKIN_TONES).fill().map((_, i) => applySkinTone(state.skinToneEmoji, i));\n });\n\n createEffect(() => {\n state.skinToneButtonText = state.skinTones[state.currentSkinTone];\n });\n\n createEffect(() => {\n state.skinToneButtonLabel = state.i18n.skinToneLabel.replace('{skinTone}', state.i18n.skinTones[state.currentSkinTone]);\n });\n\n //\n // Set or update the favorites emojis\n //\n\n createEffect(() => {\n async function updateDefaultFavoriteEmojis () {\n const { database } = state;\n const favs = (await Promise.all(MOST_COMMONLY_USED_EMOJI.map(unicode => (\n database.getEmojiByUnicodeOrName(unicode)\n )))).filter(Boolean); // filter because in Jest/Vitest tests we don't have all the emoji in the DB\n state.defaultFavoriteEmojis = favs;\n }\n\n if (state.databaseLoaded) {\n /* no await */ updateDefaultFavoriteEmojis();\n }\n });\n\n function updateCustomEmoji () {\n // Certain effects have an implicit dependency on customEmoji since it affects the database\n // Getting it here on the state ensures this effect re-runs when customEmoji change.\n const { customEmoji, database } = state;\n const databaseCustomEmoji = customEmoji || EMPTY_ARRAY;\n if (database.customEmoji !== databaseCustomEmoji) {\n // Avoid setting this if the customEmoji have _not_ changed, because the setter triggers a re-computation of the\n // `customEmojiIndex`. Note we don't bother with deep object changes.\n database.customEmoji = databaseCustomEmoji;\n }\n }\n\n createEffect(() => {\n async function updateFavorites () {\n updateCustomEmoji(); // re-run whenever customEmoji change\n const { database, defaultFavoriteEmojis, numColumns } = state;\n const dbFavorites = await database.getTopFavoriteEmoji(numColumns);\n const favorites = await summarizeEmojis(uniqBy([\n ...dbFavorites,\n ...defaultFavoriteEmojis\n ], _ => (_.unicode || _.name)).slice(0, numColumns));\n state.currentFavorites = favorites;\n }\n\n if (state.databaseLoaded && state.defaultFavoriteEmojis) {\n /* no await */ updateFavorites();\n }\n });\n\n //\n // Re-run whenever the emoji grid changes size, and re-calc style/layout-related state variables:\n // 1) Re-calculate the --num-columns var because it may have changed\n // 2) Re-calculate whether we're in RTL mode or not.\n //\n // The benefit of doing this in one place is to align with rAF/ResizeObserver\n // and do all the calculations in one go. RTL vs LTR is not strictly layout-related,\n // but since we're already reading the style here, and since it's already aligned with\n // the rAF loop, this is the most appropriate place to do it perf-wise.\n //\n\n function calculateEmojiGridStyle (node) {\n resizeObserverAction(node, abortSignal, () => {\n /* istanbul ignore next */\n { // jsdom throws errors for this kind of fancy stuff\n // read all the style/layout calculations we need to make\n const style = getComputedStyle(refs.rootElement);\n const newNumColumns = parseInt(style.getPropertyValue('--num-columns'), 10);\n const newIsRtl = style.getPropertyValue('direction') === 'rtl';\n\n // write to state variables\n state.numColumns = newNumColumns;\n state.isRtl = newIsRtl;\n }\n });\n }\n\n // Re-run whenever the custom emoji in a category are shown/hidden. This is an optimization that simulates\n // what we'd get from `` but without rendering an ``.\n function updateOnIntersection (node) {\n intersectionObserverAction(node, abortSignal, (entries) => {\n for (const { target, isIntersecting } of entries) {\n target.classList.toggle('onscreen', isIntersecting);\n }\n });\n }\n\n //\n // Set or update the currentEmojis. Check for invalid ZWJ renderings\n // (i.e. double emoji).\n //\n\n createEffect(() => {\n async function updateEmojis () {\n const { searchText, currentGroup, databaseLoaded, customEmoji } = state;\n if (!databaseLoaded) {\n state.currentEmojis = [];\n state.searchMode = false;\n } else if (searchText.length >= MIN_SEARCH_TEXT_LENGTH) {\n const newEmojis = await getEmojisBySearchQuery(searchText);\n if (state.searchText === searchText) { // if the situation changes asynchronously, do not update\n updateCurrentEmojis(newEmojis);\n updateSearchMode(true);\n }\n } else { // database is loaded and we're not in search mode, so we're in normal category mode\n const { id: currentGroupId } = currentGroup;\n // avoid race condition where currentGroupId is -1 and customEmoji is undefined/empty\n if (currentGroupId !== -1 || (customEmoji && customEmoji.length)) {\n const newEmojis = await getEmojisByGroup(currentGroupId);\n if (state.currentGroup.id === currentGroupId) { // if the situation changes asynchronously, do not update\n updateCurrentEmojis(newEmojis);\n updateSearchMode(false);\n }\n }\n }\n }\n\n /* no await */ updateEmojis();\n });\n\n const resetScrollTopInRaf = () => {\n rAF(() => resetScrollTopIfPossible(refs.tabpanelElement));\n };\n\n // Some emojis have their ligatures rendered as two or more consecutive emojis\n // We want to treat these the same as unsupported emojis, so we compare their\n // widths against the baseline widths and remove them as necessary\n createEffect(() => {\n const { currentEmojis, emojiVersion } = state;\n const zwjEmojisToCheck = currentEmojis\n .filter(emoji => emoji.unicode) // filter custom emoji\n .filter(emoji => hasZwj(emoji) && !supportedZwjEmojis.has(emoji.unicode));\n if (!emojiVersion && zwjEmojisToCheck.length) {\n // render now, check their length later\n updateCurrentEmojis(currentEmojis);\n rAF(() => checkZwjSupportAndUpdate(zwjEmojisToCheck));\n } else {\n const newEmojis = emojiVersion ? currentEmojis : currentEmojis.filter(isZwjSupported);\n updateCurrentEmojis(newEmojis);\n // Reset scroll top to 0 when emojis change\n resetScrollTopInRaf();\n }\n });\n\n function checkZwjSupportAndUpdate (zwjEmojisToCheck) {\n const allSupported = checkZwjSupport(zwjEmojisToCheck, refs.baselineEmoji, emojiToDomNode);\n if (allSupported) {\n // Even if all emoji are supported, we still need to reset the scroll top to 0 when emojis change\n resetScrollTopInRaf();\n } else {\n // Force update. We only do this if there are any unsupported ZWJ characters since otherwise,\n // for browsers that support all emoji, it would be an unnecessary extra re-render.\n state.currentEmojis = [...state.currentEmojis];\n }\n }\n\n function isZwjSupported (emoji) {\n return !emoji.unicode || !hasZwj(emoji) || supportedZwjEmojis.get(emoji.unicode)\n }\n\n async function filterEmojisByVersion (emojis) {\n const emojiSupportLevel = state.emojiVersion || await detectEmojiSupportLevel();\n // !version corresponds to custom emoji\n return emojis.filter(({ version }) => !version || version <= emojiSupportLevel)\n }\n\n async function summarizeEmojis (emojis) {\n return summarizeEmojisForUI(emojis, state.emojiVersion || await detectEmojiSupportLevel())\n }\n\n async function getEmojisByGroup (group) {\n // -1 is custom emoji\n const emoji = group === -1 ? state.customEmoji : await state.database.getEmojiByGroup(group);\n return summarizeEmojis(await filterEmojisByVersion(emoji))\n }\n\n async function getEmojisBySearchQuery (query) {\n return summarizeEmojis(await filterEmojisByVersion(await state.database.getEmojiBySearchQuery(query)))\n }\n\n createEffect(() => {\n });\n\n //\n // Derive currentEmojisWithCategories from currentEmojis. This is always done even if there\n // are no categories, because it's just easier to code the HTML this way.\n //\n\n createEffect(() => {\n function calculateCurrentEmojisWithCategories () {\n const { searchMode, currentEmojis } = state;\n if (searchMode) {\n return [\n {\n category: '',\n emojis: currentEmojis\n }\n ]\n }\n const categoriesToEmoji = new Map();\n for (const emoji of currentEmojis) {\n const category = emoji.category || '';\n let emojis = categoriesToEmoji.get(category);\n if (!emojis) {\n emojis = [];\n categoriesToEmoji.set(category, emojis);\n }\n emojis.push(emoji);\n }\n return [...categoriesToEmoji.entries()]\n .map(([category, emojis]) => ({ category, emojis }))\n .sort((a, b) => state.customCategorySorting(a.category, b.category))\n }\n\n const newEmojisWithCategories = calculateCurrentEmojisWithCategories();\n updateCurrentEmojisWithCategories(newEmojisWithCategories);\n });\n\n //\n // Handle active search item (i.e. pressing up or down while searching)\n //\n\n createEffect(() => {\n state.activeSearchItemId = state.activeSearchItem !== -1 && state.currentEmojis[state.activeSearchItem].id;\n });\n\n //\n // Handle user input on the search input\n //\n\n createEffect(() => {\n const { rawSearchText } = state;\n rIC(() => {\n state.searchText = (rawSearchText || '').trim(); // defer to avoid input delays, plus we can trim here\n state.activeSearchItem = -1;\n });\n });\n\n function onSearchKeydown (event) {\n if (!state.searchMode || !state.currentEmojis.length) {\n return\n }\n\n const goToNextOrPrevious = (previous) => {\n halt(event);\n state.activeSearchItem = incrementOrDecrement(previous, state.activeSearchItem, state.currentEmojis);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n return goToNextOrPrevious(false)\n case 'ArrowUp':\n return goToNextOrPrevious(true)\n case 'Enter':\n if (state.activeSearchItem === -1) {\n // focus the first option in the list since the list must be non-empty at this point (it's verified above)\n state.activeSearchItem = 0;\n } else { // there is already an active search item\n halt(event);\n return clickEmoji(state.currentEmojis[state.activeSearchItem].id)\n }\n }\n }\n\n //\n // Handle user input on nav\n //\n\n function onNavClick (event) {\n const { target } = event;\n const closestTarget = target.closest('.nav-button');\n /* istanbul ignore if */\n if (!closestTarget) {\n return // This should never happen, but makes me nervous not to have it\n }\n const groupId = parseInt(closestTarget.dataset.groupId, 10);\n refs.searchElement.value = ''; // clear search box input\n state.rawSearchText = '';\n state.searchText = '';\n state.activeSearchItem = -1;\n state.currentGroupIndex = state.groups.findIndex(_ => _.id === groupId);\n }\n\n function onNavKeydown (event) {\n const { target, key } = event;\n\n const doFocus = el => {\n if (el) {\n halt(event);\n el.focus();\n }\n };\n\n switch (key) {\n case 'ArrowLeft':\n return doFocus(target.previousElementSibling)\n case 'ArrowRight':\n return doFocus(target.nextElementSibling)\n case 'Home':\n return doFocus(target.parentElement.firstElementChild)\n case 'End':\n return doFocus(target.parentElement.lastElementChild)\n }\n }\n\n //\n // Handle user input on an emoji\n //\n\n async function clickEmoji (unicodeOrName) {\n const emoji = await state.database.getEmojiByUnicodeOrName(unicodeOrName);\n const emojiSummary = [...state.currentEmojis, ...state.currentFavorites]\n .find(_ => (_.id === unicodeOrName));\n const skinTonedUnicode = emojiSummary.unicode && unicodeWithSkin(emojiSummary, state.currentSkinTone);\n await state.database.incrementFavoriteEmojiCount(unicodeOrName);\n fireEvent('emoji-click', {\n emoji,\n skinTone: state.currentSkinTone,\n ...(skinTonedUnicode && { unicode: skinTonedUnicode }),\n ...(emojiSummary.name && { name: emojiSummary.name })\n });\n }\n\n async function onEmojiClick (event) {\n const { target } = event;\n /* istanbul ignore if */\n if (!target.classList.contains('emoji')) {\n // This should never happen, but makes me nervous not to have it\n return\n }\n halt(event);\n const id = target.id.substring(4); // replace 'emo-' or 'fav-' prefix\n\n /* no await */ clickEmoji(id);\n }\n\n //\n // Handle user input on the skintone picker\n //\n\n function changeSkinTone (skinTone) {\n state.currentSkinTone = skinTone;\n state.skinTonePickerExpanded = false;\n focus('skintone-button');\n fireEvent('skin-tone-change', { skinTone });\n /* no await */ state.database.setPreferredSkinTone(skinTone);\n }\n\n function onSkinToneOptionsClick (event) {\n const { target: { id } } = event;\n const match = id && id.match(/^skintone-(\\d)/); // skintone option format\n /* istanbul ignore if */\n if (!match) { // not a skintone option\n return // This should never happen, but makes me nervous not to have it\n }\n halt(event);\n const skinTone = parseInt(match[1], 10); // remove 'skintone-' prefix\n changeSkinTone(skinTone);\n }\n\n function onClickSkinToneButton (event) {\n state.skinTonePickerExpanded = !state.skinTonePickerExpanded;\n state.activeSkinTone = state.currentSkinTone;\n // this should always be true, since the button is obscured by the listbox, so this `if` is just to be sure\n if (state.skinTonePickerExpanded) {\n halt(event);\n rAF(() => focus('skintone-list'));\n }\n }\n\n // To make the animation nicer, change the z-index of the skintone picker button\n // *after* the animation has played. This makes it appear that the picker box\n // is expanding \"below\" the button\n createEffect(() => {\n if (state.skinTonePickerExpanded) {\n refs.skinToneDropdown.addEventListener('transitionend', () => {\n state.skinTonePickerExpandedAfterAnimation = true; // eslint-disable-line no-unused-vars\n }, { once: true });\n } else {\n state.skinTonePickerExpandedAfterAnimation = false; // eslint-disable-line no-unused-vars\n }\n });\n\n function onSkinToneOptionsKeydown (event) {\n // this should never happen, but makes me nervous not to have it\n /* istanbul ignore if */\n if (!state.skinTonePickerExpanded) {\n return\n }\n const changeActiveSkinTone = async nextSkinTone => {\n halt(event);\n state.activeSkinTone = nextSkinTone;\n };\n\n switch (event.key) {\n case 'ArrowUp':\n return changeActiveSkinTone(incrementOrDecrement(true, state.activeSkinTone, state.skinTones))\n case 'ArrowDown':\n return changeActiveSkinTone(incrementOrDecrement(false, state.activeSkinTone, state.skinTones))\n case 'Home':\n return changeActiveSkinTone(0)\n case 'End':\n return changeActiveSkinTone(state.skinTones.length - 1)\n case 'Enter':\n // enter on keydown, space on keyup. this is just how browsers work for buttons\n // https://lists.w3.org/Archives/Public/w3c-wai-ig/2019JanMar/0086.html\n halt(event);\n return changeSkinTone(state.activeSkinTone)\n case 'Escape':\n halt(event);\n state.skinTonePickerExpanded = false;\n return focus('skintone-button')\n }\n }\n\n function onSkinToneOptionsKeyup (event) {\n // this should never happen, but makes me nervous not to have it\n /* istanbul ignore if */\n if (!state.skinTonePickerExpanded) {\n return\n }\n switch (event.key) {\n case ' ':\n // enter on keydown, space on keyup. this is just how browsers work for buttons\n // https://lists.w3.org/Archives/Public/w3c-wai-ig/2019JanMar/0086.html\n halt(event);\n return changeSkinTone(state.activeSkinTone)\n }\n }\n\n async function onSkinToneOptionsFocusOut (event) {\n // On blur outside of the skintone listbox, collapse the skintone picker.\n const { relatedTarget } = event;\n // The `else` should never happen, but makes me nervous not to have it\n /* istanbul ignore else */\n if (!relatedTarget || relatedTarget.id !== 'skintone-list') {\n state.skinTonePickerExpanded = false;\n }\n }\n\n function onSearchInput (event) {\n state.rawSearchText = event.target.value;\n }\n\n return {\n $set (newState) {\n assign(state, newState);\n },\n $destroy () {\n abortController.abort();\n }\n }\n}\n\nconst DEFAULT_DATA_SOURCE = 'https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json';\nconst DEFAULT_LOCALE = 'en';\n\nvar enI18n = {\n categoriesLabel: 'Categories',\n emojiUnsupportedMessage: 'Your browser does not support color emoji.',\n favoritesLabel: 'Favorites',\n loadingMessage: 'Loading…',\n networkErrorMessage: 'Could not load emoji.',\n regionLabel: 'Emoji picker',\n searchDescription: 'When search results are available, press up or down to select and enter to choose.',\n searchLabel: 'Search',\n searchResultsLabel: 'Search results',\n skinToneDescription: 'When expanded, press up or down to select and enter to choose.',\n skinToneLabel: 'Choose a skin tone (currently {skinTone})',\n skinTonesLabel: 'Skin tones',\n skinTones: [\n 'Default',\n 'Light',\n 'Medium-Light',\n 'Medium',\n 'Medium-Dark',\n 'Dark'\n ],\n categories: {\n custom: 'Custom',\n 'smileys-emotion': 'Smileys and emoticons',\n 'people-body': 'People and body',\n 'animals-nature': 'Animals and nature',\n 'food-drink': 'Food and drink',\n 'travel-places': 'Travel and places',\n activities: 'Activities',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags'\n }\n};\n\nvar baseStyles = \":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:\\\"\\\";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}\";\n\nconst PROPS = [\n 'customEmoji',\n 'customCategorySorting',\n 'database',\n 'dataSource',\n 'i18n',\n 'locale',\n 'skinToneEmoji',\n 'emojiVersion'\n];\n\n// Styles injected ourselves, so we can declare the FONT_FAMILY variable in one place\nconst EXTRA_STYLES = `:host{--emoji-font-family:${FONT_FAMILY}}`;\n\nclass PickerElement extends HTMLElement {\n constructor (props) {\n super();\n this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = baseStyles + EXTRA_STYLES;\n this.shadowRoot.appendChild(style);\n this._ctx = {\n // Set defaults\n locale: DEFAULT_LOCALE,\n dataSource: DEFAULT_DATA_SOURCE,\n skinToneEmoji: DEFAULT_SKIN_TONE_EMOJI,\n customCategorySorting: DEFAULT_CATEGORY_SORTING,\n customEmoji: null,\n i18n: enI18n,\n emojiVersion: null,\n ...props\n };\n // Handle properties set before the element was upgraded\n for (const prop of PROPS) {\n if (prop !== 'database' && Object.prototype.hasOwnProperty.call(this, prop)) {\n this._ctx[prop] = this[prop];\n delete this[prop];\n }\n }\n this._dbFlush(); // wait for a flush before creating the db, in case the user calls e.g. a setter or setAttribute\n }\n\n connectedCallback () {\n // The _cmp may be defined if the component was immediately disconnected and then reconnected. In that case,\n // do nothing (preserve the state)\n if (!this._cmp) {\n this._cmp = createRoot(this.shadowRoot, this._ctx);\n }\n }\n\n disconnectedCallback () {\n // Check in a microtask if the element is still connected. If so, treat this as a \"move\" rather than a disconnect\n // Inspired by Vue: https://vuejs.org/guide/extras/web-components.html#building-custom-elements-with-vue\n qM(() => {\n // this._cmp may be defined if connect-disconnect-connect-disconnect occurs synchronously\n if (!this.isConnected && this._cmp) {\n this._cmp.$destroy();\n this._cmp = undefined;\n\n const { database } = this._ctx;\n database.close()\n // only happens if the database failed to load in the first place, so we don't care\n .catch(err => console.error(err));\n }\n });\n }\n\n static get observedAttributes () {\n return ['locale', 'data-source', 'skin-tone-emoji', 'emoji-version'] // complex objects aren't supported, also use kebab-case\n }\n\n attributeChangedCallback (attrName, oldValue, newValue) {\n this._set(\n // convert from kebab-case to camelcase\n // see https://github.com/sveltejs/svelte/issues/3852#issuecomment-665037015\n attrName.replace(/-([a-z])/g, (_, up) => up.toUpperCase()),\n // convert string attribute to float if necessary\n attrName === 'emoji-version' ? parseFloat(newValue) : newValue\n );\n }\n\n _set (prop, newValue) {\n this._ctx[prop] = newValue;\n if (this._cmp) {\n this._cmp.$set({ [prop]: newValue });\n }\n if (['locale', 'dataSource'].includes(prop)) {\n this._dbFlush();\n }\n }\n\n _dbCreate () {\n const { locale, dataSource, database } = this._ctx;\n // only create a new database if we really need to\n if (!database || database.locale !== locale || database.dataSource !== dataSource) {\n this._set('database', new Database({ locale, dataSource }));\n }\n }\n\n // Update the Database in one microtask if the locale/dataSource change. We do one microtask\n // so we don't create two Databases if e.g. both the locale and the dataSource change\n _dbFlush () {\n qM(() => (\n this._dbCreate()\n ));\n }\n}\n\nconst definitions = {};\n\nfor (const prop of PROPS) {\n definitions[prop] = {\n get () {\n if (prop === 'database') {\n // in rare cases, the microtask may not be flushed yet, so we need to instantiate the DB\n // now if the user is asking for it\n this._dbCreate();\n }\n return this._ctx[prop]\n },\n set (val) {\n if (prop === 'database') {\n throw new Error('database is read-only')\n }\n this._set(prop, val);\n }\n };\n}\n\nObject.defineProperties(PickerElement.prototype, definitions);\n\n/* istanbul ignore else */\nif (!customElements.get('emoji-picker')) { // if already defined, do nothing (e.g. same script imported twice)\n customElements.define('emoji-picker', PickerElement);\n}\n\nexport { PickerElement as default };\n"], + "mappings": "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", + "names": ["set", "keyPath", "res", "emoji", "version", "_", "result", "customEmojiIndex", "results", "currentMap", "MIN_SEARCH_TEXT_LENGTH", "uniqBy", "set", "DEFAULT_DATA_SOURCE", "DEFAULT_LOCALE"] +} diff --git a/node_modules/.vite/deps/js-chacha20.js b/node_modules/.vite/deps/js-chacha20.js new file mode 100644 index 0000000..90ec6e5 --- /dev/null +++ b/node_modules/.vite/deps/js-chacha20.js @@ -0,0 +1,177 @@ +import { + __commonJS +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/js-chacha20/src/jschacha20.js +var require_jschacha20 = __commonJS({ + "node_modules/js-chacha20/src/jschacha20.js"(exports, module) { + var JSChaCha20 = function(key, nonce, counter) { + if (typeof counter === "undefined") { + counter = 0; + } + if (!(key instanceof Uint8Array) || key.length !== 32) { + throw new Error("Key should be 32 byte array!"); + } + if (!(nonce instanceof Uint8Array) || nonce.length !== 12) { + throw new Error("Nonce should be 12 byte array!"); + } + this._rounds = 20; + this._sigma = [1634760805, 857760878, 2036477234, 1797285236]; + this._param = [ + this._sigma[0], + this._sigma[1], + this._sigma[2], + this._sigma[3], + // key + this._get32(key, 0), + this._get32(key, 4), + this._get32(key, 8), + this._get32(key, 12), + this._get32(key, 16), + this._get32(key, 20), + this._get32(key, 24), + this._get32(key, 28), + // counter + counter, + // nonce + this._get32(nonce, 0), + this._get32(nonce, 4), + this._get32(nonce, 8) + ]; + this._keystream = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + this._byteCounter = 0; + }; + JSChaCha20.prototype._chacha = function() { + var mix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + var i = 0; + var b = 0; + for (i = 0; i < 16; i++) { + mix[i] = this._param[i]; + } + for (i = 0; i < this._rounds; i += 2) { + this._quarterround(mix, 0, 4, 8, 12); + this._quarterround(mix, 1, 5, 9, 13); + this._quarterround(mix, 2, 6, 10, 14); + this._quarterround(mix, 3, 7, 11, 15); + this._quarterround(mix, 0, 5, 10, 15); + this._quarterround(mix, 1, 6, 11, 12); + this._quarterround(mix, 2, 7, 8, 13); + this._quarterround(mix, 3, 4, 9, 14); + } + for (i = 0; i < 16; i++) { + mix[i] += this._param[i]; + this._keystream[b++] = mix[i] & 255; + this._keystream[b++] = mix[i] >>> 8 & 255; + this._keystream[b++] = mix[i] >>> 16 & 255; + this._keystream[b++] = mix[i] >>> 24 & 255; + } + }; + JSChaCha20.prototype._quarterround = function(output, a, b, c, d) { + output[d] = this._rotl(output[d] ^ (output[a] += output[b]), 16); + output[b] = this._rotl(output[b] ^ (output[c] += output[d]), 12); + output[d] = this._rotl(output[d] ^ (output[a] += output[b]), 8); + output[b] = this._rotl(output[b] ^ (output[c] += output[d]), 7); + output[a] >>>= 0; + output[b] >>>= 0; + output[c] >>>= 0; + output[d] >>>= 0; + }; + JSChaCha20.prototype._get32 = function(data, index) { + return data[index++] ^ data[index++] << 8 ^ data[index++] << 16 ^ data[index] << 24; + }; + JSChaCha20.prototype._rotl = function(data, shift) { + return data << shift | data >>> 32 - shift; + }; + JSChaCha20.prototype.encrypt = function(data) { + return this._update(data); + }; + JSChaCha20.prototype.decrypt = function(data) { + return this._update(data); + }; + JSChaCha20.prototype._update = function(data) { + if (!(data instanceof Uint8Array) || data.length === 0) { + throw new Error("Data should be type of bytes (Uint8Array) and not empty!"); + } + var output = new Uint8Array(data.length); + for (var i = 0; i < data.length; i++) { + if (this._byteCounter === 0 || this._byteCounter === 64) { + this._chacha(); + this._param[12]++; + this._byteCounter = 0; + } + output[i] = data[i] ^ this._keystream[this._byteCounter++]; + } + return output; + }; + if (typeof module !== "undefined" && module.exports) { + module.exports = JSChaCha20; + } + } +}); +export default require_jschacha20(); +//# sourceMappingURL=js-chacha20.js.map diff --git a/node_modules/.vite/deps/js-chacha20.js.map b/node_modules/.vite/deps/js-chacha20.js.map new file mode 100644 index 0000000..7666e06 --- /dev/null +++ b/node_modules/.vite/deps/js-chacha20.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../js-chacha20/src/jschacha20.js"], + "sourcesContent": ["'use strict'\n/*\n * Copyright (c) 2017, Bubelich Mykola\n * https, 0x//www.bubelich.com\n *\n * (。◕‿‿◕。)\n *\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met, 0x\n *\n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n *\n * ChaCha20 is a stream cipher designed by D. J. Bernstein.\n * It is a refinement of the Salsa20 algorithm, and it uses a 256-bit key.\n *\n * ChaCha20 successively calls the ChaCha20 block function, with the same key and nonce, and with successively increasing block counter parameters.\n * ChaCha20 then serializes the resulting state by writing the numbers in little-endian order, creating a keystream block.\n *\n * Concatenating the keystream blocks from the successive blocks forms a keystream.\n * The ChaCha20 function then performs an XOR of this keystream with the plaintext.\n * Alternatively, each keystream block can be XORed with a plaintext block before proceeding to create the next block, saving some memory.\n * There is no requirement for the plaintext to be an integral multiple of 512 bits. If there is extra keystream from the last block, it is discarded.\n *\n * The inputs to ChaCha20 are\n * - 256-bit key\n * - 32-bit initial counter\n * - 96-bit nonce. In some protocols, this is known as the Initialization Vector\n * - Arbitrary-length plaintext\n *\n * Implementation derived from chacha-ref.c version 20080118\n * See for details, 0x http, 0x//cr.yp.to/chacha/chacha-20080128.pdf\n */\n\n/**\n *\n * @param {Uint8Array} key\n * @param {Uint8Array} nonce\n * @param {number} counter\n * @throws {Error}\n *\n * @constructor\n */\nvar JSChaCha20 = function (key, nonce, counter) {\n if (typeof counter === 'undefined') {\n counter = 0\n }\n\n if (!(key instanceof Uint8Array) || key.length !== 32) {\n throw new Error('Key should be 32 byte array!')\n }\n\n if (!(nonce instanceof Uint8Array) || nonce.length !== 12) {\n throw new Error('Nonce should be 12 byte array!')\n }\n\n this._rounds = 20\n // Constants\n this._sigma = [0x61707865, 0x3320646e, 0x79622d32, 0x6b206574]\n\n // param construction\n this._param = [\n this._sigma[0],\n this._sigma[1],\n this._sigma[2],\n this._sigma[3],\n // key\n this._get32(key, 0),\n this._get32(key, 4),\n this._get32(key, 8),\n this._get32(key, 12),\n this._get32(key, 16),\n this._get32(key, 20),\n this._get32(key, 24),\n this._get32(key, 28),\n // counter\n counter,\n // nonce\n this._get32(nonce, 0),\n this._get32(nonce, 4),\n this._get32(nonce, 8)\n ]\n\n // init 64 byte keystream block //\n this._keystream = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ]\n\n // internal byte counter //\n this._byteCounter = 0\n}\n\nJSChaCha20.prototype._chacha = function () {\n var mix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n var i = 0\n var b = 0\n\n // copy param array to mix //\n for (i = 0; i < 16; i++) {\n mix[i] = this._param[i]\n }\n\n // mix rounds //\n for (i = 0; i < this._rounds; i += 2) {\n this._quarterround(mix, 0, 4, 8, 12)\n this._quarterround(mix, 1, 5, 9, 13)\n this._quarterround(mix, 2, 6, 10, 14)\n this._quarterround(mix, 3, 7, 11, 15)\n\n this._quarterround(mix, 0, 5, 10, 15)\n this._quarterround(mix, 1, 6, 11, 12)\n this._quarterround(mix, 2, 7, 8, 13)\n this._quarterround(mix, 3, 4, 9, 14)\n }\n\n for (i = 0; i < 16; i++) {\n // add\n mix[i] += this._param[i]\n\n // store keystream\n this._keystream[b++] = mix[i] & 0xFF\n this._keystream[b++] = (mix[i] >>> 8) & 0xFF\n this._keystream[b++] = (mix[i] >>> 16) & 0xFF\n this._keystream[b++] = (mix[i] >>> 24) & 0xFF\n }\n}\n\n/**\n * The basic operation of the ChaCha algorithm is the quarter round.\n * It operates on four 32-bit unsigned integers, denoted a, b, c, and d.\n *\n * @param {Array} output\n * @param {number} a\n * @param {number} b\n * @param {number} c\n * @param {number} d\n * @private\n */\nJSChaCha20.prototype._quarterround = function (output, a, b, c, d) {\n output[d] = this._rotl(output[d] ^ (output[a] += output[b]), 16)\n output[b] = this._rotl(output[b] ^ (output[c] += output[d]), 12)\n output[d] = this._rotl(output[d] ^ (output[a] += output[b]), 8)\n output[b] = this._rotl(output[b] ^ (output[c] += output[d]), 7)\n\n // JavaScript hack to make UINT32 :) //\n output[a] >>>= 0\n output[b] >>>= 0\n output[c] >>>= 0\n output[d] >>>= 0\n}\n\n/**\n * Little-endian to uint 32 bytes\n *\n * @param {Uint8Array|[number]} data\n * @param {number} index\n * @return {number}\n * @private\n */\nJSChaCha20.prototype._get32 = function (data, index) {\n return data[index++] ^ (data[index++] << 8) ^ (data[index++] << 16) ^ (data[index] << 24)\n}\n\n/**\n * Cyclic left rotation\n *\n * @param {number} data\n * @param {number} shift\n * @return {number}\n * @private\n */\nJSChaCha20.prototype._rotl = function (data, shift) {\n return ((data << shift) | (data >>> (32 - shift)))\n}\n\n/**\n * Encrypt data with key and nonce\n *\n * @param {Uint8Array} data\n * @return {Uint8Array}\n */\nJSChaCha20.prototype.encrypt = function (data) {\n return this._update(data)\n}\n\n/**\n * Decrypt data with key and nonce\n *\n * @param {Uint8Array} data\n * @return {Uint8Array}\n */\nJSChaCha20.prototype.decrypt = function (data) {\n return this._update(data)\n}\n\n/**\n * Encrypt or Decrypt data with key and nonce\n *\n * @param {Uint8Array} data\n * @return {Uint8Array}\n * @private\n */\nJSChaCha20.prototype._update = function (data) {\n if (!(data instanceof Uint8Array) || data.length === 0) {\n throw new Error('Data should be type of bytes (Uint8Array) and not empty!')\n }\n\n var output = new Uint8Array(data.length)\n\n // core function, build block and xor with input data //\n for (var i = 0; i < data.length; i++) {\n if (this._byteCounter === 0 || this._byteCounter === 64) {\n // generate new block //\n\n this._chacha()\n // counter increment //\n this._param[12]++\n\n // reset internal counter //\n this._byteCounter = 0\n }\n\n output[i] = data[i] ^ this._keystream[this._byteCounter++]\n }\n\n return output\n}\n\n// EXPORT //\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = JSChaCha20\n}\n"], + "mappings": "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", + "names": [] +} diff --git a/node_modules/.vite/deps/js-sha256.js b/node_modules/.vite/deps/js-sha256.js new file mode 100644 index 0000000..e070513 --- /dev/null +++ b/node_modules/.vite/deps/js-sha256.js @@ -0,0 +1,539 @@ +import { + require_buffer, + require_crypto +} from "./chunk-LNRWHUEM.js"; +import { + __commonJS +} from "./chunk-HKJ2B2AA.js"; + +// node_modules/js-sha256/src/sha256.js +var require_sha256 = __commonJS({ + "node_modules/js-sha256/src/sha256.js"(exports, module) { + (function() { + "use strict"; + var ERROR = "input is invalid type"; + var WINDOW = typeof window === "object"; + var root = WINDOW ? window : {}; + if (root.JS_SHA256_NO_WINDOW) { + WINDOW = false; + } + var WEB_WORKER = !WINDOW && typeof self === "object"; + var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node; + if (NODE_JS) { + root = global; + } else if (WEB_WORKER) { + root = self; + } + var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports; + var AMD = typeof define === "function" && define.amd; + var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined"; + var HEX_CHARS = "0123456789abcdef".split(""); + var EXTRA = [-2147483648, 8388608, 32768, 128]; + var SHIFT = [24, 16, 8, 0]; + var K = [ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]; + var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"]; + var blocks = []; + if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) { + Array.isArray = function(obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + }; + } + if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { + ArrayBuffer.isView = function(obj) { + return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer; + }; + } + var createOutputMethod = function(outputType, is224) { + return function(message) { + return new Sha256(is224, true).update(message)[outputType](); + }; + }; + var createMethod = function(is224) { + var method = createOutputMethod("hex", is224); + if (NODE_JS) { + method = nodeWrap(method, is224); + } + method.create = function() { + return new Sha256(is224); + }; + method.update = function(message) { + return method.create().update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method[type] = createOutputMethod(type, is224); + } + return method; + }; + var nodeWrap = function(method, is224) { + var crypto = require_crypto(); + var Buffer = require_buffer().Buffer; + var algorithm = is224 ? "sha224" : "sha256"; + var bufferFrom; + if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) { + bufferFrom = Buffer.from; + } else { + bufferFrom = function(message) { + return new Buffer(message); + }; + } + var nodeMethod = function(message) { + if (typeof message === "string") { + return crypto.createHash(algorithm).update(message, "utf8").digest("hex"); + } else { + if (message === null || message === void 0) { + throw new Error(ERROR); + } else if (message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } + } + if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) { + return crypto.createHash(algorithm).update(bufferFrom(message)).digest("hex"); + } else { + return method(message); + } + }; + return nodeMethod; + }; + var createHmacOutputMethod = function(outputType, is224) { + return function(key, message) { + return new HmacSha256(key, is224, true).update(message)[outputType](); + }; + }; + var createHmacMethod = function(is224) { + var method = createHmacOutputMethod("hex", is224); + method.create = function(key) { + return new HmacSha256(key, is224); + }; + method.update = function(key, message) { + return method.create(key).update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method[type] = createHmacOutputMethod(type, is224); + } + return method; + }; + function Sha256(is224, sharedMemory) { + if (sharedMemory) { + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.blocks = blocks; + } else { + this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + if (is224) { + this.h0 = 3238371032; + this.h1 = 914150663; + this.h2 = 812702999; + this.h3 = 4144912697; + this.h4 = 4290775857; + this.h5 = 1750603025; + this.h6 = 1694076839; + this.h7 = 3204075428; + } else { + this.h0 = 1779033703; + this.h1 = 3144134277; + this.h2 = 1013904242; + this.h3 = 2773480762; + this.h4 = 1359893119; + this.h5 = 2600822924; + this.h6 = 528734635; + this.h7 = 1541459225; + } + this.block = this.start = this.bytes = this.hBytes = 0; + this.finalized = this.hashed = false; + this.first = true; + this.is224 = is224; + } + Sha256.prototype.update = function(message) { + if (this.finalized) { + return; + } + var notString, type = typeof message; + if (type !== "string") { + if (type === "object") { + if (message === null) { + throw new Error(ERROR); + } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } else if (!Array.isArray(message)) { + if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { + throw new Error(ERROR); + } + } + } else { + throw new Error(ERROR); + } + notString = true; + } + var code, index = 0, i, length = message.length, blocks2 = this.blocks; + while (index < length) { + if (this.hashed) { + this.hashed = false; + blocks2[0] = this.block; + this.block = blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0; + } + if (notString) { + for (i = this.start; index < length && i < 64; ++index) { + blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.start; index < length && i < 64; ++index) { + code = message.charCodeAt(index); + if (code < 128) { + blocks2[i >>> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 2048) { + blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } else if (code < 55296 || code >= 57344) { + blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } else { + code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023); + blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } + } + } + this.lastByteIndex = i; + this.bytes += i - this.start; + if (i >= 64) { + this.block = blocks2[16]; + this.start = i - 64; + this.hash(); + this.hashed = true; + } else { + this.start = i; + } + } + if (this.bytes > 4294967295) { + this.hBytes += this.bytes / 4294967296 << 0; + this.bytes = this.bytes % 4294967296; + } + return this; + }; + Sha256.prototype.finalize = function() { + if (this.finalized) { + return; + } + this.finalized = true; + var blocks2 = this.blocks, i = this.lastByteIndex; + blocks2[16] = this.block; + blocks2[i >>> 2] |= EXTRA[i & 3]; + this.block = blocks2[16]; + if (i >= 56) { + if (!this.hashed) { + this.hash(); + } + blocks2[0] = this.block; + blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0; + } + blocks2[14] = this.hBytes << 3 | this.bytes >>> 29; + blocks2[15] = this.bytes << 3; + this.hash(); + }; + Sha256.prototype.hash = function() { + var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc; + for (j = 16; j < 64; ++j) { + t1 = blocks2[j - 15]; + s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3; + t1 = blocks2[j - 2]; + s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10; + blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0; + } + bc = b & c; + for (j = 0; j < 64; j += 4) { + if (this.first) { + if (this.is224) { + ab = 300032; + t1 = blocks2[0] - 1413257819; + h = t1 - 150054599 << 0; + d = t1 + 24177077 << 0; + } else { + ab = 704751109; + t1 = blocks2[0] - 210244248; + h = t1 - 1521486534 << 0; + d = t1 + 143694565 << 0; + } + this.first = false; + } else { + s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10); + s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7); + ab = a & b; + maj = ab ^ a & c ^ bc; + ch = e & f ^ ~e & g; + t1 = h + s1 + ch + K[j] + blocks2[j]; + t2 = s0 + maj; + h = d + t1 << 0; + d = t1 + t2 << 0; + } + s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10); + s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7); + da = d & a; + maj = da ^ d & b ^ ab; + ch = h & e ^ ~h & f; + t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1]; + t2 = s0 + maj; + g = c + t1 << 0; + c = t1 + t2 << 0; + s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10); + s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7); + cd = c & d; + maj = cd ^ c & a ^ da; + ch = g & h ^ ~g & e; + t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2]; + t2 = s0 + maj; + f = b + t1 << 0; + b = t1 + t2 << 0; + s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10); + s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7); + bc = b & c; + maj = bc ^ b & d ^ cd; + ch = f & g ^ ~f & h; + t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3]; + t2 = s0 + maj; + e = a + t1 << 0; + a = t1 + t2 << 0; + this.chromeBugWorkAround = true; + } + this.h0 = this.h0 + a << 0; + this.h1 = this.h1 + b << 0; + this.h2 = this.h2 + c << 0; + this.h3 = this.h3 + d << 0; + this.h4 = this.h4 + e << 0; + this.h5 = this.h5 + f << 0; + this.h6 = this.h6 + g << 0; + this.h7 = this.h7 + h << 0; + }; + Sha256.prototype.hex = function() { + this.finalize(); + var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7; + var hex = HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >>> 28 & 15] + HEX_CHARS[h4 >>> 24 & 15] + HEX_CHARS[h4 >>> 20 & 15] + HEX_CHARS[h4 >>> 16 & 15] + HEX_CHARS[h4 >>> 12 & 15] + HEX_CHARS[h4 >>> 8 & 15] + HEX_CHARS[h4 >>> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >>> 28 & 15] + HEX_CHARS[h5 >>> 24 & 15] + HEX_CHARS[h5 >>> 20 & 15] + HEX_CHARS[h5 >>> 16 & 15] + HEX_CHARS[h5 >>> 12 & 15] + HEX_CHARS[h5 >>> 8 & 15] + HEX_CHARS[h5 >>> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >>> 28 & 15] + HEX_CHARS[h6 >>> 24 & 15] + HEX_CHARS[h6 >>> 20 & 15] + HEX_CHARS[h6 >>> 16 & 15] + HEX_CHARS[h6 >>> 12 & 15] + HEX_CHARS[h6 >>> 8 & 15] + HEX_CHARS[h6 >>> 4 & 15] + HEX_CHARS[h6 & 15]; + if (!this.is224) { + hex += HEX_CHARS[h7 >>> 28 & 15] + HEX_CHARS[h7 >>> 24 & 15] + HEX_CHARS[h7 >>> 20 & 15] + HEX_CHARS[h7 >>> 16 & 15] + HEX_CHARS[h7 >>> 12 & 15] + HEX_CHARS[h7 >>> 8 & 15] + HEX_CHARS[h7 >>> 4 & 15] + HEX_CHARS[h7 & 15]; + } + return hex; + }; + Sha256.prototype.toString = Sha256.prototype.hex; + Sha256.prototype.digest = function() { + this.finalize(); + var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7; + var arr = [ + h0 >>> 24 & 255, + h0 >>> 16 & 255, + h0 >>> 8 & 255, + h0 & 255, + h1 >>> 24 & 255, + h1 >>> 16 & 255, + h1 >>> 8 & 255, + h1 & 255, + h2 >>> 24 & 255, + h2 >>> 16 & 255, + h2 >>> 8 & 255, + h2 & 255, + h3 >>> 24 & 255, + h3 >>> 16 & 255, + h3 >>> 8 & 255, + h3 & 255, + h4 >>> 24 & 255, + h4 >>> 16 & 255, + h4 >>> 8 & 255, + h4 & 255, + h5 >>> 24 & 255, + h5 >>> 16 & 255, + h5 >>> 8 & 255, + h5 & 255, + h6 >>> 24 & 255, + h6 >>> 16 & 255, + h6 >>> 8 & 255, + h6 & 255 + ]; + if (!this.is224) { + arr.push(h7 >>> 24 & 255, h7 >>> 16 & 255, h7 >>> 8 & 255, h7 & 255); + } + return arr; + }; + Sha256.prototype.array = Sha256.prototype.digest; + Sha256.prototype.arrayBuffer = function() { + this.finalize(); + var buffer = new ArrayBuffer(this.is224 ? 28 : 32); + var dataView = new DataView(buffer); + dataView.setUint32(0, this.h0); + dataView.setUint32(4, this.h1); + dataView.setUint32(8, this.h2); + dataView.setUint32(12, this.h3); + dataView.setUint32(16, this.h4); + dataView.setUint32(20, this.h5); + dataView.setUint32(24, this.h6); + if (!this.is224) { + dataView.setUint32(28, this.h7); + } + return buffer; + }; + function HmacSha256(key, is224, sharedMemory) { + var i, type = typeof key; + if (type === "string") { + var bytes = [], length = key.length, index = 0, code; + for (i = 0; i < length; ++i) { + code = key.charCodeAt(i); + if (code < 128) { + bytes[index++] = code; + } else if (code < 2048) { + bytes[index++] = 192 | code >>> 6; + bytes[index++] = 128 | code & 63; + } else if (code < 55296 || code >= 57344) { + bytes[index++] = 224 | code >>> 12; + bytes[index++] = 128 | code >>> 6 & 63; + bytes[index++] = 128 | code & 63; + } else { + code = 65536 + ((code & 1023) << 10 | key.charCodeAt(++i) & 1023); + bytes[index++] = 240 | code >>> 18; + bytes[index++] = 128 | code >>> 12 & 63; + bytes[index++] = 128 | code >>> 6 & 63; + bytes[index++] = 128 | code & 63; + } + } + key = bytes; + } else { + if (type === "object") { + if (key === null) { + throw new Error(ERROR); + } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) { + key = new Uint8Array(key); + } else if (!Array.isArray(key)) { + if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) { + throw new Error(ERROR); + } + } + } else { + throw new Error(ERROR); + } + } + if (key.length > 64) { + key = new Sha256(is224, true).update(key).array(); + } + var oKeyPad = [], iKeyPad = []; + for (i = 0; i < 64; ++i) { + var b = key[i] || 0; + oKeyPad[i] = 92 ^ b; + iKeyPad[i] = 54 ^ b; + } + Sha256.call(this, is224, sharedMemory); + this.update(iKeyPad); + this.oKeyPad = oKeyPad; + this.inner = true; + this.sharedMemory = sharedMemory; + } + HmacSha256.prototype = new Sha256(); + HmacSha256.prototype.finalize = function() { + Sha256.prototype.finalize.call(this); + if (this.inner) { + this.inner = false; + var innerHash = this.array(); + Sha256.call(this, this.is224, this.sharedMemory); + this.update(this.oKeyPad); + this.update(innerHash); + Sha256.prototype.finalize.call(this); + } + }; + var exports2 = createMethod(); + exports2.sha256 = exports2; + exports2.sha224 = createMethod(true); + exports2.sha256.hmac = createHmacMethod(); + exports2.sha224.hmac = createHmacMethod(true); + if (COMMON_JS) { + module.exports = exports2; + } else { + root.sha256 = exports2.sha256; + root.sha224 = exports2.sha224; + if (AMD) { + define(function() { + return exports2; + }); + } + } + })(); + } +}); +export default require_sha256(); +/*! Bundled license information: + +js-sha256/src/sha256.js: + (** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.11.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2024 + * @license MIT + *) +*/ +//# sourceMappingURL=js-sha256.js.map diff --git a/node_modules/.vite/deps/js-sha256.js.map b/node_modules/.vite/deps/js-sha256.js.map new file mode 100644 index 0000000..248f3ca --- /dev/null +++ b/node_modules/.vite/deps/js-sha256.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../js-sha256/src/sha256.js"], + "sourcesContent": ["/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = require('crypto')\n var Buffer = require('buffer').Buffer;\n var algorithm = is224 ? 'sha224' : 'sha256';\n var bufferFrom;\n if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer.from;\n } else {\n bufferFrom = function (message) {\n return new Buffer(message);\n };\n }\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n this.block = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >>> 28) & 0x0F] + HEX_CHARS[(h0 >>> 24) & 0x0F] +\n HEX_CHARS[(h0 >>> 20) & 0x0F] + HEX_CHARS[(h0 >>> 16) & 0x0F] +\n HEX_CHARS[(h0 >>> 12) & 0x0F] + HEX_CHARS[(h0 >>> 8) & 0x0F] +\n HEX_CHARS[(h0 >>> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >>> 28) & 0x0F] + HEX_CHARS[(h1 >>> 24) & 0x0F] +\n HEX_CHARS[(h1 >>> 20) & 0x0F] + HEX_CHARS[(h1 >>> 16) & 0x0F] +\n HEX_CHARS[(h1 >>> 12) & 0x0F] + HEX_CHARS[(h1 >>> 8) & 0x0F] +\n HEX_CHARS[(h1 >>> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >>> 28) & 0x0F] + HEX_CHARS[(h2 >>> 24) & 0x0F] +\n HEX_CHARS[(h2 >>> 20) & 0x0F] + HEX_CHARS[(h2 >>> 16) & 0x0F] +\n HEX_CHARS[(h2 >>> 12) & 0x0F] + HEX_CHARS[(h2 >>> 8) & 0x0F] +\n HEX_CHARS[(h2 >>> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >>> 28) & 0x0F] + HEX_CHARS[(h3 >>> 24) & 0x0F] +\n HEX_CHARS[(h3 >>> 20) & 0x0F] + HEX_CHARS[(h3 >>> 16) & 0x0F] +\n HEX_CHARS[(h3 >>> 12) & 0x0F] + HEX_CHARS[(h3 >>> 8) & 0x0F] +\n HEX_CHARS[(h3 >>> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >>> 28) & 0x0F] + HEX_CHARS[(h4 >>> 24) & 0x0F] +\n HEX_CHARS[(h4 >>> 20) & 0x0F] + HEX_CHARS[(h4 >>> 16) & 0x0F] +\n HEX_CHARS[(h4 >>> 12) & 0x0F] + HEX_CHARS[(h4 >>> 8) & 0x0F] +\n HEX_CHARS[(h4 >>> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >>> 28) & 0x0F] + HEX_CHARS[(h5 >>> 24) & 0x0F] +\n HEX_CHARS[(h5 >>> 20) & 0x0F] + HEX_CHARS[(h5 >>> 16) & 0x0F] +\n HEX_CHARS[(h5 >>> 12) & 0x0F] + HEX_CHARS[(h5 >>> 8) & 0x0F] +\n HEX_CHARS[(h5 >>> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >>> 28) & 0x0F] + HEX_CHARS[(h6 >>> 24) & 0x0F] +\n HEX_CHARS[(h6 >>> 20) & 0x0F] + HEX_CHARS[(h6 >>> 16) & 0x0F] +\n HEX_CHARS[(h6 >>> 12) & 0x0F] + HEX_CHARS[(h6 >>> 8) & 0x0F] +\n HEX_CHARS[(h6 >>> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >>> 28) & 0x0F] + HEX_CHARS[(h7 >>> 24) & 0x0F] +\n HEX_CHARS[(h7 >>> 20) & 0x0F] + HEX_CHARS[(h7 >>> 16) & 0x0F] +\n HEX_CHARS[(h7 >>> 12) & 0x0F] + HEX_CHARS[(h7 >>> 8) & 0x0F] +\n HEX_CHARS[(h7 >>> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >>> 24) & 0xFF, (h0 >>> 16) & 0xFF, (h0 >>> 8) & 0xFF, h0 & 0xFF,\n (h1 >>> 24) & 0xFF, (h1 >>> 16) & 0xFF, (h1 >>> 8) & 0xFF, h1 & 0xFF,\n (h2 >>> 24) & 0xFF, (h2 >>> 16) & 0xFF, (h2 >>> 8) & 0xFF, h2 & 0xFF,\n (h3 >>> 24) & 0xFF, (h3 >>> 16) & 0xFF, (h3 >>> 8) & 0xFF, h3 & 0xFF,\n (h4 >>> 24) & 0xFF, (h4 >>> 16) & 0xFF, (h4 >>> 8) & 0xFF, h4 & 0xFF,\n (h5 >>> 24) & 0xFF, (h5 >>> 16) & 0xFF, (h5 >>> 8) & 0xFF, h5 & 0xFF,\n (h6 >>> 24) & 0xFF, (h6 >>> 16) & 0xFF, (h6 >>> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >>> 24) & 0xFF, (h7 >>> 16) & 0xFF, (h7 >>> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >>> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >>> 12));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >>> 18));\n bytes[index++] = (0x80 | ((code >>> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n"], + "mappings": "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", + "names": ["blocks", "exports"] +} diff --git a/node_modules/.vite/deps/package.json b/node_modules/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/node_modules/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/node_modules/@dicebear/core/LICENSE b/node_modules/@dicebear/core/LICENSE new file mode 100644 index 0000000..b117e2b --- /dev/null +++ b/node_modules/@dicebear/core/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Florian Körner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@dicebear/core/README.md b/node_modules/@dicebear/core/README.md new file mode 100644 index 0000000..6cb4492 --- /dev/null +++ b/node_modules/@dicebear/core/README.md @@ -0,0 +1,26 @@ +

DiceBear

+ +

+ + + + + + +

+ +With DiceBear you can create awesome avatars for your project in no time. +Whether you are looking for abstract shapes or lovingly designed characters, you +will find something suitable among our avatar styles. And no matter how and for +what you want to use the avatars, DiceBear offers the right solution! + +In addition to purely random avatars, you can also create deterministic avatars +for user identities. With the built-in PRNG you create the same avatar over and +over again based on a seed. But also individual avatars are possible! Just use +the countless options that each avatar style provides. + +And thanks to the JavaScript library, HTTP API, CLI, Figma plugin and +Playground, your next avatar is always just a stone's throw away! + +[Playground](https://www.dicebear.com/playground) | +[Documentation](https://www.dicebear.com/introduction) diff --git a/node_modules/@dicebear/core/lib/core.d.ts b/node_modules/@dicebear/core/lib/core.d.ts new file mode 100644 index 0000000..346629b --- /dev/null +++ b/node_modules/@dicebear/core/lib/core.d.ts @@ -0,0 +1,2 @@ +import type { Result, Style, StyleOptions } from './types.js'; +export declare function createAvatar(style: Style, options?: StyleOptions): Result; diff --git a/node_modules/@dicebear/core/lib/core.js b/node_modules/@dicebear/core/lib/core.js new file mode 100644 index 0000000..f37bcb7 --- /dev/null +++ b/node_modules/@dicebear/core/lib/core.js @@ -0,0 +1,67 @@ +import * as svgUtils from './utils/svg.js'; +import { merge as mergeOptions } from './utils/options.js'; +import { create as createPrng } from './utils/prng.js'; +import * as license from './utils/license.js'; +import { getBackgroundColors } from './utils/color.js'; +export function createAvatar(style, options = {}) { + var _a, _b, _c, _d, _e; + options = mergeOptions(style, options); + const prng = createPrng(options.seed); + const result = style.create({ prng: prng, options }); + const backgroundType = prng.pick((_a = options.backgroundType) !== null && _a !== void 0 ? _a : [], 'solid'); + const { primary: primaryBackgroundColor, secondary: secondaryBackgroundColor, } = getBackgroundColors(prng, (_b = options.backgroundColor) !== null && _b !== void 0 ? _b : [], backgroundType); + const backgroundRotation = prng.integer(((_c = options.backgroundRotation) === null || _c === void 0 ? void 0 : _c.length) + ? Math.min(...options.backgroundRotation) + : 0, ((_d = options.backgroundRotation) === null || _d === void 0 ? void 0 : _d.length) + ? Math.max(...options.backgroundRotation) + : 0); + if (options.size) { + result.attributes.width = options.size.toString(); + result.attributes.height = options.size.toString(); + } + if (options.scale !== undefined && options.scale !== 100) { + result.body = svgUtils.addScale(result, options.scale); + } + if (options.flip) { + result.body = svgUtils.addFlip(result); + } + if (options.rotate) { + result.body = svgUtils.addRotate(result, options.rotate); + } + if (options.translateX || options.translateY) { + result.body = svgUtils.addTranslate(result, options.translateX, options.translateY); + } + if (primaryBackgroundColor !== 'transparent' && + secondaryBackgroundColor !== 'transparent') { + result.body = svgUtils.addBackground(result, primaryBackgroundColor, secondaryBackgroundColor, backgroundType, backgroundRotation); + } + if (options.radius || options.clip) { + result.body = svgUtils.addViewboxMask(result, (_e = options.radius) !== null && _e !== void 0 ? _e : 0); + } + if (options.randomizeIds) { + // Reduces the occurrence of ID collisions when rendering multiple avatars on one HTML page. + result.body = svgUtils.randomizeIds(result); + } + const attributes = svgUtils.createAttrString(result); + const metadata = license.xml(style); + const svg = `${metadata}${result.body}`; + return { + toString: () => svg, + toJson: () => { + var _a; + return ({ + svg: svg, + extra: { + primaryBackgroundColor, + secondaryBackgroundColor, + backgroundType, + backgroundRotation, + ...(_a = result.extra) === null || _a === void 0 ? void 0 : _a.call(result), + }, + }); + }, + toDataUri: () => { + return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`; + }, + }; +} diff --git a/node_modules/@dicebear/core/lib/index.d.ts b/node_modules/@dicebear/core/lib/index.d.ts new file mode 100644 index 0000000..f728f7a --- /dev/null +++ b/node_modules/@dicebear/core/lib/index.d.ts @@ -0,0 +1,12 @@ +/*! + * DiceBear (@dicebear/core) + * + * Code licensed under MIT (https://github.com/dicebear/dicebear/blob/main/LICENSE) + * Copyright (c) 2024 Florian Körner + */ +import * as license from './utils/license.js'; +import * as escape from './utils/escape.js'; +export * from './core.js'; +export * from './schema.js'; +export * from './types.js'; +export { license, escape }; diff --git a/node_modules/@dicebear/core/lib/index.js b/node_modules/@dicebear/core/lib/index.js new file mode 100644 index 0000000..f728f7a --- /dev/null +++ b/node_modules/@dicebear/core/lib/index.js @@ -0,0 +1,12 @@ +/*! + * DiceBear (@dicebear/core) + * + * Code licensed under MIT (https://github.com/dicebear/dicebear/blob/main/LICENSE) + * Copyright (c) 2024 Florian Körner + */ +import * as license from './utils/license.js'; +import * as escape from './utils/escape.js'; +export * from './core.js'; +export * from './schema.js'; +export * from './types.js'; +export { license, escape }; diff --git a/node_modules/@dicebear/core/lib/schema.d.ts b/node_modules/@dicebear/core/lib/schema.d.ts new file mode 100644 index 0000000..1172ede --- /dev/null +++ b/node_modules/@dicebear/core/lib/schema.d.ts @@ -0,0 +1,2 @@ +import { JSONSchema7 } from 'json-schema'; +export declare const schema: JSONSchema7; diff --git a/node_modules/@dicebear/core/lib/schema.js b/node_modules/@dicebear/core/lib/schema.js new file mode 100644 index 0000000..57bc9a6 --- /dev/null +++ b/node_modules/@dicebear/core/lib/schema.js @@ -0,0 +1,81 @@ +export const schema = { + type: 'object', + $schema: 'http://json-schema.org/draft-07/schema#', + properties: { + seed: { + type: 'string', + }, + flip: { + type: 'boolean', + default: false, + }, + rotate: { + type: 'integer', + minimum: 0, + maximum: 360, + default: 0, + }, + scale: { + type: 'integer', + minimum: 0, + maximum: 200, + default: 100, + }, + radius: { + type: 'integer', + minimum: 0, + maximum: 50, + default: 0, + }, + size: { + type: 'integer', + minimum: 1, + }, + backgroundColor: { + type: 'array', + items: { + type: 'string', + pattern: '^(transparent|[a-fA-F0-9]{6})$', + }, + }, + backgroundType: { + type: 'array', + items: { + type: 'string', + enum: ['solid', 'gradientLinear'], + }, + default: ['solid'], + }, + backgroundRotation: { + type: 'array', + items: { + type: 'integer', + minimum: -360, + maximum: 360, + }, + default: [ + 0, 360, + ], + }, + translateX: { + type: 'integer', + minimum: -100, + maximum: 100, + default: 0, + }, + translateY: { + type: 'integer', + minimum: -100, + maximum: 100, + default: 0, + }, + clip: { + type: 'boolean', + default: true, + }, + randomizeIds: { + type: 'boolean', + default: false, + }, + }, +}; diff --git a/node_modules/@dicebear/core/lib/types.d.ts b/node_modules/@dicebear/core/lib/types.d.ts new file mode 100644 index 0000000..3610633 --- /dev/null +++ b/node_modules/@dicebear/core/lib/types.d.ts @@ -0,0 +1,73 @@ +import type { JSONSchema7 } from 'json-schema'; +export interface ResultConvertOptions { + includeExif?: boolean; +} +export interface Result { + toString(): string; + toJson(): { + svg: string; + extra: Record; + }; + toDataUri(): string; +} +export type BackgroundType = 'solid' | 'gradientLinear'; +export interface Options { + seed?: string; + flip?: boolean; + rotate?: number; + scale?: number; + radius?: number; + size?: number; + backgroundColor?: string[]; + backgroundType?: BackgroundType[]; + backgroundRotation?: number[]; + translateX?: number; + translateY?: number; + clip?: boolean; + randomizeIds?: boolean; +} +export interface Exif { + [key: string]: string; +} +export type SchemaDefaults = Record; +export interface Prng { + seed: string; + next(): void; + bool(likelihood?: number): boolean; + integer(min: number, max: number): number; + pick(arr: T[], fallback: T): T; + pick(arr: T[]): T | undefined; + shuffle(arr: T[]): T[]; + string(length: number, characters?: string): string; +} +export type StyleSchema = JSONSchema7; +export type StyleOptions = Partial; +export interface StyleCreateProps { + prng: Prng; + options: StyleOptions; +} +export type StyleCreate = (props: StyleCreateProps) => StyleCreateResult; +export interface StyleCreateResultAttributes { + viewBox: string; + [key: string]: string; +} +export interface StyleCreateResult { + attributes: StyleCreateResultAttributes; + body: string; + extra?: () => Record; +} +export interface StyleMeta { + title?: string; + source?: string; + creator?: string; + homepage?: string; + license?: { + name: string; + url: string; + }; +} +export interface Style { + meta?: StyleMeta; + schema?: StyleSchema; + create: StyleCreate; +} diff --git a/node_modules/@dicebear/core/lib/types.js b/node_modules/@dicebear/core/lib/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@dicebear/core/lib/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@dicebear/core/lib/utils/color.d.ts b/node_modules/@dicebear/core/lib/utils/color.d.ts new file mode 100644 index 0000000..079f199 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/color.d.ts @@ -0,0 +1,6 @@ +import { Prng } from '../types.js'; +export declare function convertColor(color: string): string; +export declare function getBackgroundColors(prng: Prng, backgroundColor: string[], backgroundType: 'solid' | 'gradientLinear'): { + primary: string; + secondary: string; +}; diff --git a/node_modules/@dicebear/core/lib/utils/color.js b/node_modules/@dicebear/core/lib/utils/color.js new file mode 100644 index 0000000..f560da4 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/color.js @@ -0,0 +1,34 @@ +export function convertColor(color) { + return 'transparent' === color ? color : `#${color}`; +} +export function getBackgroundColors(prng, backgroundColor, backgroundType) { + var _a; + let shuffledBackgroundColors = prng.shuffle(backgroundColor); + if (shuffledBackgroundColors.length <= 1) { + // If no background colour or only one background colour has been selected, + // the random sorting logic can be omitted. + shuffledBackgroundColors = backgroundColor; + // A function call should in any case make an identical number of calls to the PRNG. + prng.next(); + } + else if (backgroundColor.length == 2 && backgroundType == 'gradientLinear') { + // If the background is to be a colour gradient and exactly two background + // colours have been specified, do not sort them randomly. In this case, we + // assume that the order of the background colours was chosen on purpose. + shuffledBackgroundColors = backgroundColor; + // A function call should in any case make an identical number of calls to the PRNG. + prng.next(); + } + else { + shuffledBackgroundColors = prng.shuffle(backgroundColor); + } + if (shuffledBackgroundColors.length === 0) { + shuffledBackgroundColors = ['transparent']; + } + const primary = shuffledBackgroundColors[0]; + const secondary = (_a = shuffledBackgroundColors[1]) !== null && _a !== void 0 ? _a : shuffledBackgroundColors[0]; + return { + primary: convertColor(primary), + secondary: convertColor(secondary), + }; +} diff --git a/node_modules/@dicebear/core/lib/utils/escape.d.ts b/node_modules/@dicebear/core/lib/utils/escape.d.ts new file mode 100644 index 0000000..9c6f0c7 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/escape.d.ts @@ -0,0 +1 @@ +export declare function xml(content: string): string; diff --git a/node_modules/@dicebear/core/lib/utils/escape.js b/node_modules/@dicebear/core/lib/utils/escape.js new file mode 100644 index 0000000..b797b26 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/escape.js @@ -0,0 +1,8 @@ +export function xml(content) { + return content + .replace(/&/g, '&') + .replace(/'/g, ''') + .replace(/"/g, '"') + .replace(//g, '>'); +} diff --git a/node_modules/@dicebear/core/lib/utils/license.d.ts b/node_modules/@dicebear/core/lib/utils/license.d.ts new file mode 100644 index 0000000..8363d94 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/license.d.ts @@ -0,0 +1,3 @@ +import { Style } from '../types.js'; +export declare function xml(style: Style): string; +export declare function text(style: Style): string; diff --git a/node_modules/@dicebear/core/lib/utils/license.js b/node_modules/@dicebear/core/lib/utils/license.js new file mode 100644 index 0000000..506d6d2 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/license.js @@ -0,0 +1,54 @@ +import * as _ from './escape.js'; +export function xml(style) { + var _a, _b, _c, _d, _e, _f, _g; + const title = (_a = style.meta) === null || _a === void 0 ? void 0 : _a.title; + const creator = (_b = style.meta) === null || _b === void 0 ? void 0 : _b.creator; + const source = (_c = style.meta) === null || _c === void 0 ? void 0 : _c.source; + const license = (_e = (_d = style.meta) === null || _d === void 0 ? void 0 : _d.license) === null || _e === void 0 ? void 0 : _e.url; + const rights = text(style); + if (!title && !creator && !source && !license && !rights) { + return ''; + } + // https://nsteffel.github.io/dublin_core_generator/generator.html + return ('' + + '' + + '' + + (title ? `${_.xml(title)}` : '') + + (creator ? `${_.xml(creator)}` : '') + + (source + ? `${_.xml((_g = (_f = style.meta) === null || _f === void 0 ? void 0 : _f.source) !== null && _g !== void 0 ? _g : '')}` + : '') + + (license + ? `${_.xml(license)}` + : '') + + (rights ? `${_.xml(rights)}` : '') + + '' + + '' + + ''); +} +export function text(style) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; + let title = ((_a = style.meta) === null || _a === void 0 ? void 0 : _a.title) ? `„${(_b = style.meta) === null || _b === void 0 ? void 0 : _b.title}”` : 'Design'; + let creator = `„${(_d = (_c = style.meta) === null || _c === void 0 ? void 0 : _c.creator) !== null && _d !== void 0 ? _d : 'Unknown'}”`; + if ((_e = style.meta) === null || _e === void 0 ? void 0 : _e.source) { + title += ` (${style.meta.source})`; + } + let result = ''; + if (((_g = (_f = style.meta) === null || _f === void 0 ? void 0 : _f.license) === null || _g === void 0 ? void 0 : _g.name) !== 'MIT' && + ((_h = style.meta) === null || _h === void 0 ? void 0 : _h.creator) !== 'DiceBear' && + ((_j = style.meta) === null || _j === void 0 ? void 0 : _j.title)) { + result += 'Remix of '; + } + result += `${title} by ${creator}`; + if ((_l = (_k = style.meta) === null || _k === void 0 ? void 0 : _k.license) === null || _l === void 0 ? void 0 : _l.name) { + result += `, licensed under „${(_o = (_m = style.meta) === null || _m === void 0 ? void 0 : _m.license) === null || _o === void 0 ? void 0 : _o.name}”`; + if ((_q = (_p = style.meta) === null || _p === void 0 ? void 0 : _p.license) === null || _q === void 0 ? void 0 : _q.url) { + result += ` (${style.meta.license.url})`; + } + } + return result; +} diff --git a/node_modules/@dicebear/core/lib/utils/options.d.ts b/node_modules/@dicebear/core/lib/utils/options.d.ts new file mode 100644 index 0000000..6cf5565 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/options.d.ts @@ -0,0 +1,3 @@ +import type { SchemaDefaults, Style, StyleOptions, StyleSchema } from '../types.js'; +export declare function defaults(schema: StyleSchema): SchemaDefaults; +export declare function merge(style: Style, options: StyleOptions): StyleOptions; diff --git a/node_modules/@dicebear/core/lib/utils/options.js b/node_modules/@dicebear/core/lib/utils/options.js new file mode 100644 index 0000000..48f2160 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/options.js @@ -0,0 +1,32 @@ +import { schema } from '../schema.js'; +export function defaults(schema) { + var _a; + let result = {}; + let props = (_a = schema.properties) !== null && _a !== void 0 ? _a : {}; + Object.keys(props).forEach((key) => { + let val = props[key]; + if (typeof val === 'object' && undefined !== val.default) { + if (Array.isArray(val.default)) { + result[key] = [...val.default]; + } + else if (typeof val.default === 'object') { + result[key] = { ...val.default }; + } + else { + result[key] = val.default; + } + } + }); + return result; +} +export function merge(style, options) { + var _a; + let result = { + ...defaults(schema), + ...defaults((_a = style.schema) !== null && _a !== void 0 ? _a : {}), + ...options, + }; + // Return a complete copy because the styles could partially customize the + // options and thus modify nested objects and arrays. + return JSON.parse(JSON.stringify(result)); +} diff --git a/node_modules/@dicebear/core/lib/utils/prng.d.ts b/node_modules/@dicebear/core/lib/utils/prng.d.ts new file mode 100644 index 0000000..fb87266 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/prng.d.ts @@ -0,0 +1,2 @@ +import type { Prng } from '../types.js'; +export declare function create(seed?: string): Prng; diff --git a/node_modules/@dicebear/core/lib/utils/prng.js b/node_modules/@dicebear/core/lib/utils/prng.js new file mode 100644 index 0000000..4deea61 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/prng.js @@ -0,0 +1,67 @@ +const MIN = -2147483648; +const MAX = 2147483647; +function xorshift(value) { + value ^= value << 13; + value ^= value >> 17; + value ^= value << 5; + return value; +} +function hashSeed(seed) { + let hash = 0; + for (let i = 0; i < seed.length; i++) { + hash = ((hash << 5) - hash + seed.charCodeAt(i)) | 0; + hash = xorshift(hash); + } + return hash; +} +export function create(seed = '') { + // Ensure that seed is a string + seed = seed.toString(); + let value = hashSeed(seed) || 1; + const next = () => (value = xorshift(value)); + const integer = (min, max) => { + return Math.floor(((next() - MIN) / (MAX - MIN)) * (max + 1 - min) + min); + }; + return { + seed, + next, + bool(likelihood = 50) { + return integer(1, 100) <= likelihood; + }, + integer(min, max) { + return integer(min, max); + }, + pick(arr, fallback) { + var _a; + if (arr.length === 0) { + next(); + return fallback; + } + return (_a = arr[integer(0, arr.length - 1)]) !== null && _a !== void 0 ? _a : fallback; + }, + shuffle(arr) { + // Each method call should call the `next` function only once. + // Therefore, we use a separate instance of the PRNG here. + const internalPrng = create(next().toString()); + // Fisher-Yates shuffle algorithm - We do not use the Array.sort method + // because it is not stable and produces different results when used in + // different browsers. See: https://github.com/dicebear/dicebear/issues/394 + const workingArray = [...arr]; + for (let i = workingArray.length - 1; i > 0; i--) { + const j = internalPrng.integer(0, i); + [workingArray[i], workingArray[j]] = [workingArray[j], workingArray[i]]; + } + return workingArray; + }, + string(length, characters = 'abcdefghijklmnopqrstuvwxyz1234567890') { + // Each method call should call the `next` function only once. + // Therefore, we use a separate instance of the PRNG here. + const internalPrng = create(next().toString()); + let str = ''; + for (let i = 0; i < length; i++) { + str += characters[internalPrng.integer(0, characters.length - 1)]; + } + return str; + }, + }; +} diff --git a/node_modules/@dicebear/core/lib/utils/svg.d.ts b/node_modules/@dicebear/core/lib/utils/svg.d.ts new file mode 100644 index 0000000..591d481 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/svg.d.ts @@ -0,0 +1,15 @@ +import type { BackgroundType, StyleCreateResult } from '../types.js'; +export declare function getViewBox(result: StyleCreateResult): { + x: number; + y: number; + width: number; + height: number; +}; +export declare function addBackground(result: StyleCreateResult, primaryColor: string, secondaryColor: string, type: BackgroundType, rotation: number): string; +export declare function addScale(result: StyleCreateResult, scale: number): string; +export declare function addTranslate(result: StyleCreateResult, x?: number, y?: number): string; +export declare function addRotate(result: StyleCreateResult, rotate: number): string; +export declare function addFlip(result: StyleCreateResult): string; +export declare function addViewboxMask(result: StyleCreateResult, radius: number): string; +export declare function createAttrString(result: StyleCreateResult): string; +export declare function randomizeIds(result: StyleCreateResult): string; diff --git a/node_modules/@dicebear/core/lib/utils/svg.js b/node_modules/@dicebear/core/lib/utils/svg.js new file mode 100644 index 0000000..e2e4c52 --- /dev/null +++ b/node_modules/@dicebear/core/lib/utils/svg.js @@ -0,0 +1,79 @@ +import * as escape from './escape.js'; +import { create as createPrng } from './prng.js'; +export function getViewBox(result) { + let viewBox = result.attributes['viewBox'].split(' '); + let x = parseInt(viewBox[0]); + let y = parseInt(viewBox[1]); + let width = parseInt(viewBox[2]); + let height = parseInt(viewBox[3]); + return { + x, + y, + width, + height, + }; +} +export function addBackground(result, primaryColor, secondaryColor, type, rotation) { + let { width, height, x, y } = getViewBox(result); + const solidBackground = ``; + switch (type) { + case 'solid': + return solidBackground + result.body; + case 'gradientLinear': + return (`` + + `` + + `` + + `` + + `` + + `` + + `` + + result.body); + } +} +export function addScale(result, scale) { + let { width, height, x, y } = getViewBox(result); + let percent = scale ? (scale - 100) / 100 : 0; + let translateX = (width / 2 + x) * percent * -1; + let translateY = (height / 2 + y) * percent * -1; + return `${result.body}`; +} +export function addTranslate(result, x, y) { + let viewBox = getViewBox(result); + let translateX = (viewBox.width + viewBox.x * 2) * ((x !== null && x !== void 0 ? x : 0) / 100); + let translateY = (viewBox.height + viewBox.y * 2) * ((y !== null && y !== void 0 ? y : 0) / 100); + return `${result.body}`; +} +export function addRotate(result, rotate) { + let { width, height, x, y } = getViewBox(result); + return `${result.body}`; +} +export function addFlip(result) { + let { width, x } = getViewBox(result); + return `${result.body}`; +} +export function addViewboxMask(result, radius) { + let { width, height, x, y } = getViewBox(result); + let rx = radius ? (width * radius) / 100 : 0; + let ry = radius ? (height * radius) / 100 : 0; + return (`` + + `` + + `` + + `${result.body}`); +} +export function createAttrString(result) { + const attributes = { + xmlns: 'http://www.w3.org/2000/svg', + ...result.attributes, + }; + return Object.keys(attributes) + .map((attr) => `${escape.xml(attr)}="${escape.xml(attributes[attr])}"`) + .join(' '); +} +export function randomizeIds(result) { + const prng = createPrng(Math.random().toString()); + const ids = {}; + return result.body.replace(/(id="|url\(#)([a-z0-9-_]+)([")])/gi, (match, m1, m2, m3) => { + ids[m2] = ids[m2] || prng.string(8); + return `${m1}${ids[m2]}${m3}`; + }); +} diff --git a/node_modules/@dicebear/core/package.json b/node_modules/@dicebear/core/package.json new file mode 100644 index 0000000..e6145d1 --- /dev/null +++ b/node_modules/@dicebear/core/package.json @@ -0,0 +1,50 @@ +{ + "name": "@dicebear/core", + "version": "9.2.2", + "description": "An avatar library for designers and developers.", + "keywords": [ + "avatar", + "identicon" + ], + "homepage": "https://www.dicebear.com", + "bugs": { + "url": "https://github.com/dicebear/dicebear/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dicebear/dicebear.git" + }, + "license": "MIT", + "author": "Florian Körner ", + "type": "module", + "main": "./lib/index.js", + "exports": "./lib/index.js", + "types": "./lib/index.d.ts", + "files": [ + "LICENSE", + "lib", + "README.md" + ], + "scripts": { + "prebuild": "del-cli lib", + "build": "tsc", + "prepublishOnly": "npm run build", + "test": "uvu tests" + }, + "dependencies": { + "@types/json-schema": "^7.0.11" + }, + "devDependencies": { + "@tsconfig/recommended": "^1.0.2", + "del-cli": "^5.0.0", + "typescript": "^5.1.6", + "uvu": "^0.5.6" + }, + "engines": { + "node": ">=18.0.0" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "bf5b31d047f707f50299142660bc89ef020d9b24" +} diff --git a/node_modules/@dicebear/micah/LICENSE b/node_modules/@dicebear/micah/LICENSE new file mode 100644 index 0000000..92b5db6 --- /dev/null +++ b/node_modules/@dicebear/micah/LICENSE @@ -0,0 +1,34 @@ +Licenses +-------- + +# Design +Applies to all design files in this package. + +Source: Avatar Illustration System (https://www.figma.com/community/file/829741575478342595) +Designer: Micah Lanier (https://dribbble.com/micahlanier) +License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) + +# Code +Applies to all non-design files in this package. + +MIT License + +Copyright (c) 2024 Florian Körner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@dicebear/micah/README.md b/node_modules/@dicebear/micah/README.md new file mode 100644 index 0000000..c858dab --- /dev/null +++ b/node_modules/@dicebear/micah/README.md @@ -0,0 +1,30 @@ +


DiceBear Micah

+

+ Avatar Style for DiceBear
+ Avatar Illustration System by Micah Lanier +

+ +

+ + + + + + + +

+ +

+ The avatar style is based on Avatar Illustration System by + Micah Lanier, licensed under + CC BY 4.0. / Remix of the original. +

+

+ See license overview for more information. +

+ +

+ + Read Documentation + +

diff --git a/node_modules/@dicebear/micah/lib/components/base.d.ts b/node_modules/@dicebear/micah/lib/components/base.d.ts new file mode 100644 index 0000000..f089f91 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/base.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const base: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/base.js b/node_modules/@dicebear/micah/lib/components/base.js new file mode 100644 index 0000000..9a6b8fe --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/base.js @@ -0,0 +1,10 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const base = { + 'standard': (components, colors) => { var _a, _b; return `${(_b = (_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, +}; diff --git a/node_modules/@dicebear/micah/lib/components/earrings.d.ts b/node_modules/@dicebear/micah/lib/components/earrings.d.ts new file mode 100644 index 0000000..4f36440 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/earrings.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const earrings: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/earrings.js b/node_modules/@dicebear/micah/lib/components/earrings.js new file mode 100644 index 0000000..0f95e64 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/earrings.js @@ -0,0 +1,11 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const earrings = { + 'hoop': (components, colors) => ``, + 'stud': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/ears.d.ts b/node_modules/@dicebear/micah/lib/components/ears.d.ts new file mode 100644 index 0000000..3f5be6f --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/ears.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const ears: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/ears.js b/node_modules/@dicebear/micah/lib/components/ears.js new file mode 100644 index 0000000..04a8f74 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/ears.js @@ -0,0 +1,11 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const ears = { + 'attached': (components, colors) => { var _a, _b; return `${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, + 'detached': (components, colors) => { var _a, _b; return `${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, +}; diff --git a/node_modules/@dicebear/micah/lib/components/eyebrows.d.ts b/node_modules/@dicebear/micah/lib/components/eyebrows.d.ts new file mode 100644 index 0000000..6e7bb6b --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/eyebrows.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const eyebrows: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/eyebrows.js b/node_modules/@dicebear/micah/lib/components/eyebrows.js new file mode 100644 index 0000000..777970d --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/eyebrows.js @@ -0,0 +1,13 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const eyebrows = { + 'up': (components, colors) => ``, + 'down': (components, colors) => ``, + 'eyelashesUp': (components, colors) => ``, + 'eyelashesDown': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/eyes.d.ts b/node_modules/@dicebear/micah/lib/components/eyes.d.ts new file mode 100644 index 0000000..b81bc72 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/eyes.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const eyes: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/eyes.js b/node_modules/@dicebear/micah/lib/components/eyes.js new file mode 100644 index 0000000..2ca8ced --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/eyes.js @@ -0,0 +1,14 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const eyes = { + 'eyes': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, + 'round': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, + 'eyesShadow': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, + 'smiling': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, + 'smilingShadow': (components, colors) => { var _a, _b; return `${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}`; }, +}; diff --git a/node_modules/@dicebear/micah/lib/components/facialHair.d.ts b/node_modules/@dicebear/micah/lib/components/facialHair.d.ts new file mode 100644 index 0000000..e1d5df9 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/facialHair.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const facialHair: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/facialHair.js b/node_modules/@dicebear/micah/lib/components/facialHair.js new file mode 100644 index 0000000..cad405f --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/facialHair.js @@ -0,0 +1,11 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const facialHair = { + 'beard': (components, colors) => ``, + 'scruff': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/glasses.d.ts b/node_modules/@dicebear/micah/lib/components/glasses.d.ts new file mode 100644 index 0000000..751b9ed --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/glasses.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const glasses: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/glasses.js b/node_modules/@dicebear/micah/lib/components/glasses.js new file mode 100644 index 0000000..2a1c5af --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/glasses.js @@ -0,0 +1,11 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const glasses = { + 'round': (components, colors) => ``, + 'square': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/hair.d.ts b/node_modules/@dicebear/micah/lib/components/hair.d.ts new file mode 100644 index 0000000..0fbc1dc --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/hair.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const hair: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/hair.js b/node_modules/@dicebear/micah/lib/components/hair.js new file mode 100644 index 0000000..aed35c1 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/hair.js @@ -0,0 +1,17 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const hair = { + 'fonze': (components, colors) => ``, + 'mrT': (components, colors) => ``, + 'dougFunny': (components, colors) => ``, + 'mrClean': (components, colors) => ``, + 'dannyPhantom': (components, colors) => ``, + 'full': (components, colors) => ``, + 'turban': (components, colors) => ``, + 'pixie': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/index.d.ts b/node_modules/@dicebear/micah/lib/components/index.d.ts new file mode 100644 index 0000000..e2b0e77 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/index.d.ts @@ -0,0 +1,17 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export { base } from './base.js'; +export { mouth } from './mouth.js'; +export { eyebrows } from './eyebrows.js'; +export { hair } from './hair.js'; +export { eyes } from './eyes.js'; +export { nose } from './nose.js'; +export { ears } from './ears.js'; +export { shirt } from './shirt.js'; +export { earrings } from './earrings.js'; +export { glasses } from './glasses.js'; +export { facialHair } from './facialHair.js'; diff --git a/node_modules/@dicebear/micah/lib/components/index.js b/node_modules/@dicebear/micah/lib/components/index.js new file mode 100644 index 0000000..e2b0e77 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/index.js @@ -0,0 +1,17 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export { base } from './base.js'; +export { mouth } from './mouth.js'; +export { eyebrows } from './eyebrows.js'; +export { hair } from './hair.js'; +export { eyes } from './eyes.js'; +export { nose } from './nose.js'; +export { ears } from './ears.js'; +export { shirt } from './shirt.js'; +export { earrings } from './earrings.js'; +export { glasses } from './glasses.js'; +export { facialHair } from './facialHair.js'; diff --git a/node_modules/@dicebear/micah/lib/components/mouth.d.ts b/node_modules/@dicebear/micah/lib/components/mouth.d.ts new file mode 100644 index 0000000..77a14f1 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/mouth.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const mouth: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/mouth.js b/node_modules/@dicebear/micah/lib/components/mouth.js new file mode 100644 index 0000000..f13ed39 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/mouth.js @@ -0,0 +1,17 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const mouth = { + 'surprised': (components, colors) => ``, + 'laughing': (components, colors) => ``, + 'nervous': (components, colors) => ``, + 'smile': (components, colors) => ``, + 'sad': (components, colors) => ``, + 'pucker': (components, colors) => ``, + 'frown': (components, colors) => ``, + 'smirk': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/nose.d.ts b/node_modules/@dicebear/micah/lib/components/nose.d.ts new file mode 100644 index 0000000..c92893e --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/nose.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const nose: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/nose.js b/node_modules/@dicebear/micah/lib/components/nose.js new file mode 100644 index 0000000..d8af7b8 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/nose.js @@ -0,0 +1,11 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export const nose = { + 'curve': (components, colors) => ``, + 'pointed': (components, colors) => ``, + 'tound': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/components/shirt.d.ts b/node_modules/@dicebear/micah/lib/components/shirt.d.ts new file mode 100644 index 0000000..a17023d --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/shirt.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { ComponentGroup } from '../types.js'; +export declare const shirt: ComponentGroup; diff --git a/node_modules/@dicebear/micah/lib/components/shirt.js b/node_modules/@dicebear/micah/lib/components/shirt.js new file mode 100644 index 0000000..35b8cf6 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/components/shirt.js @@ -0,0 +1,12 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { escape } from '@dicebear/core'; +export const shirt = { + 'open': (components, colors) => ``, + 'crew': (components, colors) => ``, + 'collared': (components, colors) => ``, +}; diff --git a/node_modules/@dicebear/micah/lib/hooks/onPostCreate.d.ts b/node_modules/@dicebear/micah/lib/hooks/onPostCreate.d.ts new file mode 100644 index 0000000..79ec9b4 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/hooks/onPostCreate.d.ts @@ -0,0 +1,16 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { Prng, StyleOptions } from "@dicebear/core"; +import { Options, ColorPickCollection, ComponentPickCollection } from "../types.js"; +type Props = { + prng: Prng; + options: StyleOptions; + components: ComponentPickCollection; + colors: ColorPickCollection; +}; +export declare function onPostCreate({ prng, options, components, colors }: Props): void; +export {}; diff --git a/node_modules/@dicebear/micah/lib/hooks/onPostCreate.js b/node_modules/@dicebear/micah/lib/hooks/onPostCreate.js new file mode 100644 index 0000000..e04e8f5 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/hooks/onPostCreate.js @@ -0,0 +1,13 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export function onPostCreate({ prng, options, components, colors }) { + var _a; + // Ensure that the mouth remains visible. #132 + if (((_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.name) === 'beard' && colors.facialHair === colors.mouth) { + colors.mouth = '#ffffff33'; + } +} diff --git a/node_modules/@dicebear/micah/lib/hooks/onPreCreate.d.ts b/node_modules/@dicebear/micah/lib/hooks/onPreCreate.d.ts new file mode 100644 index 0000000..ad92e47 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/hooks/onPreCreate.d.ts @@ -0,0 +1,14 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { Prng, StyleOptions } from "@dicebear/core"; +import { Options } from "../types.js"; +type Props = { + prng: Prng; + options: StyleOptions; +}; +export declare function onPreCreate({ prng, options }: Props): void; +export {}; diff --git a/node_modules/@dicebear/micah/lib/hooks/onPreCreate.js b/node_modules/@dicebear/micah/lib/hooks/onPreCreate.js new file mode 100644 index 0000000..f8f3294 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/hooks/onPreCreate.js @@ -0,0 +1,19 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export function onPreCreate({ prng, options }) { + var _a; + // Prevent baseColor from being used a second time if possible. + options.baseColor = options.baseColor && options.baseColor.length > 0 ? [prng.pick(options.baseColor, 'transparent')] : []; + for (const colorName of ['eyebrows', 'hair', 'eyes', 'nose', 'ears', 'shirt', 'earrings', 'glasses', 'facialHair']) { + // @ts-ignore + const colorOption = (_a = options[`${colorName}Color`]) !== null && _a !== void 0 ? _a : []; + const index = colorOption.indexOf(options.baseColor[0]); + if (colorOption.length > 1 && index > -1) { + colorOption.splice(index, 1); + } + } +} diff --git a/node_modules/@dicebear/micah/lib/index.d.ts b/node_modules/@dicebear/micah/lib/index.d.ts new file mode 100644 index 0000000..f8d6f23 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/index.d.ts @@ -0,0 +1,23 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +/*! + * Micah (@dicebear/micah) + * + * Code licensed under MIT License. + * Copyright (c) 2024 Florian Körner + * + * Design "Avatar Illustration System" by Micah Lanier licensed under CC BY 4.0. / Remix of the original. + * Source: https://www.figma.com/community/file/829741575478342595 + * Homepage: https://dribbble.com/micahlanier + * License: https://creativecommons.org/licenses/by/4.0/ + */ +import type { StyleCreate, StyleMeta } from '@dicebear/core'; +import type { Options } from './types.js'; +export declare const meta: StyleMeta; +export declare const create: StyleCreate; +export { schema } from './schema.js'; +export type { Options } from './types.js'; diff --git a/node_modules/@dicebear/micah/lib/index.js b/node_modules/@dicebear/micah/lib/index.js new file mode 100644 index 0000000..88cab28 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/index.js @@ -0,0 +1,46 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { getComponents } from './utils/getComponents.js'; +import { getColors } from './utils/getColors.js'; +import { onPreCreate } from './hooks/onPreCreate.js'; +import { onPostCreate } from './hooks/onPostCreate.js'; +export const meta = { + title: 'Avatar Illustration System', + creator: 'Micah Lanier', + source: 'https://www.figma.com/community/file/829741575478342595', + homepage: 'https://dribbble.com/micahlanier', + license: { + name: 'CC BY 4.0', + url: 'https://creativecommons.org/licenses/by/4.0/', + }, +}; +export const create = ({ prng, options }) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r; + onPreCreate({ prng, options }); + const components = getComponents({ prng, options }); + const colors = getColors({ prng, options }); + onPostCreate({ prng, options, components, colors }); + return { + attributes: { + viewBox: '0 0 360 360', + fill: 'none', + 'shape-rendering': 'auto' + }, + body: `${(_b = (_a = components.base) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}${(_d = (_c = components.mouth) === null || _c === void 0 ? void 0 : _c.value(components, colors)) !== null && _d !== void 0 ? _d : ''}${(_f = (_e = components.eyebrows) === null || _e === void 0 ? void 0 : _e.value(components, colors)) !== null && _f !== void 0 ? _f : ''}${(_h = (_g = components.hair) === null || _g === void 0 ? void 0 : _g.value(components, colors)) !== null && _h !== void 0 ? _h : ''}${(_k = (_j = components.eyes) === null || _j === void 0 ? void 0 : _j.value(components, colors)) !== null && _k !== void 0 ? _k : ''}${(_m = (_l = components.nose) === null || _l === void 0 ? void 0 : _l.value(components, colors)) !== null && _m !== void 0 ? _m : ''}${(_p = (_o = components.ears) === null || _o === void 0 ? void 0 : _o.value(components, colors)) !== null && _p !== void 0 ? _p : ''}${(_r = (_q = components.shirt) === null || _q === void 0 ? void 0 : _q.value(components, colors)) !== null && _r !== void 0 ? _r : ''}`, + extra: () => ({ + ...Object.entries(components).reduce((acc, [key, value]) => { + acc[key] = value === null || value === void 0 ? void 0 : value.name; + return acc; + }, {}), + ...Object.entries(colors).reduce((acc, [key, value]) => { + acc[`${key}Color`] = value; + return acc; + }, {}), + }), + }; +}; +export { schema } from './schema.js'; diff --git a/node_modules/@dicebear/micah/lib/schema.d.ts b/node_modules/@dicebear/micah/lib/schema.d.ts new file mode 100644 index 0000000..26acd2d --- /dev/null +++ b/node_modules/@dicebear/micah/lib/schema.d.ts @@ -0,0 +1,8 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { StyleSchema } from '@dicebear/core'; +export declare const schema: StyleSchema; diff --git a/node_modules/@dicebear/micah/lib/schema.js b/node_modules/@dicebear/micah/lib/schema.js new file mode 100644 index 0000000..656ae8d --- /dev/null +++ b/node_modules/@dicebear/micah/lib/schema.js @@ -0,0 +1,379 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export const schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "base": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "standard" + ] + }, + "default": [ + "standard" + ] + }, + "baseColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "ac6651", + "77311d" + ] + }, + "earringColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + }, + "earrings": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "hoop", + "stud" + ] + }, + "default": [ + "hoop", + "stud" + ] + }, + "earringsProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 30 + }, + "ears": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "attached", + "detached" + ] + }, + "default": [ + "attached", + "detached" + ] + }, + "eyeShadowColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "d2eff3", + "e0ddff", + "ffeba4", + "ffedef", + "ffffff" + ] + }, + "eyebrows": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "up", + "down", + "eyelashesUp", + "eyelashesDown" + ] + }, + "default": [ + "up", + "down", + "eyelashesUp", + "eyelashesDown" + ] + }, + "eyebrowsColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "eyes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "eyes", + "round", + "eyesShadow", + "smiling", + "smilingShadow" + ] + }, + "default": [ + "eyes", + "round", + "eyesShadow", + "smiling", + "smilingShadow" + ] + }, + "eyesColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "facialHair": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "beard", + "scruff" + ] + }, + "default": [ + "beard", + "scruff" + ] + }, + "facialHairColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "facialHairProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 10 + }, + "glasses": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "round", + "square" + ] + }, + "default": [ + "round", + "square" + ] + }, + "glassesColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + }, + "glassesProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 30 + }, + "hair": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "fonze", + "mrT", + "dougFunny", + "mrClean", + "dannyPhantom", + "full", + "turban", + "pixie" + ] + }, + "default": [ + "fonze", + "mrT", + "dougFunny", + "mrClean", + "dannyPhantom", + "full", + "turban", + "pixie" + ] + }, + "hairColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + }, + "hairProbability": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 100 + }, + "mouth": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "surprised", + "laughing", + "nervous", + "smile", + "sad", + "pucker", + "frown", + "smirk" + ] + }, + "default": [ + "surprised", + "laughing", + "nervous", + "smile", + "sad", + "pucker", + "frown", + "smirk" + ] + }, + "mouthColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "000000" + ] + }, + "nose": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "curve", + "pointed", + "tound" + ] + }, + "default": [ + "curve", + "pointed", + "tound" + ] + }, + "shirt": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "open", + "crew", + "collared" + ] + }, + "default": [ + "open", + "crew", + "collared" + ] + }, + "shirtColor": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(transparent|[a-fA-F0-9]{6})$" + }, + "default": [ + "f9c9b6", + "d2eff3", + "000000", + "e0ddff", + "f4d150", + "ac6651", + "9287ff", + "ffeba4", + "fc909f", + "ffedef", + "6bd9e9", + "77311d", + "ffffff" + ] + } + } +}; diff --git a/node_modules/@dicebear/micah/lib/types.d.ts b/node_modules/@dicebear/micah/lib/types.d.ts new file mode 100644 index 0000000..a68da26 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/types.d.ts @@ -0,0 +1,42 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export interface Options { + base?: ('standard')[]; + mouth?: ('surprised' | 'laughing' | 'nervous' | 'smile' | 'sad' | 'pucker' | 'frown' | 'smirk')[]; + eyebrows?: ('up' | 'down' | 'eyelashesUp' | 'eyelashesDown')[]; + hair?: ('fonze' | 'mrT' | 'dougFunny' | 'mrClean' | 'dannyPhantom' | 'full' | 'turban' | 'pixie')[]; + hairProbability?: number; + eyes?: ('eyes' | 'round' | 'eyesShadow' | 'smiling' | 'smilingShadow')[]; + nose?: ('curve' | 'pointed' | 'tound')[]; + ears?: ('attached' | 'detached')[]; + shirt?: ('open' | 'crew' | 'collared')[]; + earrings?: ('hoop' | 'stud')[]; + earringsProbability?: number; + glasses?: ('round' | 'square')[]; + glassesProbability?: number; + facialHair?: ('beard' | 'scruff')[]; + facialHairProbability?: number; + baseColor?: string[]; + earringColor?: string[]; + eyeShadowColor?: string[]; + eyebrowsColor?: string[]; + facialHairColor?: string[]; + glassesColor?: string[]; + hairColor?: string[]; + mouthColor?: string[]; + shirtColor?: string[]; + eyesColor?: string[]; +} +export type ColorPickCollection = Record; +export type ComponentGroup = Record; +export type ComponentGroupCollection = Record; +export type ComponentGroupItem = (components: ComponentPickCollection, colors: ColorPickCollection) => string; +export type ComponentPickCollection = Record; +export type ComponentPick = { + name: string; + value: ComponentGroupItem; +} | undefined; diff --git a/node_modules/@dicebear/micah/lib/types.js b/node_modules/@dicebear/micah/lib/types.js new file mode 100644 index 0000000..3e7780c --- /dev/null +++ b/node_modules/@dicebear/micah/lib/types.js @@ -0,0 +1,7 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export {}; diff --git a/node_modules/@dicebear/micah/lib/utils/convertColor.d.ts b/node_modules/@dicebear/micah/lib/utils/convertColor.d.ts new file mode 100644 index 0000000..bd26146 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/convertColor.d.ts @@ -0,0 +1,7 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export declare function convertColor(color: string): string; diff --git a/node_modules/@dicebear/micah/lib/utils/convertColor.js b/node_modules/@dicebear/micah/lib/utils/convertColor.js new file mode 100644 index 0000000..3aa0c35 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/convertColor.js @@ -0,0 +1,9 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +export function convertColor(color) { + return 'transparent' === color ? color : `#${color}`; +} diff --git a/node_modules/@dicebear/micah/lib/utils/getColors.d.ts b/node_modules/@dicebear/micah/lib/utils/getColors.d.ts new file mode 100644 index 0000000..7935094 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/getColors.d.ts @@ -0,0 +1,14 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { Prng } from '@dicebear/core'; +import type { Options, ColorPickCollection } from '../types.js'; +type Props = { + prng: Prng; + options: Options; +}; +export declare function getColors({ prng, options }: Props): ColorPickCollection; +export {}; diff --git a/node_modules/@dicebear/micah/lib/utils/getColors.js b/node_modules/@dicebear/micah/lib/utils/getColors.js new file mode 100644 index 0000000..f82fba4 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/getColors.js @@ -0,0 +1,23 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { convertColor } from './convertColor.js'; +export function getColors({ prng, options }) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + return { + 'base': convertColor(prng.pick((_a = options.baseColor) !== null && _a !== void 0 ? _a : [], 'transparent')), + 'earring': convertColor(prng.pick((_b = options.earringColor) !== null && _b !== void 0 ? _b : [], 'transparent')), + 'eyeShadow': convertColor(prng.pick((_c = options.eyeShadowColor) !== null && _c !== void 0 ? _c : [], 'transparent')), + 'eyebrows': convertColor(prng.pick((_d = options.eyebrowsColor) !== null && _d !== void 0 ? _d : [], 'transparent')), + 'facialHair': convertColor(prng.pick((_e = options.facialHairColor) !== null && _e !== void 0 ? _e : [], 'transparent')), + 'glasses': convertColor(prng.pick((_f = options.glassesColor) !== null && _f !== void 0 ? _f : [], 'transparent')), + 'hair': convertColor(prng.pick((_g = options.hairColor) !== null && _g !== void 0 ? _g : [], 'transparent')), + 'mouth': convertColor(prng.pick((_h = options.mouthColor) !== null && _h !== void 0 ? _h : [], 'transparent')), + 'shirt': convertColor(prng.pick((_j = options.shirtColor) !== null && _j !== void 0 ? _j : [], 'transparent')), + 'eyes': convertColor(prng.pick((_k = options.eyesColor) !== null && _k !== void 0 ? _k : [], 'transparent')), + }; +} +; diff --git a/node_modules/@dicebear/micah/lib/utils/getComponents.d.ts b/node_modules/@dicebear/micah/lib/utils/getComponents.d.ts new file mode 100644 index 0000000..81c1405 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/getComponents.d.ts @@ -0,0 +1,14 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { Prng } from '@dicebear/core'; +import type { Options, ComponentPickCollection } from '../types.js'; +type Props = { + prng: Prng; + options: Options; +}; +export declare function getComponents({ prng, options }: Props): ComponentPickCollection; +export {}; diff --git a/node_modules/@dicebear/micah/lib/utils/getComponents.js b/node_modules/@dicebear/micah/lib/utils/getComponents.js new file mode 100644 index 0000000..f31cbfd --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/getComponents.js @@ -0,0 +1,78 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import { pickComponent } from './pickComponent.js'; +export function getComponents({ prng, options }) { + const baseComponent = pickComponent({ + prng, + group: 'base', + values: options.base, + }); + const mouthComponent = pickComponent({ + prng, + group: 'mouth', + values: options.mouth, + }); + const eyebrowsComponent = pickComponent({ + prng, + group: 'eyebrows', + values: options.eyebrows, + }); + const hairComponent = pickComponent({ + prng, + group: 'hair', + values: options.hair, + }); + const eyesComponent = pickComponent({ + prng, + group: 'eyes', + values: options.eyes, + }); + const noseComponent = pickComponent({ + prng, + group: 'nose', + values: options.nose, + }); + const earsComponent = pickComponent({ + prng, + group: 'ears', + values: options.ears, + }); + const shirtComponent = pickComponent({ + prng, + group: 'shirt', + values: options.shirt, + }); + const earringsComponent = pickComponent({ + prng, + group: 'earrings', + values: options.earrings, + }); + const glassesComponent = pickComponent({ + prng, + group: 'glasses', + values: options.glasses, + }); + const facialHairComponent = pickComponent({ + prng, + group: 'facialHair', + values: options.facialHair, + }); + return { + 'base': baseComponent, + 'mouth': mouthComponent, + 'eyebrows': eyebrowsComponent, + 'hair': prng.bool(options.hairProbability) ? hairComponent : undefined, + 'eyes': eyesComponent, + 'nose': noseComponent, + 'ears': earsComponent, + 'shirt': shirtComponent, + 'earrings': prng.bool(options.earringsProbability) ? earringsComponent : undefined, + 'glasses': prng.bool(options.glassesProbability) ? glassesComponent : undefined, + 'facialHair': prng.bool(options.facialHairProbability) ? facialHairComponent : undefined, + }; +} +; diff --git a/node_modules/@dicebear/micah/lib/utils/pickComponent.d.ts b/node_modules/@dicebear/micah/lib/utils/pickComponent.d.ts new file mode 100644 index 0000000..2a13e46 --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/pickComponent.d.ts @@ -0,0 +1,15 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import type { Prng } from '@dicebear/core'; +import type { ComponentPick } from '../types.js'; +type Props = { + prng: Prng; + group: string; + values?: string[]; +}; +export declare function pickComponent({ prng, group, values }: Props): ComponentPick; +export {}; diff --git a/node_modules/@dicebear/micah/lib/utils/pickComponent.js b/node_modules/@dicebear/micah/lib/utils/pickComponent.js new file mode 100644 index 0000000..ee93b1f --- /dev/null +++ b/node_modules/@dicebear/micah/lib/utils/pickComponent.js @@ -0,0 +1,20 @@ +/** + * Do not change this file manually! This file was generated with the "Dicebear Exporter"-Plugin for Figma. + * + * Plugin: https://www.figma.com/community/plugin/1005765655729342787 + * File: https://www.figma.com/file/YHb4ShTgmO8Lqhkz1plLfL + */ +import * as components from '../components/index.js'; +export function pickComponent({ prng, group, values = [] }) { + const componentCollection = components; + const key = prng.pick(values); + if (key && componentCollection[group][key]) { + return { + name: key, + value: componentCollection[group][key], + }; + } + else { + return undefined; + } +} diff --git a/node_modules/@dicebear/micah/package.json b/node_modules/@dicebear/micah/package.json new file mode 100644 index 0000000..695b449 --- /dev/null +++ b/node_modules/@dicebear/micah/package.json @@ -0,0 +1,48 @@ +{ + "name": "@dicebear/micah", + "version": "9.2.2", + "description": "Avatar style for DiceBear", + "keywords": [ + "dicebear" + ], + "bugs": { + "url": "https://github.com/dicebear/dicebear/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dicebear/dicebear.git" + }, + "license": "MIT", + "type": "module", + "main": "./lib/index.js", + "exports": "./lib/index.js", + "types": "./lib/index.d.ts", + "files": [ + "LICENSE", + "lib", + "README.md" + ], + "scripts": { + "prebuild": "del-cli lib", + "build": "tsc", + "prepublishOnly": "npm run build", + "test": "uvu tests" + }, + "devDependencies": { + "@dicebear/core": "9.2.2", + "@tsconfig/recommended": "^1.0.2", + "del-cli": "^5.0.0", + "typescript": "^5.1.6", + "uvu": "^0.5.6" + }, + "peerDependencies": { + "@dicebear/core": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "bf5b31d047f707f50299142660bc89ef020d9b24" +} diff --git a/node_modules/@esbuild/win32-x64/README.md b/node_modules/@esbuild/win32-x64/README.md new file mode 100644 index 0000000..a99ee7c --- /dev/null +++ b/node_modules/@esbuild/win32-x64/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is the Windows 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details. diff --git a/node_modules/@esbuild/win32-x64/esbuild.exe b/node_modules/@esbuild/win32-x64/esbuild.exe new file mode 100644 index 0000000000000000000000000000000000000000..998c7189c1856dca28caa99fcfb54d9c05fa48c9 GIT binary patch literal 10517504 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