pts 0.10.11 → 0.11.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.
Files changed (52) hide show
  1. package/dist/{pts.d.ts → index.d.ts} +1245 -1207
  2. package/dist/index.js +6825 -6660
  3. package/dist/index.mjs +6785 -0
  4. package/package.json +12 -33
  5. package/tsup.browser.js +21 -0
  6. package/tsup.min.js +23 -0
  7. package/tsup.module.js +15 -0
  8. package/dist/es2015/Canvas.js +0 -684
  9. package/dist/es2015/Canvas.js.map +0 -1
  10. package/dist/es2015/Color.js +0 -337
  11. package/dist/es2015/Color.js.map +0 -1
  12. package/dist/es2015/Create.js +0 -275
  13. package/dist/es2015/Create.js.map +0 -1
  14. package/dist/es2015/Dom.js +0 -448
  15. package/dist/es2015/Dom.js.map +0 -1
  16. package/dist/es2015/Form.js +0 -80
  17. package/dist/es2015/Form.js.map +0 -1
  18. package/dist/es2015/Image.js +0 -220
  19. package/dist/es2015/Image.js.map +0 -1
  20. package/dist/es2015/LinearAlgebra.js +0 -286
  21. package/dist/es2015/LinearAlgebra.js.map +0 -1
  22. package/dist/es2015/Num.js +0 -477
  23. package/dist/es2015/Num.js.map +0 -1
  24. package/dist/es2015/Op.js +0 -978
  25. package/dist/es2015/Op.js.map +0 -1
  26. package/dist/es2015/Physics.js +0 -383
  27. package/dist/es2015/Physics.js.map +0 -1
  28. package/dist/es2015/Play.js +0 -339
  29. package/dist/es2015/Play.js.map +0 -1
  30. package/dist/es2015/Pt.js +0 -463
  31. package/dist/es2015/Pt.js.map +0 -1
  32. package/dist/es2015/Space.js +0 -331
  33. package/dist/es2015/Space.js.map +0 -1
  34. package/dist/es2015/Svg.js +0 -367
  35. package/dist/es2015/Svg.js.map +0 -1
  36. package/dist/es2015/Types.js +0 -3
  37. package/dist/es2015/Types.js.map +0 -1
  38. package/dist/es2015/Typography.js +0 -40
  39. package/dist/es2015/Typography.js.map +0 -1
  40. package/dist/es2015/UI.js +0 -273
  41. package/dist/es2015/UI.js.map +0 -1
  42. package/dist/es2015/Util.js +0 -200
  43. package/dist/es2015/Util.js.map +0 -1
  44. package/dist/es2015/_lib.js +0 -45
  45. package/dist/es2015/_lib.js.map +0 -1
  46. package/dist/es2015/_module.js +0 -18
  47. package/dist/es2015/_module.js.map +0 -1
  48. package/dist/es2015/uheprng.js +0 -69
  49. package/dist/es2015/uheprng.js.map +0 -1
  50. package/dist/es5.js.map +0 -1
  51. package/dist/index.js.map +0 -1
  52. package/dist/pts.module.js.map +0 -1
