goscript 0.0.26 → 0.0.28

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 (168) hide show
  1. package/README.md +4 -4
  2. package/cmd/goscript/cmd_compile.go +0 -3
  3. package/cmd/goscript/deps.go +11 -0
  4. package/compiler/analysis.go +259 -55
  5. package/compiler/assignment.go +2 -2
  6. package/compiler/builtin_test.go +1 -1
  7. package/compiler/compiler.go +200 -68
  8. package/compiler/compiler_test.go +17 -24
  9. package/compiler/composite-lit.go +32 -8
  10. package/compiler/decl.go +6 -6
  11. package/compiler/expr-call.go +83 -0
  12. package/compiler/expr.go +1 -1
  13. package/compiler/protobuf.go +557 -0
  14. package/compiler/spec-struct.go +4 -0
  15. package/compiler/spec-value.go +10 -2
  16. package/compiler/spec.go +18 -1
  17. package/compiler/stmt-assign.go +35 -0
  18. package/compiler/type-assert.go +87 -0
  19. package/compiler/type.go +4 -1
  20. package/dist/gs/builtin/builtin.d.ts +19 -1
  21. package/dist/gs/builtin/builtin.js +84 -4
  22. package/dist/gs/builtin/builtin.js.map +1 -1
  23. package/dist/gs/builtin/slice.d.ts +1 -1
  24. package/dist/gs/builtin/slice.js +21 -2
  25. package/dist/gs/builtin/slice.js.map +1 -1
  26. package/dist/gs/errors/errors.d.ts +5 -6
  27. package/dist/gs/errors/errors.js.map +1 -1
  28. package/dist/gs/io/index.d.ts +1 -0
  29. package/dist/gs/io/index.js +2 -0
  30. package/dist/gs/io/index.js.map +1 -0
  31. package/dist/gs/io/io.d.ts +107 -0
  32. package/dist/gs/io/io.js +385 -0
  33. package/dist/gs/io/io.js.map +1 -0
  34. package/dist/gs/strings/builder.d.ts +18 -0
  35. package/dist/gs/strings/builder.js +205 -0
  36. package/dist/gs/strings/builder.js.map +1 -0
  37. package/dist/gs/strings/clone.d.ts +1 -0
  38. package/dist/gs/strings/clone.js +16 -0
  39. package/dist/gs/strings/clone.js.map +1 -0
  40. package/dist/gs/strings/compare.d.ts +1 -0
  41. package/dist/gs/strings/compare.js +14 -0
  42. package/dist/gs/strings/compare.js.map +1 -0
  43. package/dist/gs/strings/index.d.ts +2 -0
  44. package/dist/gs/strings/index.js +3 -0
  45. package/dist/gs/strings/index.js.map +1 -0
  46. package/dist/gs/strings/iter.d.ts +8 -0
  47. package/dist/gs/strings/iter.js +160 -0
  48. package/dist/gs/strings/iter.js.map +1 -0
  49. package/dist/gs/strings/reader.d.ts +34 -0
  50. package/dist/gs/strings/reader.js +418 -0
  51. package/dist/gs/strings/reader.js.map +1 -0
  52. package/dist/gs/strings/replace.d.ts +106 -0
  53. package/dist/gs/strings/replace.js +1136 -0
  54. package/dist/gs/strings/replace.js.map +1 -0
  55. package/dist/gs/strings/search.d.ts +24 -0
  56. package/dist/gs/strings/search.js +169 -0
  57. package/dist/gs/strings/search.js.map +1 -0
  58. package/dist/gs/strings/strings.d.ts +47 -0
  59. package/dist/gs/strings/strings.js +418 -0
  60. package/dist/gs/strings/strings.js.map +1 -0
  61. package/dist/gs/stringslite/index.d.ts +1 -0
  62. package/dist/gs/stringslite/index.js +2 -0
  63. package/dist/gs/stringslite/index.js.map +1 -0
  64. package/dist/gs/stringslite/strings.d.ts +11 -0
  65. package/dist/gs/stringslite/strings.js +67 -0
  66. package/dist/gs/stringslite/strings.js.map +1 -0
  67. package/dist/gs/sync/index.d.ts +1 -0
  68. package/dist/gs/sync/index.js +2 -0
  69. package/dist/gs/sync/index.js.map +1 -0
  70. package/dist/gs/sync/sync.d.ts +79 -0
  71. package/dist/gs/sync/sync.js +392 -0
  72. package/dist/gs/sync/sync.js.map +1 -0
  73. package/dist/gs/unicode/index.d.ts +1 -0
  74. package/dist/gs/unicode/index.js +2 -0
  75. package/dist/gs/unicode/index.js.map +1 -0
  76. package/dist/gs/unicode/unicode.d.ts +105 -0
  77. package/dist/gs/unicode/unicode.js +332 -0
  78. package/dist/gs/unicode/unicode.js.map +1 -0
  79. package/dist/gs/unicode/utf8/index.d.ts +1 -0
  80. package/dist/gs/unicode/utf8/index.js +3 -0
  81. package/dist/gs/unicode/utf8/index.js.map +1 -0
  82. package/dist/gs/unicode/utf8/utf8.d.ts +20 -0
  83. package/dist/gs/unicode/utf8/utf8.js +196 -0
  84. package/dist/gs/unicode/utf8/utf8.js.map +1 -0
  85. package/dist/gs/unsafe/index.d.ts +1 -0
  86. package/dist/gs/unsafe/index.js +2 -0
  87. package/dist/gs/unsafe/index.js.map +1 -0
  88. package/dist/gs/unsafe/unsafe.d.ts +11 -0
  89. package/dist/gs/unsafe/unsafe.js +44 -0
  90. package/dist/gs/unsafe/unsafe.js.map +1 -0
  91. package/go.mod +2 -1
  92. package/go.sum +6 -2
  93. package/gs/README.md +6 -0
  94. package/gs/builtin/builtin.ts +158 -0
  95. package/gs/builtin/channel.ts +683 -0
  96. package/gs/builtin/defer.ts +58 -0
  97. package/gs/builtin/index.ts +1 -0
  98. package/gs/builtin/io.ts +22 -0
  99. package/gs/builtin/map.ts +50 -0
  100. package/gs/builtin/slice.ts +1030 -0
  101. package/gs/builtin/type.ts +1106 -0
  102. package/gs/builtin/varRef.ts +25 -0
  103. package/gs/cmp/godoc.txt +8 -0
  104. package/gs/cmp/index.ts +29 -0
  105. package/gs/context/context.ts +401 -0
  106. package/gs/context/godoc.txt +69 -0
  107. package/gs/context/index.ts +1 -0
  108. package/gs/errors/errors.ts +223 -0
  109. package/gs/errors/godoc.txt +63 -0
  110. package/gs/errors/index.ts +1 -0
  111. package/gs/internal/goarch/godoc.txt +39 -0
  112. package/gs/internal/goarch/index.ts +18 -0
  113. package/gs/io/godoc.txt +61 -0
  114. package/gs/io/index.ts +1 -0
  115. package/gs/io/io.go +75 -0
  116. package/gs/io/io.ts +546 -0
  117. package/gs/iter/godoc.txt +203 -0
  118. package/gs/iter/index.ts +1 -0
  119. package/gs/iter/iter.ts +117 -0
  120. package/gs/math/bits/index.ts +356 -0
  121. package/gs/math/godoc.txt +76 -0
  122. package/gs/runtime/godoc.txt +331 -0
  123. package/gs/runtime/index.ts +1 -0
  124. package/gs/runtime/runtime.ts +178 -0
  125. package/gs/slices/godoc.txt +44 -0
  126. package/gs/slices/index.ts +1 -0
  127. package/gs/slices/slices.ts +22 -0
  128. package/gs/strings/builder.test.ts +121 -0
  129. package/gs/strings/builder.ts +223 -0
  130. package/gs/strings/clone.test.ts +43 -0
  131. package/gs/strings/clone.ts +17 -0
  132. package/gs/strings/compare.test.ts +84 -0
  133. package/gs/strings/compare.ts +13 -0
  134. package/gs/strings/godoc.txt +66 -0
  135. package/gs/strings/index.ts +2 -0
  136. package/gs/strings/iter.test.ts +343 -0
  137. package/gs/strings/iter.ts +171 -0
  138. package/gs/strings/reader.test.ts +243 -0
  139. package/gs/strings/reader.ts +451 -0
  140. package/gs/strings/replace.test.ts +181 -0
  141. package/gs/strings/replace.ts +1310 -0
  142. package/gs/strings/search.test.ts +214 -0
  143. package/gs/strings/search.ts +213 -0
  144. package/gs/strings/strings.test.ts +477 -0
  145. package/gs/strings/strings.ts +510 -0
  146. package/gs/stringslite/godoc.txt +17 -0
  147. package/gs/stringslite/index.ts +1 -0
  148. package/gs/stringslite/strings.ts +82 -0
  149. package/gs/sync/godoc.txt +21 -0
  150. package/gs/sync/index.ts +1 -0
  151. package/gs/sync/sync.go +64 -0
  152. package/gs/sync/sync.ts +449 -0
  153. package/gs/time/godoc.md +116 -0
  154. package/gs/time/godoc.txt +116 -0
  155. package/gs/time/index.ts +1 -0
  156. package/gs/time/time.ts +272 -0
  157. package/gs/unicode/godoc.txt +52 -0
  158. package/gs/unicode/index.ts +1 -0
  159. package/gs/unicode/unicode.go +38 -0
  160. package/gs/unicode/unicode.ts +418 -0
  161. package/gs/unicode/utf8/godoc.txt +22 -0
  162. package/gs/unicode/utf8/index.ts +2 -0
  163. package/gs/unicode/utf8/utf8.ts +227 -0
  164. package/gs/unsafe/godoc.txt +19 -0
  165. package/gs/unsafe/index.ts +1 -0
  166. package/gs/unsafe/unsafe.test.ts +68 -0
  167. package/gs/unsafe/unsafe.ts +77 -0
  168. package/package.json +4 -3
