@noble/curves 1.9.5 → 2.0.0-beta.1

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.
Files changed (211) hide show
  1. package/README.md +267 -421
  2. package/abstract/bls.d.ts +49 -111
  3. package/abstract/bls.d.ts.map +1 -1
  4. package/abstract/bls.js +108 -152
  5. package/abstract/bls.js.map +1 -1
  6. package/abstract/curve.d.ts +7 -48
  7. package/abstract/curve.d.ts.map +1 -1
  8. package/abstract/curve.js +22 -47
  9. package/abstract/curve.js.map +1 -1
  10. package/abstract/edwards.d.ts +17 -68
  11. package/abstract/edwards.d.ts.map +1 -1
  12. package/abstract/edwards.js +98 -175
  13. package/abstract/edwards.js.map +1 -1
  14. package/abstract/fft.js +14 -27
  15. package/abstract/fft.js.map +1 -1
  16. package/abstract/hash-to-curve.d.ts +11 -24
  17. package/abstract/hash-to-curve.d.ts.map +1 -1
  18. package/abstract/hash-to-curve.js +30 -35
  19. package/abstract/hash-to-curve.js.map +1 -1
  20. package/abstract/modular.d.ts +5 -17
  21. package/abstract/modular.d.ts.map +1 -1
  22. package/abstract/modular.js +166 -167
  23. package/abstract/modular.js.map +1 -1
  24. package/abstract/montgomery.d.ts +4 -9
  25. package/abstract/montgomery.d.ts.map +1 -1
  26. package/abstract/montgomery.js +17 -20
  27. package/abstract/montgomery.js.map +1 -1
  28. package/abstract/oprf.d.ts +282 -0
  29. package/abstract/oprf.d.ts.map +1 -0
  30. package/abstract/oprf.js +297 -0
  31. package/abstract/oprf.js.map +1 -0
  32. package/abstract/poseidon.js +20 -24
  33. package/abstract/poseidon.js.map +1 -1
  34. package/abstract/tower.d.ts +9 -7
  35. package/abstract/tower.d.ts.map +1 -1
  36. package/abstract/tower.js +600 -364
  37. package/abstract/tower.js.map +1 -1
  38. package/abstract/weierstrass.d.ts +12 -145
  39. package/abstract/weierstrass.d.ts.map +1 -1
  40. package/abstract/weierstrass.js +153 -377
  41. package/abstract/weierstrass.js.map +1 -1
  42. package/bls12-381.d.ts +2 -2
  43. package/bls12-381.d.ts.map +1 -1
  44. package/bls12-381.js +174 -216
  45. package/bls12-381.js.map +1 -1
  46. package/bn254.d.ts +58 -10
  47. package/bn254.d.ts.map +1 -1
  48. package/bn254.js +70 -130
  49. package/bn254.js.map +1 -1
  50. package/ed25519.d.ts +12 -31
  51. package/ed25519.d.ts.map +1 -1
  52. package/ed25519.js +104 -146
  53. package/ed25519.js.map +1 -1
  54. package/ed448.d.ts +14 -33
  55. package/ed448.d.ts.map +1 -1
  56. package/ed448.js +105 -132
  57. package/ed448.js.map +1 -1
  58. package/index.js +1 -1
  59. package/misc.d.ts +10 -14
  60. package/misc.d.ts.map +1 -1
  61. package/misc.js +51 -60
  62. package/misc.js.map +1 -1
  63. package/nist.d.ts +11 -14
  64. package/nist.d.ts.map +1 -1
  65. package/nist.js +46 -55
  66. package/nist.js.map +1 -1
  67. package/package.json +9 -224
  68. package/secp256k1.d.ts +7 -23
  69. package/secp256k1.d.ts.map +1 -1
  70. package/secp256k1.js +72 -83
  71. package/secp256k1.js.map +1 -1
  72. package/src/abstract/bls.ts +197 -344
  73. package/src/abstract/curve.ts +10 -83
  74. package/src/abstract/edwards.ts +96 -223
  75. package/src/abstract/hash-to-curve.ts +32 -45
  76. package/src/abstract/modular.ts +144 -130
  77. package/src/abstract/montgomery.ts +21 -22
  78. package/src/abstract/oprf.ts +600 -0
  79. package/src/abstract/tower.ts +627 -382
  80. package/src/abstract/weierstrass.ts +101 -482
  81. package/src/bls12-381.ts +148 -176
  82. package/src/bn254.ts +67 -122
  83. package/src/ed25519.ts +65 -118
  84. package/src/ed448.ts +63 -113
  85. package/src/index.ts +1 -1
  86. package/src/misc.ts +66 -49
  87. package/src/nist.ts +48 -57
  88. package/src/secp256k1.ts +56 -88
  89. package/src/utils.ts +41 -61
  90. package/src/webcrypto.ts +362 -0
  91. package/utils.d.ts +28 -19
  92. package/utils.d.ts.map +1 -1
  93. package/utils.js +45 -121
  94. package/utils.js.map +1 -1
  95. package/webcrypto.d.ts +47 -0
  96. package/webcrypto.d.ts.map +1 -0
  97. package/webcrypto.js +231 -0
  98. package/webcrypto.js.map +1 -0
  99. package/esm/_shortw_utils.d.ts +0 -19
  100. package/esm/_shortw_utils.d.ts.map +0 -1
  101. package/esm/_shortw_utils.js +0 -16
  102. package/esm/_shortw_utils.js.map +0 -1
  103. package/esm/abstract/bls.d.ts +0 -190
  104. package/esm/abstract/bls.d.ts.map +0 -1
  105. package/esm/abstract/bls.js +0 -408
  106. package/esm/abstract/bls.js.map +0 -1
  107. package/esm/abstract/curve.d.ts +0 -231
  108. package/esm/abstract/curve.d.ts.map +0 -1
  109. package/esm/abstract/curve.js +0 -465
  110. package/esm/abstract/curve.js.map +0 -1
  111. package/esm/abstract/edwards.d.ts +0 -237
  112. package/esm/abstract/edwards.d.ts.map +0 -1
  113. package/esm/abstract/edwards.js +0 -632
  114. package/esm/abstract/edwards.js.map +0 -1
  115. package/esm/abstract/fft.d.ts +0 -122
  116. package/esm/abstract/fft.d.ts.map +0 -1
  117. package/esm/abstract/fft.js +0 -425
  118. package/esm/abstract/fft.js.map +0 -1
  119. package/esm/abstract/hash-to-curve.d.ts +0 -102
  120. package/esm/abstract/hash-to-curve.d.ts.map +0 -1
  121. package/esm/abstract/hash-to-curve.js +0 -203
  122. package/esm/abstract/hash-to-curve.js.map +0 -1
  123. package/esm/abstract/modular.d.ts +0 -171
  124. package/esm/abstract/modular.d.ts.map +0 -1
  125. package/esm/abstract/modular.js +0 -530
  126. package/esm/abstract/modular.js.map +0 -1
  127. package/esm/abstract/montgomery.d.ts +0 -30
  128. package/esm/abstract/montgomery.d.ts.map +0 -1
  129. package/esm/abstract/montgomery.js +0 -157
  130. package/esm/abstract/montgomery.js.map +0 -1
  131. package/esm/abstract/poseidon.d.ts +0 -68
  132. package/esm/abstract/poseidon.d.ts.map +0 -1
  133. package/esm/abstract/poseidon.js +0 -296
  134. package/esm/abstract/poseidon.js.map +0 -1
  135. package/esm/abstract/tower.d.ts +0 -93
  136. package/esm/abstract/tower.d.ts.map +0 -1
  137. package/esm/abstract/tower.js +0 -502
  138. package/esm/abstract/tower.js.map +0 -1
  139. package/esm/abstract/utils.d.ts +0 -5
  140. package/esm/abstract/utils.d.ts.map +0 -1
  141. package/esm/abstract/utils.js +0 -7
  142. package/esm/abstract/utils.js.map +0 -1
  143. package/esm/abstract/weierstrass.d.ts +0 -412
  144. package/esm/abstract/weierstrass.d.ts.map +0 -1
  145. package/esm/abstract/weierstrass.js +0 -1428
  146. package/esm/abstract/weierstrass.js.map +0 -1
  147. package/esm/bls12-381.d.ts +0 -16
  148. package/esm/bls12-381.d.ts.map +0 -1
  149. package/esm/bls12-381.js +0 -738
  150. package/esm/bls12-381.js.map +0 -1
  151. package/esm/bn254.d.ts +0 -18
  152. package/esm/bn254.d.ts.map +0 -1
  153. package/esm/bn254.js +0 -246
  154. package/esm/bn254.js.map +0 -1
  155. package/esm/ed25519.d.ts +0 -106
  156. package/esm/ed25519.d.ts.map +0 -1
  157. package/esm/ed25519.js +0 -467
  158. package/esm/ed25519.js.map +0 -1
  159. package/esm/ed448.d.ts +0 -101
  160. package/esm/ed448.d.ts.map +0 -1
  161. package/esm/ed448.js +0 -448
  162. package/esm/ed448.js.map +0 -1
  163. package/esm/index.d.ts +0 -2
  164. package/esm/index.d.ts.map +0 -1
  165. package/esm/index.js +0 -17
  166. package/esm/index.js.map +0 -1
  167. package/esm/jubjub.d.ts +0 -12
  168. package/esm/jubjub.d.ts.map +0 -1
  169. package/esm/jubjub.js +0 -12
  170. package/esm/jubjub.js.map +0 -1
  171. package/esm/misc.d.ts +0 -19
  172. package/esm/misc.d.ts.map +0 -1
  173. package/esm/misc.js +0 -109
  174. package/esm/misc.js.map +0 -1
  175. package/esm/nist.d.ts +0 -21
  176. package/esm/nist.d.ts.map +0 -1
  177. package/esm/nist.js +0 -132
  178. package/esm/nist.js.map +0 -1
  179. package/esm/p256.d.ts +0 -16
  180. package/esm/p256.d.ts.map +0 -1
  181. package/esm/p256.js +0 -16
  182. package/esm/p256.js.map +0 -1
  183. package/esm/p384.d.ts +0 -16
  184. package/esm/p384.d.ts.map +0 -1
  185. package/esm/p384.js +0 -16
  186. package/esm/p384.js.map +0 -1
  187. package/esm/p521.d.ts +0 -16
  188. package/esm/p521.d.ts.map +0 -1
  189. package/esm/p521.js +0 -16
  190. package/esm/p521.js.map +0 -1
  191. package/esm/package.json +0 -4
  192. package/esm/pasta.d.ts +0 -10
  193. package/esm/pasta.d.ts.map +0 -1
  194. package/esm/pasta.js +0 -10
  195. package/esm/pasta.js.map +0 -1
  196. package/esm/secp256k1.d.ts +0 -89
  197. package/esm/secp256k1.d.ts.map +0 -1
  198. package/esm/secp256k1.js +0 -292
  199. package/esm/secp256k1.js.map +0 -1
  200. package/esm/utils.d.ts +0 -110
  201. package/esm/utils.d.ts.map +0 -1
  202. package/esm/utils.js +0 -322
  203. package/esm/utils.js.map +0 -1
  204. package/src/_shortw_utils.ts +0 -21
  205. package/src/abstract/utils.ts +0 -7
  206. package/src/jubjub.ts +0 -12
  207. package/src/p256.ts +0 -15
  208. package/src/p384.ts +0 -15
  209. package/src/p521.ts +0 -15
  210. package/src/package.json +0 -3
  211. package/src/pasta.ts +0 -9
