uint8arraylist 2.1.1 → 2.2.0

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.
@@ -10,13 +10,21 @@ export declare class Uint8ArrayList implements Iterable<Uint8Array> {
10
10
  [Symbol.iterator](): Generator<Uint8Array, void, undefined>;
11
11
  get byteLength(): number;
12
12
  /**
13
- * Add one or more `bufs` to this Uint8ArrayList
13
+ * Add one or more `bufs` to the end of this Uint8ArrayList
14
14
  */
15
15
  append(...bufs: Appendable[]): void;
16
16
  /**
17
- * Add all `bufs` to this Uint8ArrayList
17
+ * Add all `bufs` to the end of this Uint8ArrayList
18
18
  */
19
19
  appendAll(bufs: Appendable[]): void;
20
+ /**
21
+ * Add one or more `bufs` to the start of this Uint8ArrayList
22
+ */
23
+ prepend(...bufs: Appendable[]): void;
24
+ /**
25
+ * Add all `bufs` to the start of this Uint8ArrayList
26
+ */
27
+ prependAll(bufs: Appendable[]): void;
20
28
  /**
21
29
  * Read the value at `index`
22
30
  */
@@ -41,14 +49,14 @@ export declare class Uint8ArrayList implements Iterable<Uint8Array> {
41
49
  */
42
50
  slice(beginInclusive?: number, endExclusive?: number): Uint8Array;
43
51
  /**
44
- * Returns a new Uint8Array from the given start and end element index.
52
+ * Returns a alloc from the given start and end element index.
45
53
  *
46
54
  * In the best case where the data extracted comes from a single Uint8Array
47
55
  * internally this is a no-copy operation otherwise it is a copy operation.
48
56
  */
49
57
  subarray(beginInclusive?: number, endExclusive?: number): Uint8Array;
50
58
  /**
51
- * Returns a new Uint8ArrayList from the given start and end element index.
59
+ * Returns a allocList from the given start and end element index.
52
60
  *
53
61
  * This is a no-copy operation.
54
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,aAAK,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;AAyB7C;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,cAAc,CAErE;AAED,qBAAa,cAAe,YAAW,QAAQ,CAAC,UAAU,CAAC;IACzD,OAAO,CAAC,IAAI,CAAc;IACnB,MAAM,EAAE,MAAM,CAAA;gBAER,GAAG,IAAI,EAAE,UAAU,EAAE;IAUhC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAInB,IAAI,UAAU,WAEb;IAED;;OAEG;IACH,MAAM,CAAE,GAAG,IAAI,EAAE,UAAU,EAAE;IAI7B;;OAEG;IACH,SAAS,CAAE,IAAI,EAAE,UAAU,EAAE;IAkB7B;;OAEG;IACH,GAAG,CAAE,KAAK,EAAE,MAAM;IAMlB;;OAEG;IACH,GAAG,CAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAMjC;;OAEG;IACH,KAAK,CAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAE,MAAU;IAc1C;;OAEG;IACH,OAAO,CAAE,KAAK,EAAE,MAAM;IAsBtB;;;;;OAKG;IACH,KAAK,CAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU;IAMlE;;;;;OAKG;IACH,QAAQ,CAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU;IAUrE;;;;OAIG;IACH,OAAO,CAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc;IASxE,OAAO,CAAC,QAAQ;IAoEhB,OAAO,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAOpC,OAAO,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQjD,QAAQ,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAO7D,QAAQ,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ1E,QAAQ,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAO7D,QAAQ,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ1E,WAAW,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAOhE,WAAW,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ7E,QAAQ,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAOrC,QAAQ,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQlD,SAAS,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAO9D,SAAS,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ3E,SAAS,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAO9D,SAAS,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ3E,YAAY,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAOjE,YAAY,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ9E,UAAU,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAO/D,UAAU,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ5E,UAAU,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAO/D,UAAU,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ5E,MAAM,CAAE,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,cAAc;CAqB7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { concat } from 'uint8arrays/concat';
2
2
  import { equals } from 'uint8arrays/equals';
3
+ import { allocUnsafe, alloc } from 'uint8arrays/alloc';
3
4
  const symbol = Symbol.for('@achingbrain/uint8arraylist');
4
- function findBufAndOffset(bufs, index, totalLength) {
5
- if (index == null || index < 0 || index >= totalLength) {
5
+ function findBufAndOffset(bufs, index) {
6
+ if (index == null || index < 0) {
6
7
  throw new RangeError('index is out of bounds');
7
8
  }
8
9
  let offset = 0;
@@ -39,13 +40,13 @@ export class Uint8ArrayList {
39
40
  return this.length;
40
41
  }
41
42
  /**
42
- * Add one or more `bufs` to this Uint8ArrayList
43
+ * Add one or more `bufs` to the end of this Uint8ArrayList
43
44
  */
44
45
  append(...bufs) {
45
46
  this.appendAll(bufs);
46
47
  }
47
48
  /**
48
- * Add all `bufs` to this Uint8ArrayList
49
+ * Add all `bufs` to the end of this Uint8ArrayList
49
50
  */
50
51
  appendAll(bufs) {
51
52
  let length = 0;
@@ -55,8 +56,8 @@ export class Uint8ArrayList {
55
56
  this.bufs.push(buf);
56
57
  }
57
58
  else if (isUint8ArrayList(buf)) {
58
- length += buf.length;
59
- this.bufs = this.bufs.concat(buf.bufs);
59
+ length += buf.byteLength;
60
+ this.bufs.push(...buf.bufs);
60
61
  }
61
62
  else {
62
63
  throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList');
@@ -64,18 +65,44 @@ export class Uint8ArrayList {
64
65
  }
65
66
  this.length += length;
66
67
  }
68
+ /**
69
+ * Add one or more `bufs` to the start of this Uint8ArrayList
70
+ */
71
+ prepend(...bufs) {
72
+ this.prependAll(bufs);
73
+ }
74
+ /**
75
+ * Add all `bufs` to the start of this Uint8ArrayList
76
+ */
77
+ prependAll(bufs) {
78
+ let length = 0;
79
+ for (const buf of bufs.reverse()) {
80
+ if (buf instanceof Uint8Array) {
81
+ length += buf.byteLength;
82
+ this.bufs.unshift(buf);
83
+ }
84
+ else if (isUint8ArrayList(buf)) {
85
+ length += buf.byteLength;
86
+ this.bufs.unshift(...buf.bufs);
87
+ }
88
+ else {
89
+ throw new Error('Could not prepend value, must be an Uint8Array or a Uint8ArrayList');
90
+ }
91
+ }
92
+ this.length += length;
93
+ }
67
94
  /**
68
95
  * Read the value at `index`
69
96
  */
70
97
  get(index) {
71
- const res = findBufAndOffset(this.bufs, index, this.length);
98
+ const res = findBufAndOffset(this.bufs, index);
72
99
  return res.buf[res.index];
73
100
  }
74
101
  /**
75
102
  * Set the value at `index` to `value`
76
103
  */
77
104
  set(index, value) {
78
- const res = findBufAndOffset(this.bufs, index, this.length);
105
+ const res = findBufAndOffset(this.bufs, index);
79
106
  res.buf[res.index] = value;
80
107
  }
81
108
  /**
@@ -130,7 +157,7 @@ export class Uint8ArrayList {
130
157
  return concat(bufs, length);
131
158
  }
132
159
  /**
133
- * Returns a new Uint8Array from the given start and end element index.
160
+ * Returns a alloc from the given start and end element index.
134
161
  *
135
162
  * In the best case where the data extracted comes from a single Uint8Array
136
163
  * internally this is a no-copy operation otherwise it is a copy operation.
@@ -143,22 +170,21 @@ export class Uint8ArrayList {
143
170
  return concat(bufs, length);
144
171
  }
145
172
  /**
146
- * Returns a new Uint8ArrayList from the given start and end element index.
173
+ * Returns a allocList from the given start and end element index.
147
174
  *
148
175
  * This is a no-copy operation.
149
176
  */
150
177
  sublist(beginInclusive, endExclusive) {
151
- const { bufs } = this._subList(beginInclusive, endExclusive);
178
+ const { bufs, length } = this._subList(beginInclusive, endExclusive);
152
179
  const list = new Uint8ArrayList();
153
- list.appendAll(bufs);
180
+ list.length = length;
181
+ // don't loop, just set the bufs
182
+ list.bufs = bufs;
154
183
  return list;
155
184
  }
156
185
  _subList(beginInclusive, endExclusive) {
157
- if (beginInclusive == null && endExclusive == null) {
158
- return { bufs: this.bufs, length: this.length };
159
- }
160
186
  beginInclusive = beginInclusive ?? 0;
161
- endExclusive = endExclusive ?? (this.length > 0 ? this.length : 0);
187
+ endExclusive = endExclusive ?? this.length;
162
188
  if (beginInclusive < 0) {
163
189
  beginInclusive = this.length + beginInclusive;
164
190
  }
@@ -166,151 +192,172 @@ export class Uint8ArrayList {
166
192
  endExclusive = this.length + endExclusive;
167
193
  }
168
194
  if (beginInclusive < 0 || endExclusive > this.length) {
169
- throw new RangeError('index out of bounds');
195
+ throw new RangeError('index is out of bounds');
170
196
  }
171
197
  if (beginInclusive === endExclusive) {
172
198
  return { bufs: [], length: 0 };
173
199
  }
200
+ if (beginInclusive === 0 && endExclusive === this.length) {
201
+ return { bufs: this.bufs, length: this.length };
202
+ }
174
203
  const bufs = [];
175
204
  let offset = 0;
176
- for (const buf of this.bufs) {
205
+ for (let i = 0; i < this.bufs.length; i++) {
206
+ const buf = this.bufs[i];
177
207
  const bufStart = offset;
178
208
  const bufEnd = bufStart + buf.byteLength;
179
- const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd;
180
- const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd;
181
- const bufInSlice = beginInclusive < bufStart && endExclusive >= bufEnd;
209
+ // for next loop
182
210
  offset = bufEnd;
183
- let startIndex;
184
- let endIndex;
185
- if (sliceStartInBuf) {
186
- startIndex = beginInclusive - bufStart;
187
- endIndex = buf.byteLength;
211
+ if (beginInclusive >= bufEnd) {
212
+ // start after this buf
213
+ continue;
188
214
  }
189
- if (sliceEndsInBuf) {
190
- endIndex = endExclusive - bufStart;
191
- if (startIndex == null) {
192
- startIndex = 0;
215
+ const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd;
216
+ const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd;
217
+ if (sliceStartInBuf && sliceEndsInBuf) {
218
+ // slice is wholly contained within this buffer
219
+ if (beginInclusive === bufStart && endExclusive === bufEnd) {
220
+ // requested whole buffer
221
+ bufs.push(buf);
222
+ break;
193
223
  }
224
+ // requested part of buffer
225
+ const start = beginInclusive - bufStart;
226
+ bufs.push(buf.subarray(start, start + (endExclusive - beginInclusive)));
227
+ break;
194
228
  }
195
- if (bufInSlice) {
196
- startIndex = 0;
197
- endIndex = buf.byteLength;
198
- }
199
- if (startIndex != null && endIndex != null) {
200
- bufs.push(buf.subarray(startIndex, endIndex));
229
+ if (sliceStartInBuf) {
230
+ // slice starts in this buffer
231
+ if (beginInclusive === 0) {
232
+ // requested whole buffer
233
+ bufs.push(buf);
234
+ continue;
235
+ }
236
+ // requested part of buffer
237
+ bufs.push(buf.subarray(beginInclusive - bufStart));
238
+ continue;
201
239
  }
202
240
  if (sliceEndsInBuf) {
241
+ if (endExclusive === bufEnd) {
242
+ // requested whole buffer
243
+ bufs.push(buf);
244
+ break;
245
+ }
246
+ // requested part of buffer
247
+ bufs.push(buf.subarray(0, endExclusive - bufStart));
203
248
  break;
204
249
  }
250
+ // slice started before this buffer and ends after it
251
+ bufs.push(buf);
205
252
  }
206
253
  return { bufs, length: endExclusive - beginInclusive };
207
254
  }
208
255
  getInt8(byteOffset) {
209
- const buf = this.slice(byteOffset, byteOffset + 1);
256
+ const buf = this.subarray(byteOffset, byteOffset + 1);
210
257
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
211
258
  return view.getInt8(0);
212
259
  }
213
260
  setInt8(byteOffset, value) {
214
- const buf = new Uint8Array(1);
261
+ const buf = allocUnsafe(1);
215
262
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
216
263
  view.setInt8(0, value);
217
264
  this.write(buf, byteOffset);
218
265
  }
219
266
  getInt16(byteOffset, littleEndian) {
220
- const buf = this.slice(byteOffset, byteOffset + 2);
267
+ const buf = this.subarray(byteOffset, byteOffset + 2);
221
268
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
222
269
  return view.getInt16(0, littleEndian);
223
270
  }
224
271
  setInt16(byteOffset, value, littleEndian) {
225
- const buf = new Uint8Array(2);
272
+ const buf = alloc(2);
226
273
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
227
274
  view.setInt16(0, value, littleEndian);
228
275
  this.write(buf, byteOffset);
229
276
  }
230
277
  getInt32(byteOffset, littleEndian) {
231
- const buf = this.slice(byteOffset, byteOffset + 4);
278
+ const buf = this.subarray(byteOffset, byteOffset + 4);
232
279
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
233
280
  return view.getInt32(0, littleEndian);
234
281
  }
235
282
  setInt32(byteOffset, value, littleEndian) {
236
- const buf = new Uint8Array(4);
283
+ const buf = alloc(4);
237
284
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
238
285
  view.setInt32(0, value, littleEndian);
239
286
  this.write(buf, byteOffset);
240
287
  }
241
288
  getBigInt64(byteOffset, littleEndian) {
242
- const buf = this.slice(byteOffset, byteOffset + 8);
289
+ const buf = this.subarray(byteOffset, byteOffset + 8);
243
290
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
244
291
  return view.getBigInt64(0, littleEndian);
245
292
  }
246
293
  setBigInt64(byteOffset, value, littleEndian) {
247
- const buf = new Uint8Array(8);
294
+ const buf = alloc(8);
248
295
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
249
296
  view.setBigInt64(0, value, littleEndian);
250
297
  this.write(buf, byteOffset);
251
298
  }
252
299
  getUint8(byteOffset) {
253
- const buf = this.slice(byteOffset, byteOffset + 1);
300
+ const buf = this.subarray(byteOffset, byteOffset + 1);
254
301
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
255
302
  return view.getUint8(0);
256
303
  }
257
304
  setUint8(byteOffset, value) {
258
- const buf = new Uint8Array(1);
305
+ const buf = allocUnsafe(1);
259
306
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
260
307
  view.setUint8(0, value);
261
308
  this.write(buf, byteOffset);
262
309
  }
263
310
  getUint16(byteOffset, littleEndian) {
264
- const buf = this.slice(byteOffset, byteOffset + 2);
311
+ const buf = this.subarray(byteOffset, byteOffset + 2);
265
312
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
266
313
  return view.getUint16(0, littleEndian);
267
314
  }
268
315
  setUint16(byteOffset, value, littleEndian) {
269
- const buf = new Uint8Array(2);
316
+ const buf = alloc(2);
270
317
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
271
318
  view.setUint16(0, value, littleEndian);
272
319
  this.write(buf, byteOffset);
273
320
  }
274
321
  getUint32(byteOffset, littleEndian) {
275
- const buf = this.slice(byteOffset, byteOffset + 4);
322
+ const buf = this.subarray(byteOffset, byteOffset + 4);
276
323
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
277
324
  return view.getUint32(0, littleEndian);
278
325
  }
279
326
  setUint32(byteOffset, value, littleEndian) {
280
- const buf = new Uint8Array(4);
327
+ const buf = alloc(4);
281
328
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
282
329
  view.setUint32(0, value, littleEndian);
283
330
  this.write(buf, byteOffset);
284
331
  }
285
332
  getBigUint64(byteOffset, littleEndian) {
286
- const buf = this.slice(byteOffset, byteOffset + 8);
333
+ const buf = this.subarray(byteOffset, byteOffset + 8);
287
334
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
288
335
  return view.getBigUint64(0, littleEndian);
289
336
  }
290
337
  setBigUint64(byteOffset, value, littleEndian) {
291
- const buf = new Uint8Array(8);
338
+ const buf = alloc(8);
292
339
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
293
340
  view.setBigUint64(0, value, littleEndian);
294
341
  this.write(buf, byteOffset);
295
342
  }
296
343
  getFloat32(byteOffset, littleEndian) {
297
- const buf = this.slice(byteOffset, byteOffset + 4);
344
+ const buf = this.subarray(byteOffset, byteOffset + 4);
298
345
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
299
346
  return view.getFloat32(0, littleEndian);
300
347
  }
301
348
  setFloat32(byteOffset, value, littleEndian) {
302
- const buf = new Uint8Array(4);
349
+ const buf = alloc(4);
303
350
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
304
351
  view.setFloat32(0, value, littleEndian);
305
352
  this.write(buf, byteOffset);
306
353
  }
307
354
  getFloat64(byteOffset, littleEndian) {
308
- const buf = this.slice(byteOffset, byteOffset + 8);
355
+ const buf = this.subarray(byteOffset, byteOffset + 8);
309
356
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
310
357
  return view.getFloat64(0, littleEndian);
311
358
  }
312
359
  setFloat64(byteOffset, value, littleEndian) {
313
- const buf = new Uint8Array(8);
360
+ const buf = alloc(8);
314
361
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
315
362
  view.setFloat64(0, value, littleEndian);
316
363
  this.write(buf, byteOffset);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEtD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AAIxD,SAAS,gBAAgB,CAAE,IAAkB,EAAE,KAAa;IAC1D,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;QAC9B,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAA;KAC/C;IAED,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,UAAU,CAAA;QAEtC,IAAI,KAAK,GAAG,MAAM,EAAE;YAClB,OAAO;gBACL,GAAG;gBACH,KAAK,EAAE,KAAK,GAAG,MAAM;aACtB,CAAA;SACF;QAED,MAAM,GAAG,MAAM,CAAA;KAChB;IAED,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAA;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAE,KAAU;IAC1C,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,OAAO,cAAc;IAIzB,YAAa,GAAG,IAAkB;QAChC,gBAAgB;QAChB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAEpD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QAEf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjB,KAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,MAAM,CAAE,GAAG,IAAkB;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,CAAE,IAAkB;QAC3B,IAAI,MAAM,GAAG,CAAC,CAAA;QAEd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,GAAG,YAAY,UAAU,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAAC,UAAU,CAAA;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACpB;iBAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;gBAChC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAA;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;aAC5B;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;aACrF;SACF;QAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,OAAO,CAAE,GAAG,IAAkB;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,UAAU,CAAE,IAAkB;QAC5B,IAAI,MAAM,GAAG,CAAC,CAAA;QAEd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,GAAG,YAAY,UAAU,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAAC,UAAU,CAAA;gBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;aACvB;iBAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;gBAChC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAA;gBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;aAC/B;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;aACtF;SACF;QAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,GAAG,CAAE,KAAa;QAChB,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAE9C,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG,CAAE,KAAa,EAAE,KAAa;QAC/B,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAE9C,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAE,GAAe,EAAE,SAAiB,CAAC;QACxC,IAAI,GAAG,YAAY,UAAU,EAAE;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;aAC7B;SACF;aAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;aACjC;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;SACpF;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAE,KAAa;QACpB,uEAAuE;QACvE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,sCAAsC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YACrC,OAAM;SACP;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;gBACpC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;gBAChC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;gBACtC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;aAClB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAC3C,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;gBACpB,MAAK;aACN;SACF;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAE,cAAuB,EAAE,YAAqB;QACnD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;QAEpE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAE,cAAuB,EAAE,YAAqB;QACtD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;QAEpE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;SACf;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAE,cAAuB,EAAE,YAAqB;QACrD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;QAEpE,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,gCAAgC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAEhB,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,QAAQ,CAAE,cAAuB,EAAE,YAAqB;QAC9D,cAAc,GAAG,cAAc,IAAI,CAAC,CAAA;QACpC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC,MAAM,CAAA;QAE1C,IAAI,cAAc,GAAG,CAAC,EAAE;YACtB,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,CAAA;SAC9C;QAED,IAAI,YAAY,GAAG,CAAC,EAAE;YACpB,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,CAAA;SAC1C;QAED,IAAI,cAAc,GAAG,CAAC,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;YACpD,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAA;SAC/C;QAED,IAAI,cAAc,KAAK,YAAY,EAAE;YACnC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;SAC/B;QAED,IAAI,cAAc,KAAK,CAAC,IAAI,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE;YACxD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;SAChD;QAED,MAAM,IAAI,GAAiB,EAAE,CAAA;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAA;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxB,MAAM,QAAQ,GAAG,MAAM,CAAA;YACvB,MAAM,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAA;YAExC,gBAAgB;YAChB,MAAM,GAAG,MAAM,CAAA;YAEf,IAAI,cAAc,IAAI,MAAM,EAAE;gBAC5B,uBAAuB;gBACvB,SAAQ;aACT;YAED,MAAM,eAAe,GAAG,cAAc,IAAI,QAAQ,IAAI,cAAc,GAAG,MAAM,CAAA;YAC7E,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,IAAI,YAAY,IAAI,MAAM,CAAA;YAExE,IAAI,eAAe,IAAI,cAAc,EAAE;gBACrC,+CAA+C;gBAC/C,IAAI,cAAc,KAAK,QAAQ,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC1D,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACd,MAAK;iBACN;gBAED,2BAA2B;gBAC3B,MAAM,KAAK,GAAG,cAAc,GAAG,QAAQ,CAAA;gBACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBACvE,MAAK;aACN;YAED,IAAI,eAAe,EAAE;gBACnB,8BAA8B;gBAC9B,IAAI,cAAc,KAAK,CAAC,EAAE;oBACxB,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACd,SAAQ;iBACT;gBAED,2BAA2B;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAA;gBAClD,SAAQ;aACT;YAED,IAAI,cAAc,EAAE;gBAClB,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC3B,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACd,MAAK;iBACN;gBAED,2BAA2B;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAA;gBACnD,MAAK;aACN;YAED,qDAAqD;YACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACf;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,EAAE,CAAA;IACxD,CAAC;IAED,OAAO,CAAE,UAAkB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,CAAE,UAAkB,EAAE,KAAa;QACxC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAE,UAAkB,EAAE,YAAsB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QACjE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAErC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAE,UAAkB,EAAE,YAAsB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QACjE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAErC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,WAAW,CAAE,UAAkB,EAAE,YAAsB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IAC1C,CAAC;IAED,WAAW,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QACpE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAExC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAE,UAAkB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IAED,QAAQ,CAAE,UAAkB,EAAE,KAAa;QACzC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAEvB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,SAAS,CAAE,UAAkB,EAAE,YAAsB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACxC,CAAC;IAED,SAAS,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QAClE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,SAAS,CAAE,UAAkB,EAAE,YAAsB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACxC,CAAC;IAED,SAAS,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QAClE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,YAAY,CAAE,UAAkB,EAAE,YAAsB;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IAC3C,CAAC;IAED,YAAY,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QACrE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAEzC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,UAAU,CAAE,UAAkB,EAAE,YAAsB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACzC,CAAC;IAED,UAAU,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,UAAU,CAAE,UAAkB,EAAE,YAAsB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACzC,CAAC;IAED,UAAU,CAAE,UAAkB,EAAE,KAAa,EAAE,YAAsB;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,CAAE,KAAU;QAChB,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC,EAAE;YACtC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1C,OAAO,KAAK,CAAA;SACb;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxC,OAAO,KAAK,CAAA;aACb;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uint8arraylist",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Append and consume bytes using only no-copy operations",
5
5
  "author": "Alex Potsides <alex@achingbrain.net>",
6
6
  "license": "Apache-2.0 OR MIT",
@@ -136,10 +136,11 @@
136
136
  "release": "aegir release"
137
137
  },
138
138
  "dependencies": {
139
- "uint8arrays": "^3.0.0"
139
+ "uint8arrays": "^3.1.0"
140
140
  },
141
141
  "devDependencies": {
142
142
  "aegir": "^37.4.6",
143
+ "benchmark": "^2.1.4",
143
144
  "bl": "^5.0.0",
144
145
  "it-all": "^1.0.6"
145
146
  }
package/src/index.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import { concat } from 'uint8arrays/concat'
2
2
  import { equals } from 'uint8arrays/equals'
3
+ import { allocUnsafe, alloc } from 'uint8arrays/alloc'
3
4
 
4
5
  const symbol = Symbol.for('@achingbrain/uint8arraylist')
5
6
 
6
7
  type Appendable = Uint8ArrayList | Uint8Array
7
8
 
8
- function findBufAndOffset (bufs: Uint8Array[], index: number, totalLength: number) {
9
- if (index == null || index < 0 || index >= totalLength) {
9
+ function findBufAndOffset (bufs: Uint8Array[], index: number) {
10
+ if (index == null || index < 0) {
10
11
  throw new RangeError('index is out of bounds')
11
12
  }
12
13
 
@@ -58,14 +59,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
58
59
  }
59
60
 
60
61
  /**
61
- * Add one or more `bufs` to this Uint8ArrayList
62
+ * Add one or more `bufs` to the end of this Uint8ArrayList
62
63
  */
63
64
  append (...bufs: Appendable[]) {
64
65
  this.appendAll(bufs)
65
66
  }
66
67
 
67
68
  /**
68
- * Add all `bufs` to this Uint8ArrayList
69
+ * Add all `bufs` to the end of this Uint8ArrayList
69
70
  */
70
71
  appendAll (bufs: Appendable[]) {
71
72
  let length = 0
@@ -75,8 +76,8 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
75
76
  length += buf.byteLength
76
77
  this.bufs.push(buf)
77
78
  } else if (isUint8ArrayList(buf)) {
78
- length += buf.length
79
- this.bufs = this.bufs.concat(buf.bufs)
79
+ length += buf.byteLength
80
+ this.bufs.push(...buf.bufs)
80
81
  } else {
81
82
  throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList')
82
83
  }
@@ -85,11 +86,39 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
85
86
  this.length += length
86
87
  }
87
88
 
89
+ /**
90
+ * Add one or more `bufs` to the start of this Uint8ArrayList
91
+ */
92
+ prepend (...bufs: Appendable[]) {
93
+ this.prependAll(bufs)
94
+ }
95
+
96
+ /**
97
+ * Add all `bufs` to the start of this Uint8ArrayList
98
+ */
99
+ prependAll (bufs: Appendable[]) {
100
+ let length = 0
101
+
102
+ for (const buf of bufs.reverse()) {
103
+ if (buf instanceof Uint8Array) {
104
+ length += buf.byteLength
105
+ this.bufs.unshift(buf)
106
+ } else if (isUint8ArrayList(buf)) {
107
+ length += buf.byteLength
108
+ this.bufs.unshift(...buf.bufs)
109
+ } else {
110
+ throw new Error('Could not prepend value, must be an Uint8Array or a Uint8ArrayList')
111
+ }
112
+ }
113
+
114
+ this.length += length
115
+ }
116
+
88
117
  /**
89
118
  * Read the value at `index`
90
119
  */
91
120
  get (index: number) {
92
- const res = findBufAndOffset(this.bufs, index, this.length)
121
+ const res = findBufAndOffset(this.bufs, index)
93
122
 
94
123
  return res.buf[res.index]
95
124
  }
@@ -98,7 +127,7 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
98
127
  * Set the value at `index` to `value`
99
128
  */
100
129
  set (index: number, value: number) {
101
- const res = findBufAndOffset(this.bufs, index, this.length)
130
+ const res = findBufAndOffset(this.bufs, index)
102
131
 
103
132
  res.buf[res.index] = value
104
133
  }
@@ -158,7 +187,7 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
158
187
  }
159
188
 
160
189
  /**
161
- * Returns a new Uint8Array from the given start and end element index.
190
+ * Returns a alloc from the given start and end element index.
162
191
  *
163
192
  * In the best case where the data extracted comes from a single Uint8Array
164
193
  * internally this is a no-copy operation otherwise it is a copy operation.
@@ -174,26 +203,24 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
174
203
  }
175
204
 
176
205
  /**
177
- * Returns a new Uint8ArrayList from the given start and end element index.
206
+ * Returns a allocList from the given start and end element index.
178
207
  *
179
208
  * This is a no-copy operation.
180
209
  */
181
210
  sublist (beginInclusive?: number, endExclusive?: number): Uint8ArrayList {
182
- const { bufs } = this._subList(beginInclusive, endExclusive)
211
+ const { bufs, length } = this._subList(beginInclusive, endExclusive)
183
212
 
184
213
  const list = new Uint8ArrayList()
185
- list.appendAll(bufs)
214
+ list.length = length
215
+ // don't loop, just set the bufs
216
+ list.bufs = bufs
186
217
 
187
218
  return list
188
219
  }
189
220
 
190
221
  private _subList (beginInclusive?: number, endExclusive?: number) {
191
- if (beginInclusive == null && endExclusive == null) {
192
- return { bufs: this.bufs, length: this.length }
193
- }
194
-
195
222
  beginInclusive = beginInclusive ?? 0
196
- endExclusive = endExclusive ?? (this.length > 0 ? this.length : 0)
223
+ endExclusive = endExclusive ?? this.length
197
224
 
198
225
  if (beginInclusive < 0) {
199
226
  beginInclusive = this.length + beginInclusive
@@ -204,66 +231,91 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
204
231
  }
205
232
 
206
233
  if (beginInclusive < 0 || endExclusive > this.length) {
207
- throw new RangeError('index out of bounds')
234
+ throw new RangeError('index is out of bounds')
208
235
  }
209
236
 
210
237
  if (beginInclusive === endExclusive) {
211
238
  return { bufs: [], length: 0 }
212
239
  }
213
240
 
241
+ if (beginInclusive === 0 && endExclusive === this.length) {
242
+ return { bufs: this.bufs, length: this.length }
243
+ }
244
+
214
245
  const bufs: Uint8Array[] = []
215
246
  let offset = 0
216
247
 
217
- for (const buf of this.bufs) {
248
+ for (let i = 0; i < this.bufs.length; i++) {
249
+ const buf = this.bufs[i]
218
250
  const bufStart = offset
219
251
  const bufEnd = bufStart + buf.byteLength
220
- const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd
221
- const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd
222
- const bufInSlice = beginInclusive < bufStart && endExclusive >= bufEnd
223
- offset = bufEnd
224
252
 
225
- let startIndex: number | undefined
226
- let endIndex: number | undefined
253
+ // for next loop
254
+ offset = bufEnd
227
255
 
228
- if (sliceStartInBuf) {
229
- startIndex = beginInclusive - bufStart
230
- endIndex = buf.byteLength
256
+ if (beginInclusive >= bufEnd) {
257
+ // start after this buf
258
+ continue
231
259
  }
232
260
 
233
- if (sliceEndsInBuf) {
234
- endIndex = endExclusive - bufStart
261
+ const sliceStartInBuf = beginInclusive >= bufStart && beginInclusive < bufEnd
262
+ const sliceEndsInBuf = endExclusive > bufStart && endExclusive <= bufEnd
235
263
 
236
- if (startIndex == null) {
237
- startIndex = 0
264
+ if (sliceStartInBuf && sliceEndsInBuf) {
265
+ // slice is wholly contained within this buffer
266
+ if (beginInclusive === bufStart && endExclusive === bufEnd) {
267
+ // requested whole buffer
268
+ bufs.push(buf)
269
+ break
238
270
  }
239
- }
240
271
 
241
- if (bufInSlice) {
242
- startIndex = 0
243
- endIndex = buf.byteLength
272
+ // requested part of buffer
273
+ const start = beginInclusive - bufStart
274
+ bufs.push(buf.subarray(start, start + (endExclusive - beginInclusive)))
275
+ break
244
276
  }
245
277
 
246
- if (startIndex != null && endIndex != null) {
247
- bufs.push(buf.subarray(startIndex, endIndex))
278
+ if (sliceStartInBuf) {
279
+ // slice starts in this buffer
280
+ if (beginInclusive === 0) {
281
+ // requested whole buffer
282
+ bufs.push(buf)
283
+ continue
284
+ }
285
+
286
+ // requested part of buffer
287
+ bufs.push(buf.subarray(beginInclusive - bufStart))
288
+ continue
248
289
  }
249
290
 
250
291
  if (sliceEndsInBuf) {
292
+ if (endExclusive === bufEnd) {
293
+ // requested whole buffer
294
+ bufs.push(buf)
295
+ break
296
+ }
297
+
298
+ // requested part of buffer
299
+ bufs.push(buf.subarray(0, endExclusive - bufStart))
251
300
  break
252
301
  }
302
+
303
+ // slice started before this buffer and ends after it
304
+ bufs.push(buf)
253
305
  }
254
306
 
255
307
  return { bufs, length: endExclusive - beginInclusive }
256
308
  }
257
309
 
258
310
  getInt8 (byteOffset: number): number {
259
- const buf = this.slice(byteOffset, byteOffset + 1)
311
+ const buf = this.subarray(byteOffset, byteOffset + 1)
260
312
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
261
313
 
262
314
  return view.getInt8(0)
263
315
  }
264
316
 
265
317
  setInt8 (byteOffset: number, value: number): void {
266
- const buf = new Uint8Array(1)
318
+ const buf = allocUnsafe(1)
267
319
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
268
320
  view.setInt8(0, value)
269
321
 
@@ -271,14 +323,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
271
323
  }
272
324
 
273
325
  getInt16 (byteOffset: number, littleEndian?: boolean): number {
274
- const buf = this.slice(byteOffset, byteOffset + 2)
326
+ const buf = this.subarray(byteOffset, byteOffset + 2)
275
327
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
276
328
 
277
329
  return view.getInt16(0, littleEndian)
278
330
  }
279
331
 
280
332
  setInt16 (byteOffset: number, value: number, littleEndian?: boolean): void {
281
- const buf = new Uint8Array(2)
333
+ const buf = alloc(2)
282
334
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
283
335
  view.setInt16(0, value, littleEndian)
284
336
 
@@ -286,14 +338,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
286
338
  }
287
339
 
288
340
  getInt32 (byteOffset: number, littleEndian?: boolean): number {
289
- const buf = this.slice(byteOffset, byteOffset + 4)
341
+ const buf = this.subarray(byteOffset, byteOffset + 4)
290
342
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
291
343
 
292
344
  return view.getInt32(0, littleEndian)
293
345
  }
294
346
 
295
347
  setInt32 (byteOffset: number, value: number, littleEndian?: boolean): void {
296
- const buf = new Uint8Array(4)
348
+ const buf = alloc(4)
297
349
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
298
350
  view.setInt32(0, value, littleEndian)
299
351
 
@@ -301,14 +353,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
301
353
  }
302
354
 
303
355
  getBigInt64 (byteOffset: number, littleEndian?: boolean): bigint {
304
- const buf = this.slice(byteOffset, byteOffset + 8)
356
+ const buf = this.subarray(byteOffset, byteOffset + 8)
305
357
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
306
358
 
307
359
  return view.getBigInt64(0, littleEndian)
308
360
  }
309
361
 
310
362
  setBigInt64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {
311
- const buf = new Uint8Array(8)
363
+ const buf = alloc(8)
312
364
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
313
365
  view.setBigInt64(0, value, littleEndian)
314
366
 
@@ -316,14 +368,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
316
368
  }
317
369
 
318
370
  getUint8 (byteOffset: number): number {
319
- const buf = this.slice(byteOffset, byteOffset + 1)
371
+ const buf = this.subarray(byteOffset, byteOffset + 1)
320
372
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
321
373
 
322
374
  return view.getUint8(0)
323
375
  }
324
376
 
325
377
  setUint8 (byteOffset: number, value: number): void {
326
- const buf = new Uint8Array(1)
378
+ const buf = allocUnsafe(1)
327
379
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
328
380
  view.setUint8(0, value)
329
381
 
@@ -331,14 +383,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
331
383
  }
332
384
 
333
385
  getUint16 (byteOffset: number, littleEndian?: boolean): number {
334
- const buf = this.slice(byteOffset, byteOffset + 2)
386
+ const buf = this.subarray(byteOffset, byteOffset + 2)
335
387
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
336
388
 
337
389
  return view.getUint16(0, littleEndian)
338
390
  }
339
391
 
340
392
  setUint16 (byteOffset: number, value: number, littleEndian?: boolean): void {
341
- const buf = new Uint8Array(2)
393
+ const buf = alloc(2)
342
394
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
343
395
  view.setUint16(0, value, littleEndian)
344
396
 
@@ -346,14 +398,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
346
398
  }
347
399
 
348
400
  getUint32 (byteOffset: number, littleEndian?: boolean): number {
349
- const buf = this.slice(byteOffset, byteOffset + 4)
401
+ const buf = this.subarray(byteOffset, byteOffset + 4)
350
402
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
351
403
 
352
404
  return view.getUint32(0, littleEndian)
353
405
  }
354
406
 
355
407
  setUint32 (byteOffset: number, value: number, littleEndian?: boolean): void {
356
- const buf = new Uint8Array(4)
408
+ const buf = alloc(4)
357
409
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
358
410
  view.setUint32(0, value, littleEndian)
359
411
 
@@ -361,14 +413,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
361
413
  }
362
414
 
363
415
  getBigUint64 (byteOffset: number, littleEndian?: boolean): bigint {
364
- const buf = this.slice(byteOffset, byteOffset + 8)
416
+ const buf = this.subarray(byteOffset, byteOffset + 8)
365
417
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
366
418
 
367
419
  return view.getBigUint64(0, littleEndian)
368
420
  }
369
421
 
370
422
  setBigUint64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {
371
- const buf = new Uint8Array(8)
423
+ const buf = alloc(8)
372
424
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
373
425
  view.setBigUint64(0, value, littleEndian)
374
426
 
@@ -376,14 +428,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
376
428
  }
377
429
 
378
430
  getFloat32 (byteOffset: number, littleEndian?: boolean): number {
379
- const buf = this.slice(byteOffset, byteOffset + 4)
431
+ const buf = this.subarray(byteOffset, byteOffset + 4)
380
432
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
381
433
 
382
434
  return view.getFloat32(0, littleEndian)
383
435
  }
384
436
 
385
437
  setFloat32 (byteOffset: number, value: number, littleEndian?: boolean): void {
386
- const buf = new Uint8Array(4)
438
+ const buf = alloc(4)
387
439
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
388
440
  view.setFloat32(0, value, littleEndian)
389
441
 
@@ -391,14 +443,14 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
391
443
  }
392
444
 
393
445
  getFloat64 (byteOffset: number, littleEndian?: boolean): number {
394
- const buf = this.slice(byteOffset, byteOffset + 8)
446
+ const buf = this.subarray(byteOffset, byteOffset + 8)
395
447
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
396
448
 
397
449
  return view.getFloat64(0, littleEndian)
398
450
  }
399
451
 
400
452
  setFloat64 (byteOffset: number, value: number, littleEndian?: boolean): void {
401
- const buf = new Uint8Array(8)
453
+ const buf = alloc(8)
402
454
  const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
403
455
  view.setFloat64(0, value, littleEndian)
404
456