@@ -0,0 +1,385 @@
1
+ // Package io provides basic interfaces to I/O primitives.
2
+ // Its primary job is to wrap existing implementations of such primitives,
3
+ // such as those in package os, into shared public interfaces that abstract
4
+ // the functionality, plus some other related primitives.
5
+ // Simple error implementation for io package
6
+ class IOError {
7
+ message;
8
+ constructor(message) {
9
+ this.message = message;
10
+ }
11
+ Error() {
12
+ return this.message;
13
+ }
14
+ toString() {
15
+ return this.message;
16
+ }
17
+ }
18
+ function newError(message) {
19
+ return new IOError(message);
20
+ }
21
+ // Error variables
22
+ export const EOF = newError('EOF');
23
+ export const ErrClosedPipe = newError('io: read/write on closed pipe');
24
+ export const ErrNoProgress = newError('multiple Read calls return no data or error');
25
+ export const ErrShortBuffer = newError('short buffer');
26
+ export const ErrShortWrite = newError('short write');
27
+ export const ErrUnexpectedEOF = newError('unexpected EOF');
28
+ // Seek whence values
29
+ export const SeekStart = 0; // seek relative to the origin of the file
30
+ export const SeekCurrent = 1; // seek relative to the current offset
31
+ export const SeekEnd = 2; // seek relative to the end
32
+ // Discard is a Writer on which all Write calls succeed without doing anything
33
+ class DiscardWriter {
34
+ Write(p) {
35
+ return [p.length, null];
36
+ }
37
+ }
38
+ export const Discard = new DiscardWriter();
39
+ // WriteString writes the contents of the string s to w, which accepts a slice of bytes
40
+ export function WriteString(w, s) {
41
+ // Check if w implements StringWriter interface
42
+ if ('WriteString' in w && typeof w.WriteString === 'function') {
43
+ return w.WriteString(s);
44
+ }
45
+ // Convert string to bytes and write
46
+ const bytes = new TextEncoder().encode(s);
47
+ return w.Write(bytes);
48
+ }
49
+ // LimitedReader reads from R but limits the amount of data returned to just N bytes
50
+ export class LimitedReader {
51
+ R;
52
+ N;
53
+ constructor(r, n) {
54
+ this.R = r;
55
+ this.N = n;
56
+ }
57
+ Read(p) {
58
+ if (this.N <= 0) {
59
+ return [0, EOF];
60
+ }
61
+ let readBuf = p;
62
+ if (p.length > this.N) {
63
+ readBuf = p.subarray(0, this.N);
64
+ }
65
+ const [n, err] = this.R.Read(readBuf);
66
+ this.N -= n;
67
+ return [n, err];
68
+ }
69
+ }
70
+ // LimitReader returns a Reader that reads from r but stops with EOF after n bytes
71
+ export function LimitReader(r, n) {
72
+ return new LimitedReader(r, n);
73
+ }
74
+ // SectionReader implements Read, Seek, and ReadAt on a section of an underlying ReaderAt
75
+ export class SectionReader {
76
+ r;
77
+ base;
78
+ off;
79
+ limit;
80
+ constructor(r, off, n) {
81
+ this.r = r;
82
+ this.base = off;
83
+ this.off = off;
84
+ this.limit = off + n;
85
+ }
86
+ Read(p) {
87
+ if (this.off >= this.limit) {
88
+ return [0, EOF];
89
+ }
90
+ let max = this.limit - this.off;
91
+ if (p.length > max) {
92
+ p = p.subarray(0, max);
93
+ }
94
+ const [n, err] = this.r.ReadAt(p, this.off);
95
+ this.off += n;
96
+ return [n, err];
97
+ }
98
+ Seek(offset, whence) {
99
+ let abs;
100
+ switch (whence) {
101
+ case SeekStart:
102
+ abs = this.base + offset;
103
+ break;
104
+ case SeekCurrent:
105
+ abs = this.off + offset;
106
+ break;
107
+ case SeekEnd:
108
+ abs = this.limit + offset;
109
+ break;
110
+ default:
111
+ return [0, newError('io.SectionReader.Seek: invalid whence')];
112
+ }
113
+ if (abs < this.base) {
114
+ return [0, newError('io.SectionReader.Seek: negative position')];
115
+ }
116
+ this.off = abs;
117
+ return [abs - this.base, null];
118
+ }
119
+ ReadAt(p, off) {
120
+ if (off < 0 || off >= this.limit - this.base) {
121
+ return [0, EOF];
122
+ }
123
+ off += this.base;
124
+ if (off + p.length > this.limit) {
125
+ p = p.subarray(0, this.limit - off);
126
+ const [n, err] = this.r.ReadAt(p, off);
127
+ if (err === null) {
128
+ return [n, EOF];
129
+ }
130
+ return [n, err];
131
+ }
132
+ return this.r.ReadAt(p, off);
133
+ }
134
+ Size() {
135
+ return this.limit - this.base;
136
+ }
137
+ }
138
+ // NewSectionReader returns a SectionReader that reads from r starting at offset off and stops with EOF after n bytes
139
+ export function NewSectionReader(r, off, n) {
140
+ return new SectionReader(r, off, n);
141
+ }
142
+ // OffsetWriter maps writes at offset base to offset base+off in the underlying writer
143
+ export class OffsetWriter {
144
+ w;
145
+ base;
146
+ off;
147
+ constructor(w, off) {
148
+ this.w = w;
149
+ this.base = off;
150
+ this.off = 0;
151
+ }
152
+ Write(p) {
153
+ const [n, err] = this.w.WriteAt(p, this.base + this.off);
154
+ this.off += n;
155
+ return [n, err];
156
+ }
157
+ WriteAt(p, off) {
158
+ if (off < 0) {
159
+ return [0, newError('io.OffsetWriter.WriteAt: negative offset')];
160
+ }
161
+ return this.w.WriteAt(p, this.base + off);
162
+ }
163
+ Seek(offset, whence) {
164
+ let abs;
165
+ switch (whence) {
166
+ case SeekStart:
167
+ abs = offset;
168
+ break;
169
+ case SeekCurrent:
170
+ abs = this.off + offset;
171
+ break;
172
+ default:
173
+ return [0, newError('io.OffsetWriter.Seek: invalid whence')];
174
+ }
175
+ if (abs < 0) {
176
+ return [0, newError('io.OffsetWriter.Seek: negative position')];
177
+ }
178
+ this.off = abs;
179
+ return [abs, null];
180
+ }
181
+ }
182
+ // NewOffsetWriter returns an OffsetWriter that writes to w starting at offset off
183
+ export function NewOffsetWriter(w, off) {
184
+ return new OffsetWriter(w, off);
185
+ }
186
+ // Copy copies from src to dst until either EOF is reached on src or an error occurs
187
+ export function Copy(dst, src) {
188
+ return CopyBuffer(dst, src, null);
189
+ }
190
+ // CopyBuffer is identical to Copy except that it stages through the provided buffer
191
+ export function CopyBuffer(dst, src, buf) {
192
+ // If src implements WriterTo, use it
193
+ if ('WriteTo' in src && typeof src.WriteTo === 'function') {
194
+ return src.WriteTo(dst);
195
+ }
196
+ // If dst implements ReaderFrom, use it
197
+ if ('ReadFrom' in dst && typeof dst.ReadFrom === 'function') {
198
+ return dst.ReadFrom(src);
199
+ }
200
+ if (buf === null) {
201
+ buf = new Uint8Array(32 * 1024); // 32KB default buffer
202
+ }
203
+ let written = 0;
204
+ while (true) {
205
+ const [nr, er] = src.Read(buf);
206
+ if (nr > 0) {
207
+ const [nw, ew] = dst.Write(buf.subarray(0, nr));
208
+ if (nw < 0 || nr < nw) {
209
+ if (ew === null) {
210
+ return [written, ErrShortWrite];
211
+ }
212
+ return [written, ew];
213
+ }
214
+ written += nw;
215
+ if (ew !== null) {
216
+ return [written, ew];
217
+ }
218
+ if (nr !== nw) {
219
+ return [written, ErrShortWrite];
220
+ }
221
+ }
222
+ if (er !== null) {
223
+ if (er === EOF) {
224
+ break;
225
+ }
226
+ return [written, er];
227
+ }
228
+ }
229
+ return [written, null];
230
+ }
231
+ // CopyN copies n bytes (or until an error) from src to dst
232
+ export function CopyN(dst, src, n) {
233
+ const [written, err] = Copy(dst, LimitReader(src, n));
234
+ if (written === n) {
235
+ return [written, null];
236
+ }
237
+ if (written < n && err === null) {
238
+ // src stopped early; must have been EOF
239
+ return [written, EOF];
240
+ }
241
+ return [written, err];
242
+ }
243
+ // ReadAtLeast reads from r into buf until it has read at least min bytes
244
+ export function ReadAtLeast(r, buf, min) {
245
+ if (buf.length < min) {
246
+ return [0, ErrShortBuffer];
247
+ }
248
+ let n = 0;
249
+ while (n < min) {
250
+ const [nn, err] = r.Read(buf.subarray(n));
251
+ n += nn;
252
+ if (err !== null) {
253
+ if (err === EOF && n >= min) {
254
+ return [n, null];
255
+ }
256
+ if (err === EOF && n < min) {
257
+ return [n, ErrUnexpectedEOF];
258
+ }
259
+ return [n, err];
260
+ }
261
+ }
262
+ return [n, null];
263
+ }
264
+ // ReadFull reads exactly len(buf) bytes from r into buf
265
+ export function ReadFull(r, buf) {
266
+ return ReadAtLeast(r, buf, buf.length);
267
+ }
268
+ // ReadAll reads from r until an error or EOF and returns the data it read
269
+ export function ReadAll(r) {
270
+ const chunks = [];
271
+ let totalLength = 0;
272
+ const buf = new Uint8Array(512);
273
+ while (true) {
274
+ const [n, err] = r.Read(buf);
275
+ if (n > 0) {
276
+ chunks.push(buf.subarray(0, n));
277
+ totalLength += n;
278
+ }
279
+ if (err !== null) {
280
+ if (err === EOF) {
281
+ break;
282
+ }
283
+ return [new Uint8Array(0), err];
284
+ }
285
+ }
286
+ // Combine all chunks
287
+ const result = new Uint8Array(totalLength);
288
+ let offset = 0;
289
+ for (const chunk of chunks) {
290
+ result.set(chunk, offset);
291
+ offset += chunk.length;
292
+ }
293
+ return [result, null];
294
+ }
295
+ // NopCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r
296
+ export function NopCloser(r) {
297
+ return {
298
+ Read: r.Read.bind(r),
299
+ Close: () => null,
300
+ };
301
+ }
302
+ // MultiReader returns a Reader that's the logical concatenation of the provided input readers
303
+ export function MultiReader(...readers) {
304
+ return new multiReader(readers.slice());
305
+ }
306
+ class multiReader {
307
+ readers;
308
+ constructor(readers) {
309
+ this.readers = readers;
310
+ }
311
+ Read(p) {
312
+ while (this.readers.length > 0) {
313
+ if (this.readers.length === 1) {
314
+ // Optimization for single reader
315
+ const r = this.readers[0];
316
+ const [n, err] = r.Read(p);
317
+ if (err === EOF) {
318
+ this.readers = [];
319
+ }
320
+ return [n, err];
321
+ }
322
+ const [n, err] = this.readers[0].Read(p);
323
+ if (err === EOF) {
324
+ this.readers.shift(); // Remove first reader
325
+ continue;
326
+ }
327
+ if (n > 0 || err !== EOF) {
328
+ if (err === EOF && this.readers.length > 1) {
329
+ // Don't return EOF if there are more readers
330
+ return [n, null];
331
+ }
332
+ return [n, err];
333
+ }
334
+ }
335
+ return [0, EOF];
336
+ }
337
+ }
338
+ // MultiWriter creates a writer that duplicates its writes to all the provided writers
339
+ export function MultiWriter(...writers) {
340
+ return new multiWriter(writers.slice());
341
+ }
342
+ class multiWriter {
343
+ writers;
344
+ constructor(writers) {
345
+ this.writers = writers;
346
+ }
347
+ Write(p) {
348
+ for (const w of this.writers) {
349
+ const [n, err] = w.Write(p);
350
+ if (err !== null) {
351
+ return [n, err];
352
+ }
353
+ if (n !== p.length) {
354
+ return [n, ErrShortWrite];
355
+ }
356
+ }
357
+ return [p.length, null];
358
+ }
359
+ }
360
+ // TeeReader returns a Reader that writes to w what it reads from r
361
+ export function TeeReader(r, w) {
362
+ return new teeReader(r, w);
363
+ }
364
+ class teeReader {
365
+ r;
366
+ w;
367
+ constructor(r, w) {
368
+ this.r = r;
369
+ this.w = w;
370
+ }
371
+ Read(p) {
372
+ const [n, err] = this.r.Read(p);
373
+ if (n > 0) {
374
+ const [nw, ew] = this.w.Write(p.subarray(0, n));
375
+ if (ew !== null) {
376
+ return [n, ew];
377
+ }
378
+ if (nw !== n) {
379
+ return [n, ErrShortWrite];
380
+ }
381
+ }
382
+ return [n, err];
383
+ }
384
+ }
385
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../gs/io/io.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,0EAA0E;AAC1E,2EAA2E;AAC3E,yDAAyD;AAIzD,6CAA6C;AAC7C,MAAM,OAAO;IACS;IAApB,YAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEvC,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC;AAED,kBAAkB;AAClB,MAAM,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,+BAA+B,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CACnC,6CAA6C,CAC9C,CAAA;AACD,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AAE1D,qBAAqB;AACrB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAA,CAAC,0CAA0C;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAA,CAAC,sCAAsC;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAA,CAAC,2BAA2B;AAmFpD,8EAA8E;AAC9E,MAAM,aAAa;IACjB,KAAK,CAAC,CAAa;QACjB,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,aAAa,EAAE,CAAA;AAElD,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,+CAA+C;IAC/C,IAAI,aAAa,IAAI,CAAC,IAAI,OAAQ,CAAS,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACvE,OAAQ,CAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,oCAAoC;IACpC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACzC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAED,oFAAoF;AACpF,MAAM,OAAO,aAAa;IACjB,CAAC,CAAQ;IACT,CAAC,CAAQ;IAEhB,YAAY,CAAS,EAAE,CAAS;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAED,IAAI,CAAC,CAAa;QAChB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QACX,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,OAAO,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,yFAAyF;AACzF,MAAM,OAAO,aAAa;IAChB,CAAC,CAAU;IACX,IAAI,CAAQ;IACZ,GAAG,CAAQ;IACX,KAAK,CAAQ;IAErB,YAAY,CAAW,EAAE,GAAW,EAAE,CAAS;QAC7C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,CAAC,CAAa;QAChB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QAC/B,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACnB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACxB,CAAC;QAED,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACb,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,MAAc;QACjC,IAAI,GAAW,CAAA;QACf,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,SAAS;gBACZ,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;gBACxB,MAAK;YACP,KAAK,WAAW;gBACd,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;gBACvB,MAAK;YACP,KAAK,OAAO;gBACV,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;gBACzB,MAAK;YACP;gBACE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,0CAA0C,CAAC,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,CAAa,EAAE,GAAW;QAC/B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,GAAG,IAAI,IAAI,CAAC,IAAI,CAAA;QAChB,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;YACnC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACtC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACjB,CAAC;YACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;IAC/B,CAAC;CACF;AAED,qHAAqH;AACrH,MAAM,UAAU,gBAAgB,CAC9B,CAAW,EACX,GAAW,EACX,CAAS;IAET,OAAO,IAAI,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;AACrC,CAAC;AAED,sFAAsF;AACtF,MAAM,OAAO,YAAY;IACf,CAAC,CAAU;IACX,IAAI,CAAQ;IACZ,GAAG,CAAQ;IAEnB,YAAY,CAAW,EAAE,GAAW;QAClC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;IACd,CAAC;IAED,KAAK,CAAC,CAAa;QACjB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACxD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACb,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,CAAa,EAAE,GAAW;QAChC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,0CAA0C,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,MAAc;QACjC,IAAI,GAAW,CAAA;QACf,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,SAAS;gBACZ,GAAG,GAAG,MAAM,CAAA;gBACZ,MAAK;YACP,KAAK,WAAW;gBACd,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;gBACvB,MAAK;YACP;gBACE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpB,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,CAAW,EAAE,GAAW;IACtD,OAAO,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,GAAW;IAC3C,OAAO,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,GAAW,EACX,GAAsB;IAEtB,qCAAqC;IACrC,IAAI,SAAS,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACnE,OAAQ,GAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,uCAAuC;IACvC,IAAI,UAAU,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACrE,OAAQ,GAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA,CAAC,sBAAsB;IACxD,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/C,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAChB,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACjC,CAAC;gBACD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACtB,CAAC;YACD,OAAO,IAAI,EAAE,CAAA;YACb,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACtB,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACd,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,MAAK;YACP,CAAC;YACD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,KAAK,CACnB,GAAW,EACX,GAAW,EACX,CAAS;IAET,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IACrD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAChC,wCAAwC;QACxC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACvB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CACzB,CAAS,EACT,GAAe,EACf,GAAW;IAEX,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC,IAAI,EAAE,CAAA;QACP,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC5B,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAClB,CAAC;YACD,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBAC3B,OAAO,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;YAC9B,CAAC;YACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAClB,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,GAAe;IACjD,OAAO,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAE/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC/B,WAAW,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAChB,MAAK;YACP,CAAC;YACD,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACvB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;KAClB,CAAA;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAC,GAAG,OAAiB;IAC9C,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,WAAW;IACP,OAAO,CAAU;IAEzB,YAAY,OAAiB;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,CAAC,CAAa;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,iCAAiC;gBACjC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACzB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC1B,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;gBACnB,CAAC;gBACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA,CAAC,sBAAsB;gBAC3C,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBACzB,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,6CAA6C;oBAC7C,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBAClB,CAAC;gBACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;CACF;AAED,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,GAAG,OAAiB;IAC9C,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,WAAW;IACP,OAAO,CAAU;IAEzB,YAAY,OAAiB;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,CAAa;QACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACjB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzB,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC5C,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,SAAS;IACL,CAAC,CAAQ;IACT,CAAC,CAAQ;IAEjB,YAAY,CAAS,EAAE,CAAS;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAED,IAAI,CAAC,CAAa;QAChB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC/C,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAChB,CAAC;YACD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ export declare class Builder {
3
+ private _content;
4
+ private _addr;
5
+ constructor(init?: Partial<{}>);
6
+ clone(): Builder;
7
+ private copyCheck;
8
+ String(): string;
9
+ Len(): number;
10
+ Cap(): number;
11
+ Reset(): void;
12
+ Grow(n: number): void;
13
+ Write(p: Uint8Array): [number, $.GoError];
14
+ WriteByte(c: number): $.GoError;
15
+ WriteRune(r: number): [number, $.GoError];
16
+ WriteString(s: string): [number, $.GoError];
17
+ static __typeInfo: $.StructTypeInfo;
18
+ }
@@ -0,0 +1,205 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ export class Builder {
3
+ _content = '';
4
+ _addr = null;
5
+ constructor(init) {
6
+ // Simple constructor - no complex initialization needed
7
+ }
8
+ clone() {
9
+ const cloned = new Builder();
10
+ cloned._content = this._content;
11
+ cloned._addr = this._addr;
12
+ return cloned;
13
+ }
14
+ copyCheck() {
15
+ if (this._addr == null) {
16
+ this._addr = this;
17
+ }
18
+ else if (this._addr !== this) {
19
+ $.panic('strings: illegal use of non-zero Builder copied by value');
20
+ }
21
+ }
22
+ // String returns the accumulated string.
23
+ String() {
24
+ return this._content;
25
+ }
26
+ // Len returns the number of accumulated bytes; b.Len() == len(b.String()).
27
+ Len() {
28
+ return this._content.length;
29
+ }
30
+ // Cap returns the capacity of the builder's underlying byte slice. It is the
31
+ // total space allocated for the string being built and includes any bytes
32
+ // already written.
33
+ Cap() {
34
+ // For simplicity, return the current length since JavaScript strings are dynamic
35
+ return this._content.length;
36
+ }
37
+ // Reset resets the Builder to be empty.
38
+ Reset() {
39
+ this._addr = null;
40
+ this._content = '';
41
+ }
42
+ // Grow grows b's capacity, if necessary, to guarantee space for
43
+ // another n bytes. After Grow(n), at least n bytes can be written to b
44
+ // without another allocation. If n is negative, Grow panics.
45
+ Grow(n) {
46
+ this.copyCheck();
47
+ if (n < 0) {
48
+ $.panic('strings.Builder.Grow: negative count');
49
+ }
50
+ // JavaScript strings are dynamic, so no need to pre-allocate
51
+ }
52
+ // Write appends the contents of p to b's buffer.
53
+ // Write always returns len(p), nil.
54
+ Write(p) {
55
+ this.copyCheck();
56
+ // Convert byte array to string
57
+ const str = new TextDecoder('utf-8').decode(p);
58
+ this._content += str;
59
+ return [p.length, null];
60
+ }
61
+ // WriteByte appends the byte c to b's buffer.
62
+ // The returned error is always nil.
63
+ WriteByte(c) {
64
+ this.copyCheck();
65
+ this._content += String.fromCharCode(c);
66
+ return null;
67
+ }
68
+ // WriteRune appends the UTF-8 encoding of Unicode code point r to b's buffer.
69
+ // It returns the length of r and a nil error.
70
+ WriteRune(r) {
71
+ this.copyCheck();
72
+ const str = String.fromCodePoint(r);
73
+ this._content += str;
74
+ // Return the byte length of the UTF-8 encoding
75
+ const byteLength = new TextEncoder().encode(str).length;
76
+ return [byteLength, null];
77
+ }
78
+ // WriteString appends the contents of s to b's buffer.
79
+ // It returns the length of s and a nil error.
80
+ WriteString(s) {
81
+ this.copyCheck();
82
+ this._content += s;
83
+ return [s.length, null];
84
+ }
85
+ // Register this type with the runtime type system
86
+ static __typeInfo = $.registerStructType('Builder', new Builder(), [
87
+ {
88
+ name: 'String',
89
+ args: [],
90
+ returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
91
+ },
92
+ {
93
+ name: 'Len',
94
+ args: [],
95
+ returns: [{ type: { kind: $.TypeKind.Basic, name: 'number' } }],
96
+ },
97
+ {
98
+ name: 'Cap',
99
+ args: [],
100
+ returns: [{ type: { kind: $.TypeKind.Basic, name: 'number' } }],
101
+ },
102
+ { name: 'Reset', args: [], returns: [] },
103
+ {
104
+ name: 'Grow',
105
+ args: [{ name: 'n', type: { kind: $.TypeKind.Basic, name: 'number' } }],
106
+ returns: [],
107
+ },
108
+ {
109
+ name: 'Write',
110
+ args: [
111
+ {
112
+ name: 'p',
113
+ type: {
114
+ kind: $.TypeKind.Slice,
115
+ elemType: { kind: $.TypeKind.Basic, name: 'number' },
116
+ },
117
+ },
118
+ ],
119
+ returns: [
120
+ { type: { kind: $.TypeKind.Basic, name: 'number' } },
121
+ {
122
+ type: {
123
+ kind: $.TypeKind.Interface,
124
+ name: 'GoError',
125
+ methods: [
126
+ {
127
+ name: 'Error',
128
+ args: [],
129
+ returns: [
130
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
131
+ ],
132
+ },
133
+ ],
134
+ },
135
+ },
136
+ ],
137
+ },
138
+ {
139
+ name: 'WriteByte',
140
+ args: [{ name: 'c', type: { kind: $.TypeKind.Basic, name: 'number' } }],
141
+ returns: [
142
+ {
143
+ type: {
144
+ kind: $.TypeKind.Interface,
145
+ name: 'GoError',
146
+ methods: [
147
+ {
148
+ name: 'Error',
149
+ args: [],
150
+ returns: [
151
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
152
+ ],
153
+ },
154
+ ],
155
+ },
156
+ },
157
+ ],
158
+ },
159
+ {
160
+ name: 'WriteRune',
161
+ args: [{ name: 'r', type: { kind: $.TypeKind.Basic, name: 'number' } }],
162
+ returns: [
163
+ { type: { kind: $.TypeKind.Basic, name: 'number' } },
164
+ {
165
+ type: {
166
+ kind: $.TypeKind.Interface,
167
+ name: 'GoError',
168
+ methods: [
169
+ {
170
+ name: 'Error',
171
+ args: [],
172
+ returns: [
173
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
174
+ ],
175
+ },
176
+ ],
177
+ },
178
+ },
179
+ ],
180
+ },
181
+ {
182
+ name: 'WriteString',
183
+ args: [{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } }],
184
+ returns: [
185
+ { type: { kind: $.TypeKind.Basic, name: 'number' } },
186
+ {
187
+ type: {
188
+ kind: $.TypeKind.Interface,
189
+ name: 'GoError',
190
+ methods: [
191
+ {
192
+ name: 'Error',
193
+ args: [],
194
+ returns: [
195
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
196
+ ],
197
+ },
198
+ ],
199
+ },
200
+ },
201
+ ],
202
+ },
203
+ ], Builder, {});
204
+ }
205
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../gs/strings/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function Clone(s: string): string;
@@ -0,0 +1,16 @@
1
+ // Clone returns a fresh copy of s.
2
+ // It guarantees to make a copy of s into a new allocation,
3
+ // which can be important when retaining only a small substring
4
+ // of a much larger string. Using Clone can help such programs
5
+ // use less memory. Of course, since using Clone makes a copy,
6
+ // overuse of Clone can make programs use more memory.
7
+ // Clone should typically be used only rarely, and only when
8
+ // profiling indicates that it is needed.
9
+ // For strings of length zero the string "" will be returned
10
+ // and no allocation is made.
11
+ export function Clone(s) {
12
+ // In JavaScript, strings are immutable, so we can just return the string
13
+ // But to match Go semantics, we'll create a new string
14
+ return String(s);
15
+ }
16
+ //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../gs/strings/clone.ts"],"names":[],"mappings":"AAEA,mCAAmC;AACnC,2DAA2D;AAC3D,+DAA+D;AAC/D,8DAA8D;AAC9D,8DAA8D;AAC9D,sDAAsD;AACtD,4DAA4D;AAC5D,yCAAyC;AACzC,4DAA4D;AAC5D,6BAA6B;AAC7B,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,yEAAyE;IACzE,uDAAuD;IACvD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function Compare(a: string, b: string): number;
@@ -0,0 +1,14 @@
1
+ // Compare returns an integer comparing two strings lexicographically.
2
+ // The result will be 0 if a == b, -1 if a < b, and +1 if a > b.
3
+ //
4
+ // Compare is included only for symmetry with package bytes.
5
+ // It is usually clearer and always faster to use the built-in
6
+ // string comparison operators ==, <, >, and so on.
7
+ export function Compare(a, b) {
8
+ if (a < b)
9
+ return -1;
10
+ if (a > b)
11
+ return 1;
12
+ return 0;
13
+ }
14
+ //# sourceMappingURL=compare.js.map