@@ -1,412 +0,0 @@
1
- import { type CHash, type Hex, type PrivKey } from '../utils.ts';
2
- import { type AffinePoint, type BasicCurve, type CurveLengths, type CurvePoint, type CurvePointCons } from './curve.ts';
3
- import { type IField, type NLength } from './modular.ts';
4
- export type { AffinePoint };
5
- export type HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;
6
- type EndoBasis = [[bigint, bigint], [bigint, bigint]];
7
- /**
8
- * When Weierstrass curve has `a=0`, it becomes Koblitz curve.
9
- * Koblitz curves allow using **efficiently-computable GLV endomorphism ψ**.
10
- * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.
11
- * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.
12
- *
13
- * Endomorphism consists of beta, lambda and splitScalar:
14
- *
15
- * 1. GLV endomorphism ψ transforms a point: `P = (x, y) ↦ ψ(P) = (β·x mod p, y)`
16
- * 2. GLV scalar decomposition transforms a scalar: `k ≡ k₁ + k₂·λ (mod n)`
17
- * 3. Then these are combined: `k·P = k₁·P + k₂·ψ(P)`
18
- * 4. Two 128-bit point-by-scalar multiplications + one point addition is faster than
19
- * one 256-bit multiplication.
20
- *
21
- * where
22
- * * beta: β ∈ Fₚ with β³ = 1, β ≠ 1
23
- * * lambda: λ ∈ Fₙ with λ³ = 1, λ ≠ 1
24
- * * splitScalar decomposes k ↦ k₁, k₂, by using reduced basis vectors.
25
- * Gauss lattice reduction calculates them from initial basis vectors `(n, 0), (-λ, 0)`
26
- *
27
- * Check out `test/misc/endomorphism.js` and
28
- * [gist](https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066).
29
- */
30
- export type EndomorphismOpts = {
31
- beta: bigint;
32
- basises?: EndoBasis;
33
- splitScalar?: (k: bigint) => {
34
- k1neg: boolean;
35
- k1: bigint;
36
- k2neg: boolean;
37
- k2: bigint;
38
- };
39
- };
40
- export type ScalarEndoParts = {
41
- k1neg: boolean;
42
- k1: bigint;
43
- k2neg: boolean;
44
- k2: bigint;
45
- };
46
- /**
47
- * Splits scalar for GLV endomorphism.
48
- */
49
- export declare function _splitEndoScalar(k: bigint, basis: EndoBasis, n: bigint): ScalarEndoParts;
50
- export type ECDSASigFormat = 'compact' | 'recovered' | 'der';
51
- export type ECDSARecoverOpts = {
52
- prehash?: boolean;
53
- };
54
- export type ECDSAVerifyOpts = {
55
- prehash?: boolean;
56
- lowS?: boolean;
57
- format?: ECDSASigFormat;
58
- };
59
- export type ECDSASignOpts = {
60
- prehash?: boolean;
61
- lowS?: boolean;
62
- format?: ECDSASigFormat;
63
- extraEntropy?: Uint8Array | boolean;
64
- };
65
- /** Instance methods for 3D XYZ projective points. */
66
- export interface WeierstrassPoint<T> extends CurvePoint<T, WeierstrassPoint<T>> {
67
- /** projective X coordinate. Different from affine x. */
68
- readonly X: T;
69
- /** projective Y coordinate. Different from affine y. */
70
- readonly Y: T;
71
- /** projective z coordinate */
72
- readonly Z: T;
73
- /** affine x coordinate. Different from projective X. */
74
- get x(): T;
75
- /** affine y coordinate. Different from projective Y. */
76
- get y(): T;
77
- /** Encodes point using IEEE P1363 (DER) encoding. First byte is 2/3/4. Default = isCompressed. */
78
- toBytes(isCompressed?: boolean): Uint8Array;
79
- toHex(isCompressed?: boolean): string;
80
- /** @deprecated use `.X` */
81
- readonly px: T;
82
- /** @deprecated use `.Y` */
83
- readonly py: T;
84
- /** @deprecated use `.Z` */
85
- readonly pz: T;
86
- /** @deprecated use `toBytes` */
87
- toRawBytes(isCompressed?: boolean): Uint8Array;
88
- /** @deprecated use `multiplyUnsafe` */
89
- multiplyAndAddUnsafe(Q: WeierstrassPoint<T>, a: bigint, b: bigint): WeierstrassPoint<T> | undefined;
90
- /** @deprecated use `p.y % 2n === 0n` */
91
- hasEvenY(): boolean;
92
- /** @deprecated use `p.precompute(windowSize)` */
93
- _setWindowSize(windowSize: number): void;
94
- }
95
- /** Static methods for 3D XYZ projective points. */
96
- export interface WeierstrassPointCons<T> extends CurvePointCons<WeierstrassPoint<T>> {
97
- /** Does NOT validate if the point is valid. Use `.assertValidity()`. */
98
- new (X: T, Y: T, Z: T): WeierstrassPoint<T>;
99
- CURVE(): WeierstrassOpts<T>;
100
- /** @deprecated use `Point.BASE.multiply(Point.Fn.fromBytes(privateKey))` */
101
- fromPrivateKey(privateKey: PrivKey): WeierstrassPoint<T>;
102
- /** @deprecated use `import { normalizeZ } from '@noble/curves/abstract/curve.js';` */
103
- normalizeZ(points: WeierstrassPoint<T>[]): WeierstrassPoint<T>[];
104
- /** @deprecated use `import { pippenger } from '@noble/curves/abstract/curve.js';` */
105
- msm(points: WeierstrassPoint<T>[], scalars: bigint[]): WeierstrassPoint<T>;
106
- }
107
- /**
108
- * Weierstrass curve options.
109
- *
110
- * * p: prime characteristic (order) of finite field, in which arithmetics is done
111
- * * n: order of prime subgroup a.k.a total amount of valid curve points
112
- * * h: cofactor, usually 1. h*n is group order; n is subgroup order
113
- * * a: formula param, must be in field of p
114
- * * b: formula param, must be in field of p
115
- * * Gx: x coordinate of generator point a.k.a. base point
116
- * * Gy: y coordinate of generator point
117
- */
118
- export type WeierstrassOpts<T> = Readonly<{
119
- p: bigint;
120
- n: bigint;
121
- h: bigint;
122
- a: T;
123
- b: T;
124
- Gx: T;
125
- Gy: T;
126
- }>;
127
- export type WeierstrassExtraOpts<T> = Partial<{
128
- Fp: IField<T>;
129
- Fn: IField<bigint>;
130
- allowInfinityPoint: boolean;
131
- endo: EndomorphismOpts;
132
- isTorsionFree: (c: WeierstrassPointCons<T>, point: WeierstrassPoint<T>) => boolean;
133
- clearCofactor: (c: WeierstrassPointCons<T>, point: WeierstrassPoint<T>) => WeierstrassPoint<T>;
134
- fromBytes: (bytes: Uint8Array) => AffinePoint<T>;
135
- toBytes: (c: WeierstrassPointCons<T>, point: WeierstrassPoint<T>, isCompressed: boolean) => Uint8Array;
136
- }>;
137
- /**
138
- * Options for ECDSA signatures over a Weierstrass curve.
139
- *
140
- * * lowS: (default: true) whether produced / verified signatures occupy low half of ecdsaOpts.p. Prevents malleability.
141
- * * hmac: (default: noble-hashes hmac) function, would be used to init hmac-drbg for k generation.
142
- * * randomBytes: (default: webcrypto os-level CSPRNG) custom method for fetching secure randomness.
143
- * * bits2int, bits2int_modN: used in sigs, sometimes overridden by curves
144
- */
145
- export type ECDSAOpts = Partial<{
146
- lowS: boolean;
147
- hmac: HmacFnSync;
148
- randomBytes: (bytesLength?: number) => Uint8Array;
149
- bits2int: (bytes: Uint8Array) => bigint;
150
- bits2int_modN: (bytes: Uint8Array) => bigint;
151
- }>;
152
- /**
153
- * Elliptic Curve Diffie-Hellman interface.
154
- * Provides keygen, secret-to-public conversion, calculating shared secrets.
155
- */
156
- export interface ECDH {
157
- keygen: (seed?: Uint8Array) => {
158
- secretKey: Uint8Array;
159
- publicKey: Uint8Array;
160
- };
161
- getPublicKey: (secretKey: PrivKey, isCompressed?: boolean) => Uint8Array;
162
- getSharedSecret: (secretKeyA: PrivKey, publicKeyB: Hex, isCompressed?: boolean) => Uint8Array;
163
- Point: WeierstrassPointCons<bigint>;
164
- utils: {
165
- isValidSecretKey: (secretKey: PrivKey) => boolean;
166
- isValidPublicKey: (publicKey: Uint8Array, isCompressed?: boolean) => boolean;
167
- randomSecretKey: (seed?: Uint8Array) => Uint8Array;
168
- /** @deprecated use `randomSecretKey` */
169
- randomPrivateKey: (seed?: Uint8Array) => Uint8Array;
170
- /** @deprecated use `isValidSecretKey` */
171
- isValidPrivateKey: (secretKey: PrivKey) => boolean;
172
- /** @deprecated use `Point.Fn.fromBytes()` */
173
- normPrivateKeyToScalar: (key: PrivKey) => bigint;
174
- /** @deprecated use `point.precompute()` */
175
- precompute: (windowSize?: number, point?: WeierstrassPoint<bigint>) => WeierstrassPoint<bigint>;
176
- };
177
- lengths: CurveLengths;
178
- }
179
- /**
180
- * ECDSA interface.
181
- * Only supported for prime fields, not Fp2 (extension fields).
182
- */
183
- export interface ECDSA extends ECDH {
184
- sign: (message: Hex, secretKey: PrivKey, opts?: ECDSASignOpts) => ECDSASigRecovered;
185
- verify: (signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array, opts?: ECDSAVerifyOpts) => boolean;
186
- recoverPublicKey(signature: Uint8Array, message: Uint8Array, opts?: ECDSARecoverOpts): Uint8Array;
187
- Signature: ECDSASignatureCons;
188
- }
189
- export declare class DERErr extends Error {
190
- constructor(m?: string);
191
- }
192
- export type IDER = {
193
- Err: typeof DERErr;
194
- _tlv: {
195
- encode: (tag: number, data: string) => string;
196
- decode(tag: number, data: Uint8Array): {
197
- v: Uint8Array;
198
- l: Uint8Array;
199
- };
200
- };
201
- _int: {
202
- encode(num: bigint): string;
203
- decode(data: Uint8Array): bigint;
204
- };
205
- toSig(hex: string | Uint8Array): {
206
- r: bigint;
207
- s: bigint;
208
- };
209
- hexFromSig(sig: {
210
- r: bigint;
211
- s: bigint;
212
- }): string;
213
- };
214
- /**
215
- * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:
216
- *
217
- * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]
218
- *
219
- * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html
220
- */
221
- export declare const DER: IDER;
222
- export declare function _normFnElement(Fn: IField<bigint>, key: PrivKey): bigint;
223
- /**
224
- * Creates weierstrass Point constructor, based on specified curve options.
225
- *
226
- * @example
227
- ```js
228
- const opts = {
229
- p: BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'),
230
- n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
231
- h: BigInt(1),
232
- a: BigInt('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc'),
233
- b: BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'),
234
- Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
235
- Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
236
- };
237
- const p256_Point = weierstrass(opts);
238
- ```
239
- */
240
- export declare function weierstrassN<T>(params: WeierstrassOpts<T>, extraOpts?: WeierstrassExtraOpts<T>): WeierstrassPointCons<T>;
241
- /** Methods of ECDSA signature instance. */
242
- export interface ECDSASignature {
243
- readonly r: bigint;
244
- readonly s: bigint;
245
- readonly recovery?: number;
246
- addRecoveryBit(recovery: number): ECDSASigRecovered;
247
- hasHighS(): boolean;
248
- toBytes(format?: string): Uint8Array;
249
- toHex(format?: string): string;
250
- /** @deprecated */
251
- assertValidity(): void;
252
- /** @deprecated */
253
- normalizeS(): ECDSASignature;
254
- /** @deprecated use standalone method `curve.recoverPublicKey(sig.toBytes('recovered'), msg)` */
255
- recoverPublicKey(msgHash: Hex): WeierstrassPoint<bigint>;
256
- /** @deprecated use `.toBytes('compact')` */
257
- toCompactRawBytes(): Uint8Array;
258
- /** @deprecated use `.toBytes('compact')` */
259
- toCompactHex(): string;
260
- /** @deprecated use `.toBytes('der')` */
261
- toDERRawBytes(): Uint8Array;
262
- /** @deprecated use `.toBytes('der')` */
263
- toDERHex(): string;
264
- }
265
- export type ECDSASigRecovered = ECDSASignature & {
266
- readonly recovery: number;
267
- };
268
- /** Methods of ECDSA signature constructor. */
269
- export type ECDSASignatureCons = {
270
- new (r: bigint, s: bigint, recovery?: number): ECDSASignature;
271
- fromBytes(bytes: Uint8Array, format?: ECDSASigFormat): ECDSASignature;
272
- fromHex(hex: string, format?: ECDSASigFormat): ECDSASignature;
273
- /** @deprecated use `.fromBytes(bytes, 'compact')` */
274
- fromCompact(hex: Hex): ECDSASignature;
275
- /** @deprecated use `.fromBytes(bytes, 'der')` */
276
- fromDER(hex: Hex): ECDSASignature;
277
- };
278
- /**
279
- * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.
280
- * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.
281
- * b = True and y = sqrt(u / v) if (u / v) is square in F, and
282
- * b = False and y = sqrt(Z * (u / v)) otherwise.
283
- * @param Fp
284
- * @param Z
285
- * @returns
286
- */
287
- export declare function SWUFpSqrtRatio<T>(Fp: IField<T>, Z: T): (u: T, v: T) => {
288
- isValid: boolean;
289
- value: T;
290
- };
291
- /**
292
- * Simplified Shallue-van de Woestijne-Ulas Method
293
- * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2
294
- */
295
- export declare function mapToCurveSimpleSWU<T>(Fp: IField<T>, opts: {
296
- A: T;
297
- B: T;
298
- Z: T;
299
- }): (u: T) => {
300
- x: T;
301
- y: T;
302
- };
303
- /**
304
- * Sometimes users only need getPublicKey, getSharedSecret, and secret key handling.
305
- * This helper ensures no signature functionality is present. Less code, smaller bundle size.
306
- */
307
- export declare function ecdh(Point: WeierstrassPointCons<bigint>, ecdhOpts?: {
308
- randomBytes?: (bytesLength?: number) => Uint8Array;
309
- }): ECDH;
310
- /**
311
- * Creates ECDSA signing interface for given elliptic curve `Point` and `hash` function.
312
- * We need `hash` for 2 features:
313
- * 1. Message prehash-ing. NOT used if `sign` / `verify` are called with `prehash: false`
314
- * 2. k generation in `sign`, using HMAC-drbg(hash)
315
- *
316
- * ECDSAOpts are only rarely needed.
317
- *
318
- * @example
319
- * ```js
320
- * const p256_Point = weierstrass(...);
321
- * const p256_sha256 = ecdsa(p256_Point, sha256);
322
- * const p256_sha224 = ecdsa(p256_Point, sha224);
323
- * ```
324
- */
325
- export declare function ecdsa(Point: WeierstrassPointCons<bigint>, hash: CHash, ecdsaOpts?: ECDSAOpts): ECDSA;
326
- /** @deprecated */
327
- export type SignatureType = ECDSASignature;
328
- /** @deprecated */
329
- export type RecoveredSignatureType = ECDSASigRecovered;
330
- /** @deprecated */
331
- export type SignatureLike = {
332
- r: bigint;
333
- s: bigint;
334
- };
335
- /** @deprecated use `Uint8Array | boolean` */
336
- export type Entropy = Hex | boolean;
337
- export type BasicWCurve<T> = BasicCurve<T> & {
338
- a: T;
339
- b: T;
340
- allowedPrivateKeyLengths?: readonly number[];
341
- wrapPrivateKey?: boolean;
342
- endo?: EndomorphismOpts;
343
- isTorsionFree?: (c: WeierstrassPointCons<T>, point: WeierstrassPoint<T>) => boolean;
344
- clearCofactor?: (c: WeierstrassPointCons<T>, point: WeierstrassPoint<T>) => WeierstrassPoint<T>;
345
- };
346
- /** @deprecated use ECDSASignOpts */
347
- export type SignOpts = ECDSASignOpts;
348
- /** @deprecated use ECDSASignOpts */
349
- export type VerOpts = ECDSAVerifyOpts;
350
- /** @deprecated use WeierstrassPoint */
351
- export type ProjPointType<T> = WeierstrassPoint<T>;
352
- /** @deprecated use WeierstrassPointCons */
353
- export type ProjConstructor<T> = WeierstrassPointCons<T>;
354
- export type CurvePointsType<T> = BasicWCurve<T> & {
355
- fromBytes?: (bytes: Uint8Array) => AffinePoint<T>;
356
- toBytes?: (c: WeierstrassPointCons<T>, point: WeierstrassPoint<T>, isCompressed: boolean) => Uint8Array;
357
- };
358
- export type CurvePointsTypeWithLength<T> = Readonly<CurvePointsType<T> & Partial<NLength>>;
359
- export type CurvePointsRes<T> = {
360
- Point: WeierstrassPointCons<T>;
361
- /** @deprecated use `Point.CURVE()` */
362
- CURVE: CurvePointsType<T>;
363
- /** @deprecated use `Point` */
364
- ProjectivePoint: WeierstrassPointCons<T>;
365
- /** @deprecated use `Point.Fn.fromBytes(privateKey)` */
366
- normPrivateKeyToScalar: (key: PrivKey) => bigint;
367
- /** @deprecated */
368
- weierstrassEquation: (x: T) => T;
369
- /** @deprecated use `Point.Fn.isValidNot0(num)` */
370
- isWithinCurveOrder: (num: bigint) => boolean;
371
- };
372
- /** @deprecated use `Uint8Array` */
373
- export type PubKey = Hex | WeierstrassPoint<bigint>;
374
- export type CurveType = BasicWCurve<bigint> & {
375
- hash: CHash;
376
- hmac?: HmacFnSync;
377
- randomBytes?: (bytesLength?: number) => Uint8Array;
378
- lowS?: boolean;
379
- bits2int?: (bytes: Uint8Array) => bigint;
380
- bits2int_modN?: (bytes: Uint8Array) => bigint;
381
- };
382
- export type CurveFn = {
383
- /** @deprecated use `Point.CURVE()` */
384
- CURVE: CurvePointsType<bigint>;
385
- keygen: ECDSA['keygen'];
386
- getPublicKey: ECDSA['getPublicKey'];
387
- getSharedSecret: ECDSA['getSharedSecret'];
388
- sign: ECDSA['sign'];
389
- verify: ECDSA['verify'];
390
- Point: WeierstrassPointCons<bigint>;
391
- /** @deprecated use `Point` */
392
- ProjectivePoint: WeierstrassPointCons<bigint>;
393
- Signature: ECDSASignatureCons;
394
- utils: ECDSA['utils'];
395
- lengths: ECDSA['lengths'];
396
- };
397
- /** @deprecated use `weierstrass` in newer releases */
398
- export declare function weierstrassPoints<T>(c: CurvePointsTypeWithLength<T>): CurvePointsRes<T>;
399
- export type WsPointComposed<T> = {
400
- CURVE: WeierstrassOpts<T>;
401
- curveOpts: WeierstrassExtraOpts<T>;
402
- };
403
- export type WsComposed = {
404
- /** @deprecated use `Point.CURVE()` */
405
- CURVE: WeierstrassOpts<bigint>;
406
- hash: CHash;
407
- curveOpts: WeierstrassExtraOpts<bigint>;
408
- ecdsaOpts: ECDSAOpts;
409
- };
410
- export declare function _legacyHelperEquat<T>(Fp: IField<T>, a: T, b: T): (x: T) => T;
411
- export declare function weierstrass(c: CurveType): CurveFn;
412
- //# sourceMappingURL=weierstrass.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weierstrass.d.ts","sourceRoot":"","sources":["../../src/abstract/weierstrass.ts"],"names":[],"mappings":"AA6BA,OAAO,EAkBL,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAOL,KAAK,MAAM,EACX,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,CAAC;AAEpF,KAAK,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF,CAAC;AAKF,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAsBxF;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;CACrC,CAAC;AAuBF,qDAAqD;AACrD,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7E,wDAAwD;IACxD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,wDAAwD;IACxD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,8BAA8B;IAC9B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,wDAAwD;IACxD,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,wDAAwD;IACxD,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,kGAAkG;IAClG,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5C,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEtC,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,gCAAgC;IAChC,UAAU,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/C,uCAAuC;IACvC,oBAAoB,CAClB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACnC,wCAAwC;IACxC,QAAQ,IAAI,OAAO,CAAC;IACpB,iDAAiD;IACjD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,mDAAmD;AACnD,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAClF,wEAAwE;IACxE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5C,KAAK,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACzD,sFAAsF;IACtF,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,qFAAqF;IACrF,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC5E;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,QAAQ,CAAC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,CAAC;IACL,EAAE,EAAE,CAAC,CAAC;IACN,EAAE,EAAE,CAAC,CAAC;CACP,CAAC,CAAC;AAMH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,OAAO,CAAC;IAC5C,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACd,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,aAAa,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACnF,aAAa,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/F,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,CACP,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC1B,YAAY,EAAE,OAAO,KAClB,UAAU,CAAC;CACjB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IAClD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;IACxC,aAAa,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;CAC9C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;IAChF,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC;IACzE,eAAe,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC;IAC9F,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE;QACL,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;QAClD,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAC7E,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;QACnD,wCAAwC;QACxC,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;QACpD,yCAAyC;QACzC,iBAAiB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;QACnD,6CAA6C;QAC7C,sBAAsB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;QACjD,2CAA2C;QAC3C,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC;KACjG,CAAC;IACF,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAM,SAAQ,IAAI;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,iBAAiB,CAAC;IACpF,MAAM,EAAE,CACN,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,EACrB,IAAI,CAAC,EAAE,eAAe,KACnB,OAAO,CAAC;IACb,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAClG,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AACD,qBAAa,MAAO,SAAQ,KAAK;gBACnB,CAAC,SAAK;CAGnB;AACD,MAAM,MAAM,IAAI,GAAG;IAEjB,GAAG,EAAE,OAAO,MAAM,CAAC;IAEnB,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;QAE9C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG;YAAE,CAAC,EAAE,UAAU,CAAC;YAAC,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC;KACzE,CAAC;IAKF,IAAI,EAAE;QACJ,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;KAClC,CAAC;IACF,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,CAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CACnD,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,EAAE,IAoFjB,CAAC;AAMF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAevE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAC1B,SAAS,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACtC,oBAAoB,CAAC,CAAC,CAAC,CA8fzB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACpD,QAAQ,IAAI,OAAO,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACrC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B,kBAAkB;IAClB,cAAc,IAAI,IAAI,CAAC;IACvB,kBAAkB;IAClB,UAAU,IAAI,cAAc,CAAC;IAC7B,gGAAgG;IAChG,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzD,4CAA4C;IAC5C,iBAAiB,IAAI,UAAU,CAAC;IAChC,4CAA4C;IAC5C,YAAY,IAAI,MAAM,CAAC;IACvB,wCAAwC;IACxC,aAAa,IAAI,UAAU,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,IAAI,MAAM,CAAC;CACpB;AACD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AACF,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAC9D,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IAE9D,qDAAqD;IACrD,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,CAAC;IACtC,iDAAiD;IACjD,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,CAAC;CACnC,CAAC;AAOF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EACb,CAAC,EAAE,CAAC,GACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAmEhD;AACD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EACb,IAAI,EAAE;IACJ,CAAC,EAAE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,CAAC;CACN,GACA,CAAC,CAAC,EAAE,CAAC,KAAK;IAAE,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC,EAAE,CAAC,CAAA;CAAE,CAwC1B;AAYD;;;GAGG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACnC,QAAQ,GAAE;IAAE,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,UAAU,CAAA;CAAO,GACpE,IAAI,CAyFN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,KAAK,EACX,SAAS,GAAE,SAAc,GACxB,KAAK,CAsYP;AAGD,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAC3C,kBAAkB;AAClB,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACvD,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACrD,6CAA6C;AAC7C,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG;IAE3C,CAAC,EAAE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,CAAC;IAGL,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAGxB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAEpF,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACjG,CAAC;AACF,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC;AACrC,oCAAoC;AACpC,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC;AAEtC,uCAAuC;AACvC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACnD,2CAA2C;AAC3C,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAGzD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IAChD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,CACR,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC1B,YAAY,EAAE,OAAO,KAClB,UAAU,CAAC;CACjB,CAAC;AAGF,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAG3F,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAE/B,sCAAsC;IACtC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,8BAA8B;IAC9B,eAAe,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACzC,uDAAuD;IACvD,sBAAsB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IACjD,kBAAkB;IAClB,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjC,kDAAkD;IAClD,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C,CAAC;AAUF,mCAAmC;AACnC,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG;IAC5C,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;CAC/C,CAAC;AACF,MAAM,MAAM,OAAO,GAAG;IACpB,sCAAsC;IACtC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACpC,eAAe,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpC,8BAA8B;IAC9B,eAAe,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC3B,CAAC;AACF,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAIvF;AACD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,sCAAsC;IACtC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AA2CF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAW5E;AA+BD,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAKjD"}