@@ -1,220 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { CanvasForm } from "./Canvas";
11
- import { Pt } from "./Pt";
12
- import { Mat } from "./LinearAlgebra";
13
- export class Img {
14
- constructor(editable = false, space, crossOrigin) {
15
- this._scale = 1;
16
- this._loaded = false;
17
- this._editable = editable;
18
- this._space = space;
19
- this._scale = this._space ? this._space.pixelScale : 1;
20
- this._img = new Image();
21
- if (crossOrigin)
22
- this._img.crossOrigin = "Anonymous";
23
- }
24
- static load(src, editable = false, space, ready) {
25
- const img = new Img(editable, space);
26
- img.load(src).then(res => {
27
- if (ready)
28
- ready(res);
29
- });
30
- return img;
31
- }
32
- static loadAsync(src, editable = false, space) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- const img = yield new Img(editable, space).load(src);
35
- return img;
36
- });
37
- }
38
- static loadPattern(src, space, repeat = 'repeat', editable = false) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- const img = yield Img.loadAsync(src, editable, space);
41
- return img.pattern(repeat);
42
- });
43
- }
44
- static blank(size, space, scale) {
45
- let img = new Img(true, space);
46
- const s = scale ? scale : space.pixelScale;
47
- img.initCanvas(size[0], size[1], s);
48
- return img;
49
- }
50
- load(src) {
51
- return new Promise((resolve, reject) => {
52
- if (this._editable && !document) {
53
- reject("Cannot create html canvas element. document not found.");
54
- }
55
- this._img.src = src;
56
- this._img.onload = () => {
57
- if (this._editable) {
58
- if (!this._cv)
59
- this._cv = document.createElement("canvas");
60
- this._drawToScale(this._scale, this._img);
61
- this._data = this._ctx.getImageData(0, 0, this._cv.width, this._cv.height);
62
- }
63
- this._loaded = true;
64
- resolve(this);
65
- };
66
- this._img.onerror = (evt) => {
67
- reject(evt);
68
- };
69
- });
70
- }
71
- _drawToScale(canvasScale, img) {
72
- const nw = img.width;
73
- const nh = img.height;
74
- this.initCanvas(nw, nh, canvasScale);
75
- if (img)
76
- this._ctx.drawImage(img, 0, 0, nw, nh, 0, 0, this._cv.width, this._cv.height);
77
- }
78
- initCanvas(width, height, canvasScale = 1) {
79
- if (!this._editable) {
80
- console.error('Cannot initiate canvas because this Img is not set to be editable');
81
- return;
82
- }
83
- if (!this._cv)
84
- this._cv = document.createElement("canvas");
85
- const cms = (typeof canvasScale === 'number') ? [canvasScale, canvasScale] : canvasScale;
86
- this._cv.width = width * cms[0];
87
- this._cv.height = height * cms[1];
88
- this._ctx = this._cv.getContext('2d');
89
- this._loaded = true;
90
- }
91
- bitmap(size) {
92
- const w = (size) ? size[0] : this._cv.width;
93
- const h = (size) ? size[1] : this._cv.height;
94
- return createImageBitmap(this._cv, 0, 0, w, h);
95
- }
96
- pattern(reptition = 'repeat', dynamic = false) {
97
- if (!this._space)
98
- throw "Cannot find CanvasSpace ctx to create image pattern";
99
- return this._space.ctx.createPattern(dynamic ? this._cv : this._img, reptition);
100
- }
101
- sync() {
102
- if (this._scale !== 1) {
103
- this.bitmap().then(b => {
104
- this._drawToScale(1 / this._scale, b);
105
- this.load(this.toBase64());
106
- });
107
- }
108
- else {
109
- this._img.src = this.toBase64();
110
- }
111
- }
112
- pixel(p, rescale = true) {
113
- const s = (typeof rescale == 'number') ? rescale : (rescale ? this._scale : 1);
114
- return Img.getPixel(this._data, [p[0] * s, p[1] * s]);
115
- }
116
- static getPixel(imgData, p) {
117
- const no = new Pt(0, 0, 0, 0);
118
- if (p[0] >= imgData.width || p[1] >= imgData.height)
119
- return no;
120
- const i = Math.floor(p[1]) * (imgData.width * 4) + (Math.floor(p[0]) * 4);
121
- const d = imgData.data;
122
- if (i >= d.length - 4)
123
- return no;
124
- return new Pt(d[i], d[i + 1], d[i + 2], d[i + 3]);
125
- }
126
- resize(sizeOrScale, asScale = false) {
127
- let s = asScale ? sizeOrScale : [sizeOrScale[0] / this._img.naturalWidth, sizeOrScale[1] / this._img.naturalHeight];
128
- this._drawToScale(s, this._img);
129
- this._data = this._ctx.getImageData(0, 0, this._cv.width, this._cv.height);
130
- return this;
131
- }
132
- crop(box) {
133
- let p = box.topLeft.scale(this._scale);
134
- let s = box.size.scale(this._scale);
135
- return this._ctx.getImageData(p.x, p.y, s.x, s.y);
136
- }
137
- filter(css) {
138
- this._ctx.filter = css;
139
- this._ctx.drawImage(this._cv, 0, 0);
140
- this._ctx.filter = "none";
141
- return this;
142
- }
143
- cleanup() {
144
- if (this._cv)
145
- this._cv.remove();
146
- if (this._img)
147
- this._img.remove();
148
- this._data = null;
149
- }
150
- static fromBlob(blob, editable = false, space) {
151
- let url = URL.createObjectURL(blob);
152
- return new Img(editable, space).load(url);
153
- }
154
- static imageDataToBlob(data) {
155
- return new Promise(function (resolve, reject) {
156
- if (!document) {
157
- reject("Cannot create html canvas element. document not found.");
158
- }
159
- let cv = document.createElement("canvas");
160
- cv.width = data.width;
161
- cv.height = data.height;
162
- cv.getContext("2d").putImageData(data, 0, 0);
163
- cv.toBlob(blob => {
164
- resolve(blob);
165
- cv.remove();
166
- });
167
- });
168
- }
169
- toBase64() {
170
- return this._cv.toDataURL();
171
- }
172
- toBlob() {
173
- return new Promise((resolve) => {
174
- this._cv.toBlob(blob => resolve(blob));
175
- });
176
- }
177
- getForm() {
178
- if (!this._editable) {
179
- console.error("Cannot get a CanvasForm because this Img is not editable");
180
- }
181
- return this._ctx ? new CanvasForm(this._ctx) : undefined;
182
- }
183
- get current() {
184
- return this._editable ? this._cv : this._img;
185
- }
186
- get image() {
187
- return this._img;
188
- }
189
- get canvas() {
190
- return this._cv;
191
- }
192
- get data() {
193
- return this._data;
194
- }
195
- get ctx() {
196
- return this._ctx;
197
- }
198
- get loaded() {
199
- return this._loaded;
200
- }
201
- get pixelScale() {
202
- return this._scale;
203
- }
204
- get imageSize() {
205
- if (!this._img.width || !this._img.height) {
206
- return this.canvasSize.$divide(this._scale);
207
- }
208
- else {
209
- return new Pt(this._img.width, this._img.height);
210
- }
211
- }
212
- get canvasSize() {
213
- return new Pt(this._cv.width, this._cv.height);
214
- }
215
- get scaledMatrix() {
216
- const s = 1 / this._scale;
217
- return new Mat().scale2D([s, s]);
218
- }
219
- }
220
- //# sourceMappingURL=Image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Image.js","sourceRoot":"","sources":["../../src/Image.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AACnD,OAAO,EAAS,EAAE,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAMtC,MAAM,OAAO,GAAG;IAmBd,YAAa,WAAiB,KAAK,EAAE,KAAkB,EAAE,WAAoB;QAbnE,WAAM,GAAU,CAAC,CAAC;QAElB,YAAO,GAAW,KAAK,CAAC;QAYhC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACvD,CAAC;IAUD,MAAM,CAAC,IAAI,CAAE,GAAU,EAAE,WAAiB,KAAK,EAAE,KAAkB,EAAE,KAAkB;QACrF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAE,QAAQ,EAAE,KAAK,CAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC,IAAI,CAAE,GAAG,CAAC,EAAE;YAC1B,IAAI,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAUD,MAAM,CAAO,SAAS,CAAE,GAAU,EAAE,WAAiB,KAAK,EAAE,KAAkB;;YAC5E,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC;YACvD,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAWD,MAAM,CAAO,WAAW,CAAE,GAAU,EAAE,KAAiB,EAAE,SAA+B,QAAQ,EAAE,WAAiB,KAAK;;YACtH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAE,CAAC;YACxD,OAAO,GAAG,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC;QAC/B,CAAC;KAAA;IASD,MAAM,CAAC,KAAK,CAAE,IAAW,EAAE,KAAiB,EAAE,KAAa;QACzD,IAAI,GAAG,GAAG,IAAI,GAAG,CAAE,IAAI,EAAE,KAAK,CAAE,CAAC;QACjC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QAC3C,GAAG,CAAC,UAAU,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAQD,IAAI,CAAE,GAAU;QACd,OAAO,IAAI,OAAO,CAAE,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;gBAC/B,MAAM,CAAE,wDAAwD,CAAE,CAAC;aACpE;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YAEpB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;gBACtB,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,GAAG;wBAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAE,QAAQ,CAAuB,CAAC;oBAClF,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC;oBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;iBAC7E;gBAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO,CAAE,IAAI,CAAE,CAAC;YAClB,CAAC,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAS,EAAE,EAAE;gBAChC,MAAM,CAAE,GAAG,CAAE,CAAC;YAChB,CAAC,CAAC;QAEJ,CAAC,CAAC,CAAC;IACL,CAAC;IASS,YAAY,CAAE,WAAyB,EAAE,GAAqB;QACtE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAe,CAAC;QAC/B,MAAM,EAAE,GAAG,GAAG,CAAC,MAAgB,CAAC;QAChC,IAAI,CAAC,UAAU,CAAE,EAAE,EAAE,EAAE,EAAE,WAAW,CAAE,CAAC;QACvC,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IAC3F,CAAC;IASD,UAAU,CAAE,KAAY,EAAE,MAAa,EAAE,cAA4B,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,KAAK,CAAE,mEAAmE,CAAE,CAAC;YACrF,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAE,QAAQ,CAAuB,CAAC;QAElF,MAAM,GAAG,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAE,IAAI,CAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAQD,MAAM,CAAE,IAAY;QAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7C,OAAO,iBAAiB,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;IACnD,CAAC;IASD,OAAO,CAAE,YAAoC,QAAQ,EAAE,UAAkB,KAAK;QAC5E,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,qDAAqD,CAAC;QAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAE,CAAC;IACpF,CAAC;IAOD,IAAI;QAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAE,CAAC,CAAC,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;SAGJ;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjC;IACH,CAAC;IASD,KAAK,CAAE,CAAQ,EAAE,UAAuB,IAAI;QAC1C,MAAM,CAAC,GAAG,CAAE,OAAO,OAAO,IAAI,QAAQ,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,GAAG,CAAC,QAAQ,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAE,CAAE,CAAC;IACxD,CAAC;IASD,MAAM,CAAC,QAAQ,CAAE,OAAiB,EAAE,CAAQ;QAC1C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC3B,IAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM;YAAG,OAAO,EAAE,CAAC;QAEjE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAE,GAAG,CAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC9E,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACvB,IAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAC,CAAC;YAAG,OAAO,EAAE,CAAC;QAEjC,OAAO,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAE,CAAC;IAChD,CAAC;IAQD,MAAM,CAAE,WAAkB,EAAE,UAAkB,KAAK;QACjD,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAE,CAAC;QAClH,IAAI,CAAC,YAAY,CAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,IAAI,CAAE,GAAS;QACb,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,CAAE,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,CAAE,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IACtD,CAAC;IAOD,MAAM,CAAE,GAAU;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,OAAO;QACL,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAQD,MAAM,CAAC,QAAQ,CAAE,IAAS,EAAE,WAAiB,KAAK,EAAE,KAAkB;QACpE,IAAI,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,GAAG,CAAE,QAAQ,EAAE,KAAK,CAAE,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC;IAChD,CAAC;IAOD,MAAM,CAAC,eAAe,CAAE,IAAc;QACpC,OAAO,IAAI,OAAO,CAAE,UAAU,OAAO,EAAE,MAAM;YAC3C,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,CAAE,wDAAwD,CAAE,CAAC;aACpE;YACD,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAE,QAAQ,CAAuB,CAAC;YACjE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACtB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE;gBAChB,OAAO,CAAE,IAAI,CAAE,CAAC;gBAChB,EAAE,CAAC,MAAM,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAMD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;IAMD,MAAM;QACJ,OAAO,IAAI,OAAO,CAAE,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAMD,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,KAAK,CAAE,0DAA0D,CAAE,CAAC;SAC7E;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAE,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IAKD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/C,CAAC;IAMD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAMD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAMD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAMD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAMD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAMD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAMD,IAAI,SAAS;QACX,IAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAG;YAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAE,IAAI,CAAC,MAAM,CAAE,CAAC;SAC/C;aAAM;YACL,OAAO,IAAI,EAAE,CAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;SACpD;IACH,CAAC;IAMD,IAAI,UAAU;QACZ,OAAO,IAAI,EAAE,CAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IACnD,CAAC;IAQD,IAAI,YAAY;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,OAAO,IAAI,GAAG,EAAE,CAAC,OAAO,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;IACrC,CAAC;CACF"}
@@ -1,286 +0,0 @@
1
- /*! Pts.js is licensed under Apache License 2.0. Copyright © 2017-current William Ngan and contributors. (https://github.com/williamngan/pts) */
2
- import { Pt, Group } from "./Pt";
3
- import { Line } from "./Op";
4
- export class Vec {
5
- static add(a, b) {
6
- if (typeof b == "number") {
7
- for (let i = 0, len = a.length; i < len; i++)
8
- a[i] += b;
9
- }
10
- else {
11
- for (let i = 0, len = a.length; i < len; i++)
12
- a[i] += b[i] || 0;
13
- }
14
- return a;
15
- }
16
- static subtract(a, b) {
17
- if (typeof b == "number") {
18
- for (let i = 0, len = a.length; i < len; i++)
19
- a[i] -= b;
20
- }
21
- else {
22
- for (let i = 0, len = a.length; i < len; i++)
23
- a[i] -= b[i] || 0;
24
- }
25
- return a;
26
- }
27
- static multiply(a, b) {
28
- if (typeof b == "number") {
29
- for (let i = 0, len = a.length; i < len; i++)
30
- a[i] *= b;
31
- }
32
- else {
33
- if (a.length != b.length) {
34
- throw new Error(`Cannot do element-wise multiply since the array lengths don't match: ${a.toString()} multiply-with ${b.toString()}`);
35
- }
36
- for (let i = 0, len = a.length; i < len; i++)
37
- a[i] *= b[i];
38
- }
39
- return a;
40
- }
41
- static divide(a, b) {
42
- if (typeof b == "number") {
43
- if (b === 0)
44
- throw new Error("Cannot divide by zero");
45
- for (let i = 0, len = a.length; i < len; i++)
46
- a[i] /= b;
47
- }
48
- else {
49
- if (a.length != b.length) {
50
- throw new Error(`Cannot do element-wise divide since the array lengths don't match. ${a.toString()} divide-by ${b.toString()}`);
51
- }
52
- for (let i = 0, len = a.length; i < len; i++)
53
- a[i] /= b[i];
54
- }
55
- return a;
56
- }
57
- static dot(a, b) {
58
- if (a.length != b.length)
59
- throw new Error("Array lengths don't match");
60
- let d = 0;
61
- for (let i = 0, len = a.length; i < len; i++) {
62
- d += a[i] * b[i];
63
- }
64
- return d;
65
- }
66
- static cross2D(a, b) {
67
- return a[0] * b[1] - a[1] * b[0];
68
- }
69
- static cross(a, b) {
70
- return new Pt((a[1] * b[2] - a[2] * b[1]), (a[2] * b[0] - a[0] * b[2]), (a[0] * b[1] - a[1] * b[0]));
71
- }
72
- static magnitude(a) {
73
- return Math.sqrt(Vec.dot(a, a));
74
- }
75
- static unit(a, magnitude = undefined) {
76
- let m = (magnitude === undefined) ? Vec.magnitude(a) : magnitude;
77
- if (m === 0)
78
- return Pt.make(a.length);
79
- return Vec.divide(a, m);
80
- }
81
- static abs(a) {
82
- return Vec.map(a, Math.abs);
83
- }
84
- static floor(a) {
85
- return Vec.map(a, Math.floor);
86
- }
87
- static ceil(a) {
88
- return Vec.map(a, Math.ceil);
89
- }
90
- static round(a) {
91
- return Vec.map(a, Math.round);
92
- }
93
- static max(a) {
94
- let m = Number.MIN_VALUE;
95
- let index = 0;
96
- for (let i = 0, len = a.length; i < len; i++) {
97
- m = Math.max(m, a[i]);
98
- if (m === a[i])
99
- index = i;
100
- }
101
- return { value: m, index: index };
102
- }
103
- static min(a) {
104
- let m = Number.MAX_VALUE;
105
- let index = 0;
106
- for (let i = 0, len = a.length; i < len; i++) {
107
- m = Math.min(m, a[i]);
108
- if (m === a[i])
109
- index = i;
110
- }
111
- return { value: m, index: index };
112
- }
113
- static sum(a) {
114
- let s = 0;
115
- for (let i = 0, len = a.length; i < len; i++)
116
- s += a[i];
117
- return s;
118
- }
119
- static map(a, fn) {
120
- for (let i = 0, len = a.length; i < len; i++) {
121
- a[i] = fn(a[i], i, a);
122
- }
123
- return a;
124
- }
125
- }
126
- export class Mat {
127
- constructor() {
128
- this.reset();
129
- }
130
- get value() {
131
- return this._33;
132
- }
133
- get domMatrix() {
134
- return new DOMMatrix(Mat.toDOMMatrix(this._33));
135
- }
136
- reset() {
137
- this._33 = Mat.scale2DMatrix(1, 1);
138
- }
139
- scale2D(val, at = [0, 0]) {
140
- const m = Mat.scaleAt2DMatrix(val[0] || 1, val[1] || 1, at);
141
- this._33 = Mat.multiply(this._33, m);
142
- return this;
143
- }
144
- rotate2D(ang, at = [0, 0]) {
145
- const m = Mat.rotateAt2DMatrix(Math.cos(ang), Math.sin(ang), at);
146
- this._33 = Mat.multiply(this._33, m);
147
- return this;
148
- }
149
- translate2D(val) {
150
- const m = Mat.translate2DMatrix(val[0] || 0, val[1] || 0);
151
- this._33 = Mat.multiply(this._33, m);
152
- return this;
153
- }
154
- shear2D(val, at = [0, 0]) {
155
- const m = Mat.shearAt2DMatrix(Math.tan(val[0] || 0), Math.tan(val[1] || 1), at);
156
- this._33 = Mat.multiply(this._33, m);
157
- return this;
158
- }
159
- static add(a, b) {
160
- if (typeof b != "number") {
161
- if (a[0].length != b[0].length)
162
- throw new Error("Cannot add matrix if rows' and columns' size don't match.");
163
- if (a.length != b.length)
164
- throw new Error("Cannot add matrix if rows' and columns' size don't match.");
165
- }
166
- let g = new Group();
167
- let isNum = typeof b == "number";
168
- for (let i = 0, len = a.length; i < len; i++) {
169
- g.push(a[i].$add((isNum) ? b : b[i]));
170
- }
171
- return g;
172
- }
173
- static multiply(a, b, transposed = false, elementwise = false) {
174
- let g = new Group();
175
- if (typeof b != "number") {
176
- if (elementwise) {
177
- if (a.length != b.length)
178
- throw new Error("Cannot multiply matrix element-wise because the matrices' sizes don't match.");
179
- for (let ai = 0, alen = a.length; ai < alen; ai++) {
180
- g.push(a[ai].$multiply(b[ai]));
181
- }
182
- }
183
- else {
184
- if (!transposed && a[0].length != b.length)
185
- throw new Error("Cannot multiply matrix if rows in matrix-a don't match columns in matrix-b.");
186
- if (transposed && a[0].length != b[0].length)
187
- throw new Error("Cannot multiply matrix if transposed and the columns in both matrices don't match.");
188
- if (!transposed)
189
- b = Mat.transpose(b);
190
- for (let ai = 0, alen = a.length; ai < alen; ai++) {
191
- let p = Pt.make(b.length, 0);
192
- for (let bi = 0, blen = b.length; bi < blen; bi++) {
193
- p[bi] = Vec.dot(a[ai], b[bi]);
194
- }
195
- g.push(p);
196
- }
197
- }
198
- }
199
- else {
200
- for (let ai = 0, alen = a.length; ai < alen; ai++) {
201
- g.push(a[ai].$multiply(b));
202
- }
203
- }
204
- return g;
205
- }
206
- static zipSlice(g, index, defaultValue = false) {
207
- let z = [];
208
- for (let i = 0, len = g.length; i < len; i++) {
209
- if (g[i].length - 1 < index && defaultValue === false)
210
- throw `Index ${index} is out of bounds`;
211
- z.push(g[i][index] || defaultValue);
212
- }
213
- return new Pt(z);
214
- }
215
- static zip(g, defaultValue = false, useLongest = false) {
216
- let ps = new Group();
217
- let len = (useLongest) ? g.reduce((a, b) => Math.max(a, b.length), 0) : g[0].length;
218
- for (let i = 0; i < len; i++) {
219
- ps.push(Mat.zipSlice(g, i, defaultValue));
220
- }
221
- return ps;
222
- }
223
- static transpose(g, defaultValue = false, useLongest = false) {
224
- return Mat.zip(g, defaultValue, useLongest);
225
- }
226
- static toDOMMatrix(m) {
227
- return [m[0][0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1]];
228
- }
229
- static transform2D(pt, m) {
230
- let x = pt[0] * m[0][0] + pt[1] * m[1][0] + m[2][0];
231
- let y = pt[0] * m[0][1] + pt[1] * m[1][1] + m[2][1];
232
- return new Pt(x, y);
233
- }
234
- static scale2DMatrix(x, y) {
235
- return new Group(new Pt(x, 0, 0), new Pt(0, y, 0), new Pt(0, 0, 1));
236
- }
237
- static rotate2DMatrix(cosA, sinA) {
238
- return new Group(new Pt(cosA, sinA, 0), new Pt(-sinA, cosA, 0), new Pt(0, 0, 1));
239
- }
240
- static shear2DMatrix(tanX, tanY) {
241
- return new Group(new Pt(1, tanX, 0), new Pt(tanY, 1, 0), new Pt(0, 0, 1));
242
- }
243
- static translate2DMatrix(x, y) {
244
- return new Group(new Pt(1, 0, 0), new Pt(0, 1, 0), new Pt(x, y, 1));
245
- }
246
- static scaleAt2DMatrix(sx, sy, at) {
247
- let m = Mat.scale2DMatrix(sx, sy);
248
- m[2][0] = -at[0] * sx + at[0];
249
- m[2][1] = -at[1] * sy + at[1];
250
- return m;
251
- }
252
- static rotateAt2DMatrix(cosA, sinA, at) {
253
- let m = Mat.rotate2DMatrix(cosA, sinA);
254
- m[2][0] = at[0] * (1 - cosA) + at[1] * sinA;
255
- m[2][1] = at[1] * (1 - cosA) - at[0] * sinA;
256
- return m;
257
- }
258
- static shearAt2DMatrix(tanX, tanY, at) {
259
- let m = Mat.shear2DMatrix(tanX, tanY);
260
- m[2][0] = -at[1] * tanY;
261
- m[2][1] = -at[0] * tanX;
262
- return m;
263
- }
264
- static reflectAt2DMatrix(p1, p2) {
265
- let intercept = Line.intercept(p1, p2);
266
- if (intercept == undefined) {
267
- return [
268
- new Pt([-1, 0, 0]),
269
- new Pt([0, 1, 0]),
270
- new Pt([p1[0] + p2[0], 0, 1])
271
- ];
272
- }
273
- else {
274
- let yi = intercept.yi;
275
- let ang2 = Math.atan(intercept.slope) * 2;
276
- let cosA = Math.cos(ang2);
277
- let sinA = Math.sin(ang2);
278
- return [
279
- new Pt([cosA, sinA, 0]),
280
- new Pt([sinA, -cosA, 0]),
281
- new Pt([-yi * sinA, yi + yi * cosA, 1])
282
- ];
283
- }
284
- }
285
- }
286
- //# sourceMappingURL=LinearAlgebra.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinearAlgebra.js","sourceRoot":"","sources":["../../src/LinearAlgebra.ts"],"names":[],"mappings":"AAAA,gJAAgJ;AAEhJ,OAAO,EAAC,EAAE,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAO1B,MAAM,OAAO,GAAG;IAMd,MAAM,CAAC,GAAG,CAAE,CAAQ,EAAE,CAAe;QACnC,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;YACxB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnD;aAAM;YACL,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAMD,MAAM,CAAC,QAAQ,CAAE,CAAQ,EAAE,CAAe;QACxC,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;YACxB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnD;aAAM;YACL,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAMD,MAAM,CAAC,QAAQ,CAAE,CAAQ,EAAE,CAAe;QACxC,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;YACxB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACvI;YACD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAOD,MAAM,CAAC,MAAM,CAAE,CAAQ,EAAE,CAAe;QACtC,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACjI;YACD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAMD,MAAM,CAAC,GAAG,CAAE,CAAQ,EAAE,CAAQ;QAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAMD,MAAM,CAAC,OAAO,CAAE,CAAQ,EAAE,CAAQ;QAChC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAKD,MAAM,CAAC,KAAK,CAAE,CAAQ,EAAE,CAAQ;QAC9B,OAAO,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;IAC7F,CAAC;IAMD,MAAM,CAAC,SAAS,CAAE,CAAQ;QACxB,OAAO,IAAI,CAAC,IAAI,CAAE,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAE,CAAE,CAAC;IACtC,CAAC;IAMD,MAAM,CAAC,IAAI,CAAE,CAAQ,EAAE,YAAiB,SAAS;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,KAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,CAAC,KAAG,CAAC;YAAE,OAAO,EAAE,CAAC,IAAI,CAAE,CAAC,CAAC,MAAM,CAAE,CAAC;QACtC,OAAO,GAAG,CAAC,MAAM,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;IAC5B,CAAC;IAOD,MAAM,CAAC,GAAG,CAAE,CAAQ;QAClB,OAAO,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAE,CAAC;IAChC,CAAC;IAOD,MAAM,CAAC,KAAK,CAAE,CAAQ;QACpB,OAAO,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC;IAClC,CAAC;IAOD,MAAM,CAAC,IAAI,CAAE,CAAQ;QACnB,OAAO,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC;IACjC,CAAC;IAOD,MAAM,CAAC,KAAK,CAAE,CAAQ;QACpB,OAAO,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC;IAClC,CAAC;IAOD,MAAM,CAAC,GAAG,CAAE,CAAQ;QAClB,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;SAC3B;QACD,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;IAClC,CAAC;IAOD,MAAM,CAAC,GAAG,CAAE,CAAQ;QAClB,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;SAC3B;QACD,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;IAClC,CAAC;IAMD,MAAM,CAAC,GAAG,CAAE,CAAQ;QAClB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC;IAOD,MAAM,CAAC,GAAG,CAAE,CAAQ,EAAE,EAA0C;QAC9D,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;SACzB;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CAEF;AAMD,MAAM,OAAO,GAAG;IAId;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAMD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAMD,IAAI,SAAS;QACX,OAAO,IAAI,SAAS,CAAE,GAAG,CAAC,WAAW,CAAE,IAAI,CAAC,GAAG,CAAE,CAAE,CAAE;IACvD,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAQD,OAAO,CAAE,GAAU,EAAE,KAAY,CAAC,CAAC,EAAC,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAE,CAAC;QAC9D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,QAAQ,CAAE,GAAU,EAAE,KAAY,CAAC,CAAC,EAAC,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAE,CAAC;QACnE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,WAAW,CAAE,GAAU;QACrB,MAAM,CAAC,GAAG,GAAG,CAAC,iBAAiB,CAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAE,CAAC;QAC5D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,OAAO,CAAE,GAAU,EAAE,KAAY,CAAC,CAAC,EAAC,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAE,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAE,EAAE,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAE,EAAE,EAAE,CAAE,CAAC;QACtF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IASD,MAAM,CAAC,GAAG,CAAE,CAAW,EAAE,CAA6B;QACpD,IAAK,OAAO,CAAC,IAAI,QAAQ,EAAG;YAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC7G,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;SACxG;QAED,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;QACpB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,QAAQ,CAAC;QACjC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAE,CAAC;SAC3C;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAWD,MAAM,CAAC,QAAQ,CAAE,CAAW,EAAE,CAA6B,EAAE,aAAmB,KAAK,EAAE,cAAoB,KAAK;QAE9G,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;YAExB,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;gBAC1H,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE;oBACjD,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAE,CAAC,CAAC,EAAE,CAAC,CAAE,CAAE,CAAC;iBACpC;aAEF;iBAAM;gBAEL,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;gBAC3I,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;gBAEpJ,IAAI,CAAC,UAAU;oBAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAE,CAAC,CAAE,CAAC;gBAExC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE;oBACjD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;oBAC/B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE;wBACjD,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC;qBACjC;oBACD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX;aACF;SAEF;aAAM;YACL,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE;gBACjD,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,CAAC;aAC9B;SACF;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IASD,MAAM,CAAC,QAAQ,CAAE,CAAsB,EAAE,KAAY,EAAE,eAA8B,KAAK;QACxF,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAC,CAAC,GAAG,KAAK,IAAI,YAAY,KAAK,KAAK;gBAAE,MAAM,SAAS,KAAK,mBAAmB,CAAC;YAC7F,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAE,CAAC;SACvC;QACD,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IASD,MAAM,CAAC,GAAG,CAAE,CAAsB,EAAE,eAA8B,KAAK,EAAE,UAAU,GAAC,KAAK;QACvF,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;QACrB,IAAI,GAAG,GAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,CAAwB,CAAC,MAAM,CAAE,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpH,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACxB,EAAE,CAAC,IAAI,CAAE,GAAG,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAE,CAAE,CAAC;SAC/C;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAMD,MAAM,CAAC,SAAS,CAAE,CAAsB,EAAE,eAA8B,KAAK,EAAE,UAAU,GAAC,KAAK;QAC7F,OAAO,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,YAAY,EAAE,UAAU,CAAE,CAAC;IAChD,CAAC;IAGD,MAAM,CAAC,WAAW,CAAE,CAAsB;QACxC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IASD,MAAM,CAAC,WAAW,CAAE,EAAS,EAAE,CAAsB;QACnD,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IAMD,MAAM,CAAC,aAAa,CAAE,CAAQ,EAAE,CAAQ;QACtC,OAAO,IAAI,KAAK,CACd,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACjB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACjB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAClB,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,cAAc,CAAE,IAAW,EAAE,IAAW;QAC7C,OAAO,IAAI,KAAK,CACd,IAAI,EAAE,CAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAE,EACvB,IAAI,EAAE,CAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAG,EACzB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAClB,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,aAAa,CAAE,IAAW,EAAE,IAAW;QAC5C,OAAO,IAAI,KAAK,CACd,IAAI,EAAE,CAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAE,EACpB,IAAI,EAAE,CAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAE,EACpB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAClB,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,iBAAiB,CAAE,CAAQ,EAAE,CAAQ;QAC1C,OAAO,IAAI,KAAK,CACd,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACjB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACjB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAClB,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,eAAe,CAAE,EAAS,EAAE,EAAS,EAAE,EAAS;QACrD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAMD,MAAM,CAAC,gBAAgB,CAAE,IAAW,EAAE,IAAW,EAAE,EAAS;QAC1D,IAAI,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;QACtC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAMD,MAAM,CAAC,eAAe,CAAE,IAAW,EAAE,IAAW,EAAE,EAAS;QACzD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAQD,MAAM,CAAC,iBAAiB,CAAE,EAAS,EAAE,EAAS;QAC5C,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAE,EAAE,EAAE,EAAE,CAAE,CAAC;QAEzC,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,OAAO;gBACL,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE;gBACpB,IAAI,EAAE,CAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE;gBACnB,IAAI,EAAE,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE;aAC9B,CAAC;SACH;aAAM;YAEL,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;YACtB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAE,SAAS,CAAC,KAAK,CAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC;YAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC;YAE5B,OAAO;gBACL,IAAI,EAAE,CAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE;gBACzB,IAAI,EAAE,CAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAE;gBAC1B,IAAI,EAAE,CAAE,CAAC,CAAC,EAAE,GAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAC,IAAI,EAAE,CAAC,CAAC,CAAE;aACtC,CAAC;SACH;IACH,CAAC;CAGF"}