@nextera.one/axis-server-sdk 2.2.1 → 2.2.3

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 (49) hide show
  1. package/dist/axis-sensor-GBEI3Fab.d.mts +209 -0
  2. package/dist/axis-sensor-GBEI3Fab.d.ts +209 -0
  3. package/dist/cce/index.d.mts +162 -0
  4. package/dist/cce/index.d.ts +162 -0
  5. package/dist/cce/index.js +1502 -0
  6. package/dist/cce/index.js.map +1 -0
  7. package/dist/cce/index.mjs +1442 -0
  8. package/dist/cce/index.mjs.map +1 -0
  9. package/dist/cce-pipeline-B-zUBHo3.d.mts +294 -0
  10. package/dist/cce-pipeline-DbGBSsCG.d.ts +294 -0
  11. package/dist/idel/index.d.mts +24 -0
  12. package/dist/idel/index.d.ts +24 -0
  13. package/dist/idel/index.js +306 -0
  14. package/dist/idel/index.js.map +1 -0
  15. package/dist/idel/index.mjs +279 -0
  16. package/dist/idel/index.mjs.map +1 -0
  17. package/dist/idel.types-DuUAcOnQ.d.mts +83 -0
  18. package/dist/idel.types-DuUAcOnQ.d.ts +83 -0
  19. package/dist/index-B2G6cbRL.d.mts +824 -0
  20. package/dist/index-DbSxdR0f.d.ts +824 -0
  21. package/dist/index-_S4fmVUJ.d.mts +501 -0
  22. package/dist/index-l3Hhirqb.d.ts +501 -0
  23. package/dist/index.d.mts +77 -1894
  24. package/dist/index.d.ts +77 -1894
  25. package/dist/index.js +10087 -5970
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +10302 -5897
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/needle/index.d.mts +4 -0
  30. package/dist/needle/index.d.ts +4 -0
  31. package/dist/needle/index.js +3499 -0
  32. package/dist/needle/index.js.map +1 -0
  33. package/dist/needle/index.mjs +3528 -0
  34. package/dist/needle/index.mjs.map +1 -0
  35. package/dist/sensors/index.d.mts +5 -0
  36. package/dist/sensors/index.d.ts +5 -0
  37. package/dist/sensors/index.js +12767 -0
  38. package/dist/sensors/index.js.map +1 -0
  39. package/dist/sensors/index.mjs +12835 -0
  40. package/dist/sensors/index.mjs.map +1 -0
  41. package/dist/timeline/index.d.mts +54 -0
  42. package/dist/timeline/index.d.ts +54 -0
  43. package/dist/timeline/index.js +389 -0
  44. package/dist/timeline/index.js.map +1 -0
  45. package/dist/timeline/index.mjs +362 -0
  46. package/dist/timeline/index.mjs.map +1 -0
  47. package/dist/timeline.types-Cn0aqbUj.d.mts +125 -0
  48. package/dist/timeline.types-Cn0aqbUj.d.ts +125 -0
  49. package/package.json +28 -10
