@solana/webcrypto-ed25519-polyfill 2.0.0-rc.0 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/index.browser.cjs +72 -11
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +72 -11
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.native.mjs +72 -11
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.node.cjs +72 -11
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +72 -11
- package/dist/index.node.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/secrets.d.ts +2 -1
- package/dist/types/secrets.d.ts.map +1 -1
- package/package.json +13 -2
package/dist/index.node.cjs
CHANGED
|
@@ -545,6 +545,14 @@ async function getPublicKeyBytes(key) {
|
|
|
545
545
|
publicKeyStore.set(key, publicKeyBytes);
|
|
546
546
|
return publicKeyBytes;
|
|
547
547
|
}
|
|
548
|
+
function base64UrlEncode(bytes) {
|
|
549
|
+
return btoa(Array.from(bytes, (b) => String.fromCharCode(b)).join("")).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
550
|
+
}
|
|
551
|
+
function base64UrlDecode(value) {
|
|
552
|
+
const m = value.length % 4;
|
|
553
|
+
const base64Value = value.replace(/-/g, "+").replace(/_/g, "/").padEnd(value.length + (m === 0 ? 0 : 4 - m), "=");
|
|
554
|
+
return Uint8Array.from(atob(base64Value), (c) => c.charCodeAt(0));
|
|
555
|
+
}
|
|
548
556
|
async function exportKeyPolyfill(format, key) {
|
|
549
557
|
if (key.extractable === false) {
|
|
550
558
|
throw new DOMException("key is not extractable", "InvalidAccessException");
|
|
@@ -564,6 +572,24 @@ async function exportKeyPolyfill(format, key) {
|
|
|
564
572
|
const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
|
|
565
573
|
return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);
|
|
566
574
|
}
|
|
575
|
+
case "jwk": {
|
|
576
|
+
const publicKeyBytes = await getPublicKeyBytes(key);
|
|
577
|
+
const base = {
|
|
578
|
+
crv: "Ed25519",
|
|
579
|
+
ext: key.extractable,
|
|
580
|
+
key_ops: key.usages,
|
|
581
|
+
kty: "OKP",
|
|
582
|
+
x: base64UrlEncode(publicKeyBytes)
|
|
583
|
+
};
|
|
584
|
+
if (key.type === "private") {
|
|
585
|
+
const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
|
|
586
|
+
return Object.freeze({
|
|
587
|
+
...base,
|
|
588
|
+
d: base64UrlEncode(secretKeyBytes)
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
return Object.freeze({ ...base });
|
|
592
|
+
}
|
|
567
593
|
default:
|
|
568
594
|
throw new Error(`Exporting polyfilled Ed25519 keys in the "${format}" format is unimplemented`);
|
|
569
595
|
}
|
|
@@ -596,12 +622,19 @@ async function verifyPolyfill(key, signature, data) {
|
|
|
596
622
|
return false;
|
|
597
623
|
}
|
|
598
624
|
}
|
|
625
|
+
function assertValidKeyUsages(keyUsages, type) {
|
|
626
|
+
const prohibitedKeyUses = /* @__PURE__ */ new Set([
|
|
627
|
+
...type === "private" ? ["verify"] : ["sign"],
|
|
628
|
+
...PROHIBITED_KEY_USAGES
|
|
629
|
+
]);
|
|
630
|
+
if (keyUsages.some((usage) => prohibitedKeyUses.has(usage))) {
|
|
631
|
+
throw new DOMException("Unsupported key usage for a Ed25519 key", "SyntaxError");
|
|
632
|
+
}
|
|
633
|
+
}
|
|
599
634
|
function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
600
|
-
const bytes = bufferSourceToUint8Array(keyData);
|
|
601
635
|
if (format === "raw") {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
}
|
|
636
|
+
const bytes = bufferSourceToUint8Array(keyData);
|
|
637
|
+
assertValidKeyUsages(keyUsages, "public");
|
|
605
638
|
if (bytes.length !== 32) {
|
|
606
639
|
throw new DOMException("Ed25519 raw keys must be exactly 32-bytes", "DataError");
|
|
607
640
|
}
|
|
@@ -617,9 +650,8 @@ function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
|
617
650
|
return publicKey;
|
|
618
651
|
}
|
|
619
652
|
if (format === "pkcs8") {
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
}
|
|
653
|
+
const bytes = bufferSourceToUint8Array(keyData);
|
|
654
|
+
assertValidKeyUsages(keyUsages, "private");
|
|
623
655
|
if (bytes.length !== 48) {
|
|
624
656
|
throw new DOMException("Invalid keyData", "DataError");
|
|
625
657
|
}
|
|
@@ -639,6 +671,38 @@ function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
|
639
671
|
cache.set(privateKey, secretKeyBytes);
|
|
640
672
|
return privateKey;
|
|
641
673
|
}
|
|
674
|
+
if (format === "jwk") {
|
|
675
|
+
const jwk = keyData;
|
|
676
|
+
const type = "d" in jwk ? "private" : "public";
|
|
677
|
+
assertValidKeyUsages(keyUsages, type);
|
|
678
|
+
const keyOps = new Set(jwk.key_ops ?? []);
|
|
679
|
+
const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every((x) => keyOps.has(x));
|
|
680
|
+
if (jwk.kty !== "OKP" || jwk.crv !== "Ed25519" || jwk.ext !== extractable || !sameKeyUsages) {
|
|
681
|
+
throw new DOMException("Invalid Ed25519 JWK", "DataError");
|
|
682
|
+
}
|
|
683
|
+
if (type === "public" && !jwk.x) {
|
|
684
|
+
throw new DOMException("Ed25519 JWK is missing public key coordinates", "DataError");
|
|
685
|
+
}
|
|
686
|
+
if (type === "private" && !jwk.d) {
|
|
687
|
+
throw new DOMException("Ed25519 JWK is missing private key coordinates", "DataError");
|
|
688
|
+
}
|
|
689
|
+
const usageToKeep = type === "public" ? "verify" : "sign";
|
|
690
|
+
const key = Object.freeze({
|
|
691
|
+
[Symbol.toStringTag]: "CryptoKey",
|
|
692
|
+
algorithm: Object.freeze({ name: "Ed25519" }),
|
|
693
|
+
extractable,
|
|
694
|
+
type,
|
|
695
|
+
usages: Object.freeze(keyUsages.filter((usage) => usage === usageToKeep))
|
|
696
|
+
});
|
|
697
|
+
if (type === "public") {
|
|
698
|
+
const cache = publicKeyBytesStore ||= /* @__PURE__ */ new WeakMap();
|
|
699
|
+
cache.set(key, base64UrlDecode(jwk.x));
|
|
700
|
+
} else {
|
|
701
|
+
const cache = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= /* @__PURE__ */ new WeakMap();
|
|
702
|
+
cache.set(key, base64UrlDecode(jwk.d));
|
|
703
|
+
}
|
|
704
|
+
return key;
|
|
705
|
+
}
|
|
642
706
|
throw new Error(`Importing Ed25519 keys in the "${format}" format is unimplemented`);
|
|
643
707
|
}
|
|
644
708
|
|
|
@@ -781,15 +845,12 @@ function install() {
|
|
|
781
845
|
};
|
|
782
846
|
}
|
|
783
847
|
}
|
|
784
|
-
|
|
785
|
-
// src/index.ts
|
|
786
|
-
var src_default = install;
|
|
787
848
|
/*! Bundled license information:
|
|
788
849
|
|
|
789
850
|
@noble/ed25519/index.js:
|
|
790
851
|
(*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)
|
|
791
852
|
*/
|
|
792
853
|
|
|
793
|
-
|
|
854
|
+
exports.install = install;
|
|
794
855
|
//# sourceMappingURL=index.node.cjs.map
|
|
795
856
|
//# sourceMappingURL=index.node.cjs.map
|
package/dist/index.node.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../crypto-impl/src/index.node.ts","../../../node_modules/.pnpm/@noble+ed25519@2.1.0/node_modules/@noble/ed25519/index.js","../src/secrets.ts","../src/install.ts","../src/index.ts"],"names":["index_node_default","crypto","G","P","p","n","_"],"mappings":"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","file":"index.node.cjs","sourcesContent":["// When building the browser bundle, this import gets replaced by `globalThis.crypto`.\nimport crypto from 'node:crypto';\n\nexport default crypto;\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n, // where a=-1, d = -(121665/121666) == -(121665 * inv(121666)) mod P\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst isu8 = (a) => (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !isu8(a) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array of valid length expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(au8(a)), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, zip215 = false) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (zip215 && !(0n <= y && y < 2n ** 256n))\n err('bad y coord 1'); // zip215=true [1..2^256-1]\n if (!zip215 && !(0n <= y && y < P))\n err('bad y coord 2'); // zip215=false [1..P-1]\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad y coord 3'); // x=0 and x_0 = 1\n if (isLastByteOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.equals(I))\n return { x: 0n, y: 1n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst dvo = { zip215: true };\nconst _verify = (sig, msg, pub, opts = dvo) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A, R, s, SB, hashable = new Uint8Array();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, 32), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n SB = G.mul(s, false); // in the range 0 <= s < L\n hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p, opts = dvo) => hashFinish(true, _verify(s, m, p, opts));\nconst verify = (s, m, p, opts = dvo) => hashFinish(false, _verify(s, m, p, opts));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len = 32) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto || !crypto.getRandomValues)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto || !crypto.subtle)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); w; return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nlet Gpows = undefined; // precomputes for base point G\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","/**\n * HEY! <== SECRET KEY KOALA\n * |/ <== WOULD LIKE YOUR\n * ʕ·͡ᴥ·ʔ <== ATTENTION PLEASE\n *\n * Key material generated in this module must stay in this module. So long as the secrets cache and\n * the methods that interact with it are not exported from `@solana/webcrypto-ed25519-polyfill`,\n * accidental logging of the actual bytes of a secret key (eg. to the console, or to a remote\n * server) should not be possible.\n *\n * WARNING: This does not imply that the secrets cache is secure against supply-chain attacks.\n * Untrusted code in your JavaScript context can easily override `WeakMap.prototype.set` to steal\n * private keys as they are written to the cache, without alerting you to its presence or affecting\n * the regular operation of the cache.\n */\nimport { getPublicKeyAsync, signAsync, utils, verifyAsync } from '@noble/ed25519';\n\nconst PROHIBITED_KEY_USAGES = new Set<KeyUsage>([\n 'decrypt',\n 'deriveBits',\n 'deriveKey',\n 'encrypt',\n 'unwrapKey',\n 'wrapKey',\n]);\n\nconst ED25519_PKCS8_HEADER =\n // prettier-ignore\n [\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n ];\n\nfunction bufferSourceToUint8Array(data: BufferSource): Uint8Array {\n return data instanceof Uint8Array ? data : new Uint8Array(ArrayBuffer.isView(data) ? data.buffer : data);\n}\n\nlet storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT: WeakMap<CryptoKey, Uint8Array> | undefined;\n\n// Map of public key bytes. These are the result of calling `getPublicKey`\nlet publicKeyBytesStore: WeakMap<CryptoKey, Uint8Array> | undefined;\n\nfunction createKeyPairFromBytes(\n bytes: Uint8Array,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n const keyPair = createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(extractable, keyUsages);\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(keyPair.privateKey, bytes);\n cache.set(keyPair.publicKey, bytes);\n return keyPair;\n}\n\nfunction createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n if (keyUsages.length === 0) {\n throw new DOMException('Usages cannot be empty when creating a key.', 'SyntaxError');\n }\n if (keyUsages.some(usage => PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for an Ed25519 key.', 'SyntaxError');\n }\n const base = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n };\n const privateKey = {\n ...base,\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n const publicKey = {\n ...base,\n extractable: true,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n return Object.freeze({\n privateKey: Object.freeze(privateKey),\n publicKey: Object.freeze(publicKey),\n });\n}\n\nfunction getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key: CryptoKey): Uint8Array {\n const secretKeyBytes = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.get(key);\n if (secretKeyBytes === undefined) {\n throw new Error('Could not find secret key material associated with this `CryptoKey`');\n }\n return secretKeyBytes;\n}\n\nasync function getPublicKeyBytes(key: CryptoKey): Promise<Uint8Array> {\n // Try to find the key in the public key store first\n const publicKeyStore = (publicKeyBytesStore ||= new WeakMap());\n const fromPublicStore = publicKeyStore.get(key);\n if (fromPublicStore) return fromPublicStore;\n\n // If not available, get the key from the secrets store instead\n const publicKeyBytes = await getPublicKeyAsync(getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key));\n\n // Store the public key bytes in the public key store for next time\n publicKeyStore.set(key, publicKeyBytes);\n return publicKeyBytes;\n}\n\nexport async function exportKeyPolyfill(format: 'jwk', key: CryptoKey): Promise<JsonWebKey>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n if (key.extractable === false) {\n throw new DOMException('key is not extractable', 'InvalidAccessException');\n }\n switch (format) {\n case 'raw': {\n if (key.type !== 'public') {\n throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n return publicKeyBytes;\n }\n case 'pkcs8': {\n if (key.type !== 'private') {\n throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);\n }\n default:\n throw new Error(`Exporting polyfilled Ed25519 keys in the \"${format}\" format is unimplemented`);\n }\n}\n\n/**\n * This function generates a key pair and stores the secret bytes associated with it in a\n * module-private cache. Instead of vending the actual secret bytes, it returns a `CryptoKeyPair`\n * that you can use with other methods in this package to produce signatures and derive public keys\n * associated with the secret.\n */\nexport function generateKeyPolyfill(extractable: boolean, keyUsages: readonly KeyUsage[]): CryptoKeyPair {\n const privateKeyBytes = utils.randomPrivateKey();\n const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);\n return keyPair;\n}\n\nexport function isPolyfilledKey(key: CryptoKey): boolean {\n return !!storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.has(key) || !!publicKeyBytesStore?.has(key);\n}\n\nexport async function signPolyfill(key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n if (key.type !== 'private' || !key.usages.includes('sign')) {\n throw new DOMException('Unable to use this key to sign', 'InvalidAccessError');\n }\n const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const payload = bufferSourceToUint8Array(data);\n const signature = await signAsync(payload, privateKeyBytes);\n return signature;\n}\n\nexport async function verifyPolyfill(key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean> {\n if (key.type !== 'public' || !key.usages.includes('verify')) {\n throw new DOMException('Unable to use this key to verify', 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n try {\n return await verifyAsync(bufferSourceToUint8Array(signature), bufferSourceToUint8Array(data), publicKeyBytes);\n } catch {\n return false;\n }\n}\n\nexport function importKeyPolyfill(\n format: KeyFormat,\n keyData: BufferSource,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey {\n const bytes = bufferSourceToUint8Array(keyData);\n\n if (format === 'raw') {\n if (keyUsages.some(usage => usage === 'sign' || PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n if (bytes.length !== 32) {\n throw new DOMException('Ed25519 raw keys must be exactly 32-bytes', 'DataError');\n }\n const publicKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(publicKey, bytes);\n\n return publicKey;\n }\n\n if (format === 'pkcs8') {\n if (keyUsages.some(usage => usage === 'verify' || PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n // 48 bytes: 16-byte PKCS8 header + 32 byte secret key\n if (bytes.length !== 48) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n // Must start with exactly the Ed25519 pkcs8 header\n const header = bytes.slice(0, 16);\n if (!header.every((val, i) => val === ED25519_PKCS8_HEADER[i])) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n const secretKeyBytes = bytes.slice(16);\n\n const privateKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(privateKey, secretKeyBytes);\n\n return privateKey;\n }\n\n throw new Error(`Importing Ed25519 keys in the \"${format}\" format is unimplemented`);\n}\n","import cryptoImpl from '@solana/crypto-impl';\n\nimport {\n exportKeyPolyfill,\n generateKeyPolyfill,\n importKeyPolyfill,\n isPolyfilledKey,\n signPolyfill,\n verifyPolyfill,\n} from './secrets';\n\nexport function install() {\n if (__NODEJS__) {\n /**\n * Node only sets the `crypto` global variable when run with `--experimental-global-webcrypto`.\n * Let's set it unconditionally here.\n */\n globalThis.crypto ||= cryptoImpl;\n }\n\n if (!__BROWSER__ || globalThis.isSecureContext) {\n /**\n * Create `crypto.subtle` if it doesn't exist.\n */\n const originalCryptoObject = (globalThis.crypto ||= {} as Crypto);\n const originalSubtleCrypto = ((originalCryptoObject as Crypto & { subtle: SubtleCrypto }).subtle ||=\n {} as SubtleCrypto);\n\n /**\n * Override `SubtleCrypto#exportKey`\n */\n const originalExportKey = originalSubtleCrypto.exportKey as SubtleCrypto['exportKey'] | undefined;\n originalSubtleCrypto.exportKey = (async (...args: Parameters<SubtleCrypto['exportKey']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n return await exportKeyPolyfill(...args);\n } else if (originalExportKey) {\n return await originalExportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `exportKey` function exists to handle this call');\n }\n }) as SubtleCrypto['exportKey'];\n\n /**\n * Override `SubtleCrypto#generateKey`\n */\n const originalGenerateKey = originalSubtleCrypto.generateKey as SubtleCrypto['generateKey'] | undefined;\n let originalGenerateKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.generateKey = (async (...args: Parameters<SubtleCrypto['generateKey']>) => {\n const [algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n }\n let optimisticallyGeneratedKeyPair;\n if (originalGenerateKeySupportsEd25519 === undefined) {\n originalGenerateKeySupportsEd25519 = new Promise(resolve => {\n if (!originalGenerateKey) {\n resolve((originalGenerateKeySupportsEd25519 = false));\n return;\n }\n originalGenerateKey\n .apply(originalSubtleCrypto, args)\n .then(keyPair => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was installed in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider installing this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.generateKey !== originalGenerateKey) {\n originalSubtleCrypto.generateKey = originalGenerateKey;\n }\n optimisticallyGeneratedKeyPair = keyPair;\n resolve((originalGenerateKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalGenerateKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalGenerateKeySupportsEd25519 === 'boolean'\n ? originalGenerateKeySupportsEd25519\n : await originalGenerateKeySupportsEd25519\n ) {\n if (optimisticallyGeneratedKeyPair) {\n return optimisticallyGeneratedKeyPair;\n } else if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n } else {\n const [_, extractable, keyUsages] = args;\n return generateKeyPolyfill(extractable, keyUsages);\n }\n }) as SubtleCrypto['generateKey'];\n\n /**\n * Override `SubtleCrypto#sign`\n */\n const originalSign = originalSubtleCrypto.sign as SubtleCrypto['sign'] | undefined;\n originalSubtleCrypto.sign = (async (...args: Parameters<SubtleCrypto['sign']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await signPolyfill(...rest);\n } else if (originalSign) {\n return await originalSign.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `sign` function exists to handle this call');\n }\n }) as SubtleCrypto['sign'];\n\n /**\n * Override `SubtleCrypto#verify`\n */\n const originalVerify = originalSubtleCrypto.verify as SubtleCrypto['verify'] | undefined;\n originalSubtleCrypto.verify = (async (...args: Parameters<SubtleCrypto['verify']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await verifyPolyfill(...rest);\n } else if (originalVerify) {\n return await originalVerify.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `verify` function exists to handle this call');\n }\n }) as SubtleCrypto['verify'];\n\n /**\n * Override `SubtleCrypto#importKey`\n */\n const originalImportKey = originalSubtleCrypto.importKey as SubtleCrypto['importKey'] | undefined;\n let originalImportKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.importKey = (async (...args: Parameters<SubtleCrypto['importKey']>) => {\n const [format, keyData, algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n }\n let optimisticallyImportedKey;\n if (originalImportKeySupportsEd25519 === undefined) {\n originalImportKeySupportsEd25519 = new Promise(resolve => {\n if (!originalImportKey) {\n resolve((originalImportKeySupportsEd25519 = false));\n return;\n }\n originalImportKey\n .apply(originalSubtleCrypto, args)\n .then(key => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was included in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider including this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.importKey !== originalImportKey) {\n originalSubtleCrypto.importKey = originalImportKey;\n }\n optimisticallyImportedKey = key;\n resolve((originalImportKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalImportKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalImportKey === 'boolean'\n ? originalImportKeySupportsEd25519\n : await originalImportKeySupportsEd25519\n ) {\n if (optimisticallyImportedKey) {\n return optimisticallyImportedKey;\n } else if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n } else {\n const [_format, _keyData, _algorithm, extractable, keyUsages] = args;\n return importKeyPolyfill(format, keyData, extractable, keyUsages);\n }\n }) as SubtleCrypto['importKey'];\n }\n}\n","import { install } from './install';\nexport default install;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../crypto-impl/src/index.node.ts","../../../node_modules/.pnpm/@noble+ed25519@2.1.0/node_modules/@noble/ed25519/index.js","../src/secrets.ts","../src/install.ts"],"names":["index_node_default","crypto","G","P","p","n","_"],"mappings":";;;;;;;;;AAGA,IAAOA,CAAQC,GAAAA,kBAAAA,CAAAA;;;ACFf,IAAM,CAAA,GAAI,MAAM,IAAO,GAAA,GAAA,CAAA;AACvB,IAAM,CAAA,GAAI,MAAM,IAAO,GAAA,uCAAA,CAAA;AACvB,IAAM,EAAK,GAAA,mEAAA,CAAA;AACX,IAAM,EAAK,GAAA,mEAAA,CAAA;AACX,IAAM,KAAQ,GAAA;AAAA,EACV,GAAG,CAAC,EAAA;AAAA;AAAA,EACJ,CAAG,EAAA,8EAAA;AAAA,EACH,CAAG,EAAA,CAAA;AAAA,EAAG,CAAG,EAAA,CAAA;AAAA,EAAG,CAAG,EAAA,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA;AAC1B,CAAA,CAAA;AACA,IAAM,GAAA,GAAM,CAAC,CAAA,GAAI,EAAO,KAAA;AAAE,EAAM,MAAA,IAAI,MAAM,CAAC,CAAA,CAAA;AAAG,CAAA,CAAA;AAC9C,IAAM,GAAM,GAAA,CAAC,CAAM,KAAA,OAAO,CAAM,KAAA,QAAA,CAAA;AAChC,IAAM,IAAO,GAAA,CAAC,CAAO,KAAA,CAAA,YAAa,UAC7B,IAAA,CAAA,IAAK,IAAQ,IAAA,OAAO,CAAM,KAAA,QAAA,IAAY,CAAE,CAAA,WAAA,CAAY,IAAS,KAAA,YAAA,CAAA;AAClE,IAAM,GAAA,GAAM,CAAC,CAAG,EAAA,CAAA;AAAA;AAAA,EACf,CAAC,IAAA,CAAK,CAAC,CAAA,IAAM,OAAO,CAAM,KAAA,QAAA,IAAY,CAAI,GAAA,CAAA,IAAK,CAAE,CAAA,MAAA,KAAW,CACzD,GAAA,GAAA,CAAI,qCAAqC,CAAI,GAAA,CAAA;AAAA,CAAA,CAAA;AACjD,IAAM,GAAM,GAAA,CAAC,IAAS,KAAA,IAAI,WAAW,IAAI,CAAA,CAAA;AACzC,IAAM,OAAO,CAAC,CAAA,EAAG,GAAQ,KAAA,GAAA,CAAI,IAAI,CAAC,CAAA,GAAI,GAAI,CAAA,CAAC,IAAI,GAAI,CAAA,GAAA,CAAI,CAAC,CAAC,GAAG,GAAG,CAAA,CAAA;AAC/D,IAAM,GAAM,GAAA,CAAC,CAAG,EAAA,CAAA,GAAI,CAAM,KAAA;AAAE,EAAA,IAAI,IAAI,CAAI,GAAA,CAAA,CAAA;AAAG,EAAO,OAAA,CAAA,IAAK,EAAK,GAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AAAG,CAAA,CAAA;AACvE,IAAM,UAAU,CAAC,CAAA,KAAO,aAAa,KAAQ,GAAA,CAAA,GAAI,IAAI,gBAAgB,CAAA,CAAA;AACrE,IAAM,KAAA,GAAN,MAAM,MAAM,CAAA;AAAA,EACR,WAAY,CAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA;AACxB,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AAAA,GACd;AAAA,EACA,OAAO,WAAW,CAAG,EAAA;AAAE,IAAA,OAAO,IAAI,MAAA,CAAM,CAAE,CAAA,CAAA,EAAG,CAAE,CAAA,CAAA,EAAG,EAAI,EAAA,GAAA,CAAI,CAAE,CAAA,CAAA,GAAI,CAAE,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAAG;AAAA,EACvE,OAAO,OAAA,CAAQ,GAAK,EAAA,MAAA,GAAS,KAAO,EAAA;AAChC,IAAM,MAAA,EAAE,GAAM,GAAA,KAAA,CAAA;AACd,IAAM,GAAA,GAAA,IAAA,CAAK,KAAK,EAAE,CAAA,CAAA;AAClB,IAAM,MAAA,MAAA,GAAS,IAAI,KAAM,EAAA,CAAA;AACzB,IAAM,MAAA,QAAA,GAAW,IAAI,EAAE,CAAA,CAAA;AACvB,IAAO,MAAA,CAAA,EAAE,CAAI,GAAA,QAAA,GAAW,CAAC,GAAA,CAAA;AACzB,IAAM,MAAA,CAAA,GAAI,OAAO,MAAM,CAAA,CAAA;AACvB,IAAA,IAAI,MAAU,IAAA,EAAE,EAAM,IAAA,CAAA,IAAK,IAAI,EAAM,IAAA,IAAA,CAAA;AACjC,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAA,IAAI,CAAC,MAAA,IAAU,EAAE,EAAA,IAAM,KAAK,CAAI,GAAA,CAAA,CAAA;AAC5B,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,CAAI,GAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACzB,IAAA,IAAI,EAAE,OAAS,EAAA,KAAA,EAAO,GAAM,GAAA,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAA;AACxC,IAAA,IAAI,CAAC,OAAA;AACD,MAAA,GAAA,CAAI,oBAAoB,CAAA,CAAA;AAC5B,IAAM,MAAA,MAAA,GAAA,CAAU,IAAI,EAAQ,MAAA,EAAA,CAAA;AAC5B,IAAM,MAAA,aAAA,GAAA,CAAiB,WAAW,GAAU,MAAA,CAAA,CAAA;AAC5C,IAAI,IAAA,CAAC,MAAU,IAAA,CAAA,KAAM,EAAM,IAAA,aAAA;AACvB,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAA,IAAI,aAAkB,KAAA,MAAA;AAClB,MAAI,CAAA,GAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACd,IAAO,OAAA,IAAI,OAAM,CAAG,EAAA,CAAA,EAAG,IAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AAAA,GACzC;AAAA,EACA,IAAI,CAAI,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EACpC,IAAI,CAAI,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EACpC,OAAO,KAAO,EAAA;AACV,IAAA,MAAM,EAAE,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,IAAO,GAAA,IAAA,CAAA;AACnC,IAAM,MAAA,EAAE,IAAI,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAO,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAChD,IAAM,MAAA,IAAA,GAAO,IAAI,EAAK,GAAA,EAAE,GAAG,IAAO,GAAA,GAAA,CAAI,KAAK,EAAE,CAAA,CAAA;AAC7C,IAAM,MAAA,IAAA,GAAO,IAAI,EAAK,GAAA,EAAE,GAAG,IAAO,GAAA,GAAA,CAAI,KAAK,EAAE,CAAA,CAAA;AAC7C,IAAO,OAAA,IAAA,KAAS,QAAQ,IAAS,KAAA,IAAA,CAAA;AAAA,GACrC;AAAA,EACA,GAAM,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA;AAAA,GAAG;AAAA,EAC/B,MAAS,GAAA;AACL,IAAA,OAAO,IAAI,MAAA,CAAM,GAAI,CAAA,CAAC,KAAK,EAAE,CAAA,EAAG,IAAK,CAAA,EAAA,EAAI,KAAK,EAAI,EAAA,GAAA,CAAI,CAAC,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AAAA,GACnE;AAAA,EACA,MAAS,GAAA;AACL,IAAA,MAAM,EAAE,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,IAAO,GAAA,IAAA,CAAA;AACnC,IAAM,MAAA,EAAE,GAAM,GAAA,KAAA,CAAA;AACd,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,IAAI,GAAI,CAAA,EAAA,GAAK,GAAI,CAAA,EAAA,GAAK,EAAE,CAAC,CAAA,CAAA;AAC/B,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACnB,IAAA,MAAM,OAAO,EAAK,GAAA,EAAA,CAAA;AAClB,IAAA,MAAM,IAAI,GAAI,CAAA,GAAA,CAAI,OAAO,IAAI,CAAA,GAAI,IAAI,CAAC,CAAA,CAAA;AACtC,IAAA,MAAMC,KAAI,CAAI,GAAA,CAAA,CAAA;AACd,IAAA,MAAM,IAAIA,EAAI,GAAA,CAAA,CAAA;AACd,IAAA,MAAM,IAAI,CAAI,GAAA,CAAA,CAAA;AACd,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAIA,CAAAA,EAAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAIA,EAAC,CAAA,CAAA;AACpB,IAAA,OAAO,IAAI,MAAA,CAAM,EAAI,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA,CAAA;AAAA,GACnC;AAAA,EACA,IAAI,KAAO,EAAA;AACP,IAAM,MAAA,EAAE,IAAI,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAO,GAAA,IAAA,CAAA;AAC3C,IAAM,MAAA,EAAE,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAO,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACxD,IAAM,MAAA,EAAE,CAAG,EAAA,CAAA,EAAM,GAAA,KAAA,CAAA;AACjB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,EAAK,GAAA,CAAA,GAAI,EAAE,CAAA,CAAA;AACzB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,IAAI,GAAK,CAAA,CAAA,EAAA,GAAK,OAAO,EAAK,GAAA,EAAA,CAAA,GAAM,IAAI,CAAC,CAAA,CAAA;AAC3C,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACnB,IAAMA,MAAAA,EAAAA,GAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACnB,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,CAAI,GAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACvB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAIA,CAAAA,EAAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAIA,EAAC,CAAA,CAAA;AACpB,IAAA,OAAO,IAAI,MAAA,CAAM,EAAI,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA,CAAA;AAAA,GACnC;AAAA,EACA,GAAA,CAAI,CAAG,EAAA,IAAA,GAAO,IAAM,EAAA;AAChB,IAAA,IAAI,CAAM,KAAA,EAAA;AACN,MAAA,OAAO,IAAS,KAAA,IAAA,GAAO,GAAI,CAAA,sBAAsB,CAAI,GAAA,CAAA,CAAA;AACzD,IAAA,IAAI,EAAE,OAAO,CAAA,KAAM,QAAY,IAAA,EAAA,GAAK,KAAK,CAAI,GAAA,CAAA,CAAA;AACzC,MAAA,GAAA,CAAI,6BAA6B,CAAA,CAAA;AACrC,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAK,CAAA,GAAA,MAAS,CAAM,KAAA,EAAA;AAC7B,MAAO,OAAA,IAAA,CAAA;AACX,IAAI,IAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AACb,MAAO,OAAA,IAAA,CAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AACnB,IAAI,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,CAAA,CAAA;AACf,IAAS,KAAA,IAAA,CAAA,GAAI,MAAM,CAAI,GAAA,EAAA,EAAI,IAAI,CAAE,CAAA,MAAA,EAAU,EAAA,CAAA,KAAM,EAAI,EAAA;AACjD,MAAA,IAAI,CAAI,GAAA,EAAA;AACJ,QAAI,CAAA,GAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AAAA,WACN,IAAA,IAAA;AACL,QAAI,CAAA,GAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AAAA,KACnB;AACA,IAAO,OAAA,CAAA,CAAA;AAAA,GACX;AAAA,EACA,SAAS,MAAQ,EAAA;AAAE,IAAO,OAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EAC5C,aAAgB,GAAA;AAAE,IAAA,OAAO,KAAK,GAAI,CAAA,MAAA,CAAO,KAAM,CAAA,CAAC,GAAG,KAAK,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EAC3D,YAAe,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,aAAc,EAAA,CAAE,GAAI,EAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EACpD,aAAgB,GAAA;AACZ,IAAA,IAAI,IAAI,IAAK,CAAA,GAAA,CAAI,IAAI,EAAI,EAAA,KAAK,EAAE,MAAO,EAAA,CAAA;AACvC,IAAA,IAAI,CAAI,GAAA,EAAA;AACJ,MAAI,CAAA,GAAA,CAAA,CAAE,IAAI,IAAI,CAAA,CAAA;AAClB,IAAA,OAAO,EAAE,GAAI,EAAA,CAAA;AAAA,GACjB;AAAA,EACA,QAAW,GAAA;AACP,IAAA,MAAM,EAAE,EAAI,EAAA,CAAA,EAAG,IAAI,CAAG,EAAA,EAAA,EAAI,GAAM,GAAA,IAAA,CAAA;AAChC,IAAI,IAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AACb,MAAA,OAAO,EAAE,CAAA,EAAG,EAAI,EAAA,CAAA,EAAG,EAAG,EAAA,CAAA;AAC1B,IAAM,MAAA,EAAA,GAAK,OAAO,CAAC,CAAA,CAAA;AACnB,IAAI,IAAA,GAAA,CAAI,CAAI,GAAA,EAAE,CAAM,KAAA,EAAA;AAChB,MAAA,GAAA,CAAI,iBAAiB,CAAA,CAAA;AACzB,IAAO,OAAA,EAAE,CAAG,EAAA,GAAA,CAAI,CAAI,GAAA,EAAE,GAAG,CAAG,EAAA,GAAA,CAAI,CAAI,GAAA,EAAE,CAAE,EAAA,CAAA;AAAA,GAC5C;AAAA,EACA,UAAa,GAAA;AACT,IAAA,MAAM,EAAE,CAAA,EAAG,CAAE,EAAA,GAAI,KAAK,QAAS,EAAA,CAAA;AAC/B,IAAM,MAAA,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AACpB,IAAA,CAAA,CAAE,EAAE,CAAA,IAAK,CAAI,GAAA,EAAA,GAAK,GAAO,GAAA,CAAA,CAAA;AACzB,IAAO,OAAA,CAAA,CAAA;AAAA,GACX;AAAA,EACA,KAAQ,GAAA;AAAE,IAAO,OAAA,GAAA,CAAI,IAAK,CAAA,UAAA,EAAY,CAAA,CAAA;AAAA,GAAG;AAAA;AAC7C,CAAA,CAAA;AACA,KAAM,CAAA,IAAA,GAAO,IAAI,KAAM,CAAA,EAAA,EAAI,IAAI,EAAI,EAAA,GAAA,CAAI,EAAK,GAAA,EAAE,CAAC,CAAA,CAAA;AAC/C,KAAA,CAAM,OAAO,IAAI,KAAA,CAAM,EAAI,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA,CAAA;AACrC,IAAM,EAAE,IAAA,EAAM,CAAG,EAAA,IAAA,EAAM,GAAM,GAAA,KAAA,CAAA;AAC7B,IAAM,IAAA,GAAO,CAAC,GAAA,EAAK,GAAQ,KAAA,GAAA,CAAI,SAAS,EAAE,CAAA,CAAE,QAAS,CAAA,GAAA,EAAK,GAAG,CAAA,CAAA;AAC7D,IAAM,GAAM,GAAA,CAAC,CAAM,KAAA,KAAA,CAAM,KAAK,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,KAAK,CAAG,EAAA,CAAC,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAC7D,IAAM,GAAA,GAAM,CAAC,GAAQ,KAAA;AACjB,EAAA,MAAM,IAAI,GAAI,CAAA,MAAA,CAAA;AACd,EAAA,IAAI,CAAC,GAAA,CAAI,GAAG,CAAA,IAAK,CAAI,GAAA,CAAA;AACjB,IAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,EAAM,MAAA,GAAA,GAAM,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACrB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,GAAA,CAAI,QAAQ,CAAK,EAAA,EAAA;AACjC,IAAA,MAAM,IAAI,CAAI,GAAA,CAAA,CAAA;AACd,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,KAAM,CAAA,CAAA,EAAG,IAAI,CAAC,CAAA,CAAA;AAC5B,IAAA,MAAM,CAAI,GAAA,MAAA,CAAO,QAAS,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAC/B,IAAA,IAAI,MAAO,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,CAAI,GAAA,CAAA;AACvB,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAA,GAAA,CAAI,CAAC,CAAI,GAAA,CAAA,CAAA;AAAA,GACb;AACA,EAAO,OAAA,GAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAM,QAAA,GAAW,CAAC,GAAA,KAAQ,GAAI,CAAA,IAAA,CAAK,KAAK,EAAK,GAAA,CAAC,CAAC,CAAA,CAAE,OAAQ,EAAA,CAAA;AACzD,IAAM,MAAS,GAAA,CAAC,CAAM,KAAA,MAAA,CAAO,IAAO,GAAA,GAAA,CAAI,GAAI,CAAA,GAAA,CAAI,CAAC,CAAC,CAAE,CAAA,OAAA,EAAS,CAAC,CAAA,CAAA;AAC9D,IAAM,OAAA,GAAU,IAAI,IAAS,KAAA;AACzB,EAAA,MAAM,CAAI,GAAA,GAAA,CAAI,IAAK,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,CAAM,KAAA,GAAA,GAAM,GAAI,CAAA,CAAC,CAAE,CAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAC7D,EAAA,IAAI,GAAM,GAAA,CAAA,CAAA;AACV,EAAA,IAAA,CAAK,QAAQ,CAAK,CAAA,KAAA;AAAE,IAAE,CAAA,CAAA,GAAA,CAAI,GAAG,GAAG,CAAA,CAAA;AAAG,IAAA,GAAA,IAAO,CAAE,CAAA,MAAA,CAAA;AAAA,GAAS,CAAA,CAAA;AACrD,EAAO,OAAA,CAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAM,MAAS,GAAA,CAAC,GAAK,EAAA,EAAA,GAAK,CAAM,KAAA;AAC5B,EAAI,IAAA,GAAA,KAAQ,MAAM,EAAM,IAAA,EAAA;AACpB,IAAI,GAAA,CAAA,eAAA,GAAkB,GAAM,GAAA,OAAA,GAAU,EAAE,CAAA,CAAA;AAC5C,EAAA,IAAI,CAAI,GAAA,GAAA,CAAI,GAAK,EAAA,EAAE,CAAG,CAAA,CAAA,CAAA,GAAI,EAAI,CAAA,CAAA,CAAA,GAAI,EAAI,CAAA,CAAQ,CAAA,GAAI,GAAQ;AAC1D,EAAA,OAAO,MAAM,EAAI,EAAA;AACb,IAAA,MAAM,CAAI,GAAA,CAAA,GAAI,CAAG,EAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AACzB,IAAA,MAAM,IAAI,CAAI,GAAA,CAAA,GAAI,CAAG,CAAY;AACjC,IAAI,CAAA,GAAA,CAAA,EAAG,IAAI,CAAG,EAAA,CAAA,GAAI,GAAU,CAAI,GAAA,CAAO,CAAA;AAAA,GAC3C;AACA,EAAA,OAAO,MAAM,EAAK,GAAA,GAAA,CAAI,GAAG,EAAE,CAAA,GAAI,IAAI,YAAY,CAAA,CAAA;AACnD,CAAA,CAAA;AACA,IAAM,IAAA,GAAO,CAAC,CAAA,EAAG,KAAU,KAAA;AACvB,EAAA,IAAI,CAAI,GAAA,CAAA,CAAA;AACR,EAAA,OAAO,UAAU,EAAI,EAAA;AACjB,IAAK,CAAA,IAAA,CAAA,CAAA;AACL,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,CAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAM,WAAA,GAAc,CAAC,CAAM,KAAA;AACvB,EAAM,MAAA,EAAA,GAAM,IAAI,CAAK,GAAA,CAAA,CAAA;AACrB,EAAM,MAAA,EAAA,GAAM,KAAK,CAAK,GAAA,CAAA,CAAA;AACtB,EAAA,MAAM,EAAM,GAAA,IAAA,CAAK,EAAI,EAAA,EAAE,IAAI,EAAM,GAAA,CAAA,CAAA;AACjC,EAAA,MAAM,EAAM,GAAA,IAAA,CAAK,EAAI,EAAA,EAAE,IAAI,CAAK,GAAA,CAAA,CAAA;AAChC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,EAAI,EAAA,EAAE,IAAI,EAAM,GAAA,CAAA,CAAA;AAClC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACrC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACrC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACrC,EAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACtC,EAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,IAAM,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACvC,EAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,IAAM,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACvC,EAAA,MAAM,SAAa,GAAA,IAAA,CAAK,IAAM,EAAA,EAAE,IAAI,CAAK,GAAA,CAAA,CAAA;AACzC,EAAO,OAAA,EAAE,WAAW,EAAG,EAAA,CAAA;AAC3B,CAAA,CAAA;AACA,IAAM,GAAM,GAAA,8EAAA,CAAA;AACZ,IAAM,OAAA,GAAU,CAAC,CAAA,EAAG,CAAM,KAAA;AACtB,EAAA,MAAM,EAAK,GAAA,GAAA,CAAI,CAAI,GAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACxB,EAAA,MAAM,EAAK,GAAA,GAAA,CAAI,EAAK,GAAA,EAAA,GAAK,CAAC,CAAA,CAAA;AAC1B,EAAA,MAAM,GAAM,GAAA,WAAA,CAAY,CAAI,GAAA,EAAE,CAAE,CAAA,SAAA,CAAA;AAChC,EAAA,IAAI,CAAI,GAAA,GAAA,CAAI,CAAI,GAAA,EAAA,GAAK,GAAG,CAAA,CAAA;AACxB,EAAA,MAAM,GAAM,GAAA,GAAA,CAAI,CAAI,GAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACzB,EAAA,MAAM,KAAQ,GAAA,CAAA,CAAA;AACd,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,CAAA,GAAI,GAAG,CAAA,CAAA;AACzB,EAAA,MAAM,WAAW,GAAQ,KAAA,CAAA,CAAA;AACzB,EAAA,MAAM,QAAW,GAAA,GAAA,KAAQ,GAAI,CAAA,CAAC,CAAC,CAAA,CAAA;AAC/B,EAAA,MAAM,MAAS,GAAA,GAAA,KAAQ,GAAI,CAAA,CAAC,IAAI,GAAG,CAAA,CAAA;AACnC,EAAI,IAAA,QAAA;AACA,IAAI,CAAA,GAAA,KAAA,CAAA;AACR,EAAA,IAAI,QAAY,IAAA,MAAA;AACZ,IAAI,CAAA,GAAA,KAAA,CAAA;AACR,EAAK,IAAA,CAAA,GAAA,CAAI,CAAC,CAAA,GAAI,EAAQ,MAAA,EAAA;AAClB,IAAI,CAAA,GAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACd,EAAA,OAAO,EAAE,OAAA,EAAS,QAAY,IAAA,QAAA,EAAU,OAAO,CAAE,EAAA,CAAA;AACrD,CAAA,CAAA;AACA,IAAM,UAAU,CAAC,IAAA,KAAS,IAAI,MAAO,CAAA,IAAI,GAAG,CAAC,CAAA,CAAA;AAC7C,IAAI,KAAA,CAAA;AACJ,IAAM,UAAU,CAAI,GAAA,CAAA,KAAM,GAAI,CAAA,WAAA,CAAY,GAAG,CAAC,CAAA,CAAA;AAC9C,IAAM,UAAU,CAAI,GAAA,CAAA;AAAA;AAAA,EACnB,OAAO,UAAU,UAAa,GAAA,KAAA,CAAM,GAAG,CAAC,CAAA,GAAI,IAAI,wBAAwB,CAAA;AAAA,CAAA,CAAA;AACzE,IAAM,SAAA,GAAY,CAAC,MAAW,KAAA;AAC1B,EAAA,MAAM,IAAO,GAAA,MAAA,CAAO,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAC/B,EAAA,IAAA,CAAK,CAAC,CAAK,IAAA,GAAA,CAAA;AACX,EAAA,IAAA,CAAK,EAAE,CAAK,IAAA,GAAA,CAAA;AACZ,EAAA,IAAA,CAAK,EAAE,CAAK,IAAA,EAAA,CAAA;AACZ,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,KAAM,CAAA,EAAA,EAAI,EAAE,CAAA,CAAA;AAClC,EAAM,MAAA,MAAA,GAAS,QAAQ,IAAI,CAAA,CAAA;AAC3B,EAAM,MAAA,KAAA,GAAQ,CAAE,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAC1B,EAAM,MAAA,UAAA,GAAa,MAAM,UAAW,EAAA,CAAA;AACpC,EAAA,OAAO,EAAE,IAAA,EAAM,MAAQ,EAAA,MAAA,EAAQ,OAAO,UAAW,EAAA,CAAA;AACrD,CAAA,CAAA;AAEA,IAAM,yBAAA,GAA4B,CAAC,IAAA,KAAS,OAAQ,CAAA,IAAA,CAAK,MAAM,EAAE,CAAC,CAAE,CAAA,IAAA,CAAK,SAAS,CAAA,CAAA;AAClF,IAAM,oBAAA,GAAuB,CAAC,IAAS,KAAA,SAAA,CAAU,QAAQ,IAAK,CAAA,IAAA,EAAM,EAAE,CAAC,CAAC,CAAA,CAAA;AACxE,IAAM,iBAAA,GAAoB,CAAC,IAAS,KAAA,yBAAA,CAA0B,IAAI,CAAE,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAA,CAAE,UAAU,CAAA,CAAA;AAE1F,SAAS,UAAA,CAAW,cAAc,GAAK,EAAA;AACnC,EACI,OAAO,QAAQ,GAAI,CAAA,QAAQ,CAAE,CAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAEpD,CAAA;AACA,IAAM,KAAQ,GAAA,CAAC,CAAG,EAAA,MAAA,EAAQ,GAAQ,KAAA;AAC9B,EAAA,MAAM,EAAE,UAAA,EAAYC,EAAG,EAAA,MAAA,EAAQ,GAAM,GAAA,CAAA,CAAA;AACrC,EAAM,MAAA,CAAA,GAAI,QAAQ,MAAM,CAAA,CAAA;AACxB,EAAA,MAAM,CAAI,GAAA,CAAA,CAAE,GAAI,CAAA,CAAC,EAAE,UAAW,EAAA,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,OAAA,CAAQ,CAAGA,EAAAA,EAAAA,EAAG,GAAG,CAAA,CAAA;AAClC,EAAM,MAAA,MAAA,GAAS,CAAC,MAAW,KAAA;AACvB,IAAA,MAAM,IAAI,GAAI,CAAA,CAAA,GAAI,QAAQ,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA;AACxC,IAAA,OAAO,IAAI,OAAQ,CAAA,CAAA,EAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAA,CAAA;AAAA,GAC1C,CAAA;AACA,EAAO,OAAA,EAAE,UAAU,MAAO,EAAA,CAAA;AAC9B,CAAA,CAAA;AACA,IAAM,SAAA,GAAY,OAAO,GAAA,EAAK,OAAY,KAAA;AACtC,EAAM,MAAA,CAAA,GAAI,KAAK,GAAG,CAAA,CAAA;AAClB,EAAM,MAAA,CAAA,GAAI,MAAM,yBAAA,CAA0B,OAAO,CAAA,CAAA;AACjD,EAAA,MAAM,MAAS,GAAA,MAAM,OAAQ,CAAA,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AACxC,EAAA,OAAO,WAAW,IAAM,EAAA,KAAA,CAAM,CAAG,EAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAC/C,CAAA,CAAA;AAOA,IAAM,GAAA,GAAM,EAAE,MAAA,EAAQ,IAAK,EAAA,CAAA;AAC3B,IAAM,UAAU,CAAC,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,OAAO,GAAQ,KAAA;AAC3C,EAAA,GAAA,GAAM,KAAK,GAAG,CAAA,CAAA;AACd,EAAM,GAAA,GAAA,IAAA,CAAK,KAAK,EAAE,CAAA,CAAA;AAClB,EAAM,MAAA,EAAE,QAAW,GAAA,IAAA,CAAA;AACnB,EAAA,IAAI,GAAG,CAAG,EAAA,CAAA,EAAG,EAAI,EAAA,QAAA,GAAW,IAAI,UAAW,EAAA,CAAA;AAC3C,EAAI,IAAA;AACA,IAAI,CAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,EAAK,MAAM,CAAA,CAAA;AAC7B,IAAA,CAAA,GAAI,MAAM,OAAQ,CAAA,GAAA,CAAI,MAAM,CAAG,EAAA,EAAE,GAAG,MAAM,CAAA,CAAA;AAC1C,IAAA,CAAA,GAAI,MAAO,CAAA,GAAA,CAAI,KAAM,CAAA,EAAA,EAAI,EAAE,CAAC,CAAA,CAAA;AAC5B,IAAK,EAAA,GAAA,CAAA,CAAE,GAAI,CAAA,CAAA,EAAG,KAAK,CAAA,CAAA;AACnB,IAAA,QAAA,GAAW,QAAQ,CAAE,CAAA,UAAA,IAAc,CAAE,CAAA,UAAA,IAAc,GAAG,CAAA,CAAA;AAAA,WAEnD,KAAO,EAAA;AAAA,GAAE;AAChB,EAAM,MAAA,MAAA,GAAS,CAAC,MAAW,KAAA;AACvB,IAAA,IAAI,EAAM,IAAA,IAAA;AACN,MAAO,OAAA,KAAA,CAAA;AACX,IAAI,IAAA,CAAC,MAAU,IAAA,CAAA,CAAE,YAAa,EAAA;AAC1B,MAAO,OAAA,KAAA,CAAA;AACX,IAAM,MAAA,CAAA,GAAI,QAAQ,MAAM,CAAA,CAAA;AACxB,IAAA,MAAM,MAAM,CAAE,CAAA,GAAA,CAAI,EAAE,GAAI,CAAA,CAAA,EAAG,KAAK,CAAC,CAAA,CAAA;AACjC,IAAO,OAAA,GAAA,CAAI,IAAI,EAAG,CAAA,MAAA,EAAQ,CAAE,CAAA,aAAA,GAAgB,GAAI,EAAA,CAAA;AAAA,GACpD,CAAA;AACA,EAAO,OAAA,EAAE,UAAU,MAAO,EAAA,CAAA;AAC9B,CAAA,CAAA;AAEA,IAAM,WAAc,GAAA,OAAO,CAAG,EAAA,CAAA,EAAG,GAAG,IAAO,GAAA,GAAA,KAAQ,UAAW,CAAA,IAAA,EAAM,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,IAAI,CAAC,CAAA,CAAA;AAE1F,IAAM,EAAK,GAAA;AAAA;AAAA,EACV,OAAO,UAAe,KAAA,QAAA,IAAY,QAAY,IAAA,UAAA,GAAa,WAAW,MAAS,GAAA,KAAA,CAAA;AAAA,CAAA,CAAA;AAChF,IAAM,GAAM,GAAA;AAAA,EACR,UAAY,EAAA,GAAA;AAAA,EAAK,UAAY,EAAA,GAAA;AAAA,EAAK,WAAa,EAAA,OAAA;AAAA,EAC/C,GAAA;AAAA,EAAK,MAAA;AAAA,EACL,WAAA,EAAa,CAAC,GAAA,GAAM,EAAO,KAAA;AACvB,IAAA,MAAM,SAAS,EAAG,EAAA,CAAA;AAGlB,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,MAAO,CAAA,eAAA;AACnB,MAAA,GAAA,CAAI,wCAAwC,CAAA,CAAA;AAChD,IAAA,OAAO,MAAO,CAAA,eAAA,CAAgB,GAAI,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,GAC1C;AAAA,EACA,WAAA,EAAa,UAAU,QAAa,KAAA;AAChC,IAAA,MAAM,SAAS,EAAG,EAAA,CAAA;AAClB,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,MAAO,CAAA,MAAA;AACnB,MAAA,GAAA,CAAI,kDAAkD,CAAA,CAAA;AAC1D,IAAM,MAAA,CAAA,GAAI,OAAQ,CAAA,GAAG,QAAQ,CAAA,CAAA;AAC7B,IAAO,OAAA,GAAA,CAAI,MAAM,MAAO,CAAA,MAAA,CAAO,OAAO,SAAW,EAAA,CAAA,CAAE,MAAM,CAAC,CAAA,CAAA;AAAA,GAC9D;AAAA,EACA,UAAY,EAAA,KAAA,CAAA;AAAA;AAChB,CAAA,CAAA;AACA,MAAO,CAAA,gBAAA,CAAiB,GAAK,EAAA,EAAE,UAAY,EAAA;AAAA,EACnC,YAAc,EAAA,KAAA;AAAA,EAAO,GAAM,GAAA;AAAE,IAAO,OAAA,KAAA,CAAA;AAAA,GAAO;AAAA,EAAG,IAAI,CAAG,EAAA;AAAE,IAAA,IAAI,CAAC,KAAA;AACxD,MAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,GAAG;AACnB,CAAA,EAAG,CAAA,CAAA;AACP,IAAM,KAAQ,GAAA;AAAA,EACV,yBAAA;AAAA,EAA2B,oBAAA;AAAA,EAC3B,gBAAkB,EAAA,MAAM,GAAI,CAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAC1C,UAAW,CAAA,CAAA,GAAI,CAAG,EAAA,CAAA,GAAI,CAAG,EAAA;AAAE,IAAA,CAAA,CAAE,SAAS,EAAE,CAAA,CAAA;AAAM,IAAO,OAAA,CAAA,CAAA;AAAA,GAAG;AAAA;AAC5D,CAAA,CAAA;AACA,IAAM,CAAI,GAAA,CAAA,CAAA;AACV,IAAM,aAAa,MAAM;AACrB,EAAA,MAAM,SAAS,EAAC,CAAA;AAChB,EAAM,MAAA,OAAA,GAAU,MAAM,CAAI,GAAA,CAAA,CAAA;AAC1B,EAAI,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,CAAA,CAAA;AACf,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AAC9B,IAAI,CAAA,GAAA,CAAA,CAAA;AACJ,IAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AACb,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,CAAM,KAAA,CAAA,GAAI,IAAI,CAAK,EAAA,EAAA;AACnC,MAAI,CAAA,GAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AACX,MAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,KACjB;AACA,IAAA,CAAA,GAAI,EAAE,MAAO,EAAA,CAAA;AAAA,GACjB;AACA,EAAO,OAAA,MAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAI,KAAQ,GAAA,KAAA,CAAA,CAAA;AACZ,IAAM,IAAA,GAAO,CAAC,CAAM,KAAA;AAEhB,EAAM,MAAA,IAAA,GAAO,KAAU,KAAA,KAAA,GAAQ,UAAW,EAAA,CAAA,CAAA;AAC1C,EAAM,MAAA,GAAA,GAAM,CAAC,GAAA,EAAKC,EAAM,KAAA;AAAE,IAAIC,IAAAA,EAAAA,GAAID,GAAE,MAAO,EAAA,CAAA;AAAG,IAAA,OAAO,MAAMC,EAAID,GAAAA,EAAAA,CAAAA;AAAA,GAAG,CAAA;AAClE,EAAI,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,CAAA,CAAA;AACf,EAAM,MAAA,OAAA,GAAU,IAAI,GAAM,GAAA,CAAA,CAAA;AAC1B,EAAM,MAAA,KAAA,GAAQ,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AACxB,EAAA,MAAM,IAAO,GAAA,MAAA,CAAO,CAAK,IAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAC9B,EAAA,MAAM,SAAS,CAAK,IAAA,CAAA,CAAA;AACpB,EAAM,MAAA,OAAA,GAAU,OAAO,CAAC,CAAA,CAAA;AACxB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AAC9B,IAAA,MAAM,MAAM,CAAI,GAAA,KAAA,CAAA;AAChB,IAAI,IAAA,KAAA,GAAQ,MAAO,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAC3B,IAAM,CAAA,KAAA,OAAA,CAAA;AACN,IAAA,IAAI,QAAQ,KAAO,EAAA;AACf,MAAS,KAAA,IAAA,MAAA,CAAA;AACT,MAAK,CAAA,IAAA,EAAA,CAAA;AAAA,KACT;AACA,IAAA,MAAM,OAAO,GAAK,EAAA,IAAA,GAAO,MAAM,IAAK,CAAA,GAAA,CAAI,KAAK,CAAI,GAAA,CAAA,CAAA;AACjD,IAAA,MAAM,IAAO,GAAA,CAAA,GAAI,CAAM,KAAA,CAAA,EAAG,OAAO,KAAQ,GAAA,CAAA,CAAA;AACzC,IAAA,IAAI,UAAU,CAAG,EAAA;AACb,MAAA,CAAA,GAAI,EAAE,GAAI,CAAA,GAAA,CAAI,MAAM,IAAK,CAAA,IAAI,CAAC,CAAC,CAAA,CAAA;AAAA,KAE9B,MAAA;AACD,MAAA,CAAA,GAAI,EAAE,GAAI,CAAA,GAAA,CAAI,MAAM,IAAK,CAAA,IAAI,CAAC,CAAC,CAAA,CAAA;AAAA,KACnC;AAAA,GACJ;AACA,EAAO,OAAA,EAAE,GAAG,CAAE,EAAA,CAAA;AAClB,CAAA,CAAA;;;AC7WA,IAAM,qBAAA,uBAA4B,GAAc,CAAA;AAAA,EAC5C,SAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AACJ,CAAC,CAAA,CAAA;AAED,IAAM,oBAAA;AAAA;AAAA,EAEF;AAAA;AAAA;AAAA;AAAA,IAII,EAAA;AAAA;AAAA,IACA,EAAA;AAAA;AAAA,IAEI,CAAA;AAAA;AAAA,IACA,CAAA;AAAA;AAAA,IACI,CAAA;AAAA;AAAA,IAEJ,EAAA;AAAA;AAAA,IACA,CAAA;AAAA;AAAA,IACI,CAAA;AAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA,IAEQ,EAAA;AAAA;AAAA,IACA,GAAA;AAAA;AAAA;AAAA,IAEA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhB,CAAA;AAAA;AAAA,IACA,EAAA;AAAA;AAAA;AAAA,IAGI,CAAA;AAAA;AAAA,IACA,EAAA;AAAA;AAAA,GACR;AAAA,CAAA,CAAA;AAEJ,SAAS,yBAAyB,IAAgC,EAAA;AAC9D,EAAO,OAAA,IAAA,YAAgB,UAAa,GAAA,IAAA,GAAO,IAAI,UAAA,CAAW,WAAY,CAAA,MAAA,CAAO,IAAI,CAAA,GAAI,IAAK,CAAA,MAAA,GAAS,IAAI,CAAA,CAAA;AAC3G,CAAA;AAEA,IAAI,iDAAA,CAAA;AAGJ,IAAI,mBAAA,CAAA;AAEJ,SAAS,sBAAA,CACL,KACA,EAAA,WAAA,EACA,SACa,EAAA;AACb,EAAM,MAAA,OAAA,GAAU,yCAA0C,CAAA,WAAA,EAAa,SAAS,CAAA,CAAA;AAChF,EAAM,MAAA,KAAA,GAAS,iDAAsD,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACjF,EAAM,KAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,UAAA,EAAY,KAAK,CAAA,CAAA;AACnC,EAAM,KAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,SAAA,EAAW,KAAK,CAAA,CAAA;AAClC,EAAO,OAAA,OAAA,CAAA;AACX,CAAA;AAEA,SAAS,yCAAA,CACL,aACA,SACa,EAAA;AACb,EAAI,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AACxB,IAAM,MAAA,IAAI,YAAa,CAAA,6CAAA,EAA+C,aAAa,CAAA,CAAA;AAAA,GACvF;AACA,EAAA,IAAI,UAAU,IAAK,CAAA,CAAA,KAAA,KAAS,sBAAsB,GAAI,CAAA,KAAK,CAAC,CAAG,EAAA;AAC3D,IAAM,MAAA,IAAI,YAAa,CAAA,2CAAA,EAA6C,aAAa,CAAA,CAAA;AAAA,GACrF;AACA,EAAA,MAAM,IAAO,GAAA;AAAA,IACT,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,IACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,GAChD,CAAA;AACA,EAAA,MAAM,UAAa,GAAA;AAAA,IACf,GAAG,IAAA;AAAA,IACH,WAAA;AAAA,IACA,IAAM,EAAA,SAAA;AAAA,IACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,MAAM,CAAC,CAAA;AAAA,GACrE,CAAA;AACA,EAAA,MAAM,SAAY,GAAA;AAAA,IACd,GAAG,IAAA;AAAA,IACH,WAAa,EAAA,IAAA;AAAA,IACb,IAAM,EAAA,QAAA;AAAA,IACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,QAAQ,CAAC,CAAA;AAAA,GACvE,CAAA;AACA,EAAA,OAAO,OAAO,MAAO,CAAA;AAAA,IACjB,UAAA,EAAY,MAAO,CAAA,MAAA,CAAO,UAAU,CAAA;AAAA,IACpC,SAAA,EAAW,MAAO,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,GACrC,CAAA,CAAA;AACL,CAAA;AAEA,SAAS,8CAA8C,GAA4B,EAAA;AAC/E,EAAM,MAAA,cAAA,GAAiB,iDAAmD,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AACjF,EAAA,IAAI,mBAAmB,KAAW,CAAA,EAAA;AAC9B,IAAM,MAAA,IAAI,MAAM,qEAAqE,CAAA,CAAA;AAAA,GACzF;AACA,EAAO,OAAA,cAAA,CAAA;AACX,CAAA;AAEA,eAAe,kBAAkB,GAAqC,EAAA;AAElE,EAAM,MAAA,cAAA,GAAkB,mBAAwB,qBAAA,IAAI,OAAQ,EAAA,CAAA;AAC5D,EAAM,MAAA,eAAA,GAAkB,cAAe,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC9C,EAAA,IAAI,iBAAwB,OAAA,eAAA,CAAA;AAG5B,EAAA,MAAM,cAAiB,GAAA,MAAM,iBAAkB,CAAA,6CAAA,CAA8C,GAAG,CAAC,CAAA,CAAA;AAGjG,EAAe,cAAA,CAAA,GAAA,CAAI,KAAK,cAAc,CAAA,CAAA;AACtC,EAAO,OAAA,cAAA,CAAA;AACX,CAAA;AAEA,SAAS,gBAAgB,KAA2B,EAAA;AAChD,EAAO,OAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,KAAO,EAAA,CAAA,CAAA,KAAK,OAAO,YAAa,CAAA,CAAC,CAAC,CAAA,CAAE,IAAK,CAAA,EAAE,CAAC,CAC9D,CAAA,OAAA,CAAQ,KAAO,EAAA,GAAG,CAClB,CAAA,OAAA,CAAQ,OAAO,GAAG,CAAA,CAClB,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAC1B,CAAA;AAEA,SAAS,gBAAgB,KAA2B,EAAA;AAChD,EAAM,MAAA,CAAA,GAAI,MAAM,MAAS,GAAA,CAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KACf,CAAA,OAAA,CAAQ,MAAM,GAAG,CAAA,CACjB,QAAQ,IAAM,EAAA,GAAG,CACjB,CAAA,MAAA,CAAO,MAAM,MAAU,IAAA,CAAA,KAAM,IAAI,CAAI,GAAA,CAAA,GAAI,IAAI,GAAG,CAAA,CAAA;AACrD,EAAO,OAAA,UAAA,CAAW,KAAK,IAAK,CAAA,WAAW,GAAG,CAAK,CAAA,KAAA,CAAA,CAAE,UAAW,CAAA,CAAC,CAAC,CAAA,CAAA;AAClE,CAAA;AAIA,eAAsB,iBAAA,CAAkB,QAAmB,GAAmD,EAAA;AAC1G,EAAI,IAAA,GAAA,CAAI,gBAAgB,KAAO,EAAA;AAC3B,IAAM,MAAA,IAAI,YAAa,CAAA,wBAAA,EAA0B,wBAAwB,CAAA,CAAA;AAAA,GAC7E;AACA,EAAA,QAAQ,MAAQ;AAAA,IACZ,KAAK,KAAO,EAAA;AACR,MAAI,IAAA,GAAA,CAAI,SAAS,QAAU,EAAA;AACvB,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,+BAAA,EAAkC,GAAI,CAAA,IAAI,QAAQ,oBAAoB,CAAA,CAAA;AAAA,OACjG;AACA,MAAM,MAAA,cAAA,GAAiB,MAAM,iBAAA,CAAkB,GAAG,CAAA,CAAA;AAClD,MAAO,OAAA,cAAA,CAAA;AAAA,KACX;AAAA,IACA,KAAK,OAAS,EAAA;AACV,MAAI,IAAA,GAAA,CAAI,SAAS,SAAW,EAAA;AACxB,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,iCAAA,EAAoC,GAAI,CAAA,IAAI,QAAQ,oBAAoB,CAAA,CAAA;AAAA,OACnG;AACA,MAAM,MAAA,cAAA,GAAiB,8CAA8C,GAAG,CAAA,CAAA;AACxE,MAAA,OAAO,IAAI,UAAW,CAAA,CAAC,GAAG,oBAAsB,EAAA,GAAG,cAAc,CAAC,CAAA,CAAA;AAAA,KACtE;AAAA,IACA,KAAK,KAAO,EAAA;AACR,MAAM,MAAA,cAAA,GAAiB,MAAM,iBAAA,CAAkB,GAAG,CAAA,CAAA;AAClD,MAAA,MAAM,IAAO,GAAA;AAAA,QACT,GAAiB,EAAA,SAAA;AAAA,QACjB,KAAuB,GAAI,CAAA,WAAA;AAAA,QAC3B,SAA8B,GAAI,CAAA,MAAA;AAAA,QAClC,GAAoB,EAAA,KAAA;AAAA,QACpB,CAAA,EAAsD,gBAAgB,cAAc,CAAA;AAAA,OACxF,CAAA;AACA,MAAI,IAAA,GAAA,CAAI,SAAS,SAAW,EAAA;AACxB,QAAM,MAAA,cAAA,GAAiB,8CAA8C,GAAG,CAAA,CAAA;AACxE,QAAA,OAAO,OAAO,MAAO,CAAA;AAAA,UACjB,GAAG,IAAA;AAAA,UACH,CAAA,EAA0C,gBAAgB,cAAc,CAAA;AAAA,SAC3E,CAAA,CAAA;AAAA,OACL;AACA,MAAA,OAAO,MAAO,CAAA,MAAA,CAAO,EAAE,GAAG,MAAM,CAAA,CAAA;AAAA,KACpC;AAAA,IACA;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAA6C,0CAAA,EAAA,MAAM,CAA2B,yBAAA,CAAA,CAAA,CAAA;AAAA,GACtG;AACJ,CAAA;AAQO,SAAS,mBAAA,CAAoB,aAAsB,SAA+C,EAAA;AACrG,EAAM,MAAA,eAAA,GAAkB,MAAM,gBAAiB,EAAA,CAAA;AAC/C,EAAA,MAAM,OAAU,GAAA,sBAAA,CAAuB,eAAiB,EAAA,WAAA,EAAa,SAAS,CAAA,CAAA;AAC9E,EAAO,OAAA,OAAA,CAAA;AACX,CAAA;AAEO,SAAS,gBAAgB,GAAyB,EAAA;AACrD,EAAO,OAAA,CAAC,CAAC,iDAAA,EAAmD,GAAI,CAAA,GAAG,KAAK,CAAC,CAAC,mBAAqB,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC1G,CAAA;AAEA,eAAsB,YAAA,CAAa,KAAgB,IAA0C,EAAA;AACzF,EAAI,IAAA,GAAA,CAAI,SAAS,SAAa,IAAA,CAAC,IAAI,MAAO,CAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AACxD,IAAM,MAAA,IAAI,YAAa,CAAA,gCAAA,EAAkC,oBAAoB,CAAA,CAAA;AAAA,GACjF;AACA,EAAM,MAAA,eAAA,GAAkB,8CAA8C,GAAG,CAAA,CAAA;AACzE,EAAM,MAAA,OAAA,GAAU,yBAAyB,IAAI,CAAA,CAAA;AAC7C,EAAA,MAAM,SAAY,GAAA,MAAM,SAAU,CAAA,OAAA,EAAS,eAAe,CAAA,CAAA;AAC1D,EAAO,OAAA,SAAA,CAAA;AACX,CAAA;AAEA,eAAsB,cAAA,CAAe,GAAgB,EAAA,SAAA,EAAyB,IAAsC,EAAA;AAChH,EAAI,IAAA,GAAA,CAAI,SAAS,QAAY,IAAA,CAAC,IAAI,MAAO,CAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACzD,IAAM,MAAA,IAAI,YAAa,CAAA,kCAAA,EAAoC,oBAAoB,CAAA,CAAA;AAAA,GACnF;AACA,EAAM,MAAA,cAAA,GAAiB,MAAM,iBAAA,CAAkB,GAAG,CAAA,CAAA;AAClD,EAAI,IAAA;AACA,IAAO,OAAA,MAAM,YAAY,wBAAyB,CAAA,SAAS,GAAG,wBAAyB,CAAA,IAAI,GAAG,cAAc,CAAA,CAAA;AAAA,GACxG,CAAA,MAAA;AACJ,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACJ,CAAA;AAEA,SAAS,oBAAA,CAAqB,WAAgC,IAA4B,EAAA;AACtF,EAAM,MAAA,iBAAA,uBAAwB,GAAc,CAAA;AAAA,IACxC,GAAK,IAAS,KAAA,SAAA,GAAY,CAAC,QAAQ,CAAA,GAAI,CAAC,MAAM,CAAA;AAAA,IAC9C,GAAG,qBAAA;AAAA,GACN,CAAA,CAAA;AACD,EAAA,IAAI,UAAU,IAAK,CAAA,CAAA,KAAA,KAAS,kBAAkB,GAAI,CAAA,KAAK,CAAC,CAAG,EAAA;AACvD,IAAM,MAAA,IAAI,YAAa,CAAA,yCAAA,EAA2C,aAAa,CAAA,CAAA;AAAA,GACnF;AACJ,CAAA;AAcO,SAAS,iBACZ,CAAA,MAAA,EACA,OACA,EAAA,WAAA,EACA,SACS,EAAA;AACT,EAAA,IAAI,WAAW,KAAO,EAAA;AAClB,IAAM,MAAA,KAAA,GAAQ,yBAAyB,OAAuB,CAAA,CAAA;AAC9D,IAAA,oBAAA,CAAqB,WAAW,QAAQ,CAAA,CAAA;AACxC,IAAI,IAAA,KAAA,CAAM,WAAW,EAAI,EAAA;AACrB,MAAM,MAAA,IAAI,YAAa,CAAA,2CAAA,EAA6C,WAAW,CAAA,CAAA;AAAA,KACnF;AACA,IAAA,MAAM,SAAY,GAAA;AAAA,MACd,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,MACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,MAC5C,WAAA;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,QAAQ,CAAC,CAAA;AAAA,KACvE,CAAA;AAEA,IAAM,MAAA,KAAA,GAAS,mBAAwB,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACnD,IAAM,KAAA,CAAA,GAAA,CAAI,WAAW,KAAK,CAAA,CAAA;AAE1B,IAAO,OAAA,SAAA,CAAA;AAAA,GACX;AAEA,EAAA,IAAI,WAAW,OAAS,EAAA;AACpB,IAAM,MAAA,KAAA,GAAQ,yBAAyB,OAAuB,CAAA,CAAA;AAC9D,IAAA,oBAAA,CAAqB,WAAW,SAAS,CAAA,CAAA;AAEzC,IAAI,IAAA,KAAA,CAAM,WAAW,EAAI,EAAA;AACrB,MAAM,MAAA,IAAI,YAAa,CAAA,iBAAA,EAAmB,WAAW,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,MAAM,MAAS,GAAA,KAAA,CAAM,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAChC,IAAI,IAAA,CAAC,MAAO,CAAA,KAAA,CAAM,CAAC,GAAA,EAAK,MAAM,GAAQ,KAAA,oBAAA,CAAqB,CAAC,CAAC,CAAG,EAAA;AAC5D,MAAM,MAAA,IAAI,YAAa,CAAA,iBAAA,EAAmB,WAAW,CAAA,CAAA;AAAA,KACzD;AACA,IAAM,MAAA,cAAA,GAAiB,KAAM,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AAErC,IAAA,MAAM,UAAa,GAAA;AAAA,MACf,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,MACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,MAC5C,WAAA;AAAA,MACA,IAAM,EAAA,SAAA;AAAA,MACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,MAAM,CAAC,CAAA;AAAA,KACrE,CAAA;AAEA,IAAM,MAAA,KAAA,GAAS,iDAAsD,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACjF,IAAM,KAAA,CAAA,GAAA,CAAI,YAAY,cAAc,CAAA,CAAA;AAEpC,IAAO,OAAA,UAAA,CAAA;AAAA,GACX;AAEA,EAAA,IAAI,WAAW,KAAO,EAAA;AAClB,IAAA,MAAM,GAAM,GAAA,OAAA,CAAA;AACZ,IAAM,MAAA,IAAA,GAAO,GAAO,IAAA,GAAA,GAAM,SAAY,GAAA,QAAA,CAAA;AACtC,IAAA,oBAAA,CAAqB,WAAW,IAAI,CAAA,CAAA;AACpC,IAAA,MAAM,SAAS,IAAI,GAAA,CAAI,GAAI,CAAA,OAAA,IAAW,EAAE,CAAA,CAAA;AACxC,IAAA,MAAM,aAAgB,GAAA,SAAA,CAAU,MAAW,KAAA,MAAA,CAAO,QAAQ,CAAC,GAAG,SAAS,CAAA,CAAE,KAAM,CAAA,CAAA,CAAA,KAAK,MAAO,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACjG,IAAI,IAAA,GAAA,CAAI,GAAQ,KAAA,KAAA,IAAS,GAAI,CAAA,GAAA,KAAQ,aAAa,GAAI,CAAA,GAAA,KAAQ,WAAe,IAAA,CAAC,aAAe,EAAA;AACzF,MAAM,MAAA,IAAI,YAAa,CAAA,qBAAA,EAAuB,WAAW,CAAA,CAAA;AAAA,KAC7D;AACA,IAAA,IAAI,IAAS,KAAA,QAAA,IAAY,CAAC,GAAA,CAAI,CAAG,EAAA;AAC7B,MAAM,MAAA,IAAI,YAAa,CAAA,+CAAA,EAAiD,WAAW,CAAA,CAAA;AAAA,KACvF;AACA,IAAA,IAAI,IAAS,KAAA,SAAA,IAAa,CAAC,GAAA,CAAI,CAAG,EAAA;AAC9B,MAAM,MAAA,IAAI,YAAa,CAAA,gDAAA,EAAkD,WAAW,CAAA,CAAA;AAAA,KACxF;AACA,IAAM,MAAA,WAAA,GAAc,IAAS,KAAA,QAAA,GAAW,QAAW,GAAA,MAAA,CAAA;AACnD,IAAM,MAAA,GAAA,GAAM,OAAO,MAAO,CAAA;AAAA,MACtB,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,MACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,MAC5C,WAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,WAAW,CAAC,CAAA;AAAA,KACzE,CAAA,CAAA;AAED,IAAA,IAAI,SAAS,QAAU,EAAA;AACnB,MAAM,MAAA,KAAA,GAAS,mBAAwB,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACnD,MAAA,KAAA,CAAM,GAAI,CAAA,GAAA,EAAK,eAAgB,CAAA,GAAA,CAAI,CAAE,CAAC,CAAA,CAAA;AAAA,KACnC,MAAA;AACH,MAAM,MAAA,KAAA,GAAS,iDAAsD,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACjF,MAAA,KAAA,CAAM,GAAI,CAAA,GAAA,EAAK,eAAgB,CAAA,GAAA,CAAI,CAAE,CAAC,CAAA,CAAA;AAAA,KAC1C;AAEA,IAAO,OAAA,GAAA,CAAA;AAAA,GACX;AAEA,EAAA,MAAM,IAAI,KAAA,CAAM,CAAkC,+BAAA,EAAA,MAAM,CAA2B,yBAAA,CAAA,CAAA,CAAA;AACvF,CAAA;;;AC9UO,SAAS,OAAU,GAAA;AACtB,EAAgB;AAKZ,IAAA,UAAA,CAAW,MAAW,KAAA,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAgD;AAI5C,IAAM,MAAA,oBAAA,GAAwB,UAAW,CAAA,MAAA,KAAW,EAAC,CAAA;AACrD,IAAM,MAAA,oBAAA,GAAyB,oBAA2D,CAAA,MAAA,KACtF,EAAC,CAAA;AAKL,IAAA,MAAM,oBAAoB,oBAAqB,CAAA,SAAA,CAAA;AAC/C,IAAqB,oBAAA,CAAA,SAAA,GAAa,UAAU,IAAgD,KAAA;AACxF,MAAM,MAAA,CAAC,CAAG,EAAA,GAAG,CAAI,GAAA,IAAA,CAAA;AACjB,MAAI,IAAA,eAAA,CAAgB,GAAG,CAAG,EAAA;AACtB,QAAO,OAAA,MAAM,iBAAkB,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,iBAC/B,iBAAmB,EAAA;AAC1B,QAAA,OAAO,MAAM,iBAAA,CAAkB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,OAC5D,MAAA;AACH,QAAM,MAAA,IAAI,UAAU,2DAA2D,CAAA,CAAA;AAAA,OACnF;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,sBAAsB,oBAAqB,CAAA,WAAA,CAAA;AACjD,IAAI,IAAA,kCAAA,CAAA;AACJ,IAAqB,oBAAA,CAAA,WAAA,GAAe,UAAU,IAAkD,KAAA;AAC5F,MAAM,MAAA,CAAC,SAAS,CAAI,GAAA,IAAA,CAAA;AACpB,MAAA,IAAI,cAAc,SAAW,EAAA;AACzB,QAAA,IAAI,mBAAqB,EAAA;AACrB,UAAA,OAAO,MAAM,mBAAA,CAAoB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC9D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,6DAA6D,CAAA,CAAA;AAAA,SACrF;AAAA,OACJ;AACA,MAAI,IAAA,8BAAA,CAAA;AACJ,MAAA,IAAI,uCAAuC,KAAW,CAAA,EAAA;AAClD,QAAqC,kCAAA,GAAA,IAAI,QAAQ,CAAW,OAAA,KAAA;AACxD,UAAA,IAAI,CAAC,mBAAqB,EAAA;AACtB,YAAA,OAAA,CAAS,qCAAqC,KAAM,CAAA,CAAA;AACpD,YAAA,OAAA;AAAA,WACJ;AACA,UAAA,mBAAA,CACK,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAChC,KAAK,CAAW,OAAA,KAAA;AACb,YAAA,IAAI,yBAAyB,YAAc,EAAA;AACvC,cAAQ,OAAA,CAAA,IAAA;AAAA,gBACJ,yPAAA;AAAA,eAKJ,CAAA;AAAA,aACJ;AACA,YAAI,IAAA,oBAAA,CAAqB,gBAAgB,mBAAqB,EAAA;AAC1D,cAAA,oBAAA,CAAqB,WAAc,GAAA,mBAAA,CAAA;AAAA,aACvC;AACA,YAAiC,8BAAA,GAAA,OAAA,CAAA;AACjC,YAAA,OAAA,CAAS,qCAAqC,IAAK,CAAA,CAAA;AAAA,WACtD,CACA,CAAA,KAAA,CAAM,MAAM;AACT,YAAA,OAAA,CAAS,qCAAqC,KAAM,CAAA,CAAA;AAAA,WACvD,CAAA,CAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACL;AACA,MAAA,IACI,OAAO,kCAAA,KAAuC,SACxC,GAAA,kCAAA,GACA,MAAM,kCACd,EAAA;AACE,QAAA,IAAI,8BAAgC,EAAA;AAChC,UAAO,OAAA,8BAAA,CAAA;AAAA,mBACA,mBAAqB,EAAA;AAC5B,UAAA,OAAO,MAAM,mBAAA,CAAoB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC9D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,6DAA6D,CAAA,CAAA;AAAA,SACrF;AAAA,OACG,MAAA;AACH,QAAA,MAAM,CAAC,CAAA,EAAG,WAAa,EAAA,SAAS,CAAI,GAAA,IAAA,CAAA;AACpC,QAAO,OAAA,mBAAA,CAAoB,aAAa,SAAS,CAAA,CAAA;AAAA,OACrD;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,eAAe,oBAAqB,CAAA,IAAA,CAAA;AAC1C,IAAqB,oBAAA,CAAA,IAAA,GAAQ,UAAU,IAA2C,KAAA;AAC9E,MAAM,MAAA,CAAC,CAAG,EAAA,GAAG,CAAI,GAAA,IAAA,CAAA;AACjB,MAAI,IAAA,eAAA,CAAgB,GAAG,CAAG,EAAA;AACtB,QAAA,MAAM,CAACE,EAAAA,EAAG,GAAG,IAAI,CAAI,GAAA,IAAA,CAAA;AACrB,QAAO,OAAA,MAAM,YAAa,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,iBAC1B,YAAc,EAAA;AACrB,QAAA,OAAO,MAAM,YAAA,CAAa,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,OACvD,MAAA;AACH,QAAM,MAAA,IAAI,UAAU,sDAAsD,CAAA,CAAA;AAAA,OAC9E;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,iBAAiB,oBAAqB,CAAA,MAAA,CAAA;AAC5C,IAAqB,oBAAA,CAAA,MAAA,GAAU,UAAU,IAA6C,KAAA;AAClF,MAAM,MAAA,CAAC,CAAG,EAAA,GAAG,CAAI,GAAA,IAAA,CAAA;AACjB,MAAI,IAAA,eAAA,CAAgB,GAAG,CAAG,EAAA;AACtB,QAAA,MAAM,CAACA,EAAAA,EAAG,GAAG,IAAI,CAAI,GAAA,IAAA,CAAA;AACrB,QAAO,OAAA,MAAM,cAAe,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,iBAC5B,cAAgB,EAAA;AACvB,QAAA,OAAO,MAAM,cAAA,CAAe,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,OACzD,MAAA;AACH,QAAM,MAAA,IAAI,UAAU,wDAAwD,CAAA,CAAA;AAAA,OAChF;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,oBAAoB,oBAAqB,CAAA,SAAA,CAAA;AAC/C,IAAI,IAAA,gCAAA,CAAA;AACJ,IAAqB,oBAAA,CAAA,SAAA,GAAa,UAAU,IAAgD,KAAA;AACxF,MAAA,MAAM,CAAC,MAAA,EAAQ,OAAS,EAAA,SAAS,CAAI,GAAA,IAAA,CAAA;AACrC,MAAA,IAAI,cAAc,SAAW,EAAA;AACzB,QAAA,IAAI,iBAAmB,EAAA;AACnB,UAAA,OAAO,MAAM,iBAAA,CAAkB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC5D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,2DAA2D,CAAA,CAAA;AAAA,SACnF;AAAA,OACJ;AACA,MAAI,IAAA,yBAAA,CAAA;AACJ,MAAA,IAAI,qCAAqC,KAAW,CAAA,EAAA;AAChD,QAAmC,gCAAA,GAAA,IAAI,QAAQ,CAAW,OAAA,KAAA;AACtD,UAAA,IAAI,CAAC,iBAAmB,EAAA;AACpB,YAAA,OAAA,CAAS,mCAAmC,KAAM,CAAA,CAAA;AAClD,YAAA,OAAA;AAAA,WACJ;AACA,UAAA,iBAAA,CACK,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAChC,KAAK,CAAO,GAAA,KAAA;AACT,YAAA,IAAI,yBAAyB,YAAc,EAAA;AACvC,cAAQ,OAAA,CAAA,IAAA;AAAA,gBACJ,uPAAA;AAAA,eAKJ,CAAA;AAAA,aACJ;AACA,YAAI,IAAA,oBAAA,CAAqB,cAAc,iBAAmB,EAAA;AACtD,cAAA,oBAAA,CAAqB,SAAY,GAAA,iBAAA,CAAA;AAAA,aACrC;AACA,YAA4B,yBAAA,GAAA,GAAA,CAAA;AAC5B,YAAA,OAAA,CAAS,mCAAmC,IAAK,CAAA,CAAA;AAAA,WACpD,CACA,CAAA,KAAA,CAAM,MAAM;AACT,YAAA,OAAA,CAAS,mCAAmC,KAAM,CAAA,CAAA;AAAA,WACrD,CAAA,CAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACL;AACA,MAAA,IACI,OAAO,iBAAA,KAAsB,SACvB,GAAA,gCAAA,GACA,MAAM,gCACd,EAAA;AACE,QAAA,IAAI,yBAA2B,EAAA;AAC3B,UAAO,OAAA,yBAAA,CAAA;AAAA,mBACA,iBAAmB,EAAA;AAC1B,UAAA,OAAO,MAAM,iBAAA,CAAkB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC5D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,2DAA2D,CAAA,CAAA;AAAA,SACnF;AAAA,OACG,MAAA;AACH,QAAA,MAAM,CAAC,OAAS,EAAA,QAAA,EAAU,UAAY,EAAA,WAAA,EAAa,SAAS,CAAI,GAAA,IAAA,CAAA;AAChE,QAAA,OAAO,iBAAkB,CAAA,MAAA,EAAQ,OAAS,EAAA,WAAA,EAAa,SAAS,CAAA,CAAA;AAAA,OACpE;AAAA,KACJ,CAAA;AAAA,GACJ;AACJ,CAAA","file":"index.node.cjs","sourcesContent":["// When building the browser bundle, this import gets replaced by `globalThis.crypto`.\nimport crypto from 'node:crypto';\n\nexport default crypto;\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n, // where a=-1, d = -(121665/121666) == -(121665 * inv(121666)) mod P\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst isu8 = (a) => (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !isu8(a) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array of valid length expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(au8(a)), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, zip215 = false) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (zip215 && !(0n <= y && y < 2n ** 256n))\n err('bad y coord 1'); // zip215=true [1..2^256-1]\n if (!zip215 && !(0n <= y && y < P))\n err('bad y coord 2'); // zip215=false [1..P-1]\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad y coord 3'); // x=0 and x_0 = 1\n if (isLastByteOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.equals(I))\n return { x: 0n, y: 1n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst dvo = { zip215: true };\nconst _verify = (sig, msg, pub, opts = dvo) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A, R, s, SB, hashable = new Uint8Array();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, 32), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n SB = G.mul(s, false); // in the range 0 <= s < L\n hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p, opts = dvo) => hashFinish(true, _verify(s, m, p, opts));\nconst verify = (s, m, p, opts = dvo) => hashFinish(false, _verify(s, m, p, opts));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len = 32) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto || !crypto.getRandomValues)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto || !crypto.subtle)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); w; return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nlet Gpows = undefined; // precomputes for base point G\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","/**\n * HEY! <== SECRET KEY KOALA\n * |/ <== WOULD LIKE YOUR\n * ʕ·͡ᴥ·ʔ <== ATTENTION PLEASE\n *\n * Key material generated in this module must stay in this module. So long as the secrets cache and\n * the methods that interact with it are not exported from `@solana/webcrypto-ed25519-polyfill`,\n * accidental logging of the actual bytes of a secret key (eg. to the console, or to a remote\n * server) should not be possible.\n *\n * WARNING: This does not imply that the secrets cache is secure against supply-chain attacks.\n * Untrusted code in your JavaScript context can easily override `WeakMap.prototype.set` to steal\n * private keys as they are written to the cache, without alerting you to its presence or affecting\n * the regular operation of the cache.\n */\nimport { getPublicKeyAsync, signAsync, utils, verifyAsync } from '@noble/ed25519';\n\nconst PROHIBITED_KEY_USAGES = new Set<KeyUsage>([\n 'decrypt',\n 'deriveBits',\n 'deriveKey',\n 'encrypt',\n 'unwrapKey',\n 'wrapKey',\n]);\n\nconst ED25519_PKCS8_HEADER =\n // prettier-ignore\n [\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n ];\n\nfunction bufferSourceToUint8Array(data: BufferSource): Uint8Array {\n return data instanceof Uint8Array ? data : new Uint8Array(ArrayBuffer.isView(data) ? data.buffer : data);\n}\n\nlet storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT: WeakMap<CryptoKey, Uint8Array> | undefined;\n\n// Map of public key bytes. These are the result of calling `getPublicKey`\nlet publicKeyBytesStore: WeakMap<CryptoKey, Uint8Array> | undefined;\n\nfunction createKeyPairFromBytes(\n bytes: Uint8Array,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n const keyPair = createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(extractable, keyUsages);\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(keyPair.privateKey, bytes);\n cache.set(keyPair.publicKey, bytes);\n return keyPair;\n}\n\nfunction createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n if (keyUsages.length === 0) {\n throw new DOMException('Usages cannot be empty when creating a key.', 'SyntaxError');\n }\n if (keyUsages.some(usage => PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for an Ed25519 key.', 'SyntaxError');\n }\n const base = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n };\n const privateKey = {\n ...base,\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n const publicKey = {\n ...base,\n extractable: true,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n return Object.freeze({\n privateKey: Object.freeze(privateKey),\n publicKey: Object.freeze(publicKey),\n });\n}\n\nfunction getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key: CryptoKey): Uint8Array {\n const secretKeyBytes = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.get(key);\n if (secretKeyBytes === undefined) {\n throw new Error('Could not find secret key material associated with this `CryptoKey`');\n }\n return secretKeyBytes;\n}\n\nasync function getPublicKeyBytes(key: CryptoKey): Promise<Uint8Array> {\n // Try to find the key in the public key store first\n const publicKeyStore = (publicKeyBytesStore ||= new WeakMap());\n const fromPublicStore = publicKeyStore.get(key);\n if (fromPublicStore) return fromPublicStore;\n\n // If not available, get the key from the secrets store instead\n const publicKeyBytes = await getPublicKeyAsync(getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key));\n\n // Store the public key bytes in the public key store for next time\n publicKeyStore.set(key, publicKeyBytes);\n return publicKeyBytes;\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n return btoa(Array.from(bytes, b => String.fromCharCode(b)).join(''))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\nfunction base64UrlDecode(value: string): Uint8Array {\n const m = value.length % 4;\n const base64Value = value\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(value.length + (m === 0 ? 0 : 4 - m), '=');\n return Uint8Array.from(atob(base64Value), c => c.charCodeAt(0));\n}\n\nexport async function exportKeyPolyfill(format: 'jwk', key: CryptoKey): Promise<JsonWebKey>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n if (key.extractable === false) {\n throw new DOMException('key is not extractable', 'InvalidAccessException');\n }\n switch (format) {\n case 'raw': {\n if (key.type !== 'public') {\n throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n return publicKeyBytes;\n }\n case 'pkcs8': {\n if (key.type !== 'private') {\n throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);\n }\n case 'jwk': {\n const publicKeyBytes = await getPublicKeyBytes(key);\n const base = {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: key.extractable,\n key_ops /* key operations */: key.usages,\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate (base64-URL encoded) */: base64UrlEncode(publicKeyBytes),\n };\n if (key.type === 'private') {\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return Object.freeze({\n ...base,\n d /* private key (base64-URL encoded) */: base64UrlEncode(secretKeyBytes),\n });\n }\n return Object.freeze({ ...base });\n }\n default:\n throw new Error(`Exporting polyfilled Ed25519 keys in the \"${format}\" format is unimplemented`);\n }\n}\n\n/**\n * This function generates a key pair and stores the secret bytes associated with it in a\n * module-private cache. Instead of vending the actual secret bytes, it returns a `CryptoKeyPair`\n * that you can use with other methods in this package to produce signatures and derive public keys\n * associated with the secret.\n */\nexport function generateKeyPolyfill(extractable: boolean, keyUsages: readonly KeyUsage[]): CryptoKeyPair {\n const privateKeyBytes = utils.randomPrivateKey();\n const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);\n return keyPair;\n}\n\nexport function isPolyfilledKey(key: CryptoKey): boolean {\n return !!storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.has(key) || !!publicKeyBytesStore?.has(key);\n}\n\nexport async function signPolyfill(key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n if (key.type !== 'private' || !key.usages.includes('sign')) {\n throw new DOMException('Unable to use this key to sign', 'InvalidAccessError');\n }\n const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const payload = bufferSourceToUint8Array(data);\n const signature = await signAsync(payload, privateKeyBytes);\n return signature;\n}\n\nexport async function verifyPolyfill(key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean> {\n if (key.type !== 'public' || !key.usages.includes('verify')) {\n throw new DOMException('Unable to use this key to verify', 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n try {\n return await verifyAsync(bufferSourceToUint8Array(signature), bufferSourceToUint8Array(data), publicKeyBytes);\n } catch {\n return false;\n }\n}\n\nfunction assertValidKeyUsages(keyUsages: readonly KeyUsage[], type: 'private' | 'public') {\n const prohibitedKeyUses = new Set<KeyUsage>([\n ...((type === 'private' ? ['verify'] : ['sign']) as KeyUsage[]),\n ...PROHIBITED_KEY_USAGES,\n ]);\n if (keyUsages.some(usage => prohibitedKeyUses.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n}\n\nexport function importKeyPolyfill(\n format: 'jwk',\n keyData: JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: Exclude<KeyFormat, 'jwk'>,\n keyData: BufferSource,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: KeyFormat,\n keyData: BufferSource | JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey {\n if (format === 'raw') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'public');\n if (bytes.length !== 32) {\n throw new DOMException('Ed25519 raw keys must be exactly 32-bytes', 'DataError');\n }\n const publicKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(publicKey, bytes);\n\n return publicKey;\n }\n\n if (format === 'pkcs8') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'private');\n // 48 bytes: 16-byte PKCS8 header + 32 byte secret key\n if (bytes.length !== 48) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n // Must start with exactly the Ed25519 pkcs8 header\n const header = bytes.slice(0, 16);\n if (!header.every((val, i) => val === ED25519_PKCS8_HEADER[i])) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n const secretKeyBytes = bytes.slice(16);\n\n const privateKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(privateKey, secretKeyBytes);\n\n return privateKey;\n }\n\n if (format === 'jwk') {\n const jwk = keyData as JsonWebKey;\n const type = 'd' in jwk ? 'private' : 'public';\n assertValidKeyUsages(keyUsages, type);\n const keyOps = new Set(jwk.key_ops ?? []);\n const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every(x => keyOps.has(x));\n if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519' || jwk.ext !== extractable || !sameKeyUsages) {\n throw new DOMException('Invalid Ed25519 JWK', 'DataError');\n }\n if (type === 'public' && !jwk.x) {\n throw new DOMException('Ed25519 JWK is missing public key coordinates', 'DataError');\n }\n if (type === 'private' && !jwk.d) {\n throw new DOMException('Ed25519 JWK is missing private key coordinates', 'DataError');\n }\n const usageToKeep = type === 'public' ? 'verify' : 'sign';\n const key = Object.freeze({\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type,\n usages: Object.freeze(keyUsages.filter(usage => usage === usageToKeep)) as KeyUsage[],\n }) as CryptoKey;\n\n if (type === 'public') {\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.x!));\n } else {\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.d!));\n }\n\n return key;\n }\n\n throw new Error(`Importing Ed25519 keys in the \"${format}\" format is unimplemented`);\n}\n","import cryptoImpl from '@solana/crypto-impl';\n\nimport {\n exportKeyPolyfill,\n generateKeyPolyfill,\n importKeyPolyfill,\n isPolyfilledKey,\n signPolyfill,\n verifyPolyfill,\n} from './secrets';\n\nexport function install() {\n if (__NODEJS__) {\n /**\n * Node only sets the `crypto` global variable when run with `--experimental-global-webcrypto`.\n * Let's set it unconditionally here.\n */\n globalThis.crypto ||= cryptoImpl;\n }\n\n if (!__BROWSER__ || globalThis.isSecureContext) {\n /**\n * Create `crypto.subtle` if it doesn't exist.\n */\n const originalCryptoObject = (globalThis.crypto ||= {} as Crypto);\n const originalSubtleCrypto = ((originalCryptoObject as Crypto & { subtle: SubtleCrypto }).subtle ||=\n {} as SubtleCrypto);\n\n /**\n * Override `SubtleCrypto#exportKey`\n */\n const originalExportKey = originalSubtleCrypto.exportKey as SubtleCrypto['exportKey'] | undefined;\n originalSubtleCrypto.exportKey = (async (...args: Parameters<SubtleCrypto['exportKey']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n return await exportKeyPolyfill(...args);\n } else if (originalExportKey) {\n return await originalExportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `exportKey` function exists to handle this call');\n }\n }) as SubtleCrypto['exportKey'];\n\n /**\n * Override `SubtleCrypto#generateKey`\n */\n const originalGenerateKey = originalSubtleCrypto.generateKey as SubtleCrypto['generateKey'] | undefined;\n let originalGenerateKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.generateKey = (async (...args: Parameters<SubtleCrypto['generateKey']>) => {\n const [algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n }\n let optimisticallyGeneratedKeyPair;\n if (originalGenerateKeySupportsEd25519 === undefined) {\n originalGenerateKeySupportsEd25519 = new Promise(resolve => {\n if (!originalGenerateKey) {\n resolve((originalGenerateKeySupportsEd25519 = false));\n return;\n }\n originalGenerateKey\n .apply(originalSubtleCrypto, args)\n .then(keyPair => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was installed in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider installing this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.generateKey !== originalGenerateKey) {\n originalSubtleCrypto.generateKey = originalGenerateKey;\n }\n optimisticallyGeneratedKeyPair = keyPair;\n resolve((originalGenerateKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalGenerateKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalGenerateKeySupportsEd25519 === 'boolean'\n ? originalGenerateKeySupportsEd25519\n : await originalGenerateKeySupportsEd25519\n ) {\n if (optimisticallyGeneratedKeyPair) {\n return optimisticallyGeneratedKeyPair;\n } else if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n } else {\n const [_, extractable, keyUsages] = args;\n return generateKeyPolyfill(extractable, keyUsages);\n }\n }) as SubtleCrypto['generateKey'];\n\n /**\n * Override `SubtleCrypto#sign`\n */\n const originalSign = originalSubtleCrypto.sign as SubtleCrypto['sign'] | undefined;\n originalSubtleCrypto.sign = (async (...args: Parameters<SubtleCrypto['sign']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await signPolyfill(...rest);\n } else if (originalSign) {\n return await originalSign.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `sign` function exists to handle this call');\n }\n }) as SubtleCrypto['sign'];\n\n /**\n * Override `SubtleCrypto#verify`\n */\n const originalVerify = originalSubtleCrypto.verify as SubtleCrypto['verify'] | undefined;\n originalSubtleCrypto.verify = (async (...args: Parameters<SubtleCrypto['verify']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await verifyPolyfill(...rest);\n } else if (originalVerify) {\n return await originalVerify.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `verify` function exists to handle this call');\n }\n }) as SubtleCrypto['verify'];\n\n /**\n * Override `SubtleCrypto#importKey`\n */\n const originalImportKey = originalSubtleCrypto.importKey as SubtleCrypto['importKey'] | undefined;\n let originalImportKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.importKey = (async (...args: Parameters<SubtleCrypto['importKey']>) => {\n const [format, keyData, algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n }\n let optimisticallyImportedKey;\n if (originalImportKeySupportsEd25519 === undefined) {\n originalImportKeySupportsEd25519 = new Promise(resolve => {\n if (!originalImportKey) {\n resolve((originalImportKeySupportsEd25519 = false));\n return;\n }\n originalImportKey\n .apply(originalSubtleCrypto, args)\n .then(key => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was included in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider including this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.importKey !== originalImportKey) {\n originalSubtleCrypto.importKey = originalImportKey;\n }\n optimisticallyImportedKey = key;\n resolve((originalImportKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalImportKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalImportKey === 'boolean'\n ? originalImportKeySupportsEd25519\n : await originalImportKeySupportsEd25519\n ) {\n if (optimisticallyImportedKey) {\n return optimisticallyImportedKey;\n } else if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n } else {\n const [_format, _keyData, _algorithm, extractable, keyUsages] = args;\n return importKeyPolyfill(format, keyData, extractable, keyUsages);\n }\n }) as SubtleCrypto['importKey'];\n }\n}\n"]}
|
package/dist/index.node.mjs
CHANGED
|
@@ -112,6 +112,14 @@ async function getPublicKeyBytes(key) {
|
|
|
112
112
|
publicKeyStore.set(key, publicKeyBytes);
|
|
113
113
|
return publicKeyBytes;
|
|
114
114
|
}
|
|
115
|
+
function base64UrlEncode(bytes) {
|
|
116
|
+
return btoa(Array.from(bytes, (b) => String.fromCharCode(b)).join("")).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
117
|
+
}
|
|
118
|
+
function base64UrlDecode(value) {
|
|
119
|
+
const m = value.length % 4;
|
|
120
|
+
const base64Value = value.replace(/-/g, "+").replace(/_/g, "/").padEnd(value.length + (m === 0 ? 0 : 4 - m), "=");
|
|
121
|
+
return Uint8Array.from(atob(base64Value), (c) => c.charCodeAt(0));
|
|
122
|
+
}
|
|
115
123
|
async function exportKeyPolyfill(format, key) {
|
|
116
124
|
if (key.extractable === false) {
|
|
117
125
|
throw new DOMException("key is not extractable", "InvalidAccessException");
|
|
@@ -131,6 +139,24 @@ async function exportKeyPolyfill(format, key) {
|
|
|
131
139
|
const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
|
|
132
140
|
return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);
|
|
133
141
|
}
|
|
142
|
+
case "jwk": {
|
|
143
|
+
const publicKeyBytes = await getPublicKeyBytes(key);
|
|
144
|
+
const base = {
|
|
145
|
+
crv: "Ed25519",
|
|
146
|
+
ext: key.extractable,
|
|
147
|
+
key_ops: key.usages,
|
|
148
|
+
kty: "OKP",
|
|
149
|
+
x: base64UrlEncode(publicKeyBytes)
|
|
150
|
+
};
|
|
151
|
+
if (key.type === "private") {
|
|
152
|
+
const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
|
|
153
|
+
return Object.freeze({
|
|
154
|
+
...base,
|
|
155
|
+
d: base64UrlEncode(secretKeyBytes)
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return Object.freeze({ ...base });
|
|
159
|
+
}
|
|
134
160
|
default:
|
|
135
161
|
throw new Error(`Exporting polyfilled Ed25519 keys in the "${format}" format is unimplemented`);
|
|
136
162
|
}
|
|
@@ -163,12 +189,19 @@ async function verifyPolyfill(key, signature, data) {
|
|
|
163
189
|
return false;
|
|
164
190
|
}
|
|
165
191
|
}
|
|
192
|
+
function assertValidKeyUsages(keyUsages, type) {
|
|
193
|
+
const prohibitedKeyUses = /* @__PURE__ */ new Set([
|
|
194
|
+
...type === "private" ? ["verify"] : ["sign"],
|
|
195
|
+
...PROHIBITED_KEY_USAGES
|
|
196
|
+
]);
|
|
197
|
+
if (keyUsages.some((usage) => prohibitedKeyUses.has(usage))) {
|
|
198
|
+
throw new DOMException("Unsupported key usage for a Ed25519 key", "SyntaxError");
|
|
199
|
+
}
|
|
200
|
+
}
|
|
166
201
|
function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
167
|
-
const bytes = bufferSourceToUint8Array(keyData);
|
|
168
202
|
if (format === "raw") {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
203
|
+
const bytes = bufferSourceToUint8Array(keyData);
|
|
204
|
+
assertValidKeyUsages(keyUsages, "public");
|
|
172
205
|
if (bytes.length !== 32) {
|
|
173
206
|
throw new DOMException("Ed25519 raw keys must be exactly 32-bytes", "DataError");
|
|
174
207
|
}
|
|
@@ -184,9 +217,8 @@ function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
|
184
217
|
return publicKey;
|
|
185
218
|
}
|
|
186
219
|
if (format === "pkcs8") {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
220
|
+
const bytes = bufferSourceToUint8Array(keyData);
|
|
221
|
+
assertValidKeyUsages(keyUsages, "private");
|
|
190
222
|
if (bytes.length !== 48) {
|
|
191
223
|
throw new DOMException("Invalid keyData", "DataError");
|
|
192
224
|
}
|
|
@@ -206,6 +238,38 @@ function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
|
206
238
|
cache.set(privateKey, secretKeyBytes);
|
|
207
239
|
return privateKey;
|
|
208
240
|
}
|
|
241
|
+
if (format === "jwk") {
|
|
242
|
+
const jwk = keyData;
|
|
243
|
+
const type = "d" in jwk ? "private" : "public";
|
|
244
|
+
assertValidKeyUsages(keyUsages, type);
|
|
245
|
+
const keyOps = new Set(jwk.key_ops ?? []);
|
|
246
|
+
const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every((x) => keyOps.has(x));
|
|
247
|
+
if (jwk.kty !== "OKP" || jwk.crv !== "Ed25519" || jwk.ext !== extractable || !sameKeyUsages) {
|
|
248
|
+
throw new DOMException("Invalid Ed25519 JWK", "DataError");
|
|
249
|
+
}
|
|
250
|
+
if (type === "public" && !jwk.x) {
|
|
251
|
+
throw new DOMException("Ed25519 JWK is missing public key coordinates", "DataError");
|
|
252
|
+
}
|
|
253
|
+
if (type === "private" && !jwk.d) {
|
|
254
|
+
throw new DOMException("Ed25519 JWK is missing private key coordinates", "DataError");
|
|
255
|
+
}
|
|
256
|
+
const usageToKeep = type === "public" ? "verify" : "sign";
|
|
257
|
+
const key = Object.freeze({
|
|
258
|
+
[Symbol.toStringTag]: "CryptoKey",
|
|
259
|
+
algorithm: Object.freeze({ name: "Ed25519" }),
|
|
260
|
+
extractable,
|
|
261
|
+
type,
|
|
262
|
+
usages: Object.freeze(keyUsages.filter((usage) => usage === usageToKeep))
|
|
263
|
+
});
|
|
264
|
+
if (type === "public") {
|
|
265
|
+
const cache = publicKeyBytesStore ||= /* @__PURE__ */ new WeakMap();
|
|
266
|
+
cache.set(key, base64UrlDecode(jwk.x));
|
|
267
|
+
} else {
|
|
268
|
+
const cache = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= /* @__PURE__ */ new WeakMap();
|
|
269
|
+
cache.set(key, base64UrlDecode(jwk.d));
|
|
270
|
+
}
|
|
271
|
+
return key;
|
|
272
|
+
}
|
|
209
273
|
throw new Error(`Importing Ed25519 keys in the "${format}" format is unimplemented`);
|
|
210
274
|
}
|
|
211
275
|
|
|
@@ -349,9 +413,6 @@ function install() {
|
|
|
349
413
|
}
|
|
350
414
|
}
|
|
351
415
|
|
|
352
|
-
|
|
353
|
-
var src_default = install;
|
|
354
|
-
|
|
355
|
-
export { src_default as default };
|
|
416
|
+
export { install };
|
|
356
417
|
//# sourceMappingURL=index.node.mjs.map
|
|
357
418
|
//# sourceMappingURL=index.node.mjs.map
|