@@ -0,0 +1,3499 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+
32
+ // node_modules/tweetnacl/nacl-fast.js
33
+ var require_nacl_fast = __commonJS({
34
+ "node_modules/tweetnacl/nacl-fast.js"(exports2, module2) {
35
+ (function(nacl) {
36
+ "use strict";
37
+ var gf = function(init) {
38
+ var i, r = new Float64Array(16);
39
+ if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
40
+ return r;
41
+ };
42
+ var randombytes = function() {
43
+ throw new Error("no PRNG");
44
+ };
45
+ var _0 = new Uint8Array(16);
46
+ var _9 = new Uint8Array(32);
47
+ _9[0] = 9;
48
+ var gf0 = gf(), gf1 = gf([1]), _121665 = gf([56129, 1]), D = gf([30883, 4953, 19914, 30187, 55467, 16705, 2637, 112, 59544, 30585, 16505, 36039, 65139, 11119, 27886, 20995]), D2 = gf([61785, 9906, 39828, 60374, 45398, 33411, 5274, 224, 53552, 61171, 33010, 6542, 64743, 22239, 55772, 9222]), X = gf([54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553]), Y = gf([26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214]), I = gf([41136, 18958, 6951, 50414, 58488, 44335, 6150, 12099, 55207, 15867, 153, 11085, 57099, 20417, 9344, 11139]);
49
+ function ts64(x, i, h, l) {
50
+ x[i] = h >> 24 & 255;
51
+ x[i + 1] = h >> 16 & 255;
52
+ x[i + 2] = h >> 8 & 255;
53
+ x[i + 3] = h & 255;
54
+ x[i + 4] = l >> 24 & 255;
55
+ x[i + 5] = l >> 16 & 255;
56
+ x[i + 6] = l >> 8 & 255;
57
+ x[i + 7] = l & 255;
58
+ }
59
+ function vn(x, xi, y, yi, n) {
60
+ var i, d = 0;
61
+ for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];
62
+ return (1 & d - 1 >>> 8) - 1;
63
+ }
64
+ function crypto_verify_16(x, xi, y, yi) {
65
+ return vn(x, xi, y, yi, 16);
66
+ }
67
+ function crypto_verify_32(x, xi, y, yi) {
68
+ return vn(x, xi, y, yi, 32);
69
+ }
70
+ function core_salsa20(o, p, k, c) {
71
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
72
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
73
+ for (var i = 0; i < 20; i += 2) {
74
+ u = x0 + x12 | 0;
75
+ x4 ^= u << 7 | u >>> 32 - 7;
76
+ u = x4 + x0 | 0;
77
+ x8 ^= u << 9 | u >>> 32 - 9;
78
+ u = x8 + x4 | 0;
79
+ x12 ^= u << 13 | u >>> 32 - 13;
80
+ u = x12 + x8 | 0;
81
+ x0 ^= u << 18 | u >>> 32 - 18;
82
+ u = x5 + x1 | 0;
83
+ x9 ^= u << 7 | u >>> 32 - 7;
84
+ u = x9 + x5 | 0;
85
+ x13 ^= u << 9 | u >>> 32 - 9;
86
+ u = x13 + x9 | 0;
87
+ x1 ^= u << 13 | u >>> 32 - 13;
88
+ u = x1 + x13 | 0;
89
+ x5 ^= u << 18 | u >>> 32 - 18;
90
+ u = x10 + x6 | 0;
91
+ x14 ^= u << 7 | u >>> 32 - 7;
92
+ u = x14 + x10 | 0;
93
+ x2 ^= u << 9 | u >>> 32 - 9;
94
+ u = x2 + x14 | 0;
95
+ x6 ^= u << 13 | u >>> 32 - 13;
96
+ u = x6 + x2 | 0;
97
+ x10 ^= u << 18 | u >>> 32 - 18;
98
+ u = x15 + x11 | 0;
99
+ x3 ^= u << 7 | u >>> 32 - 7;
100
+ u = x3 + x15 | 0;
101
+ x7 ^= u << 9 | u >>> 32 - 9;
102
+ u = x7 + x3 | 0;
103
+ x11 ^= u << 13 | u >>> 32 - 13;
104
+ u = x11 + x7 | 0;
105
+ x15 ^= u << 18 | u >>> 32 - 18;
106
+ u = x0 + x3 | 0;
107
+ x1 ^= u << 7 | u >>> 32 - 7;
108
+ u = x1 + x0 | 0;
109
+ x2 ^= u << 9 | u >>> 32 - 9;
110
+ u = x2 + x1 | 0;
111
+ x3 ^= u << 13 | u >>> 32 - 13;
112
+ u = x3 + x2 | 0;
113
+ x0 ^= u << 18 | u >>> 32 - 18;
114
+ u = x5 + x4 | 0;
115
+ x6 ^= u << 7 | u >>> 32 - 7;
116
+ u = x6 + x5 | 0;
117
+ x7 ^= u << 9 | u >>> 32 - 9;
118
+ u = x7 + x6 | 0;
119
+ x4 ^= u << 13 | u >>> 32 - 13;
120
+ u = x4 + x7 | 0;
121
+ x5 ^= u << 18 | u >>> 32 - 18;
122
+ u = x10 + x9 | 0;
123
+ x11 ^= u << 7 | u >>> 32 - 7;
124
+ u = x11 + x10 | 0;
125
+ x8 ^= u << 9 | u >>> 32 - 9;
126
+ u = x8 + x11 | 0;
127
+ x9 ^= u << 13 | u >>> 32 - 13;
128
+ u = x9 + x8 | 0;
129
+ x10 ^= u << 18 | u >>> 32 - 18;
130
+ u = x15 + x14 | 0;
131
+ x12 ^= u << 7 | u >>> 32 - 7;
132
+ u = x12 + x15 | 0;
133
+ x13 ^= u << 9 | u >>> 32 - 9;
134
+ u = x13 + x12 | 0;
135
+ x14 ^= u << 13 | u >>> 32 - 13;
136
+ u = x14 + x13 | 0;
137
+ x15 ^= u << 18 | u >>> 32 - 18;
138
+ }
139
+ x0 = x0 + j0 | 0;
140
+ x1 = x1 + j1 | 0;
141
+ x2 = x2 + j2 | 0;
142
+ x3 = x3 + j3 | 0;
143
+ x4 = x4 + j4 | 0;
144
+ x5 = x5 + j5 | 0;
145
+ x6 = x6 + j6 | 0;
146
+ x7 = x7 + j7 | 0;
147
+ x8 = x8 + j8 | 0;
148
+ x9 = x9 + j9 | 0;
149
+ x10 = x10 + j10 | 0;
150
+ x11 = x11 + j11 | 0;
151
+ x12 = x12 + j12 | 0;
152
+ x13 = x13 + j13 | 0;
153
+ x14 = x14 + j14 | 0;
154
+ x15 = x15 + j15 | 0;
155
+ o[0] = x0 >>> 0 & 255;
156
+ o[1] = x0 >>> 8 & 255;
157
+ o[2] = x0 >>> 16 & 255;
158
+ o[3] = x0 >>> 24 & 255;
159
+ o[4] = x1 >>> 0 & 255;
160
+ o[5] = x1 >>> 8 & 255;
161
+ o[6] = x1 >>> 16 & 255;
162
+ o[7] = x1 >>> 24 & 255;
163
+ o[8] = x2 >>> 0 & 255;
164
+ o[9] = x2 >>> 8 & 255;
165
+ o[10] = x2 >>> 16 & 255;
166
+ o[11] = x2 >>> 24 & 255;
167
+ o[12] = x3 >>> 0 & 255;
168
+ o[13] = x3 >>> 8 & 255;
169
+ o[14] = x3 >>> 16 & 255;
170
+ o[15] = x3 >>> 24 & 255;
171
+ o[16] = x4 >>> 0 & 255;
172
+ o[17] = x4 >>> 8 & 255;
173
+ o[18] = x4 >>> 16 & 255;
174
+ o[19] = x4 >>> 24 & 255;
175
+ o[20] = x5 >>> 0 & 255;
176
+ o[21] = x5 >>> 8 & 255;
177
+ o[22] = x5 >>> 16 & 255;
178
+ o[23] = x5 >>> 24 & 255;
179
+ o[24] = x6 >>> 0 & 255;
180
+ o[25] = x6 >>> 8 & 255;
181
+ o[26] = x6 >>> 16 & 255;
182
+ o[27] = x6 >>> 24 & 255;
183
+ o[28] = x7 >>> 0 & 255;
184
+ o[29] = x7 >>> 8 & 255;
185
+ o[30] = x7 >>> 16 & 255;
186
+ o[31] = x7 >>> 24 & 255;
187
+ o[32] = x8 >>> 0 & 255;
188
+ o[33] = x8 >>> 8 & 255;
189
+ o[34] = x8 >>> 16 & 255;
190
+ o[35] = x8 >>> 24 & 255;
191
+ o[36] = x9 >>> 0 & 255;
192
+ o[37] = x9 >>> 8 & 255;
193
+ o[38] = x9 >>> 16 & 255;
194
+ o[39] = x9 >>> 24 & 255;
195
+ o[40] = x10 >>> 0 & 255;
196
+ o[41] = x10 >>> 8 & 255;
197
+ o[42] = x10 >>> 16 & 255;
198
+ o[43] = x10 >>> 24 & 255;
199
+ o[44] = x11 >>> 0 & 255;
200
+ o[45] = x11 >>> 8 & 255;
201
+ o[46] = x11 >>> 16 & 255;
202
+ o[47] = x11 >>> 24 & 255;
203
+ o[48] = x12 >>> 0 & 255;
204
+ o[49] = x12 >>> 8 & 255;
205
+ o[50] = x12 >>> 16 & 255;
206
+ o[51] = x12 >>> 24 & 255;
207
+ o[52] = x13 >>> 0 & 255;
208
+ o[53] = x13 >>> 8 & 255;
209
+ o[54] = x13 >>> 16 & 255;
210
+ o[55] = x13 >>> 24 & 255;
211
+ o[56] = x14 >>> 0 & 255;
212
+ o[57] = x14 >>> 8 & 255;
213
+ o[58] = x14 >>> 16 & 255;
214
+ o[59] = x14 >>> 24 & 255;
215
+ o[60] = x15 >>> 0 & 255;
216
+ o[61] = x15 >>> 8 & 255;
217
+ o[62] = x15 >>> 16 & 255;
218
+ o[63] = x15 >>> 24 & 255;
219
+ }
220
+ function core_hsalsa20(o, p, k, c) {
221
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
222
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
223
+ for (var i = 0; i < 20; i += 2) {
224
+ u = x0 + x12 | 0;
225
+ x4 ^= u << 7 | u >>> 32 - 7;
226
+ u = x4 + x0 | 0;
227
+ x8 ^= u << 9 | u >>> 32 - 9;
228
+ u = x8 + x4 | 0;
229
+ x12 ^= u << 13 | u >>> 32 - 13;
230
+ u = x12 + x8 | 0;
231
+ x0 ^= u << 18 | u >>> 32 - 18;
232
+ u = x5 + x1 | 0;
233
+ x9 ^= u << 7 | u >>> 32 - 7;
234
+ u = x9 + x5 | 0;
235
+ x13 ^= u << 9 | u >>> 32 - 9;
236
+ u = x13 + x9 | 0;
237
+ x1 ^= u << 13 | u >>> 32 - 13;
238
+ u = x1 + x13 | 0;
239
+ x5 ^= u << 18 | u >>> 32 - 18;
240
+ u = x10 + x6 | 0;
241
+ x14 ^= u << 7 | u >>> 32 - 7;
242
+ u = x14 + x10 | 0;
243
+ x2 ^= u << 9 | u >>> 32 - 9;
244
+ u = x2 + x14 | 0;
245
+ x6 ^= u << 13 | u >>> 32 - 13;
246
+ u = x6 + x2 | 0;
247
+ x10 ^= u << 18 | u >>> 32 - 18;
248
+ u = x15 + x11 | 0;
249
+ x3 ^= u << 7 | u >>> 32 - 7;
250
+ u = x3 + x15 | 0;
251
+ x7 ^= u << 9 | u >>> 32 - 9;
252
+ u = x7 + x3 | 0;
253
+ x11 ^= u << 13 | u >>> 32 - 13;
254
+ u = x11 + x7 | 0;
255
+ x15 ^= u << 18 | u >>> 32 - 18;
256
+ u = x0 + x3 | 0;
257
+ x1 ^= u << 7 | u >>> 32 - 7;
258
+ u = x1 + x0 | 0;
259
+ x2 ^= u << 9 | u >>> 32 - 9;
260
+ u = x2 + x1 | 0;
261
+ x3 ^= u << 13 | u >>> 32 - 13;
262
+ u = x3 + x2 | 0;
263
+ x0 ^= u << 18 | u >>> 32 - 18;
264
+ u = x5 + x4 | 0;
265
+ x6 ^= u << 7 | u >>> 32 - 7;
266
+ u = x6 + x5 | 0;
267
+ x7 ^= u << 9 | u >>> 32 - 9;
268
+ u = x7 + x6 | 0;
269
+ x4 ^= u << 13 | u >>> 32 - 13;
270
+ u = x4 + x7 | 0;
271
+ x5 ^= u << 18 | u >>> 32 - 18;
272
+ u = x10 + x9 | 0;
273
+ x11 ^= u << 7 | u >>> 32 - 7;
274
+ u = x11 + x10 | 0;
275
+ x8 ^= u << 9 | u >>> 32 - 9;
276
+ u = x8 + x11 | 0;
277
+ x9 ^= u << 13 | u >>> 32 - 13;
278
+ u = x9 + x8 | 0;
279
+ x10 ^= u << 18 | u >>> 32 - 18;
280
+ u = x15 + x14 | 0;
281
+ x12 ^= u << 7 | u >>> 32 - 7;
282
+ u = x12 + x15 | 0;
283
+ x13 ^= u << 9 | u >>> 32 - 9;
284
+ u = x13 + x12 | 0;
285
+ x14 ^= u << 13 | u >>> 32 - 13;
286
+ u = x14 + x13 | 0;
287
+ x15 ^= u << 18 | u >>> 32 - 18;
288
+ }
289
+ o[0] = x0 >>> 0 & 255;
290
+ o[1] = x0 >>> 8 & 255;
291
+ o[2] = x0 >>> 16 & 255;
292
+ o[3] = x0 >>> 24 & 255;
293
+ o[4] = x5 >>> 0 & 255;
294
+ o[5] = x5 >>> 8 & 255;
295
+ o[6] = x5 >>> 16 & 255;
296
+ o[7] = x5 >>> 24 & 255;
297
+ o[8] = x10 >>> 0 & 255;
298
+ o[9] = x10 >>> 8 & 255;
299
+ o[10] = x10 >>> 16 & 255;
300
+ o[11] = x10 >>> 24 & 255;
301
+ o[12] = x15 >>> 0 & 255;
302
+ o[13] = x15 >>> 8 & 255;
303
+ o[14] = x15 >>> 16 & 255;
304
+ o[15] = x15 >>> 24 & 255;
305
+ o[16] = x6 >>> 0 & 255;
306
+ o[17] = x6 >>> 8 & 255;
307
+ o[18] = x6 >>> 16 & 255;
308
+ o[19] = x6 >>> 24 & 255;
309
+ o[20] = x7 >>> 0 & 255;
310
+ o[21] = x7 >>> 8 & 255;
311
+ o[22] = x7 >>> 16 & 255;
312
+ o[23] = x7 >>> 24 & 255;
313
+ o[24] = x8 >>> 0 & 255;
314
+ o[25] = x8 >>> 8 & 255;
315
+ o[26] = x8 >>> 16 & 255;
316
+ o[27] = x8 >>> 24 & 255;
317
+ o[28] = x9 >>> 0 & 255;
318
+ o[29] = x9 >>> 8 & 255;
319
+ o[30] = x9 >>> 16 & 255;
320
+ o[31] = x9 >>> 24 & 255;
321
+ }
322
+ function crypto_core_salsa20(out, inp, k, c) {
323
+ core_salsa20(out, inp, k, c);
324
+ }
325
+ function crypto_core_hsalsa20(out, inp, k, c) {
326
+ core_hsalsa20(out, inp, k, c);
327
+ }
328
+ var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
329
+ function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) {
330
+ var z = new Uint8Array(16), x = new Uint8Array(64);
331
+ var u, i;
332
+ for (i = 0; i < 16; i++) z[i] = 0;
333
+ for (i = 0; i < 8; i++) z[i] = n[i];
334
+ while (b >= 64) {
335
+ crypto_core_salsa20(x, z, k, sigma);
336
+ for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i];
337
+ u = 1;
338
+ for (i = 8; i < 16; i++) {
339
+ u = u + (z[i] & 255) | 0;
340
+ z[i] = u & 255;
341
+ u >>>= 8;
342
+ }
343
+ b -= 64;
344
+ cpos += 64;
345
+ mpos += 64;
346
+ }
347
+ if (b > 0) {
348
+ crypto_core_salsa20(x, z, k, sigma);
349
+ for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i];
350
+ }
351
+ return 0;
352
+ }
353
+ function crypto_stream_salsa20(c, cpos, b, n, k) {
354
+ var z = new Uint8Array(16), x = new Uint8Array(64);
355
+ var u, i;
356
+ for (i = 0; i < 16; i++) z[i] = 0;
357
+ for (i = 0; i < 8; i++) z[i] = n[i];
358
+ while (b >= 64) {
359
+ crypto_core_salsa20(x, z, k, sigma);
360
+ for (i = 0; i < 64; i++) c[cpos + i] = x[i];
361
+ u = 1;
362
+ for (i = 8; i < 16; i++) {
363
+ u = u + (z[i] & 255) | 0;
364
+ z[i] = u & 255;
365
+ u >>>= 8;
366
+ }
367
+ b -= 64;
368
+ cpos += 64;
369
+ }
370
+ if (b > 0) {
371
+ crypto_core_salsa20(x, z, k, sigma);
372
+ for (i = 0; i < b; i++) c[cpos + i] = x[i];
373
+ }
374
+ return 0;
375
+ }
376
+ function crypto_stream(c, cpos, d, n, k) {
377
+ var s = new Uint8Array(32);
378
+ crypto_core_hsalsa20(s, n, k, sigma);
379
+ var sn = new Uint8Array(8);
380
+ for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
381
+ return crypto_stream_salsa20(c, cpos, d, sn, s);
382
+ }
383
+ function crypto_stream_xor(c, cpos, m, mpos, d, n, k) {
384
+ var s = new Uint8Array(32);
385
+ crypto_core_hsalsa20(s, n, k, sigma);
386
+ var sn = new Uint8Array(8);
387
+ for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
388
+ return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s);
389
+ }
390
+ var poly1305 = function(key) {
391
+ this.buffer = new Uint8Array(16);
392
+ this.r = new Uint16Array(10);
393
+ this.h = new Uint16Array(10);
394
+ this.pad = new Uint16Array(8);
395
+ this.leftover = 0;
396
+ this.fin = 0;
397
+ var t0, t1, t2, t3, t4, t5, t6, t7;
398
+ t0 = key[0] & 255 | (key[1] & 255) << 8;
399
+ this.r[0] = t0 & 8191;
400
+ t1 = key[2] & 255 | (key[3] & 255) << 8;
401
+ this.r[1] = (t0 >>> 13 | t1 << 3) & 8191;
402
+ t2 = key[4] & 255 | (key[5] & 255) << 8;
403
+ this.r[2] = (t1 >>> 10 | t2 << 6) & 7939;
404
+ t3 = key[6] & 255 | (key[7] & 255) << 8;
405
+ this.r[3] = (t2 >>> 7 | t3 << 9) & 8191;
406
+ t4 = key[8] & 255 | (key[9] & 255) << 8;
407
+ this.r[4] = (t3 >>> 4 | t4 << 12) & 255;
408
+ this.r[5] = t4 >>> 1 & 8190;
409
+ t5 = key[10] & 255 | (key[11] & 255) << 8;
410
+ this.r[6] = (t4 >>> 14 | t5 << 2) & 8191;
411
+ t6 = key[12] & 255 | (key[13] & 255) << 8;
412
+ this.r[7] = (t5 >>> 11 | t6 << 5) & 8065;
413
+ t7 = key[14] & 255 | (key[15] & 255) << 8;
414
+ this.r[8] = (t6 >>> 8 | t7 << 8) & 8191;
415
+ this.r[9] = t7 >>> 5 & 127;
416
+ this.pad[0] = key[16] & 255 | (key[17] & 255) << 8;
417
+ this.pad[1] = key[18] & 255 | (key[19] & 255) << 8;
418
+ this.pad[2] = key[20] & 255 | (key[21] & 255) << 8;
419
+ this.pad[3] = key[22] & 255 | (key[23] & 255) << 8;
420
+ this.pad[4] = key[24] & 255 | (key[25] & 255) << 8;
421
+ this.pad[5] = key[26] & 255 | (key[27] & 255) << 8;
422
+ this.pad[6] = key[28] & 255 | (key[29] & 255) << 8;
423
+ this.pad[7] = key[30] & 255 | (key[31] & 255) << 8;
424
+ };
425
+ poly1305.prototype.blocks = function(m, mpos, bytes) {
426
+ var hibit = this.fin ? 0 : 1 << 11;
427
+ var t0, t1, t2, t3, t4, t5, t6, t7, c;
428
+ var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;
429
+ var h0 = this.h[0], h1 = this.h[1], h2 = this.h[2], h3 = this.h[3], h4 = this.h[4], h5 = this.h[5], h6 = this.h[6], h7 = this.h[7], h8 = this.h[8], h9 = this.h[9];
430
+ var r0 = this.r[0], r1 = this.r[1], r2 = this.r[2], r3 = this.r[3], r4 = this.r[4], r5 = this.r[5], r6 = this.r[6], r7 = this.r[7], r8 = this.r[8], r9 = this.r[9];
431
+ while (bytes >= 16) {
432
+ t0 = m[mpos + 0] & 255 | (m[mpos + 1] & 255) << 8;
433
+ h0 += t0 & 8191;
434
+ t1 = m[mpos + 2] & 255 | (m[mpos + 3] & 255) << 8;
435
+ h1 += (t0 >>> 13 | t1 << 3) & 8191;
436
+ t2 = m[mpos + 4] & 255 | (m[mpos + 5] & 255) << 8;
437
+ h2 += (t1 >>> 10 | t2 << 6) & 8191;
438
+ t3 = m[mpos + 6] & 255 | (m[mpos + 7] & 255) << 8;
439
+ h3 += (t2 >>> 7 | t3 << 9) & 8191;
440
+ t4 = m[mpos + 8] & 255 | (m[mpos + 9] & 255) << 8;
441
+ h4 += (t3 >>> 4 | t4 << 12) & 8191;
442
+ h5 += t4 >>> 1 & 8191;
443
+ t5 = m[mpos + 10] & 255 | (m[mpos + 11] & 255) << 8;
444
+ h6 += (t4 >>> 14 | t5 << 2) & 8191;
445
+ t6 = m[mpos + 12] & 255 | (m[mpos + 13] & 255) << 8;
446
+ h7 += (t5 >>> 11 | t6 << 5) & 8191;
447
+ t7 = m[mpos + 14] & 255 | (m[mpos + 15] & 255) << 8;
448
+ h8 += (t6 >>> 8 | t7 << 8) & 8191;
449
+ h9 += t7 >>> 5 | hibit;
450
+ c = 0;
451
+ d0 = c;
452
+ d0 += h0 * r0;
453
+ d0 += h1 * (5 * r9);
454
+ d0 += h2 * (5 * r8);
455
+ d0 += h3 * (5 * r7);
456
+ d0 += h4 * (5 * r6);
457
+ c = d0 >>> 13;
458
+ d0 &= 8191;
459
+ d0 += h5 * (5 * r5);
460
+ d0 += h6 * (5 * r4);
461
+ d0 += h7 * (5 * r3);
462
+ d0 += h8 * (5 * r2);
463
+ d0 += h9 * (5 * r1);
464
+ c += d0 >>> 13;
465
+ d0 &= 8191;
466
+ d1 = c;
467
+ d1 += h0 * r1;
468
+ d1 += h1 * r0;
469
+ d1 += h2 * (5 * r9);
470
+ d1 += h3 * (5 * r8);
471
+ d1 += h4 * (5 * r7);
472
+ c = d1 >>> 13;
473
+ d1 &= 8191;
474
+ d1 += h5 * (5 * r6);
475
+ d1 += h6 * (5 * r5);
476
+ d1 += h7 * (5 * r4);
477
+ d1 += h8 * (5 * r3);
478
+ d1 += h9 * (5 * r2);
479
+ c += d1 >>> 13;
480
+ d1 &= 8191;
481
+ d2 = c;
482
+ d2 += h0 * r2;
483
+ d2 += h1 * r1;
484
+ d2 += h2 * r0;
485
+ d2 += h3 * (5 * r9);
486
+ d2 += h4 * (5 * r8);
487
+ c = d2 >>> 13;
488
+ d2 &= 8191;
489
+ d2 += h5 * (5 * r7);
490
+ d2 += h6 * (5 * r6);
491
+ d2 += h7 * (5 * r5);
492
+ d2 += h8 * (5 * r4);
493
+ d2 += h9 * (5 * r3);
494
+ c += d2 >>> 13;
495
+ d2 &= 8191;
496
+ d3 = c;
497
+ d3 += h0 * r3;
498
+ d3 += h1 * r2;
499
+ d3 += h2 * r1;
500
+ d3 += h3 * r0;
501
+ d3 += h4 * (5 * r9);
502
+ c = d3 >>> 13;
503
+ d3 &= 8191;
504
+ d3 += h5 * (5 * r8);
505
+ d3 += h6 * (5 * r7);
506
+ d3 += h7 * (5 * r6);
507
+ d3 += h8 * (5 * r5);
508
+ d3 += h9 * (5 * r4);
509
+ c += d3 >>> 13;
510
+ d3 &= 8191;
511
+ d4 = c;
512
+ d4 += h0 * r4;
513
+ d4 += h1 * r3;
514
+ d4 += h2 * r2;
515
+ d4 += h3 * r1;
516
+ d4 += h4 * r0;
517
+ c = d4 >>> 13;
518
+ d4 &= 8191;
519
+ d4 += h5 * (5 * r9);
520
+ d4 += h6 * (5 * r8);
521
+ d4 += h7 * (5 * r7);
522
+ d4 += h8 * (5 * r6);
523
+ d4 += h9 * (5 * r5);
524
+ c += d4 >>> 13;
525
+ d4 &= 8191;
526
+ d5 = c;
527
+ d5 += h0 * r5;
528
+ d5 += h1 * r4;
529
+ d5 += h2 * r3;
530
+ d5 += h3 * r2;
531
+ d5 += h4 * r1;
532
+ c = d5 >>> 13;
533
+ d5 &= 8191;
534
+ d5 += h5 * r0;
535
+ d5 += h6 * (5 * r9);
536
+ d5 += h7 * (5 * r8);
537
+ d5 += h8 * (5 * r7);
538
+ d5 += h9 * (5 * r6);
539
+ c += d5 >>> 13;
540
+ d5 &= 8191;
541
+ d6 = c;
542
+ d6 += h0 * r6;
543
+ d6 += h1 * r5;
544
+ d6 += h2 * r4;
545
+ d6 += h3 * r3;
546
+ d6 += h4 * r2;
547
+ c = d6 >>> 13;
548
+ d6 &= 8191;
549
+ d6 += h5 * r1;
550
+ d6 += h6 * r0;
551
+ d6 += h7 * (5 * r9);
552
+ d6 += h8 * (5 * r8);
553
+ d6 += h9 * (5 * r7);
554
+ c += d6 >>> 13;
555
+ d6 &= 8191;
556
+ d7 = c;
557
+ d7 += h0 * r7;
558
+ d7 += h1 * r6;
559
+ d7 += h2 * r5;
560
+ d7 += h3 * r4;
561
+ d7 += h4 * r3;
562
+ c = d7 >>> 13;
563
+ d7 &= 8191;
564
+ d7 += h5 * r2;
565
+ d7 += h6 * r1;
566
+ d7 += h7 * r0;
567
+ d7 += h8 * (5 * r9);
568
+ d7 += h9 * (5 * r8);
569
+ c += d7 >>> 13;
570
+ d7 &= 8191;
571
+ d8 = c;
572
+ d8 += h0 * r8;
573
+ d8 += h1 * r7;
574
+ d8 += h2 * r6;
575
+ d8 += h3 * r5;
576
+ d8 += h4 * r4;
577
+ c = d8 >>> 13;
578
+ d8 &= 8191;
579
+ d8 += h5 * r3;
580
+ d8 += h6 * r2;
581
+ d8 += h7 * r1;
582
+ d8 += h8 * r0;
583
+ d8 += h9 * (5 * r9);
584
+ c += d8 >>> 13;
585
+ d8 &= 8191;
586
+ d9 = c;
587
+ d9 += h0 * r9;
588
+ d9 += h1 * r8;
589
+ d9 += h2 * r7;
590
+ d9 += h3 * r6;
591
+ d9 += h4 * r5;
592
+ c = d9 >>> 13;
593
+ d9 &= 8191;
594
+ d9 += h5 * r4;
595
+ d9 += h6 * r3;
596
+ d9 += h7 * r2;
597
+ d9 += h8 * r1;
598
+ d9 += h9 * r0;
599
+ c += d9 >>> 13;
600
+ d9 &= 8191;
601
+ c = (c << 2) + c | 0;
602
+ c = c + d0 | 0;
603
+ d0 = c & 8191;
604
+ c = c >>> 13;
605
+ d1 += c;
606
+ h0 = d0;
607
+ h1 = d1;
608
+ h2 = d2;
609
+ h3 = d3;
610
+ h4 = d4;
611
+ h5 = d5;
612
+ h6 = d6;
613
+ h7 = d7;
614
+ h8 = d8;
615
+ h9 = d9;
616
+ mpos += 16;
617
+ bytes -= 16;
618
+ }
619
+ this.h[0] = h0;
620
+ this.h[1] = h1;
621
+ this.h[2] = h2;
622
+ this.h[3] = h3;
623
+ this.h[4] = h4;
624
+ this.h[5] = h5;
625
+ this.h[6] = h6;
626
+ this.h[7] = h7;
627
+ this.h[8] = h8;
628
+ this.h[9] = h9;
629
+ };
630
+ poly1305.prototype.finish = function(mac, macpos) {
631
+ var g = new Uint16Array(10);
632
+ var c, mask, f, i;
633
+ if (this.leftover) {
634
+ i = this.leftover;
635
+ this.buffer[i++] = 1;
636
+ for (; i < 16; i++) this.buffer[i] = 0;
637
+ this.fin = 1;
638
+ this.blocks(this.buffer, 0, 16);
639
+ }
640
+ c = this.h[1] >>> 13;
641
+ this.h[1] &= 8191;
642
+ for (i = 2; i < 10; i++) {
643
+ this.h[i] += c;
644
+ c = this.h[i] >>> 13;
645
+ this.h[i] &= 8191;
646
+ }
647
+ this.h[0] += c * 5;
648
+ c = this.h[0] >>> 13;
649
+ this.h[0] &= 8191;
650
+ this.h[1] += c;
651
+ c = this.h[1] >>> 13;
652
+ this.h[1] &= 8191;
653
+ this.h[2] += c;
654
+ g[0] = this.h[0] + 5;
655
+ c = g[0] >>> 13;
656
+ g[0] &= 8191;
657
+ for (i = 1; i < 10; i++) {
658
+ g[i] = this.h[i] + c;
659
+ c = g[i] >>> 13;
660
+ g[i] &= 8191;
661
+ }
662
+ g[9] -= 1 << 13;
663
+ mask = (c ^ 1) - 1;
664
+ for (i = 0; i < 10; i++) g[i] &= mask;
665
+ mask = ~mask;
666
+ for (i = 0; i < 10; i++) this.h[i] = this.h[i] & mask | g[i];
667
+ this.h[0] = (this.h[0] | this.h[1] << 13) & 65535;
668
+ this.h[1] = (this.h[1] >>> 3 | this.h[2] << 10) & 65535;
669
+ this.h[2] = (this.h[2] >>> 6 | this.h[3] << 7) & 65535;
670
+ this.h[3] = (this.h[3] >>> 9 | this.h[4] << 4) & 65535;
671
+ this.h[4] = (this.h[4] >>> 12 | this.h[5] << 1 | this.h[6] << 14) & 65535;
672
+ this.h[5] = (this.h[6] >>> 2 | this.h[7] << 11) & 65535;
673
+ this.h[6] = (this.h[7] >>> 5 | this.h[8] << 8) & 65535;
674
+ this.h[7] = (this.h[8] >>> 8 | this.h[9] << 5) & 65535;
675
+ f = this.h[0] + this.pad[0];
676
+ this.h[0] = f & 65535;
677
+ for (i = 1; i < 8; i++) {
678
+ f = (this.h[i] + this.pad[i] | 0) + (f >>> 16) | 0;
679
+ this.h[i] = f & 65535;
680
+ }
681
+ mac[macpos + 0] = this.h[0] >>> 0 & 255;
682
+ mac[macpos + 1] = this.h[0] >>> 8 & 255;
683
+ mac[macpos + 2] = this.h[1] >>> 0 & 255;
684
+ mac[macpos + 3] = this.h[1] >>> 8 & 255;
685
+ mac[macpos + 4] = this.h[2] >>> 0 & 255;
686
+ mac[macpos + 5] = this.h[2] >>> 8 & 255;
687
+ mac[macpos + 6] = this.h[3] >>> 0 & 255;
688
+ mac[macpos + 7] = this.h[3] >>> 8 & 255;
689
+ mac[macpos + 8] = this.h[4] >>> 0 & 255;
690
+ mac[macpos + 9] = this.h[4] >>> 8 & 255;
691
+ mac[macpos + 10] = this.h[5] >>> 0 & 255;
692
+ mac[macpos + 11] = this.h[5] >>> 8 & 255;
693
+ mac[macpos + 12] = this.h[6] >>> 0 & 255;
694
+ mac[macpos + 13] = this.h[6] >>> 8 & 255;
695
+ mac[macpos + 14] = this.h[7] >>> 0 & 255;
696
+ mac[macpos + 15] = this.h[7] >>> 8 & 255;
697
+ };
698
+ poly1305.prototype.update = function(m, mpos, bytes) {
699
+ var i, want;
700
+ if (this.leftover) {
701
+ want = 16 - this.leftover;
702
+ if (want > bytes)
703
+ want = bytes;
704
+ for (i = 0; i < want; i++)
705
+ this.buffer[this.leftover + i] = m[mpos + i];
706
+ bytes -= want;
707
+ mpos += want;
708
+ this.leftover += want;
709
+ if (this.leftover < 16)
710
+ return;
711
+ this.blocks(this.buffer, 0, 16);
712
+ this.leftover = 0;
713
+ }
714
+ if (bytes >= 16) {
715
+ want = bytes - bytes % 16;
716
+ this.blocks(m, mpos, want);
717
+ mpos += want;
718
+ bytes -= want;
719
+ }
720
+ if (bytes) {
721
+ for (i = 0; i < bytes; i++)
722
+ this.buffer[this.leftover + i] = m[mpos + i];
723
+ this.leftover += bytes;
724
+ }
725
+ };
726
+ function crypto_onetimeauth(out, outpos, m, mpos, n, k) {
727
+ var s = new poly1305(k);
728
+ s.update(m, mpos, n);
729
+ s.finish(out, outpos);
730
+ return 0;
731
+ }
732
+ function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {
733
+ var x = new Uint8Array(16);
734
+ crypto_onetimeauth(x, 0, m, mpos, n, k);
735
+ return crypto_verify_16(h, hpos, x, 0);
736
+ }
737
+ function crypto_secretbox(c, m, d, n, k) {
738
+ var i;
739
+ if (d < 32) return -1;
740
+ crypto_stream_xor(c, 0, m, 0, d, n, k);
741
+ crypto_onetimeauth(c, 16, c, 32, d - 32, c);
742
+ for (i = 0; i < 16; i++) c[i] = 0;
743
+ return 0;
744
+ }
745
+ function crypto_secretbox_open(m, c, d, n, k) {
746
+ var i;
747
+ var x = new Uint8Array(32);
748
+ if (d < 32) return -1;
749
+ crypto_stream(x, 0, 32, n, k);
750
+ if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1;
751
+ crypto_stream_xor(m, 0, c, 0, d, n, k);
752
+ for (i = 0; i < 32; i++) m[i] = 0;
753
+ return 0;
754
+ }
755
+ function set25519(r, a) {
756
+ var i;
757
+ for (i = 0; i < 16; i++) r[i] = a[i] | 0;
758
+ }
759
+ function car25519(o) {
760
+ var i, v, c = 1;
761
+ for (i = 0; i < 16; i++) {
762
+ v = o[i] + c + 65535;
763
+ c = Math.floor(v / 65536);
764
+ o[i] = v - c * 65536;
765
+ }
766
+ o[0] += c - 1 + 37 * (c - 1);
767
+ }
768
+ function sel25519(p, q, b) {
769
+ var t, c = ~(b - 1);
770
+ for (var i = 0; i < 16; i++) {
771
+ t = c & (p[i] ^ q[i]);
772
+ p[i] ^= t;
773
+ q[i] ^= t;
774
+ }
775
+ }
776
+ function pack25519(o, n) {
777
+ var i, j, b;
778
+ var m = gf(), t = gf();
779
+ for (i = 0; i < 16; i++) t[i] = n[i];
780
+ car25519(t);
781
+ car25519(t);
782
+ car25519(t);
783
+ for (j = 0; j < 2; j++) {
784
+ m[0] = t[0] - 65517;
785
+ for (i = 1; i < 15; i++) {
786
+ m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
787
+ m[i - 1] &= 65535;
788
+ }
789
+ m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
790
+ b = m[15] >> 16 & 1;
791
+ m[14] &= 65535;
792
+ sel25519(t, m, 1 - b);
793
+ }
794
+ for (i = 0; i < 16; i++) {
795
+ o[2 * i] = t[i] & 255;
796
+ o[2 * i + 1] = t[i] >> 8;
797
+ }
798
+ }
799
+ function neq25519(a, b) {
800
+ var c = new Uint8Array(32), d = new Uint8Array(32);
801
+ pack25519(c, a);
802
+ pack25519(d, b);
803
+ return crypto_verify_32(c, 0, d, 0);
804
+ }
805
+ function par25519(a) {
806
+ var d = new Uint8Array(32);
807
+ pack25519(d, a);
808
+ return d[0] & 1;
809
+ }
810
+ function unpack25519(o, n) {
811
+ var i;
812
+ for (i = 0; i < 16; i++) o[i] = n[2 * i] + (n[2 * i + 1] << 8);
813
+ o[15] &= 32767;
814
+ }
815
+ function A(o, a, b) {
816
+ for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];
817
+ }
818
+ function Z(o, a, b) {
819
+ for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];
820
+ }
821
+ function M(o, a, b) {
822
+ var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
823
+ v = a[0];
824
+ t0 += v * b0;
825
+ t1 += v * b1;
826
+ t2 += v * b2;
827
+ t3 += v * b3;
828
+ t4 += v * b4;
829
+ t5 += v * b5;
830
+ t6 += v * b6;
831
+ t7 += v * b7;
832
+ t8 += v * b8;
833
+ t9 += v * b9;
834
+ t10 += v * b10;
835
+ t11 += v * b11;
836
+ t12 += v * b12;
837
+ t13 += v * b13;
838
+ t14 += v * b14;
839
+ t15 += v * b15;
840
+ v = a[1];
841
+ t1 += v * b0;
842
+ t2 += v * b1;
843
+ t3 += v * b2;
844
+ t4 += v * b3;
845
+ t5 += v * b4;
846
+ t6 += v * b5;
847
+ t7 += v * b6;
848
+ t8 += v * b7;
849
+ t9 += v * b8;
850
+ t10 += v * b9;
851
+ t11 += v * b10;
852
+ t12 += v * b11;
853
+ t13 += v * b12;
854
+ t14 += v * b13;
855
+ t15 += v * b14;
856
+ t16 += v * b15;
857
+ v = a[2];
858
+ t2 += v * b0;
859
+ t3 += v * b1;
860
+ t4 += v * b2;
861
+ t5 += v * b3;
862
+ t6 += v * b4;
863
+ t7 += v * b5;
864
+ t8 += v * b6;
865
+ t9 += v * b7;
866
+ t10 += v * b8;
867
+ t11 += v * b9;
868
+ t12 += v * b10;
869
+ t13 += v * b11;
870
+ t14 += v * b12;
871
+ t15 += v * b13;
872
+ t16 += v * b14;
873
+ t17 += v * b15;
874
+ v = a[3];
875
+ t3 += v * b0;
876
+ t4 += v * b1;
877
+ t5 += v * b2;
878
+ t6 += v * b3;
879
+ t7 += v * b4;
880
+ t8 += v * b5;
881
+ t9 += v * b6;
882
+ t10 += v * b7;
883
+ t11 += v * b8;
884
+ t12 += v * b9;
885
+ t13 += v * b10;
886
+ t14 += v * b11;
887
+ t15 += v * b12;
888
+ t16 += v * b13;
889
+ t17 += v * b14;
890
+ t18 += v * b15;
891
+ v = a[4];
892
+ t4 += v * b0;
893
+ t5 += v * b1;
894
+ t6 += v * b2;
895
+ t7 += v * b3;
896
+ t8 += v * b4;
897
+ t9 += v * b5;
898
+ t10 += v * b6;
899
+ t11 += v * b7;
900
+ t12 += v * b8;
901
+ t13 += v * b9;
902
+ t14 += v * b10;
903
+ t15 += v * b11;
904
+ t16 += v * b12;
905
+ t17 += v * b13;
906
+ t18 += v * b14;
907
+ t19 += v * b15;
908
+ v = a[5];
909
+ t5 += v * b0;
910
+ t6 += v * b1;
911
+ t7 += v * b2;
912
+ t8 += v * b3;
913
+ t9 += v * b4;
914
+ t10 += v * b5;
915
+ t11 += v * b6;
916
+ t12 += v * b7;
917
+ t13 += v * b8;
918
+ t14 += v * b9;
919
+ t15 += v * b10;
920
+ t16 += v * b11;
921
+ t17 += v * b12;
922
+ t18 += v * b13;
923
+ t19 += v * b14;
924
+ t20 += v * b15;
925
+ v = a[6];
926
+ t6 += v * b0;
927
+ t7 += v * b1;
928
+ t8 += v * b2;
929
+ t9 += v * b3;
930
+ t10 += v * b4;
931
+ t11 += v * b5;
932
+ t12 += v * b6;
933
+ t13 += v * b7;
934
+ t14 += v * b8;
935
+ t15 += v * b9;
936
+ t16 += v * b10;
937
+ t17 += v * b11;
938
+ t18 += v * b12;
939
+ t19 += v * b13;
940
+ t20 += v * b14;
941
+ t21 += v * b15;
942
+ v = a[7];
943
+ t7 += v * b0;
944
+ t8 += v * b1;
945
+ t9 += v * b2;
946
+ t10 += v * b3;
947
+ t11 += v * b4;
948
+ t12 += v * b5;
949
+ t13 += v * b6;
950
+ t14 += v * b7;
951
+ t15 += v * b8;
952
+ t16 += v * b9;
953
+ t17 += v * b10;
954
+ t18 += v * b11;
955
+ t19 += v * b12;
956
+ t20 += v * b13;
957
+ t21 += v * b14;
958
+ t22 += v * b15;
959
+ v = a[8];
960
+ t8 += v * b0;
961
+ t9 += v * b1;
962
+ t10 += v * b2;
963
+ t11 += v * b3;
964
+ t12 += v * b4;
965
+ t13 += v * b5;
966
+ t14 += v * b6;
967
+ t15 += v * b7;
968
+ t16 += v * b8;
969
+ t17 += v * b9;
970
+ t18 += v * b10;
971
+ t19 += v * b11;
972
+ t20 += v * b12;
973
+ t21 += v * b13;
974
+ t22 += v * b14;
975
+ t23 += v * b15;
976
+ v = a[9];
977
+ t9 += v * b0;
978
+ t10 += v * b1;
979
+ t11 += v * b2;
980
+ t12 += v * b3;
981
+ t13 += v * b4;
982
+ t14 += v * b5;
983
+ t15 += v * b6;
984
+ t16 += v * b7;
985
+ t17 += v * b8;
986
+ t18 += v * b9;
987
+ t19 += v * b10;
988
+ t20 += v * b11;
989
+ t21 += v * b12;
990
+ t22 += v * b13;
991
+ t23 += v * b14;
992
+ t24 += v * b15;
993
+ v = a[10];
994
+ t10 += v * b0;
995
+ t11 += v * b1;
996
+ t12 += v * b2;
997
+ t13 += v * b3;
998
+ t14 += v * b4;
999
+ t15 += v * b5;
1000
+ t16 += v * b6;
1001
+ t17 += v * b7;
1002
+ t18 += v * b8;
1003
+ t19 += v * b9;
1004
+ t20 += v * b10;
1005
+ t21 += v * b11;
1006
+ t22 += v * b12;
1007
+ t23 += v * b13;
1008
+ t24 += v * b14;
1009
+ t25 += v * b15;
1010
+ v = a[11];
1011
+ t11 += v * b0;
1012
+ t12 += v * b1;
1013
+ t13 += v * b2;
1014
+ t14 += v * b3;
1015
+ t15 += v * b4;
1016
+ t16 += v * b5;
1017
+ t17 += v * b6;
1018
+ t18 += v * b7;
1019
+ t19 += v * b8;
1020
+ t20 += v * b9;
1021
+ t21 += v * b10;
1022
+ t22 += v * b11;
1023
+ t23 += v * b12;
1024
+ t24 += v * b13;
1025
+ t25 += v * b14;
1026
+ t26 += v * b15;
1027
+ v = a[12];
1028
+ t12 += v * b0;
1029
+ t13 += v * b1;
1030
+ t14 += v * b2;
1031
+ t15 += v * b3;
1032
+ t16 += v * b4;
1033
+ t17 += v * b5;
1034
+ t18 += v * b6;
1035
+ t19 += v * b7;
1036
+ t20 += v * b8;
1037
+ t21 += v * b9;
1038
+ t22 += v * b10;
1039
+ t23 += v * b11;
1040
+ t24 += v * b12;
1041
+ t25 += v * b13;
1042
+ t26 += v * b14;
1043
+ t27 += v * b15;
1044
+ v = a[13];
1045
+ t13 += v * b0;
1046
+ t14 += v * b1;
1047
+ t15 += v * b2;
1048
+ t16 += v * b3;
1049
+ t17 += v * b4;
1050
+ t18 += v * b5;
1051
+ t19 += v * b6;
1052
+ t20 += v * b7;
1053
+ t21 += v * b8;
1054
+ t22 += v * b9;
1055
+ t23 += v * b10;
1056
+ t24 += v * b11;
1057
+ t25 += v * b12;
1058
+ t26 += v * b13;
1059
+ t27 += v * b14;
1060
+ t28 += v * b15;
1061
+ v = a[14];
1062
+ t14 += v * b0;
1063
+ t15 += v * b1;
1064
+ t16 += v * b2;
1065
+ t17 += v * b3;
1066
+ t18 += v * b4;
1067
+ t19 += v * b5;
1068
+ t20 += v * b6;
1069
+ t21 += v * b7;
1070
+ t22 += v * b8;
1071
+ t23 += v * b9;
1072
+ t24 += v * b10;
1073
+ t25 += v * b11;
1074
+ t26 += v * b12;
1075
+ t27 += v * b13;
1076
+ t28 += v * b14;
1077
+ t29 += v * b15;
1078
+ v = a[15];
1079
+ t15 += v * b0;
1080
+ t16 += v * b1;
1081
+ t17 += v * b2;
1082
+ t18 += v * b3;
1083
+ t19 += v * b4;
1084
+ t20 += v * b5;
1085
+ t21 += v * b6;
1086
+ t22 += v * b7;
1087
+ t23 += v * b8;
1088
+ t24 += v * b9;
1089
+ t25 += v * b10;
1090
+ t26 += v * b11;
1091
+ t27 += v * b12;
1092
+ t28 += v * b13;
1093
+ t29 += v * b14;
1094
+ t30 += v * b15;
1095
+ t0 += 38 * t16;
1096
+ t1 += 38 * t17;
1097
+ t2 += 38 * t18;
1098
+ t3 += 38 * t19;
1099
+ t4 += 38 * t20;
1100
+ t5 += 38 * t21;
1101
+ t6 += 38 * t22;
1102
+ t7 += 38 * t23;
1103
+ t8 += 38 * t24;
1104
+ t9 += 38 * t25;
1105
+ t10 += 38 * t26;
1106
+ t11 += 38 * t27;
1107
+ t12 += 38 * t28;
1108
+ t13 += 38 * t29;
1109
+ t14 += 38 * t30;
1110
+ c = 1;
1111
+ v = t0 + c + 65535;
1112
+ c = Math.floor(v / 65536);
1113
+ t0 = v - c * 65536;
1114
+ v = t1 + c + 65535;
1115
+ c = Math.floor(v / 65536);
1116
+ t1 = v - c * 65536;
1117
+ v = t2 + c + 65535;
1118
+ c = Math.floor(v / 65536);
1119
+ t2 = v - c * 65536;
1120
+ v = t3 + c + 65535;
1121
+ c = Math.floor(v / 65536);
1122
+ t3 = v - c * 65536;
1123
+ v = t4 + c + 65535;
1124
+ c = Math.floor(v / 65536);
1125
+ t4 = v - c * 65536;
1126
+ v = t5 + c + 65535;
1127
+ c = Math.floor(v / 65536);
1128
+ t5 = v - c * 65536;
1129
+ v = t6 + c + 65535;
1130
+ c = Math.floor(v / 65536);
1131
+ t6 = v - c * 65536;
1132
+ v = t7 + c + 65535;
1133
+ c = Math.floor(v / 65536);
1134
+ t7 = v - c * 65536;
1135
+ v = t8 + c + 65535;
1136
+ c = Math.floor(v / 65536);
1137
+ t8 = v - c * 65536;
1138
+ v = t9 + c + 65535;
1139
+ c = Math.floor(v / 65536);
1140
+ t9 = v - c * 65536;
1141
+ v = t10 + c + 65535;
1142
+ c = Math.floor(v / 65536);
1143
+ t10 = v - c * 65536;
1144
+ v = t11 + c + 65535;
1145
+ c = Math.floor(v / 65536);
1146
+ t11 = v - c * 65536;
1147
+ v = t12 + c + 65535;
1148
+ c = Math.floor(v / 65536);
1149
+ t12 = v - c * 65536;
1150
+ v = t13 + c + 65535;
1151
+ c = Math.floor(v / 65536);
1152
+ t13 = v - c * 65536;
1153
+ v = t14 + c + 65535;
1154
+ c = Math.floor(v / 65536);
1155
+ t14 = v - c * 65536;
1156
+ v = t15 + c + 65535;
1157
+ c = Math.floor(v / 65536);
1158
+ t15 = v - c * 65536;
1159
+ t0 += c - 1 + 37 * (c - 1);
1160
+ c = 1;
1161
+ v = t0 + c + 65535;
1162
+ c = Math.floor(v / 65536);
1163
+ t0 = v - c * 65536;
1164
+ v = t1 + c + 65535;
1165
+ c = Math.floor(v / 65536);
1166
+ t1 = v - c * 65536;
1167
+ v = t2 + c + 65535;
1168
+ c = Math.floor(v / 65536);
1169
+ t2 = v - c * 65536;
1170
+ v = t3 + c + 65535;
1171
+ c = Math.floor(v / 65536);
1172
+ t3 = v - c * 65536;
1173
+ v = t4 + c + 65535;
1174
+ c = Math.floor(v / 65536);
1175
+ t4 = v - c * 65536;
1176
+ v = t5 + c + 65535;
1177
+ c = Math.floor(v / 65536);
1178
+ t5 = v - c * 65536;
1179
+ v = t6 + c + 65535;
1180
+ c = Math.floor(v / 65536);
1181
+ t6 = v - c * 65536;
1182
+ v = t7 + c + 65535;
1183
+ c = Math.floor(v / 65536);
1184
+ t7 = v - c * 65536;
1185
+ v = t8 + c + 65535;
1186
+ c = Math.floor(v / 65536);
1187
+ t8 = v - c * 65536;
1188
+ v = t9 + c + 65535;
1189
+ c = Math.floor(v / 65536);
1190
+ t9 = v - c * 65536;
1191
+ v = t10 + c + 65535;
1192
+ c = Math.floor(v / 65536);
1193
+ t10 = v - c * 65536;
1194
+ v = t11 + c + 65535;
1195
+ c = Math.floor(v / 65536);
1196
+ t11 = v - c * 65536;
1197
+ v = t12 + c + 65535;
1198
+ c = Math.floor(v / 65536);
1199
+ t12 = v - c * 65536;
1200
+ v = t13 + c + 65535;
1201
+ c = Math.floor(v / 65536);
1202
+ t13 = v - c * 65536;
1203
+ v = t14 + c + 65535;
1204
+ c = Math.floor(v / 65536);
1205
+ t14 = v - c * 65536;
1206
+ v = t15 + c + 65535;
1207
+ c = Math.floor(v / 65536);
1208
+ t15 = v - c * 65536;
1209
+ t0 += c - 1 + 37 * (c - 1);
1210
+ o[0] = t0;
1211
+ o[1] = t1;
1212
+ o[2] = t2;
1213
+ o[3] = t3;
1214
+ o[4] = t4;
1215
+ o[5] = t5;
1216
+ o[6] = t6;
1217
+ o[7] = t7;
1218
+ o[8] = t8;
1219
+ o[9] = t9;
1220
+ o[10] = t10;
1221
+ o[11] = t11;
1222
+ o[12] = t12;
1223
+ o[13] = t13;
1224
+ o[14] = t14;
1225
+ o[15] = t15;
1226
+ }
1227
+ function S(o, a) {
1228
+ M(o, a, a);
1229
+ }
1230
+ function inv25519(o, i) {
1231
+ var c = gf();
1232
+ var a;
1233
+ for (a = 0; a < 16; a++) c[a] = i[a];
1234
+ for (a = 253; a >= 0; a--) {
1235
+ S(c, c);
1236
+ if (a !== 2 && a !== 4) M(c, c, i);
1237
+ }
1238
+ for (a = 0; a < 16; a++) o[a] = c[a];
1239
+ }
1240
+ function pow2523(o, i) {
1241
+ var c = gf();
1242
+ var a;
1243
+ for (a = 0; a < 16; a++) c[a] = i[a];
1244
+ for (a = 250; a >= 0; a--) {
1245
+ S(c, c);
1246
+ if (a !== 1) M(c, c, i);
1247
+ }
1248
+ for (a = 0; a < 16; a++) o[a] = c[a];
1249
+ }
1250
+ function crypto_scalarmult(q, n, p) {
1251
+ var z = new Uint8Array(32);
1252
+ var x = new Float64Array(80), r, i;
1253
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();
1254
+ for (i = 0; i < 31; i++) z[i] = n[i];
1255
+ z[31] = n[31] & 127 | 64;
1256
+ z[0] &= 248;
1257
+ unpack25519(x, p);
1258
+ for (i = 0; i < 16; i++) {
1259
+ b[i] = x[i];
1260
+ d[i] = a[i] = c[i] = 0;
1261
+ }
1262
+ a[0] = d[0] = 1;
1263
+ for (i = 254; i >= 0; --i) {
1264
+ r = z[i >>> 3] >>> (i & 7) & 1;
1265
+ sel25519(a, b, r);
1266
+ sel25519(c, d, r);
1267
+ A(e, a, c);
1268
+ Z(a, a, c);
1269
+ A(c, b, d);
1270
+ Z(b, b, d);
1271
+ S(d, e);
1272
+ S(f, a);
1273
+ M(a, c, a);
1274
+ M(c, b, e);
1275
+ A(e, a, c);
1276
+ Z(a, a, c);
1277
+ S(b, a);
1278
+ Z(c, d, f);
1279
+ M(a, c, _121665);
1280
+ A(a, a, d);
1281
+ M(c, c, a);
1282
+ M(a, d, f);
1283
+ M(d, b, x);
1284
+ S(b, e);
1285
+ sel25519(a, b, r);
1286
+ sel25519(c, d, r);
1287
+ }
1288
+ for (i = 0; i < 16; i++) {
1289
+ x[i + 16] = a[i];
1290
+ x[i + 32] = c[i];
1291
+ x[i + 48] = b[i];
1292
+ x[i + 64] = d[i];
1293
+ }
1294
+ var x32 = x.subarray(32);
1295
+ var x16 = x.subarray(16);
1296
+ inv25519(x32, x32);
1297
+ M(x16, x16, x32);
1298
+ pack25519(q, x16);
1299
+ return 0;
1300
+ }
1301
+ function crypto_scalarmult_base(q, n) {
1302
+ return crypto_scalarmult(q, n, _9);
1303
+ }
1304
+ function crypto_box_keypair(y, x) {
1305
+ randombytes(x, 32);
1306
+ return crypto_scalarmult_base(y, x);
1307
+ }
1308
+ function crypto_box_beforenm(k, y, x) {
1309
+ var s = new Uint8Array(32);
1310
+ crypto_scalarmult(s, x, y);
1311
+ return crypto_core_hsalsa20(k, _0, s, sigma);
1312
+ }
1313
+ var crypto_box_afternm = crypto_secretbox;
1314
+ var crypto_box_open_afternm = crypto_secretbox_open;
1315
+ function crypto_box(c, m, d, n, y, x) {
1316
+ var k = new Uint8Array(32);
1317
+ crypto_box_beforenm(k, y, x);
1318
+ return crypto_box_afternm(c, m, d, n, k);
1319
+ }
1320
+ function crypto_box_open(m, c, d, n, y, x) {
1321
+ var k = new Uint8Array(32);
1322
+ crypto_box_beforenm(k, y, x);
1323
+ return crypto_box_open_afternm(m, c, d, n, k);
1324
+ }
1325
+ var K = [
1326
+ 1116352408,
1327
+ 3609767458,
1328
+ 1899447441,
1329
+ 602891725,
1330
+ 3049323471,
1331
+ 3964484399,
1332
+ 3921009573,
1333
+ 2173295548,
1334
+ 961987163,
1335
+ 4081628472,
1336
+ 1508970993,
1337
+ 3053834265,
1338
+ 2453635748,
1339
+ 2937671579,
1340
+ 2870763221,
1341
+ 3664609560,
1342
+ 3624381080,
1343
+ 2734883394,
1344
+ 310598401,
1345
+ 1164996542,
1346
+ 607225278,
1347
+ 1323610764,
1348
+ 1426881987,
1349
+ 3590304994,
1350
+ 1925078388,
1351
+ 4068182383,
1352
+ 2162078206,
1353
+ 991336113,
1354
+ 2614888103,
1355
+ 633803317,
1356
+ 3248222580,
1357
+ 3479774868,
1358
+ 3835390401,
1359
+ 2666613458,
1360
+ 4022224774,
1361
+ 944711139,
1362
+ 264347078,
1363
+ 2341262773,
1364
+ 604807628,
1365
+ 2007800933,
1366
+ 770255983,
1367
+ 1495990901,
1368
+ 1249150122,
1369
+ 1856431235,
1370
+ 1555081692,
1371
+ 3175218132,
1372
+ 1996064986,
1373
+ 2198950837,
1374
+ 2554220882,
1375
+ 3999719339,
1376
+ 2821834349,
1377
+ 766784016,
1378
+ 2952996808,
1379
+ 2566594879,
1380
+ 3210313671,
1381
+ 3203337956,
1382
+ 3336571891,
1383
+ 1034457026,
1384
+ 3584528711,
1385
+ 2466948901,
1386
+ 113926993,
1387
+ 3758326383,
1388
+ 338241895,
1389
+ 168717936,
1390
+ 666307205,
1391
+ 1188179964,
1392
+ 773529912,
1393
+ 1546045734,
1394
+ 1294757372,
1395
+ 1522805485,
1396
+ 1396182291,
1397
+ 2643833823,
1398
+ 1695183700,
1399
+ 2343527390,
1400
+ 1986661051,
1401
+ 1014477480,
1402
+ 2177026350,
1403
+ 1206759142,
1404
+ 2456956037,
1405
+ 344077627,
1406
+ 2730485921,
1407
+ 1290863460,
1408
+ 2820302411,
1409
+ 3158454273,
1410
+ 3259730800,
1411
+ 3505952657,
1412
+ 3345764771,
1413
+ 106217008,
1414
+ 3516065817,
1415
+ 3606008344,
1416
+ 3600352804,
1417
+ 1432725776,
1418
+ 4094571909,
1419
+ 1467031594,
1420
+ 275423344,
1421
+ 851169720,
1422
+ 430227734,
1423
+ 3100823752,
1424
+ 506948616,
1425
+ 1363258195,
1426
+ 659060556,
1427
+ 3750685593,
1428
+ 883997877,
1429
+ 3785050280,
1430
+ 958139571,
1431
+ 3318307427,
1432
+ 1322822218,
1433
+ 3812723403,
1434
+ 1537002063,
1435
+ 2003034995,
1436
+ 1747873779,
1437
+ 3602036899,
1438
+ 1955562222,
1439
+ 1575990012,
1440
+ 2024104815,
1441
+ 1125592928,
1442
+ 2227730452,
1443
+ 2716904306,
1444
+ 2361852424,
1445
+ 442776044,
1446
+ 2428436474,
1447
+ 593698344,
1448
+ 2756734187,
1449
+ 3733110249,
1450
+ 3204031479,
1451
+ 2999351573,
1452
+ 3329325298,
1453
+ 3815920427,
1454
+ 3391569614,
1455
+ 3928383900,
1456
+ 3515267271,
1457
+ 566280711,
1458
+ 3940187606,
1459
+ 3454069534,
1460
+ 4118630271,
1461
+ 4000239992,
1462
+ 116418474,
1463
+ 1914138554,
1464
+ 174292421,
1465
+ 2731055270,
1466
+ 289380356,
1467
+ 3203993006,
1468
+ 460393269,
1469
+ 320620315,
1470
+ 685471733,
1471
+ 587496836,
1472
+ 852142971,
1473
+ 1086792851,
1474
+ 1017036298,
1475
+ 365543100,
1476
+ 1126000580,
1477
+ 2618297676,
1478
+ 1288033470,
1479
+ 3409855158,
1480
+ 1501505948,
1481
+ 4234509866,
1482
+ 1607167915,
1483
+ 987167468,
1484
+ 1816402316,
1485
+ 1246189591
1486
+ ];
1487
+ function crypto_hashblocks_hl(hh, hl, m, n) {
1488
+ var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;
1489
+ var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
1490
+ var pos = 0;
1491
+ while (n >= 128) {
1492
+ for (i = 0; i < 16; i++) {
1493
+ j = 8 * i + pos;
1494
+ wh[i] = m[j + 0] << 24 | m[j + 1] << 16 | m[j + 2] << 8 | m[j + 3];
1495
+ wl[i] = m[j + 4] << 24 | m[j + 5] << 16 | m[j + 6] << 8 | m[j + 7];
1496
+ }
1497
+ for (i = 0; i < 80; i++) {
1498
+ bh0 = ah0;
1499
+ bh1 = ah1;
1500
+ bh2 = ah2;
1501
+ bh3 = ah3;
1502
+ bh4 = ah4;
1503
+ bh5 = ah5;
1504
+ bh6 = ah6;
1505
+ bh7 = ah7;
1506
+ bl0 = al0;
1507
+ bl1 = al1;
1508
+ bl2 = al2;
1509
+ bl3 = al3;
1510
+ bl4 = al4;
1511
+ bl5 = al5;
1512
+ bl6 = al6;
1513
+ bl7 = al7;
1514
+ h = ah7;
1515
+ l = al7;
1516
+ a = l & 65535;
1517
+ b = l >>> 16;
1518
+ c = h & 65535;
1519
+ d = h >>> 16;
1520
+ h = (ah4 >>> 14 | al4 << 32 - 14) ^ (ah4 >>> 18 | al4 << 32 - 18) ^ (al4 >>> 41 - 32 | ah4 << 32 - (41 - 32));
1521
+ l = (al4 >>> 14 | ah4 << 32 - 14) ^ (al4 >>> 18 | ah4 << 32 - 18) ^ (ah4 >>> 41 - 32 | al4 << 32 - (41 - 32));
1522
+ a += l & 65535;
1523
+ b += l >>> 16;
1524
+ c += h & 65535;
1525
+ d += h >>> 16;
1526
+ h = ah4 & ah5 ^ ~ah4 & ah6;
1527
+ l = al4 & al5 ^ ~al4 & al6;
1528
+ a += l & 65535;
1529
+ b += l >>> 16;
1530
+ c += h & 65535;
1531
+ d += h >>> 16;
1532
+ h = K[i * 2];
1533
+ l = K[i * 2 + 1];
1534
+ a += l & 65535;
1535
+ b += l >>> 16;
1536
+ c += h & 65535;
1537
+ d += h >>> 16;
1538
+ h = wh[i % 16];
1539
+ l = wl[i % 16];
1540
+ a += l & 65535;
1541
+ b += l >>> 16;
1542
+ c += h & 65535;
1543
+ d += h >>> 16;
1544
+ b += a >>> 16;
1545
+ c += b >>> 16;
1546
+ d += c >>> 16;
1547
+ th = c & 65535 | d << 16;
1548
+ tl = a & 65535 | b << 16;
1549
+ h = th;
1550
+ l = tl;
1551
+ a = l & 65535;
1552
+ b = l >>> 16;
1553
+ c = h & 65535;
1554
+ d = h >>> 16;
1555
+ h = (ah0 >>> 28 | al0 << 32 - 28) ^ (al0 >>> 34 - 32 | ah0 << 32 - (34 - 32)) ^ (al0 >>> 39 - 32 | ah0 << 32 - (39 - 32));
1556
+ l = (al0 >>> 28 | ah0 << 32 - 28) ^ (ah0 >>> 34 - 32 | al0 << 32 - (34 - 32)) ^ (ah0 >>> 39 - 32 | al0 << 32 - (39 - 32));
1557
+ a += l & 65535;
1558
+ b += l >>> 16;
1559
+ c += h & 65535;
1560
+ d += h >>> 16;
1561
+ h = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
1562
+ l = al0 & al1 ^ al0 & al2 ^ al1 & al2;
1563
+ a += l & 65535;
1564
+ b += l >>> 16;
1565
+ c += h & 65535;
1566
+ d += h >>> 16;
1567
+ b += a >>> 16;
1568
+ c += b >>> 16;
1569
+ d += c >>> 16;
1570
+ bh7 = c & 65535 | d << 16;
1571
+ bl7 = a & 65535 | b << 16;
1572
+ h = bh3;
1573
+ l = bl3;
1574
+ a = l & 65535;
1575
+ b = l >>> 16;
1576
+ c = h & 65535;
1577
+ d = h >>> 16;
1578
+ h = th;
1579
+ l = tl;
1580
+ a += l & 65535;
1581
+ b += l >>> 16;
1582
+ c += h & 65535;
1583
+ d += h >>> 16;
1584
+ b += a >>> 16;
1585
+ c += b >>> 16;
1586
+ d += c >>> 16;
1587
+ bh3 = c & 65535 | d << 16;
1588
+ bl3 = a & 65535 | b << 16;
1589
+ ah1 = bh0;
1590
+ ah2 = bh1;
1591
+ ah3 = bh2;
1592
+ ah4 = bh3;
1593
+ ah5 = bh4;
1594
+ ah6 = bh5;
1595
+ ah7 = bh6;
1596
+ ah0 = bh7;
1597
+ al1 = bl0;
1598
+ al2 = bl1;
1599
+ al3 = bl2;
1600
+ al4 = bl3;
1601
+ al5 = bl4;
1602
+ al6 = bl5;
1603
+ al7 = bl6;
1604
+ al0 = bl7;
1605
+ if (i % 16 === 15) {
1606
+ for (j = 0; j < 16; j++) {
1607
+ h = wh[j];
1608
+ l = wl[j];
1609
+ a = l & 65535;
1610
+ b = l >>> 16;
1611
+ c = h & 65535;
1612
+ d = h >>> 16;
1613
+ h = wh[(j + 9) % 16];
1614
+ l = wl[(j + 9) % 16];
1615
+ a += l & 65535;
1616
+ b += l >>> 16;
1617
+ c += h & 65535;
1618
+ d += h >>> 16;
1619
+ th = wh[(j + 1) % 16];
1620
+ tl = wl[(j + 1) % 16];
1621
+ h = (th >>> 1 | tl << 32 - 1) ^ (th >>> 8 | tl << 32 - 8) ^ th >>> 7;
1622
+ l = (tl >>> 1 | th << 32 - 1) ^ (tl >>> 8 | th << 32 - 8) ^ (tl >>> 7 | th << 32 - 7);
1623
+ a += l & 65535;
1624
+ b += l >>> 16;
1625
+ c += h & 65535;
1626
+ d += h >>> 16;
1627
+ th = wh[(j + 14) % 16];
1628
+ tl = wl[(j + 14) % 16];
1629
+ h = (th >>> 19 | tl << 32 - 19) ^ (tl >>> 61 - 32 | th << 32 - (61 - 32)) ^ th >>> 6;
1630
+ l = (tl >>> 19 | th << 32 - 19) ^ (th >>> 61 - 32 | tl << 32 - (61 - 32)) ^ (tl >>> 6 | th << 32 - 6);
1631
+ a += l & 65535;
1632
+ b += l >>> 16;
1633
+ c += h & 65535;
1634
+ d += h >>> 16;
1635
+ b += a >>> 16;
1636
+ c += b >>> 16;
1637
+ d += c >>> 16;
1638
+ wh[j] = c & 65535 | d << 16;
1639
+ wl[j] = a & 65535 | b << 16;
1640
+ }
1641
+ }
1642
+ }
1643
+ h = ah0;
1644
+ l = al0;
1645
+ a = l & 65535;
1646
+ b = l >>> 16;
1647
+ c = h & 65535;
1648
+ d = h >>> 16;
1649
+ h = hh[0];
1650
+ l = hl[0];
1651
+ a += l & 65535;
1652
+ b += l >>> 16;
1653
+ c += h & 65535;
1654
+ d += h >>> 16;
1655
+ b += a >>> 16;
1656
+ c += b >>> 16;
1657
+ d += c >>> 16;
1658
+ hh[0] = ah0 = c & 65535 | d << 16;
1659
+ hl[0] = al0 = a & 65535 | b << 16;
1660
+ h = ah1;
1661
+ l = al1;
1662
+ a = l & 65535;
1663
+ b = l >>> 16;
1664
+ c = h & 65535;
1665
+ d = h >>> 16;
1666
+ h = hh[1];
1667
+ l = hl[1];
1668
+ a += l & 65535;
1669
+ b += l >>> 16;
1670
+ c += h & 65535;
1671
+ d += h >>> 16;
1672
+ b += a >>> 16;
1673
+ c += b >>> 16;
1674
+ d += c >>> 16;
1675
+ hh[1] = ah1 = c & 65535 | d << 16;
1676
+ hl[1] = al1 = a & 65535 | b << 16;
1677
+ h = ah2;
1678
+ l = al2;
1679
+ a = l & 65535;
1680
+ b = l >>> 16;
1681
+ c = h & 65535;
1682
+ d = h >>> 16;
1683
+ h = hh[2];
1684
+ l = hl[2];
1685
+ a += l & 65535;
1686
+ b += l >>> 16;
1687
+ c += h & 65535;
1688
+ d += h >>> 16;
1689
+ b += a >>> 16;
1690
+ c += b >>> 16;
1691
+ d += c >>> 16;
1692
+ hh[2] = ah2 = c & 65535 | d << 16;
1693
+ hl[2] = al2 = a & 65535 | b << 16;
1694
+ h = ah3;
1695
+ l = al3;
1696
+ a = l & 65535;
1697
+ b = l >>> 16;
1698
+ c = h & 65535;
1699
+ d = h >>> 16;
1700
+ h = hh[3];
1701
+ l = hl[3];
1702
+ a += l & 65535;
1703
+ b += l >>> 16;
1704
+ c += h & 65535;
1705
+ d += h >>> 16;
1706
+ b += a >>> 16;
1707
+ c += b >>> 16;
1708
+ d += c >>> 16;
1709
+ hh[3] = ah3 = c & 65535 | d << 16;
1710
+ hl[3] = al3 = a & 65535 | b << 16;
1711
+ h = ah4;
1712
+ l = al4;
1713
+ a = l & 65535;
1714
+ b = l >>> 16;
1715
+ c = h & 65535;
1716
+ d = h >>> 16;
1717
+ h = hh[4];
1718
+ l = hl[4];
1719
+ a += l & 65535;
1720
+ b += l >>> 16;
1721
+ c += h & 65535;
1722
+ d += h >>> 16;
1723
+ b += a >>> 16;
1724
+ c += b >>> 16;
1725
+ d += c >>> 16;
1726
+ hh[4] = ah4 = c & 65535 | d << 16;
1727
+ hl[4] = al4 = a & 65535 | b << 16;
1728
+ h = ah5;
1729
+ l = al5;
1730
+ a = l & 65535;
1731
+ b = l >>> 16;
1732
+ c = h & 65535;
1733
+ d = h >>> 16;
1734
+ h = hh[5];
1735
+ l = hl[5];
1736
+ a += l & 65535;
1737
+ b += l >>> 16;
1738
+ c += h & 65535;
1739
+ d += h >>> 16;
1740
+ b += a >>> 16;
1741
+ c += b >>> 16;
1742
+ d += c >>> 16;
1743
+ hh[5] = ah5 = c & 65535 | d << 16;
1744
+ hl[5] = al5 = a & 65535 | b << 16;
1745
+ h = ah6;
1746
+ l = al6;
1747
+ a = l & 65535;
1748
+ b = l >>> 16;
1749
+ c = h & 65535;
1750
+ d = h >>> 16;
1751
+ h = hh[6];
1752
+ l = hl[6];
1753
+ a += l & 65535;
1754
+ b += l >>> 16;
1755
+ c += h & 65535;
1756
+ d += h >>> 16;
1757
+ b += a >>> 16;
1758
+ c += b >>> 16;
1759
+ d += c >>> 16;
1760
+ hh[6] = ah6 = c & 65535 | d << 16;
1761
+ hl[6] = al6 = a & 65535 | b << 16;
1762
+ h = ah7;
1763
+ l = al7;
1764
+ a = l & 65535;
1765
+ b = l >>> 16;
1766
+ c = h & 65535;
1767
+ d = h >>> 16;
1768
+ h = hh[7];
1769
+ l = hl[7];
1770
+ a += l & 65535;
1771
+ b += l >>> 16;
1772
+ c += h & 65535;
1773
+ d += h >>> 16;
1774
+ b += a >>> 16;
1775
+ c += b >>> 16;
1776
+ d += c >>> 16;
1777
+ hh[7] = ah7 = c & 65535 | d << 16;
1778
+ hl[7] = al7 = a & 65535 | b << 16;
1779
+ pos += 128;
1780
+ n -= 128;
1781
+ }
1782
+ return n;
1783
+ }
1784
+ function crypto_hash(out, m, n) {
1785
+ var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;
1786
+ hh[0] = 1779033703;
1787
+ hh[1] = 3144134277;
1788
+ hh[2] = 1013904242;
1789
+ hh[3] = 2773480762;
1790
+ hh[4] = 1359893119;
1791
+ hh[5] = 2600822924;
1792
+ hh[6] = 528734635;
1793
+ hh[7] = 1541459225;
1794
+ hl[0] = 4089235720;
1795
+ hl[1] = 2227873595;
1796
+ hl[2] = 4271175723;
1797
+ hl[3] = 1595750129;
1798
+ hl[4] = 2917565137;
1799
+ hl[5] = 725511199;
1800
+ hl[6] = 4215389547;
1801
+ hl[7] = 327033209;
1802
+ crypto_hashblocks_hl(hh, hl, m, n);
1803
+ n %= 128;
1804
+ for (i = 0; i < n; i++) x[i] = m[b - n + i];
1805
+ x[n] = 128;
1806
+ n = 256 - 128 * (n < 112 ? 1 : 0);
1807
+ x[n - 9] = 0;
1808
+ ts64(x, n - 8, b / 536870912 | 0, b << 3);
1809
+ crypto_hashblocks_hl(hh, hl, x, n);
1810
+ for (i = 0; i < 8; i++) ts64(out, 8 * i, hh[i], hl[i]);
1811
+ return 0;
1812
+ }
1813
+ function add(p, q) {
1814
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
1815
+ Z(a, p[1], p[0]);
1816
+ Z(t, q[1], q[0]);
1817
+ M(a, a, t);
1818
+ A(b, p[0], p[1]);
1819
+ A(t, q[0], q[1]);
1820
+ M(b, b, t);
1821
+ M(c, p[3], q[3]);
1822
+ M(c, c, D2);
1823
+ M(d, p[2], q[2]);
1824
+ A(d, d, d);
1825
+ Z(e, b, a);
1826
+ Z(f, d, c);
1827
+ A(g, d, c);
1828
+ A(h, b, a);
1829
+ M(p[0], e, f);
1830
+ M(p[1], h, g);
1831
+ M(p[2], g, f);
1832
+ M(p[3], e, h);
1833
+ }
1834
+ function cswap(p, q, b) {
1835
+ var i;
1836
+ for (i = 0; i < 4; i++) {
1837
+ sel25519(p[i], q[i], b);
1838
+ }
1839
+ }
1840
+ function pack(r, p) {
1841
+ var tx = gf(), ty = gf(), zi = gf();
1842
+ inv25519(zi, p[2]);
1843
+ M(tx, p[0], zi);
1844
+ M(ty, p[1], zi);
1845
+ pack25519(r, ty);
1846
+ r[31] ^= par25519(tx) << 7;
1847
+ }
1848
+ function scalarmult(p, q, s) {
1849
+ var b, i;
1850
+ set25519(p[0], gf0);
1851
+ set25519(p[1], gf1);
1852
+ set25519(p[2], gf1);
1853
+ set25519(p[3], gf0);
1854
+ for (i = 255; i >= 0; --i) {
1855
+ b = s[i / 8 | 0] >> (i & 7) & 1;
1856
+ cswap(p, q, b);
1857
+ add(q, p);
1858
+ add(p, p);
1859
+ cswap(p, q, b);
1860
+ }
1861
+ }
1862
+ function scalarbase(p, s) {
1863
+ var q = [gf(), gf(), gf(), gf()];
1864
+ set25519(q[0], X);
1865
+ set25519(q[1], Y);
1866
+ set25519(q[2], gf1);
1867
+ M(q[3], X, Y);
1868
+ scalarmult(p, q, s);
1869
+ }
1870
+ function crypto_sign_keypair(pk, sk, seeded) {
1871
+ var d = new Uint8Array(64);
1872
+ var p = [gf(), gf(), gf(), gf()];
1873
+ var i;
1874
+ if (!seeded) randombytes(sk, 32);
1875
+ crypto_hash(d, sk, 32);
1876
+ d[0] &= 248;
1877
+ d[31] &= 127;
1878
+ d[31] |= 64;
1879
+ scalarbase(p, d);
1880
+ pack(pk, p);
1881
+ for (i = 0; i < 32; i++) sk[i + 32] = pk[i];
1882
+ return 0;
1883
+ }
1884
+ var L = new Float64Array([237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16]);
1885
+ function modL(r, x) {
1886
+ var carry, i, j, k;
1887
+ for (i = 63; i >= 32; --i) {
1888
+ carry = 0;
1889
+ for (j = i - 32, k = i - 12; j < k; ++j) {
1890
+ x[j] += carry - 16 * x[i] * L[j - (i - 32)];
1891
+ carry = Math.floor((x[j] + 128) / 256);
1892
+ x[j] -= carry * 256;
1893
+ }
1894
+ x[j] += carry;
1895
+ x[i] = 0;
1896
+ }
1897
+ carry = 0;
1898
+ for (j = 0; j < 32; j++) {
1899
+ x[j] += carry - (x[31] >> 4) * L[j];
1900
+ carry = x[j] >> 8;
1901
+ x[j] &= 255;
1902
+ }
1903
+ for (j = 0; j < 32; j++) x[j] -= carry * L[j];
1904
+ for (i = 0; i < 32; i++) {
1905
+ x[i + 1] += x[i] >> 8;
1906
+ r[i] = x[i] & 255;
1907
+ }
1908
+ }
1909
+ function reduce(r) {
1910
+ var x = new Float64Array(64), i;
1911
+ for (i = 0; i < 64; i++) x[i] = r[i];
1912
+ for (i = 0; i < 64; i++) r[i] = 0;
1913
+ modL(r, x);
1914
+ }
1915
+ function crypto_sign(sm, m, n, sk) {
1916
+ var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
1917
+ var i, j, x = new Float64Array(64);
1918
+ var p = [gf(), gf(), gf(), gf()];
1919
+ crypto_hash(d, sk, 32);
1920
+ d[0] &= 248;
1921
+ d[31] &= 127;
1922
+ d[31] |= 64;
1923
+ var smlen = n + 64;
1924
+ for (i = 0; i < n; i++) sm[64 + i] = m[i];
1925
+ for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];
1926
+ crypto_hash(r, sm.subarray(32), n + 32);
1927
+ reduce(r);
1928
+ scalarbase(p, r);
1929
+ pack(sm, p);
1930
+ for (i = 32; i < 64; i++) sm[i] = sk[i];
1931
+ crypto_hash(h, sm, n + 64);
1932
+ reduce(h);
1933
+ for (i = 0; i < 64; i++) x[i] = 0;
1934
+ for (i = 0; i < 32; i++) x[i] = r[i];
1935
+ for (i = 0; i < 32; i++) {
1936
+ for (j = 0; j < 32; j++) {
1937
+ x[i + j] += h[i] * d[j];
1938
+ }
1939
+ }
1940
+ modL(sm.subarray(32), x);
1941
+ return smlen;
1942
+ }
1943
+ function unpackneg(r, p) {
1944
+ var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
1945
+ set25519(r[2], gf1);
1946
+ unpack25519(r[1], p);
1947
+ S(num, r[1]);
1948
+ M(den, num, D);
1949
+ Z(num, num, r[2]);
1950
+ A(den, r[2], den);
1951
+ S(den2, den);
1952
+ S(den4, den2);
1953
+ M(den6, den4, den2);
1954
+ M(t, den6, num);
1955
+ M(t, t, den);
1956
+ pow2523(t, t);
1957
+ M(t, t, num);
1958
+ M(t, t, den);
1959
+ M(t, t, den);
1960
+ M(r[0], t, den);
1961
+ S(chk, r[0]);
1962
+ M(chk, chk, den);
1963
+ if (neq25519(chk, num)) M(r[0], r[0], I);
1964
+ S(chk, r[0]);
1965
+ M(chk, chk, den);
1966
+ if (neq25519(chk, num)) return -1;
1967
+ if (par25519(r[0]) === p[31] >> 7) Z(r[0], gf0, r[0]);
1968
+ M(r[3], r[0], r[1]);
1969
+ return 0;
1970
+ }
1971
+ function crypto_sign_open(m, sm, n, pk) {
1972
+ var i;
1973
+ var t = new Uint8Array(32), h = new Uint8Array(64);
1974
+ var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];
1975
+ if (n < 64) return -1;
1976
+ if (unpackneg(q, pk)) return -1;
1977
+ for (i = 0; i < n; i++) m[i] = sm[i];
1978
+ for (i = 0; i < 32; i++) m[i + 32] = pk[i];
1979
+ crypto_hash(h, m, n);
1980
+ reduce(h);
1981
+ scalarmult(p, q, h);
1982
+ scalarbase(q, sm.subarray(32));
1983
+ add(p, q);
1984
+ pack(t, p);
1985
+ n -= 64;
1986
+ if (crypto_verify_32(sm, 0, t, 0)) {
1987
+ for (i = 0; i < n; i++) m[i] = 0;
1988
+ return -1;
1989
+ }
1990
+ for (i = 0; i < n; i++) m[i] = sm[i + 64];
1991
+ return n;
1992
+ }
1993
+ var crypto_secretbox_KEYBYTES = 32, crypto_secretbox_NONCEBYTES = 24, crypto_secretbox_ZEROBYTES = 32, crypto_secretbox_BOXZEROBYTES = 16, crypto_scalarmult_BYTES = 32, crypto_scalarmult_SCALARBYTES = 32, crypto_box_PUBLICKEYBYTES = 32, crypto_box_SECRETKEYBYTES = 32, crypto_box_BEFORENMBYTES = 32, crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, crypto_sign_BYTES = 64, crypto_sign_PUBLICKEYBYTES = 32, crypto_sign_SECRETKEYBYTES = 64, crypto_sign_SEEDBYTES = 32, crypto_hash_BYTES = 64;
1994
+ nacl.lowlevel = {
1995
+ crypto_core_hsalsa20,
1996
+ crypto_stream_xor,
1997
+ crypto_stream,
1998
+ crypto_stream_salsa20_xor,
1999
+ crypto_stream_salsa20,
2000
+ crypto_onetimeauth,
2001
+ crypto_onetimeauth_verify,
2002
+ crypto_verify_16,
2003
+ crypto_verify_32,
2004
+ crypto_secretbox,
2005
+ crypto_secretbox_open,
2006
+ crypto_scalarmult,
2007
+ crypto_scalarmult_base,
2008
+ crypto_box_beforenm,
2009
+ crypto_box_afternm,
2010
+ crypto_box,
2011
+ crypto_box_open,
2012
+ crypto_box_keypair,
2013
+ crypto_hash,
2014
+ crypto_sign,
2015
+ crypto_sign_keypair,
2016
+ crypto_sign_open,
2017
+ crypto_secretbox_KEYBYTES,
2018
+ crypto_secretbox_NONCEBYTES,
2019
+ crypto_secretbox_ZEROBYTES,
2020
+ crypto_secretbox_BOXZEROBYTES,
2021
+ crypto_scalarmult_BYTES,
2022
+ crypto_scalarmult_SCALARBYTES,
2023
+ crypto_box_PUBLICKEYBYTES,
2024
+ crypto_box_SECRETKEYBYTES,
2025
+ crypto_box_BEFORENMBYTES,
2026
+ crypto_box_NONCEBYTES,
2027
+ crypto_box_ZEROBYTES,
2028
+ crypto_box_BOXZEROBYTES,
2029
+ crypto_sign_BYTES,
2030
+ crypto_sign_PUBLICKEYBYTES,
2031
+ crypto_sign_SECRETKEYBYTES,
2032
+ crypto_sign_SEEDBYTES,
2033
+ crypto_hash_BYTES,
2034
+ gf,
2035
+ D,
2036
+ L,
2037
+ pack25519,
2038
+ unpack25519,
2039
+ M,
2040
+ A,
2041
+ S,
2042
+ Z,
2043
+ pow2523,
2044
+ add,
2045
+ set25519,
2046
+ modL,
2047
+ scalarmult,
2048
+ scalarbase
2049
+ };
2050
+ function checkLengths(k, n) {
2051
+ if (k.length !== crypto_secretbox_KEYBYTES) throw new Error("bad key size");
2052
+ if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error("bad nonce size");
2053
+ }
2054
+ function checkBoxLengths(pk, sk) {
2055
+ if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error("bad public key size");
2056
+ if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error("bad secret key size");
2057
+ }
2058
+ function checkArrayTypes() {
2059
+ for (var i = 0; i < arguments.length; i++) {
2060
+ if (!(arguments[i] instanceof Uint8Array))
2061
+ throw new TypeError("unexpected type, use Uint8Array");
2062
+ }
2063
+ }
2064
+ function cleanup(arr) {
2065
+ for (var i = 0; i < arr.length; i++) arr[i] = 0;
2066
+ }
2067
+ nacl.randomBytes = function(n) {
2068
+ var b = new Uint8Array(n);
2069
+ randombytes(b, n);
2070
+ return b;
2071
+ };
2072
+ nacl.secretbox = function(msg, nonce, key) {
2073
+ checkArrayTypes(msg, nonce, key);
2074
+ checkLengths(key, nonce);
2075
+ var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);
2076
+ var c = new Uint8Array(m.length);
2077
+ for (var i = 0; i < msg.length; i++) m[i + crypto_secretbox_ZEROBYTES] = msg[i];
2078
+ crypto_secretbox(c, m, m.length, nonce, key);
2079
+ return c.subarray(crypto_secretbox_BOXZEROBYTES);
2080
+ };
2081
+ nacl.secretbox.open = function(box, nonce, key) {
2082
+ checkArrayTypes(box, nonce, key);
2083
+ checkLengths(key, nonce);
2084
+ var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);
2085
+ var m = new Uint8Array(c.length);
2086
+ for (var i = 0; i < box.length; i++) c[i + crypto_secretbox_BOXZEROBYTES] = box[i];
2087
+ if (c.length < 32) return null;
2088
+ if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;
2089
+ return m.subarray(crypto_secretbox_ZEROBYTES);
2090
+ };
2091
+ nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;
2092
+ nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;
2093
+ nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;
2094
+ nacl.scalarMult = function(n, p) {
2095
+ checkArrayTypes(n, p);
2096
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
2097
+ if (p.length !== crypto_scalarmult_BYTES) throw new Error("bad p size");
2098
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
2099
+ crypto_scalarmult(q, n, p);
2100
+ return q;
2101
+ };
2102
+ nacl.scalarMult.base = function(n) {
2103
+ checkArrayTypes(n);
2104
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
2105
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
2106
+ crypto_scalarmult_base(q, n);
2107
+ return q;
2108
+ };
2109
+ nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;
2110
+ nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;
2111
+ nacl.box = function(msg, nonce, publicKey, secretKey) {
2112
+ var k = nacl.box.before(publicKey, secretKey);
2113
+ return nacl.secretbox(msg, nonce, k);
2114
+ };
2115
+ nacl.box.before = function(publicKey, secretKey) {
2116
+ checkArrayTypes(publicKey, secretKey);
2117
+ checkBoxLengths(publicKey, secretKey);
2118
+ var k = new Uint8Array(crypto_box_BEFORENMBYTES);
2119
+ crypto_box_beforenm(k, publicKey, secretKey);
2120
+ return k;
2121
+ };
2122
+ nacl.box.after = nacl.secretbox;
2123
+ nacl.box.open = function(msg, nonce, publicKey, secretKey) {
2124
+ var k = nacl.box.before(publicKey, secretKey);
2125
+ return nacl.secretbox.open(msg, nonce, k);
2126
+ };
2127
+ nacl.box.open.after = nacl.secretbox.open;
2128
+ nacl.box.keyPair = function() {
2129
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
2130
+ var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
2131
+ crypto_box_keypair(pk, sk);
2132
+ return { publicKey: pk, secretKey: sk };
2133
+ };
2134
+ nacl.box.keyPair.fromSecretKey = function(secretKey) {
2135
+ checkArrayTypes(secretKey);
2136
+ if (secretKey.length !== crypto_box_SECRETKEYBYTES)
2137
+ throw new Error("bad secret key size");
2138
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
2139
+ crypto_scalarmult_base(pk, secretKey);
2140
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
2141
+ };
2142
+ nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;
2143
+ nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;
2144
+ nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;
2145
+ nacl.box.nonceLength = crypto_box_NONCEBYTES;
2146
+ nacl.box.overheadLength = nacl.secretbox.overheadLength;
2147
+ nacl.sign = function(msg, secretKey) {
2148
+ checkArrayTypes(msg, secretKey);
2149
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
2150
+ throw new Error("bad secret key size");
2151
+ var signedMsg = new Uint8Array(crypto_sign_BYTES + msg.length);
2152
+ crypto_sign(signedMsg, msg, msg.length, secretKey);
2153
+ return signedMsg;
2154
+ };
2155
+ nacl.sign.open = function(signedMsg, publicKey) {
2156
+ checkArrayTypes(signedMsg, publicKey);
2157
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
2158
+ throw new Error("bad public key size");
2159
+ var tmp = new Uint8Array(signedMsg.length);
2160
+ var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);
2161
+ if (mlen < 0) return null;
2162
+ var m = new Uint8Array(mlen);
2163
+ for (var i = 0; i < m.length; i++) m[i] = tmp[i];
2164
+ return m;
2165
+ };
2166
+ nacl.sign.detached = function(msg, secretKey) {
2167
+ var signedMsg = nacl.sign(msg, secretKey);
2168
+ var sig = new Uint8Array(crypto_sign_BYTES);
2169
+ for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];
2170
+ return sig;
2171
+ };
2172
+ nacl.sign.detached.verify = function(msg, sig, publicKey) {
2173
+ checkArrayTypes(msg, sig, publicKey);
2174
+ if (sig.length !== crypto_sign_BYTES)
2175
+ throw new Error("bad signature size");
2176
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
2177
+ throw new Error("bad public key size");
2178
+ var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
2179
+ var m = new Uint8Array(crypto_sign_BYTES + msg.length);
2180
+ var i;
2181
+ for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];
2182
+ for (i = 0; i < msg.length; i++) sm[i + crypto_sign_BYTES] = msg[i];
2183
+ return crypto_sign_open(m, sm, sm.length, publicKey) >= 0;
2184
+ };
2185
+ nacl.sign.keyPair = function() {
2186
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
2187
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
2188
+ crypto_sign_keypair(pk, sk);
2189
+ return { publicKey: pk, secretKey: sk };
2190
+ };
2191
+ nacl.sign.keyPair.fromSecretKey = function(secretKey) {
2192
+ checkArrayTypes(secretKey);
2193
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
2194
+ throw new Error("bad secret key size");
2195
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
2196
+ for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32 + i];
2197
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
2198
+ };
2199
+ nacl.sign.keyPair.fromSeed = function(seed) {
2200
+ checkArrayTypes(seed);
2201
+ if (seed.length !== crypto_sign_SEEDBYTES)
2202
+ throw new Error("bad seed size");
2203
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
2204
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
2205
+ for (var i = 0; i < 32; i++) sk[i] = seed[i];
2206
+ crypto_sign_keypair(pk, sk, true);
2207
+ return { publicKey: pk, secretKey: sk };
2208
+ };
2209
+ nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;
2210
+ nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;
2211
+ nacl.sign.seedLength = crypto_sign_SEEDBYTES;
2212
+ nacl.sign.signatureLength = crypto_sign_BYTES;
2213
+ nacl.hash = function(msg) {
2214
+ checkArrayTypes(msg);
2215
+ var h = new Uint8Array(crypto_hash_BYTES);
2216
+ crypto_hash(h, msg, msg.length);
2217
+ return h;
2218
+ };
2219
+ nacl.hash.hashLength = crypto_hash_BYTES;
2220
+ nacl.verify = function(x, y) {
2221
+ checkArrayTypes(x, y);
2222
+ if (x.length === 0 || y.length === 0) return false;
2223
+ if (x.length !== y.length) return false;
2224
+ return vn(x, 0, y, 0, x.length) === 0 ? true : false;
2225
+ };
2226
+ nacl.setPRNG = function(fn) {
2227
+ randombytes = fn;
2228
+ };
2229
+ (function() {
2230
+ var crypto = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
2231
+ if (crypto && crypto.getRandomValues) {
2232
+ var QUOTA = 65536;
2233
+ nacl.setPRNG(function(x, n) {
2234
+ var i, v = new Uint8Array(n);
2235
+ for (i = 0; i < n; i += QUOTA) {
2236
+ crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
2237
+ }
2238
+ for (i = 0; i < n; i++) x[i] = v[i];
2239
+ cleanup(v);
2240
+ });
2241
+ } else if (typeof require !== "undefined") {
2242
+ crypto = require("crypto");
2243
+ if (crypto && crypto.randomBytes) {
2244
+ nacl.setPRNG(function(x, n) {
2245
+ var i, v = crypto.randomBytes(n);
2246
+ for (i = 0; i < n; i++) x[i] = v[i];
2247
+ cleanup(v);
2248
+ });
2249
+ }
2250
+ }
2251
+ })();
2252
+ })(typeof module2 !== "undefined" && module2.exports ? module2.exports : self.nacl = self.nacl || {});
2253
+ }
2254
+ });
2255
+
2256
+ // src/needle/index.ts
2257
+ var needle_exports = {};
2258
+ __export(needle_exports, {
2259
+ InMemoryPatternStore: () => InMemoryPatternStore,
2260
+ addStitchToKnot: () => addStitchToKnot,
2261
+ applyStitch: () => applyStitch,
2262
+ assembleNeedle: () => assembleNeedle,
2263
+ breakKnot: () => breakKnot,
2264
+ createFabric: () => createFabric,
2265
+ detectAnomalies: () => detectAnomalies,
2266
+ detectKnotPatterns: () => detectKnotPatterns,
2267
+ detectSequencePatterns: () => detectSequencePatterns,
2268
+ diffFabrics: () => diffFabrics,
2269
+ findKnotsForStitch: () => findKnotsForStitch,
2270
+ forkFromKnot: () => forkFromKnot,
2271
+ formStitch: () => formStitch,
2272
+ getDecisionPoints: () => getDecisionPoints,
2273
+ getFabricValue: () => getFabricValue,
2274
+ getIrreversibleKnots: () => getIrreversibleKnots,
2275
+ isKnotOpen: () => isKnotOpen,
2276
+ isPointOfNoReturn: () => isPointOfNoReturn,
2277
+ lockCells: () => lockCells,
2278
+ matchPatterns: () => matchPatterns,
2279
+ openKnot: () => openKnot,
2280
+ projectAt: () => projectAt,
2281
+ queryFabric: () => queryFabric,
2282
+ recordOccurrence: () => recordOccurrence,
2283
+ runNeedlePipeline: () => runNeedlePipeline,
2284
+ tieKnot: () => tieKnot,
2285
+ validateKnot: () => validateKnot,
2286
+ weave: () => weave
2287
+ });
2288
+ module.exports = __toCommonJS(needle_exports);
2289
+
2290
+ // src/needle/needle.engine.ts
2291
+ var import_crypto3 = require("crypto");
2292
+
2293
+ // src/engine/axis-observation.ts
2294
+ var import_crypto = require("crypto");
2295
+ function createObservation(transport, ip) {
2296
+ return {
2297
+ id: (0, import_crypto.randomBytes)(16).toString("hex"),
2298
+ startMs: Date.now(),
2299
+ transport,
2300
+ ip,
2301
+ stages: [],
2302
+ sensors: [],
2303
+ facts: {}
2304
+ };
2305
+ }
2306
+ function startStage(obs, name) {
2307
+ const stage = { name, status: "ok", startMs: Date.now() };
2308
+ obs.stages.push(stage);
2309
+ return stage;
2310
+ }
2311
+ function endStage(stage, status = "ok", reason, code) {
2312
+ stage.endMs = Date.now();
2313
+ stage.durationMs = stage.endMs - stage.startMs;
2314
+ stage.status = status;
2315
+ if (reason) stage.reason = reason;
2316
+ if (code) stage.code = code;
2317
+ }
2318
+ function recordSensor(obs, name, allowed, riskScore, durationMs, reasons, code) {
2319
+ obs.sensors.push({ name, allowed, riskScore, durationMs, reasons, code });
2320
+ }
2321
+ function finalizeObservation(obs, decision, statusCode, resultCode) {
2322
+ obs.endMs = Date.now();
2323
+ obs.durationMs = obs.endMs - obs.startMs;
2324
+ obs.decision = decision;
2325
+ obs.statusCode = statusCode;
2326
+ if (resultCode) obs.resultCode = resultCode;
2327
+ }
2328
+
2329
+ // src/engine/observation/truth-scoring.ts
2330
+ function scoreTruth(obs, expected) {
2331
+ const anomalies = [];
2332
+ let passedChecks = 0;
2333
+ let totalChecks = 0;
2334
+ totalChecks++;
2335
+ if (obs.endMs && obs.decision) {
2336
+ passedChecks++;
2337
+ } else {
2338
+ anomalies.push({
2339
+ code: "OBS_NOT_FINALIZED",
2340
+ level: "critical",
2341
+ message: "Observation was not finalized"
2342
+ });
2343
+ }
2344
+ totalChecks++;
2345
+ if (obs.stages.length > 0) {
2346
+ passedChecks++;
2347
+ } else {
2348
+ anomalies.push({
2349
+ code: "OBS_NO_STAGES",
2350
+ level: "warning",
2351
+ message: "Observation has no execution stages"
2352
+ });
2353
+ }
2354
+ totalChecks++;
2355
+ const failedStages = obs.stages.filter((s) => s.status === "fail");
2356
+ if (failedStages.length === 0 || obs.decision === "DENY") {
2357
+ passedChecks++;
2358
+ } else {
2359
+ for (const stage of failedStages) {
2360
+ anomalies.push({
2361
+ code: "STAGE_FAILED",
2362
+ level: "warning",
2363
+ message: `Stage '${stage.name}' failed: ${stage.reason ?? "unknown"}`,
2364
+ field: `stages.${stage.name}`
2365
+ });
2366
+ }
2367
+ }
2368
+ totalChecks++;
2369
+ const invalidSensors = obs.sensors.filter((s) => s.durationMs < 0);
2370
+ if (invalidSensors.length === 0) {
2371
+ passedChecks++;
2372
+ } else {
2373
+ anomalies.push({
2374
+ code: "SENSOR_INVALID_TIMING",
2375
+ level: "warning",
2376
+ message: `${invalidSensors.length} sensor(s) have negative duration`
2377
+ });
2378
+ }
2379
+ totalChecks++;
2380
+ if (obs.durationMs !== void 0 && obs.durationMs >= 0 && obs.durationMs < 3e5) {
2381
+ passedChecks++;
2382
+ } else {
2383
+ anomalies.push({
2384
+ code: "OBS_DURATION_ANOMALY",
2385
+ level: "warning",
2386
+ message: `Observation duration ${obs.durationMs}ms is suspicious`,
2387
+ actual: obs.durationMs
2388
+ });
2389
+ }
2390
+ if (expected) {
2391
+ if (expected.decision !== void 0) {
2392
+ totalChecks++;
2393
+ if (obs.decision === expected.decision) {
2394
+ passedChecks++;
2395
+ } else {
2396
+ anomalies.push({
2397
+ code: "DECISION_MISMATCH",
2398
+ level: "critical",
2399
+ message: `Expected decision '${expected.decision}', got '${obs.decision}'`,
2400
+ field: "decision",
2401
+ expected: expected.decision,
2402
+ actual: obs.decision
2403
+ });
2404
+ }
2405
+ }
2406
+ if (expected.statusCode !== void 0) {
2407
+ totalChecks++;
2408
+ if (obs.statusCode === expected.statusCode) {
2409
+ passedChecks++;
2410
+ } else {
2411
+ anomalies.push({
2412
+ code: "STATUS_MISMATCH",
2413
+ level: "warning",
2414
+ message: `Expected status ${expected.statusCode}, got ${obs.statusCode}`,
2415
+ field: "statusCode",
2416
+ expected: expected.statusCode,
2417
+ actual: obs.statusCode
2418
+ });
2419
+ }
2420
+ }
2421
+ if (expected.effect !== void 0) {
2422
+ totalChecks++;
2423
+ if (obs.resultCode === expected.effect || obs.facts?.effect === expected.effect) {
2424
+ passedChecks++;
2425
+ } else {
2426
+ anomalies.push({
2427
+ code: "EFFECT_MISMATCH",
2428
+ level: "warning",
2429
+ message: `Expected effect '${expected.effect}', got '${obs.resultCode}'`,
2430
+ field: "resultCode",
2431
+ expected: expected.effect,
2432
+ actual: obs.resultCode
2433
+ });
2434
+ }
2435
+ }
2436
+ if (expected.maxDurationMs !== void 0) {
2437
+ totalChecks++;
2438
+ if (obs.durationMs !== void 0 && obs.durationMs <= expected.maxDurationMs) {
2439
+ passedChecks++;
2440
+ } else {
2441
+ anomalies.push({
2442
+ code: "DURATION_EXCEEDED",
2443
+ level: "warning",
2444
+ message: `Execution took ${obs.durationMs}ms, max allowed ${expected.maxDurationMs}ms`,
2445
+ field: "durationMs",
2446
+ expected: expected.maxDurationMs,
2447
+ actual: obs.durationMs
2448
+ });
2449
+ }
2450
+ }
2451
+ if (expected.minSensorsPassed !== void 0) {
2452
+ totalChecks++;
2453
+ const passed = obs.sensors.filter((s) => s.allowed).length;
2454
+ if (passed >= expected.minSensorsPassed) {
2455
+ passedChecks++;
2456
+ } else {
2457
+ anomalies.push({
2458
+ code: "INSUFFICIENT_SENSORS",
2459
+ level: "warning",
2460
+ message: `Only ${passed} sensors passed, minimum required ${expected.minSensorsPassed}`,
2461
+ field: "sensors",
2462
+ expected: expected.minSensorsPassed,
2463
+ actual: passed
2464
+ });
2465
+ }
2466
+ }
2467
+ if (expected.assertions) {
2468
+ for (const [key, expectedValue] of Object.entries(expected.assertions)) {
2469
+ totalChecks++;
2470
+ const actualValue = obs.facts[key];
2471
+ if (deepEqual(actualValue, expectedValue)) {
2472
+ passedChecks++;
2473
+ } else {
2474
+ anomalies.push({
2475
+ code: "ASSERTION_FAILED",
2476
+ level: "warning",
2477
+ message: `Assertion failed for facts.${key}`,
2478
+ field: `facts.${key}`,
2479
+ expected: expectedValue,
2480
+ actual: actualValue
2481
+ });
2482
+ }
2483
+ }
2484
+ }
2485
+ }
2486
+ const confidence = totalChecks > 0 ? passedChecks / totalChecks : 0;
2487
+ const hasCritical = anomalies.some((a) => a.level === "critical");
2488
+ const status = computeTruthStatus(confidence, hasCritical, anomalies.length);
2489
+ const isDeed = status === "confirmed" || status === "partial" && !hasCritical;
2490
+ return {
2491
+ status,
2492
+ confidence,
2493
+ anomalies,
2494
+ passedChecks,
2495
+ totalChecks,
2496
+ verifiedAt: Date.now(),
2497
+ isDeed
2498
+ };
2499
+ }
2500
+ function computeTruthStatus(confidence, hasCritical, anomalyCount) {
2501
+ if (hasCritical) return "failed";
2502
+ if (confidence === 1) return "confirmed";
2503
+ if (confidence >= 0.8) return "partial";
2504
+ if (confidence >= 0.5) return "uncertain";
2505
+ return "disputed";
2506
+ }
2507
+ function deepEqual(a, b) {
2508
+ if (a === b) return true;
2509
+ if (a === null || b === null) return false;
2510
+ if (typeof a !== typeof b) return false;
2511
+ if (typeof a !== "object") return String(a) === String(b);
2512
+ if (Array.isArray(a) && Array.isArray(b)) {
2513
+ if (a.length !== b.length) return false;
2514
+ return a.every((v, i) => deepEqual(v, b[i]));
2515
+ }
2516
+ if (Array.isArray(a) !== Array.isArray(b)) return false;
2517
+ const aKeys = Object.keys(a);
2518
+ const bKeys = Object.keys(b);
2519
+ if (aKeys.length !== bKeys.length) return false;
2520
+ return aKeys.every(
2521
+ (key) => deepEqual(
2522
+ a[key],
2523
+ b[key]
2524
+ )
2525
+ );
2526
+ }
2527
+
2528
+ // src/loom/loom.engine.ts
2529
+ var import_crypto2 = require("crypto");
2530
+ var import_tweetnacl = __toESM(require_nacl_fast());
2531
+
2532
+ // src/core/constants.ts
2533
+ var import_axis_protocol = require("@nextera.one/axis-protocol");
2534
+ var _AxisMediaTypes = class _AxisMediaTypes {
2535
+ static normalize(value) {
2536
+ if (!value) return void 0;
2537
+ return value.split(";", 1)[0].trim().toLowerCase();
2538
+ }
2539
+ static isAxisContentType(value) {
2540
+ const normalized = _AxisMediaTypes.normalize(value);
2541
+ return !!normalized && _AxisMediaTypes.VALID_AXIS_CONTENT_TYPES.some(
2542
+ (contentType) => contentType === normalized
2543
+ );
2544
+ }
2545
+ };
2546
+ _AxisMediaTypes.BINARY = "application/axis-bin";
2547
+ _AxisMediaTypes.OCTET_STREAM = "application/octet-stream";
2548
+ _AxisMediaTypes.LEGACY_BINARY = "application/x-axis";
2549
+ _AxisMediaTypes.VALID_AXIS_CONTENT_TYPES = [
2550
+ _AxisMediaTypes.BINARY,
2551
+ _AxisMediaTypes.OCTET_STREAM,
2552
+ _AxisMediaTypes.LEGACY_BINARY
2553
+ ];
2554
+ var AxisMediaTypes = _AxisMediaTypes;
2555
+
2556
+ // src/loom/loom.types.ts
2557
+ function canonicalizeWrit(writ) {
2558
+ const ordered = {
2559
+ head: { tid: writ.head.tid, seq: writ.head.seq },
2560
+ body: {
2561
+ who: writ.body.who,
2562
+ act: writ.body.act,
2563
+ res: writ.body.res,
2564
+ law: writ.body.law
2565
+ },
2566
+ meta: { iat: writ.meta.iat, exp: writ.meta.exp, prev: writ.meta.prev }
2567
+ };
2568
+ return JSON.stringify(ordered);
2569
+ }
2570
+
2571
+ // src/loom/loom.engine.ts
2572
+ function sha256(data) {
2573
+ return (0, import_crypto2.createHash)("sha256").update(data).digest("hex");
2574
+ }
2575
+ function hexToUint8(hex) {
2576
+ const bytes = new Uint8Array(hex.length / 2);
2577
+ for (let i = 0; i < hex.length; i += 2) {
2578
+ bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
2579
+ }
2580
+ return bytes;
2581
+ }
2582
+ function b64ToUint8(b64) {
2583
+ const bin = Buffer.from(b64, "base64");
2584
+ return new Uint8Array(bin.buffer, bin.byteOffset, bin.byteLength);
2585
+ }
2586
+ var DEFAULT_PRESENCE_DURATION_MS = 30 * 60 * 1e3;
2587
+ function validateWrit(writ, publicKeyHex, threadState, grants) {
2588
+ const now = Math.floor(Date.now() / 1e3);
2589
+ if (now < writ.meta.iat) {
2590
+ return {
2591
+ valid: false,
2592
+ error: "Writ not yet valid (iat in future)",
2593
+ code: "TEMPORAL_NOT_YET",
2594
+ gate_failed: "temporal"
2595
+ };
2596
+ }
2597
+ if (now > writ.meta.exp) {
2598
+ return {
2599
+ valid: false,
2600
+ error: "Writ expired",
2601
+ code: "TEMPORAL_EXPIRED",
2602
+ gate_failed: "temporal"
2603
+ };
2604
+ }
2605
+ if (threadState) {
2606
+ if (writ.head.tid !== threadState.thread_id) {
2607
+ return {
2608
+ valid: false,
2609
+ error: "Thread ID mismatch",
2610
+ code: "CAUSAL_TID",
2611
+ gate_failed: "causal"
2612
+ };
2613
+ }
2614
+ if (writ.head.seq !== threadState.sequence + 1) {
2615
+ return {
2616
+ valid: false,
2617
+ error: `Expected seq ${threadState.sequence + 1}, got ${writ.head.seq}`,
2618
+ code: "CAUSAL_SEQ",
2619
+ gate_failed: "causal"
2620
+ };
2621
+ }
2622
+ if (writ.meta.prev !== threadState.last_receipt_hash) {
2623
+ return {
2624
+ valid: false,
2625
+ error: "Previous receipt hash mismatch",
2626
+ code: "CAUSAL_PREV",
2627
+ gate_failed: "causal"
2628
+ };
2629
+ }
2630
+ } else {
2631
+ if (writ.head.seq !== 1) {
2632
+ return {
2633
+ valid: false,
2634
+ error: "First writ in thread must have seq=1",
2635
+ code: "CAUSAL_FIRST_SEQ",
2636
+ gate_failed: "causal"
2637
+ };
2638
+ }
2639
+ if (writ.meta.prev !== "") {
2640
+ return {
2641
+ valid: false,
2642
+ error: "First writ must have empty prev hash",
2643
+ code: "CAUSAL_FIRST_PREV",
2644
+ gate_failed: "causal"
2645
+ };
2646
+ }
2647
+ }
2648
+ if (writ.body.law !== "self") {
2649
+ const matchingGrant = grants.find(
2650
+ (g) => g.grant_id === writ.body.law && g.subject === writ.body.who && grantCoversAction(g, writ.body.act, writ.body.res, now)
2651
+ );
2652
+ if (!matchingGrant) {
2653
+ return {
2654
+ valid: false,
2655
+ error: `No valid grant found for law=${writ.body.law}`,
2656
+ code: "LEGAL_NO_GRANT",
2657
+ gate_failed: "legal"
2658
+ };
2659
+ }
2660
+ }
2661
+ const unsigned = {
2662
+ head: writ.head,
2663
+ body: writ.body,
2664
+ meta: writ.meta
2665
+ };
2666
+ const canonical = canonicalizeWrit(unsigned);
2667
+ const msgBytes = new TextEncoder().encode(canonical);
2668
+ const sigBytes = b64ToUint8(writ.sig.value);
2669
+ const pubBytes = hexToUint8(publicKeyHex);
2670
+ let sigValid;
2671
+ try {
2672
+ sigValid = import_tweetnacl.sign.detached.verify(msgBytes, sigBytes, pubBytes);
2673
+ } catch {
2674
+ return {
2675
+ valid: false,
2676
+ error: "Signature verification failed",
2677
+ code: "AUTH_SIG_FAIL",
2678
+ gate_failed: "authentic"
2679
+ };
2680
+ }
2681
+ if (!sigValid) {
2682
+ return {
2683
+ valid: false,
2684
+ error: "Invalid signature",
2685
+ code: "AUTH_SIG_INVALID",
2686
+ gate_failed: "authentic"
2687
+ };
2688
+ }
2689
+ return { valid: true, writ };
2690
+ }
2691
+ function grantCoversAction(grant, action, resource, nowUnix) {
2692
+ if (nowUnix < grant.meta.iat || nowUnix > grant.meta.exp) {
2693
+ return false;
2694
+ }
2695
+ return grant.caps.some(
2696
+ (cap) => matchOec(cap.oec, action) && matchScope(cap.scope, resource)
2697
+ );
2698
+ }
2699
+ function matchOec(pattern, action) {
2700
+ if (pattern === "*") return true;
2701
+ if (pattern === action) return true;
2702
+ if (pattern.endsWith(".*")) {
2703
+ const prefix = pattern.slice(0, -2);
2704
+ return action.startsWith(prefix + ".");
2705
+ }
2706
+ return false;
2707
+ }
2708
+ function matchScope(pattern, resource) {
2709
+ if (pattern === "*") return true;
2710
+ if (pattern === resource) return true;
2711
+ if (pattern.includes("*")) {
2712
+ const regex = new RegExp(
2713
+ "^" + pattern.replace(/\./g, "\\.").replace(/\*/g, "[^:]*") + "$"
2714
+ );
2715
+ return regex.test(resource);
2716
+ }
2717
+ return false;
2718
+ }
2719
+ function createReceipt(writ, effect, prevReceipt, metadata) {
2720
+ const now = Date.now();
2721
+ const sequence = prevReceipt ? prevReceipt.sequence + 1 : 1;
2722
+ const prevHash = prevReceipt?.hash ?? null;
2723
+ const writHash = sha256(canonicalizeWrit({
2724
+ head: writ.head,
2725
+ body: writ.body,
2726
+ meta: writ.meta
2727
+ }));
2728
+ const hashInput = [
2729
+ prevHash ?? "",
2730
+ writHash,
2731
+ writ.head.tid,
2732
+ String(sequence),
2733
+ effect,
2734
+ String(now)
2735
+ ].join(":");
2736
+ const receiptHash = sha256(hashInput);
2737
+ const receiptId = sha256(`receipt:${receiptHash}:${now}`);
2738
+ return {
2739
+ receipt_id: receiptId,
2740
+ writ_hash: writHash,
2741
+ thread_id: writ.head.tid,
2742
+ sequence,
2743
+ effect,
2744
+ hash: receiptHash,
2745
+ prev_hash: prevHash,
2746
+ executed_at: now,
2747
+ metadata
2748
+ };
2749
+ }
2750
+ function updateThreadState(receipt, softid) {
2751
+ return {
2752
+ thread_id: receipt.thread_id,
2753
+ softid,
2754
+ last_receipt_hash: receipt.hash,
2755
+ sequence: receipt.sequence,
2756
+ updated_at: receipt.executed_at
2757
+ };
2758
+ }
2759
+
2760
+ // src/sensor/axis-sensor.ts
2761
+ function normalizeSensorDecision(sensorDecision) {
2762
+ if ("action" in sensorDecision) {
2763
+ switch (sensorDecision.action) {
2764
+ case "ALLOW":
2765
+ return {
2766
+ allow: true,
2767
+ riskScore: 0,
2768
+ reasons: [],
2769
+ meta: sensorDecision.meta
2770
+ };
2771
+ case "DENY":
2772
+ return {
2773
+ allow: false,
2774
+ riskScore: 100,
2775
+ reasons: [sensorDecision.code, sensorDecision.reason].filter(
2776
+ Boolean
2777
+ ),
2778
+ meta: sensorDecision.meta,
2779
+ retryAfterMs: sensorDecision.retryAfterMs
2780
+ };
2781
+ case "THROTTLE":
2782
+ return {
2783
+ allow: false,
2784
+ riskScore: 50,
2785
+ reasons: ["RATE_LIMIT"],
2786
+ retryAfterMs: sensorDecision.retryAfterMs,
2787
+ meta: sensorDecision.meta
2788
+ };
2789
+ case "FLAG":
2790
+ return {
2791
+ allow: true,
2792
+ riskScore: sensorDecision.scoreDelta,
2793
+ reasons: sensorDecision.reasons,
2794
+ meta: sensorDecision.meta
2795
+ };
2796
+ }
2797
+ }
2798
+ return {
2799
+ allow: sensorDecision.allow,
2800
+ riskScore: sensorDecision.riskScore,
2801
+ reasons: sensorDecision.reasons,
2802
+ tags: sensorDecision.tags,
2803
+ meta: sensorDecision.meta,
2804
+ tighten: sensorDecision.tighten,
2805
+ retryAfterMs: sensorDecision.retryAfterMs
2806
+ };
2807
+ }
2808
+
2809
+ // src/needle/needle.engine.ts
2810
+ function assembleNeedle(params) {
2811
+ return {
2812
+ needle_id: (0, import_crypto3.randomBytes)(16).toString("hex"),
2813
+ phase: "created",
2814
+ tps_coordinate: params.tps_coordinate,
2815
+ intent: params.intent,
2816
+ presence: params.presence,
2817
+ writ: params.writ,
2818
+ grants: params.grants,
2819
+ created_at: Date.now()
2820
+ };
2821
+ }
2822
+ function classifyStitch(observation, verdict) {
2823
+ if (verdict.status === "failed" || verdict.status === "disputed") {
2824
+ return "torn";
2825
+ }
2826
+ if (observation.decision === "DENY") {
2827
+ return "silent";
2828
+ }
2829
+ if (verdict.isDeed) {
2830
+ return "deed";
2831
+ }
2832
+ return "silent";
2833
+ }
2834
+ function formStitch(needle, observation, verdict, receipt) {
2835
+ return {
2836
+ stitch_id: needle.needle_id,
2837
+ kind: classifyStitch(observation, verdict),
2838
+ intent: needle.intent.intent,
2839
+ actor_id: needle.intent.actor_id,
2840
+ tps_coordinate: needle.tps_coordinate,
2841
+ observation,
2842
+ verdict,
2843
+ receipt,
2844
+ thread_id: receipt.thread_id,
2845
+ sequence: receipt.sequence,
2846
+ stitched_at: Date.now()
2847
+ };
2848
+ }
2849
+ async function runNeedlePipeline(needle, config, threadState, prevReceipt, expectedOutcome) {
2850
+ const obs = createObservation("http");
2851
+ obs.intent = needle.intent.intent;
2852
+ obs.actorId = needle.intent.actor_id;
2853
+ needle.phase = "validated";
2854
+ let stage = startStage(obs, "loom.validate");
2855
+ const validation = validateWrit(
2856
+ needle.writ,
2857
+ config.public_key,
2858
+ threadState,
2859
+ needle.grants
2860
+ );
2861
+ if (!validation.valid) {
2862
+ endStage(stage, "fail", validation.error);
2863
+ return failNeedle(needle, obs, "validated", "LOOM_VALIDATION_FAILED", validation.error ?? "Writ validation failed");
2864
+ }
2865
+ endStage(stage, "ok");
2866
+ if (config.sensors && config.sensors.length > 0) {
2867
+ stage = startStage(obs, "sensors.evaluate");
2868
+ const sensorInput = {
2869
+ intent: needle.intent.intent,
2870
+ actorId: needle.intent.actor_id,
2871
+ metadata: {
2872
+ observation: obs,
2873
+ needle_id: needle.needle_id,
2874
+ tps_coordinate: needle.tps_coordinate,
2875
+ writ: needle.writ,
2876
+ grants: needle.grants,
2877
+ params: needle.intent.params
2878
+ }
2879
+ };
2880
+ for (const sensor of config.sensors) {
2881
+ if (sensor.supports && !sensor.supports(sensorInput)) continue;
2882
+ const t0 = Date.now();
2883
+ let decision;
2884
+ try {
2885
+ const rawDecision = await sensor.run(sensorInput);
2886
+ decision = normalizeSensorDecision(rawDecision);
2887
+ } catch (err) {
2888
+ const msg = err instanceof Error ? err.message : String(err);
2889
+ recordSensor(obs, sensor.name, false, 100, Date.now() - t0, [`sensor_error:${msg}`]);
2890
+ endStage(stage, "fail", `Sensor ${sensor.name} threw: ${msg}`);
2891
+ return failNeedle(needle, obs, "validated", "SENSOR_ERROR", `Sensor ${sensor.name} failed: ${msg}`);
2892
+ }
2893
+ recordSensor(obs, sensor.name, decision.allow, decision.riskScore, Date.now() - t0, decision.reasons);
2894
+ if (!decision.allow) {
2895
+ endStage(stage, "fail", `Sensor ${sensor.name} denied`);
2896
+ return failNeedle(needle, obs, "validated", "SENSOR_DENY", decision.reasons[0] ?? `Denied by ${sensor.name}`);
2897
+ }
2898
+ }
2899
+ endStage(stage, "ok");
2900
+ }
2901
+ needle.phase = "executing";
2902
+ stage = startStage(obs, "handler.execute");
2903
+ const handler = config.handlers.get(needle.intent.intent);
2904
+ if (!handler) {
2905
+ endStage(stage, "fail", `No handler for intent '${needle.intent.intent}'`);
2906
+ return failNeedle(needle, obs, "executing", "NO_HANDLER", `No handler registered for intent '${needle.intent.intent}'`);
2907
+ }
2908
+ const handlerCtx = {
2909
+ needle_id: needle.needle_id,
2910
+ actor_id: needle.intent.actor_id,
2911
+ presence_id: needle.presence.presence_id,
2912
+ writ: needle.writ,
2913
+ grants: needle.grants,
2914
+ tps_coordinate: needle.tps_coordinate
2915
+ };
2916
+ let handlerResult;
2917
+ try {
2918
+ handlerResult = await handler(needle.intent, handlerCtx);
2919
+ } catch (err) {
2920
+ const msg = err instanceof Error ? err.message : String(err);
2921
+ endStage(stage, "fail", msg);
2922
+ return failNeedle(needle, obs, "executing", "HANDLER_ERROR", msg);
2923
+ }
2924
+ if (!handlerResult.ok) {
2925
+ endStage(stage, "fail", handlerResult.effect);
2926
+ obs.decision = "DENY";
2927
+ obs.resultCode = handlerResult.effect;
2928
+ obs.statusCode = handlerResult.status_code ?? 400;
2929
+ } else {
2930
+ endStage(stage, "ok");
2931
+ obs.decision = "ALLOW";
2932
+ obs.resultCode = handlerResult.effect;
2933
+ obs.statusCode = handlerResult.status_code ?? 200;
2934
+ }
2935
+ if (handlerResult.data) {
2936
+ obs.facts = { ...obs.facts, ...handlerResult.data };
2937
+ }
2938
+ needle.phase = "observed";
2939
+ finalizeObservation(obs, obs.decision ?? "DENY", obs.statusCode ?? 500, obs.resultCode);
2940
+ needle.observation = obs;
2941
+ const verdict = scoreTruth(obs, expectedOutcome);
2942
+ needle.verdict = verdict;
2943
+ needle.phase = "stitched";
2944
+ stage = startStage(obs, "stitch.form");
2945
+ const receipt = createReceipt(
2946
+ needle.writ,
2947
+ obs.decision ?? "DENY",
2948
+ prevReceipt
2949
+ );
2950
+ needle.receipt = receipt;
2951
+ const newThreadState = updateThreadState(
2952
+ receipt,
2953
+ needle.intent.actor_id
2954
+ );
2955
+ const stitch = formStitch(needle, obs, verdict, receipt);
2956
+ needle.completed_at = Date.now();
2957
+ endStage(stage, "ok");
2958
+ return {
2959
+ ok: handlerResult.ok,
2960
+ needle,
2961
+ stitch,
2962
+ thread_state: newThreadState
2963
+ };
2964
+ }
2965
+ function failNeedle(needle, obs, phase, code, message) {
2966
+ needle.phase = "failed";
2967
+ needle.error = { phase, code, message };
2968
+ needle.completed_at = Date.now();
2969
+ obs.decision = obs.decision ?? "DENY";
2970
+ obs.statusCode = obs.statusCode ?? 500;
2971
+ finalizeObservation(obs, obs.decision, obs.statusCode, obs.resultCode);
2972
+ needle.observation = obs;
2973
+ const verdict = scoreTruth(obs);
2974
+ needle.verdict = verdict;
2975
+ return {
2976
+ ok: false,
2977
+ needle
2978
+ };
2979
+ }
2980
+
2981
+ // src/needle/knot.engine.ts
2982
+ var import_crypto4 = require("crypto");
2983
+ function openKnot(params) {
2984
+ const isIrreversible = params.type === "irreversible";
2985
+ return {
2986
+ knot_id: `knot_${(0, import_crypto4.randomBytes)(16).toString("hex")}`,
2987
+ type: params.type,
2988
+ status: "open",
2989
+ stitch_ids: [],
2990
+ thread_id: params.thread_id,
2991
+ tps_anchor: params.tps_anchor,
2992
+ irreversible: isIrreversible,
2993
+ capsule_id: params.capsule_id,
2994
+ law_ref: params.law_ref,
2995
+ branch_ids: [],
2996
+ required_count: params.required_count,
2997
+ all_or_nothing: params.all_or_nothing ?? (params.type === "authority" || isIrreversible),
2998
+ actor_id: params.actor_id,
2999
+ created_at: Date.now()
3000
+ };
3001
+ }
3002
+ function addStitchToKnot(knot, stitch) {
3003
+ if (knot.status !== "open") {
3004
+ return `Knot ${knot.knot_id} is ${knot.status}, cannot add stitches`;
3005
+ }
3006
+ if (stitch.thread_id !== knot.thread_id) {
3007
+ return `Stitch thread ${stitch.thread_id} does not match knot thread ${knot.thread_id}`;
3008
+ }
3009
+ if (knot.stitch_ids.includes(stitch.stitch_id)) {
3010
+ return `Stitch ${stitch.stitch_id} already in knot`;
3011
+ }
3012
+ if (knot.type === "authority" && knot.capsule_id) {
3013
+ if (stitch.observation.capsuleId && stitch.observation.capsuleId !== knot.capsule_id) {
3014
+ return `Stitch capsule ${stitch.observation.capsuleId} does not match knot capsule ${knot.capsule_id}`;
3015
+ }
3016
+ }
3017
+ knot.stitch_ids.push(stitch.stitch_id);
3018
+ return null;
3019
+ }
3020
+ function validateKnot(knot, stitches) {
3021
+ const errors = [];
3022
+ const passedIds = [];
3023
+ const failedIds = [];
3024
+ const stitchMap = new Map(stitches.map((s) => [s.stitch_id, s]));
3025
+ for (const sid of knot.stitch_ids) {
3026
+ const stitch = stitchMap.get(sid);
3027
+ if (!stitch) {
3028
+ failedIds.push(sid);
3029
+ errors.push({
3030
+ code: "KNOT_MISSING_STITCH",
3031
+ message: `Stitch ${sid} not found`,
3032
+ stitch_id: sid
3033
+ });
3034
+ continue;
3035
+ }
3036
+ if (stitch.kind === "torn") {
3037
+ failedIds.push(sid);
3038
+ errors.push({
3039
+ code: "KNOT_TORN_STITCH",
3040
+ message: `Stitch ${sid} is torn (failed/disputed)`,
3041
+ stitch_id: sid
3042
+ });
3043
+ continue;
3044
+ }
3045
+ if (knot.type === "irreversible" && stitch.kind !== "deed") {
3046
+ failedIds.push(sid);
3047
+ errors.push({
3048
+ code: "KNOT_REQUIRES_DEED",
3049
+ message: `Irreversible knot requires deed stitch, got '${stitch.kind}'`,
3050
+ stitch_id: sid
3051
+ });
3052
+ continue;
3053
+ }
3054
+ passedIds.push(sid);
3055
+ }
3056
+ if (knot.required_count !== void 0 && knot.stitch_ids.length < knot.required_count) {
3057
+ errors.push({
3058
+ code: "KNOT_INSUFFICIENT_STITCHES",
3059
+ message: `Knot requires ${knot.required_count} stitches, has ${knot.stitch_ids.length}`
3060
+ });
3061
+ }
3062
+ const allPassed = failedIds.length === 0;
3063
+ const canTie = knot.all_or_nothing ? allPassed && (knot.required_count === void 0 || knot.stitch_ids.length >= knot.required_count) : passedIds.length > 0 && (knot.required_count === void 0 || passedIds.length >= knot.required_count);
3064
+ return {
3065
+ valid: allPassed && errors.length === 0,
3066
+ passed_stitch_ids: passedIds,
3067
+ failed_stitch_ids: failedIds,
3068
+ can_tie: canTie,
3069
+ errors
3070
+ };
3071
+ }
3072
+ function tieKnot(knot, stitches) {
3073
+ const validation = validateKnot(knot, stitches);
3074
+ if (!validation.can_tie) {
3075
+ return { ...validation, knot };
3076
+ }
3077
+ const receiptHashes = validation.passed_stitch_ids.map((sid) => stitches.find((s) => s.stitch_id === sid)).sort((a, b) => a.sequence - b.sequence).map((s) => s.receipt.hash);
3078
+ const witnessPayload = receiptHashes.join(":");
3079
+ knot.witness_hash = (0, import_crypto4.createHash)("sha256").update(witnessPayload).digest("hex");
3080
+ knot.status = "tied";
3081
+ knot.tied_at = Date.now();
3082
+ return { ...validation, knot };
3083
+ }
3084
+ function breakKnot(knot, request) {
3085
+ if (knot.status === "broken") {
3086
+ return { ok: false, error: "Knot is already broken" };
3087
+ }
3088
+ if (knot.status === "open") {
3089
+ knot.status = "broken";
3090
+ knot.broken_at = Date.now();
3091
+ knot.break_reason = request.reason;
3092
+ return { ok: true };
3093
+ }
3094
+ if (knot.status === "tied") {
3095
+ if (!request.reason) {
3096
+ return { ok: false, error: "Breaking a tied knot requires a reason" };
3097
+ }
3098
+ if ((knot.irreversible || knot.type === "law") && !request.override_grant_id) {
3099
+ return {
3100
+ ok: false,
3101
+ error: `Breaking ${knot.type} knot requires override_grant_id from higher authority`
3102
+ };
3103
+ }
3104
+ knot.status = "broken";
3105
+ knot.broken_at = Date.now();
3106
+ knot.break_reason = request.reason;
3107
+ return { ok: true };
3108
+ }
3109
+ return { ok: false, error: `Cannot break knot in status '${knot.status}'` };
3110
+ }
3111
+ function forkFromKnot(knot, branchId, decisionStitchId) {
3112
+ if (knot.status !== "tied" && knot.status !== "open") {
3113
+ return { ok: false, error: `Cannot fork from knot in status '${knot.status}'` };
3114
+ }
3115
+ if (decisionStitchId) {
3116
+ if (!knot.stitch_ids.includes(decisionStitchId)) {
3117
+ return { ok: false, error: `Decision stitch ${decisionStitchId} is not part of this knot` };
3118
+ }
3119
+ knot.decision_stitch_id = decisionStitchId;
3120
+ }
3121
+ knot.branch_ids.push(branchId);
3122
+ knot.status = "forked";
3123
+ return { ok: true };
3124
+ }
3125
+ function isKnotOpen(knot) {
3126
+ return knot.status === "open";
3127
+ }
3128
+ function isPointOfNoReturn(knot) {
3129
+ return knot.irreversible && knot.status === "tied";
3130
+ }
3131
+ function findKnotsForStitch(stitchId, knots) {
3132
+ return knots.filter((k) => k.stitch_ids.includes(stitchId));
3133
+ }
3134
+ function getIrreversibleKnots(knots) {
3135
+ return knots.filter((k) => k.irreversible && k.status === "tied");
3136
+ }
3137
+ function getDecisionPoints(knots) {
3138
+ return knots.filter((k) => k.type === "decision" || k.status === "forked");
3139
+ }
3140
+
3141
+ // src/needle/fabric.engine.ts
3142
+ var import_crypto5 = require("crypto");
3143
+ function createFabric() {
3144
+ return {
3145
+ fabric_id: `fab_${(0, import_crypto5.randomBytes)(16).toString("hex")}`,
3146
+ state_hash: hashState(/* @__PURE__ */ new Map()),
3147
+ cells: /* @__PURE__ */ new Map(),
3148
+ thread_ids: [],
3149
+ stitch_count: 0,
3150
+ knot_count: 0,
3151
+ computed_at: Date.now(),
3152
+ version: 0
3153
+ };
3154
+ }
3155
+ function applyStitch(fabric, stitch, effect) {
3156
+ for (const [key, value] of Object.entries(effect.mutations)) {
3157
+ if (value === null) {
3158
+ fabric.cells.delete(key);
3159
+ } else {
3160
+ const existing = fabric.cells.get(key);
3161
+ if (existing?.locked) {
3162
+ continue;
3163
+ }
3164
+ fabric.cells.set(key, {
3165
+ key,
3166
+ value,
3167
+ last_stitch_id: stitch.stitch_id,
3168
+ last_tps: stitch.tps_coordinate,
3169
+ write_count: (existing?.write_count ?? 0) + 1,
3170
+ locked: false
3171
+ });
3172
+ }
3173
+ }
3174
+ if (!fabric.thread_ids.includes(stitch.thread_id)) {
3175
+ fabric.thread_ids.push(stitch.thread_id);
3176
+ }
3177
+ fabric.stitch_count++;
3178
+ fabric.version++;
3179
+ fabric.projected_at_tps = stitch.tps_coordinate ?? fabric.projected_at_tps;
3180
+ fabric.computed_at = Date.now();
3181
+ fabric.state_hash = hashState(fabric.cells);
3182
+ }
3183
+ function weave(stitches, resolver, knots) {
3184
+ const fabric = createFabric();
3185
+ const sorted = [...stitches].sort((a, b) => a.sequence - b.sequence);
3186
+ for (const stitch of sorted) {
3187
+ if (stitch.kind === "torn") continue;
3188
+ const effect = resolver(stitch);
3189
+ applyStitch(fabric, stitch, effect);
3190
+ }
3191
+ if (knots) {
3192
+ for (const knot of knots) {
3193
+ if (knot.irreversible && knot.status === "tied") {
3194
+ lockCellsByKnot(fabric, knot, stitches, resolver);
3195
+ fabric.knot_count++;
3196
+ }
3197
+ }
3198
+ }
3199
+ return fabric;
3200
+ }
3201
+ function projectAt(stitches, resolver, tpsFilter, knots) {
3202
+ const filtered = stitches.filter((s) => tpsFilter(s.tps_coordinate));
3203
+ return weave(filtered, resolver, knots);
3204
+ }
3205
+ function lockCellsByKnot(fabric, knot, stitches, resolver) {
3206
+ const knotStitchIds = new Set(knot.stitch_ids);
3207
+ const knotStitches = stitches.filter((s) => knotStitchIds.has(s.stitch_id));
3208
+ for (const stitch of knotStitches) {
3209
+ const effect = resolver(stitch);
3210
+ for (const key of Object.keys(effect.mutations)) {
3211
+ const cell = fabric.cells.get(key);
3212
+ if (cell) {
3213
+ cell.locked = true;
3214
+ cell.locked_by_knot = knot.knot_id;
3215
+ }
3216
+ }
3217
+ }
3218
+ }
3219
+ function lockCells(fabric, keys, knotId) {
3220
+ for (const key of keys) {
3221
+ const cell = fabric.cells.get(key);
3222
+ if (cell) {
3223
+ cell.locked = true;
3224
+ cell.locked_by_knot = knotId;
3225
+ }
3226
+ }
3227
+ }
3228
+ function queryFabric(fabric, query) {
3229
+ let results = [...fabric.cells.values()];
3230
+ if (query.keys) {
3231
+ const keySet = new Set(query.keys);
3232
+ results = results.filter((c) => keySet.has(c.key));
3233
+ }
3234
+ if (query.prefix) {
3235
+ const prefix = query.prefix;
3236
+ results = results.filter((c) => c.key.startsWith(prefix));
3237
+ }
3238
+ if (query.locked_only) {
3239
+ results = results.filter((c) => c.locked);
3240
+ }
3241
+ return results;
3242
+ }
3243
+ function getFabricValue(fabric, key) {
3244
+ return fabric.cells.get(key)?.value;
3245
+ }
3246
+ function diffFabrics(a, b) {
3247
+ const entries = [];
3248
+ let added = 0;
3249
+ let modified = 0;
3250
+ let deleted = 0;
3251
+ for (const [key, cellB] of b.cells) {
3252
+ const cellA = a.cells.get(key);
3253
+ if (!cellA) {
3254
+ entries.push({
3255
+ key,
3256
+ kind: "added",
3257
+ after: cellB.value,
3258
+ caused_by_stitch: cellB.last_stitch_id
3259
+ });
3260
+ added++;
3261
+ } else if (JSON.stringify(cellA.value) !== JSON.stringify(cellB.value)) {
3262
+ entries.push({
3263
+ key,
3264
+ kind: "modified",
3265
+ before: cellA.value,
3266
+ after: cellB.value,
3267
+ caused_by_stitch: cellB.last_stitch_id
3268
+ });
3269
+ modified++;
3270
+ }
3271
+ }
3272
+ for (const [key, cellA] of a.cells) {
3273
+ if (!b.cells.has(key)) {
3274
+ entries.push({
3275
+ key,
3276
+ kind: "deleted",
3277
+ before: cellA.value
3278
+ });
3279
+ deleted++;
3280
+ }
3281
+ }
3282
+ return {
3283
+ from_fabric_id: a.fabric_id,
3284
+ to_fabric_id: b.fabric_id,
3285
+ entries,
3286
+ added_count: added,
3287
+ modified_count: modified,
3288
+ deleted_count: deleted
3289
+ };
3290
+ }
3291
+ function hashState(cells) {
3292
+ const keys = [...cells.keys()].sort();
3293
+ const payload = keys.map((k) => `${k}=${JSON.stringify(cells.get(k).value)}`).join("\n");
3294
+ return (0, import_crypto5.createHash)("sha256").update(payload).digest("hex");
3295
+ }
3296
+
3297
+ // src/needle/pattern.engine.ts
3298
+ var import_crypto6 = require("crypto");
3299
+ var InMemoryPatternStore = class {
3300
+ constructor() {
3301
+ this.patterns = /* @__PURE__ */ new Map();
3302
+ }
3303
+ save(pattern) {
3304
+ this.patterns.set(pattern.pattern_id, pattern);
3305
+ }
3306
+ get(patternId) {
3307
+ return this.patterns.get(patternId);
3308
+ }
3309
+ findByKind(kind) {
3310
+ return [...this.patterns.values()].filter((p) => p.kind === kind);
3311
+ }
3312
+ findByIntent(intent) {
3313
+ return [...this.patterns.values()].filter(
3314
+ (p) => p.signature.intent_sequence?.includes(intent)
3315
+ );
3316
+ }
3317
+ all() {
3318
+ return [...this.patterns.values()];
3319
+ }
3320
+ };
3321
+ function detectSequencePatterns(stitches, windowSize, minOccurrences) {
3322
+ if (stitches.length < windowSize || windowSize < 2) return [];
3323
+ const sorted = [...stitches].sort((a, b) => a.sequence - b.sequence);
3324
+ const sequenceCounts = /* @__PURE__ */ new Map();
3325
+ for (let i = 0; i <= sorted.length - windowSize; i++) {
3326
+ const window = sorted.slice(i, i + windowSize);
3327
+ const key = window.map((s) => s.intent).join("\u2192");
3328
+ const ids = window.map((s) => s.stitch_id);
3329
+ const existing = sequenceCounts.get(key);
3330
+ if (existing) {
3331
+ existing.count++;
3332
+ existing.stitch_ids.push(ids);
3333
+ } else {
3334
+ sequenceCounts.set(key, { count: 1, stitch_ids: [ids] });
3335
+ }
3336
+ }
3337
+ const patterns = [];
3338
+ const now = Date.now();
3339
+ for (const [key, data] of sequenceCounts) {
3340
+ if (data.count < minOccurrences) continue;
3341
+ const intents = key.split("\u2192");
3342
+ const confidence = Math.min(data.count / (minOccurrences * 2), 1);
3343
+ patterns.push({
3344
+ pattern_id: `pat_seq_${(0, import_crypto6.randomBytes)(8).toString("hex")}`,
3345
+ kind: "sequence",
3346
+ name: `Sequence: ${intents.join(" \u2192 ")}`,
3347
+ signature: {
3348
+ intent_sequence: intents,
3349
+ min_length: windowSize,
3350
+ max_length: windowSize
3351
+ },
3352
+ confidence,
3353
+ occurrence_count: data.count,
3354
+ first_seen_at: now,
3355
+ last_seen_at: now,
3356
+ seen_in_threads: [...new Set(
3357
+ data.stitch_ids.flatMap(
3358
+ (ids) => ids.map((id) => sorted.find((s) => s.stitch_id === id)?.thread_id).filter(Boolean)
3359
+ )
3360
+ )],
3361
+ classification: "unclassified"
3362
+ });
3363
+ }
3364
+ return patterns;
3365
+ }
3366
+ function detectKnotPatterns(knots, minOccurrences) {
3367
+ const groups = /* @__PURE__ */ new Map();
3368
+ for (const knot of knots) {
3369
+ if (knot.status !== "tied") continue;
3370
+ const key = `${knot.type}:${knot.stitch_ids.length}`;
3371
+ const group = groups.get(key) ?? [];
3372
+ group.push(knot);
3373
+ groups.set(key, group);
3374
+ }
3375
+ const patterns = [];
3376
+ const now = Date.now();
3377
+ for (const [key, group] of groups) {
3378
+ if (group.length < minOccurrences) continue;
3379
+ const [type, sizeStr] = key.split(":");
3380
+ const size = parseInt(sizeStr, 10);
3381
+ const confidence = Math.min(group.length / (minOccurrences * 2), 1);
3382
+ patterns.push({
3383
+ pattern_id: `pat_knot_${(0, import_crypto6.randomBytes)(8).toString("hex")}`,
3384
+ kind: "knot",
3385
+ name: `Knot: ${type} (${size} stitches)`,
3386
+ signature: {
3387
+ knot_type: type,
3388
+ knot_size: size
3389
+ },
3390
+ confidence,
3391
+ occurrence_count: group.length,
3392
+ first_seen_at: now,
3393
+ last_seen_at: now,
3394
+ seen_in_threads: [...new Set(group.map((k) => k.thread_id))],
3395
+ classification: "unclassified"
3396
+ });
3397
+ }
3398
+ return patterns;
3399
+ }
3400
+ function matchPatterns(stitches, patterns) {
3401
+ const sorted = [...stitches].sort((a, b) => a.sequence - b.sequence);
3402
+ const matches = [];
3403
+ const now = Date.now();
3404
+ for (const pattern of patterns) {
3405
+ if (pattern.kind === "sequence" && pattern.signature.intent_sequence) {
3406
+ const seq = pattern.signature.intent_sequence;
3407
+ const seqLen = seq.length;
3408
+ for (let i = 0; i <= sorted.length - seqLen; i++) {
3409
+ const window = sorted.slice(i, i + seqLen);
3410
+ const windowIntents = window.map((s) => s.intent);
3411
+ if (windowIntents.every((intent, idx) => intent === seq[idx])) {
3412
+ matches.push({
3413
+ pattern_id: pattern.pattern_id,
3414
+ matched_stitch_ids: window.map((s) => s.stitch_id),
3415
+ match_score: 1,
3416
+ thread_id: window[0].thread_id,
3417
+ detected_at: now
3418
+ });
3419
+ }
3420
+ }
3421
+ }
3422
+ }
3423
+ return matches;
3424
+ }
3425
+ function recordOccurrence(pattern, threadId) {
3426
+ pattern.occurrence_count++;
3427
+ pattern.last_seen_at = Date.now();
3428
+ pattern.confidence = 1 - 1 / (1 + pattern.occurrence_count * 0.5);
3429
+ if (!pattern.seen_in_threads.includes(threadId)) {
3430
+ pattern.seen_in_threads.push(threadId);
3431
+ }
3432
+ }
3433
+ function detectAnomalies(recentStitches, knownPatterns, threshold = 0.7) {
3434
+ const anomalies = [];
3435
+ const sorted = [...recentStitches].sort((a, b) => a.sequence - b.sequence);
3436
+ const now = Date.now();
3437
+ for (const pattern of knownPatterns) {
3438
+ if (pattern.kind !== "sequence" || !pattern.signature.intent_sequence) continue;
3439
+ if (pattern.confidence < threshold) continue;
3440
+ const seq = pattern.signature.intent_sequence;
3441
+ if (sorted.length >= 1 && sorted.length < seq.length) {
3442
+ const partialMatch = sorted.every(
3443
+ (s, i) => i < seq.length && s.intent === seq[i]
3444
+ );
3445
+ if (partialMatch) {
3446
+ const expectedNext = seq[sorted.length];
3447
+ const lastStitch = sorted[sorted.length - 1];
3448
+ if (pattern.occurrence_count >= 3) {
3449
+ anomalies.push({
3450
+ pattern_id: `pat_anom_${(0, import_crypto6.randomBytes)(8).toString("hex")}`,
3451
+ kind: "anomaly",
3452
+ name: `Incomplete: ${pattern.name}`,
3453
+ description: `Expected '${expectedNext}' after '${lastStitch.intent}' based on pattern '${pattern.name}'`,
3454
+ signature: pattern.signature,
3455
+ confidence: pattern.confidence * 0.8,
3456
+ occurrence_count: 1,
3457
+ first_seen_at: now,
3458
+ last_seen_at: now,
3459
+ seen_in_threads: [lastStitch.thread_id],
3460
+ classification: "anomalous"
3461
+ });
3462
+ }
3463
+ }
3464
+ }
3465
+ }
3466
+ return anomalies;
3467
+ }
3468
+ // Annotate the CommonJS export names for ESM import in node:
3469
+ 0 && (module.exports = {
3470
+ InMemoryPatternStore,
3471
+ addStitchToKnot,
3472
+ applyStitch,
3473
+ assembleNeedle,
3474
+ breakKnot,
3475
+ createFabric,
3476
+ detectAnomalies,
3477
+ detectKnotPatterns,
3478
+ detectSequencePatterns,
3479
+ diffFabrics,
3480
+ findKnotsForStitch,
3481
+ forkFromKnot,
3482
+ formStitch,
3483
+ getDecisionPoints,
3484
+ getFabricValue,
3485
+ getIrreversibleKnots,
3486
+ isKnotOpen,
3487
+ isPointOfNoReturn,
3488
+ lockCells,
3489
+ matchPatterns,
3490
+ openKnot,
3491
+ projectAt,
3492
+ queryFabric,
3493
+ recordOccurrence,
3494
+ runNeedlePipeline,
3495
+ tieKnot,
3496
+ validateKnot,
3497
+ weave
3498
+ });
3499
+ //# sourceMappingURL=index.js.map