@m2c2kit/core 0.3.28 → 0.3.30

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.
package/dist/index.js CHANGED
@@ -43,6 +43,17 @@ var ActionType = /* @__PURE__ */ ((ActionType2) => {
43
43
  return ActionType2;
44
44
  })(ActionType || {});
45
45
 
46
+ class M2Error extends Error {
47
+ constructor(...params) {
48
+ super(...params);
49
+ this.name = "M2Error";
50
+ Object.setPrototypeOf(this, M2Error.prototype);
51
+ if (Error.captureStackTrace) {
52
+ Error.captureStackTrace(this, M2Error);
53
+ }
54
+ }
55
+ }
56
+
46
57
  const _Easings = class _Easings {
47
58
  static toTypeAsString(easingFunction) {
48
59
  switch (easingFunction) {
@@ -116,7 +127,7 @@ const _Easings = class _Easings {
116
127
  return "CircularInOut";
117
128
  }
118
129
  default: {
119
- throw new Error("Easings.toTypeAsString(): Unknown easing function");
130
+ throw new M2Error("Easings.toTypeAsString(): Unknown easing function");
120
131
  }
121
132
  }
122
133
  }
@@ -192,7 +203,7 @@ const _Easings = class _Easings {
192
203
  return _Easings.circularInOut;
193
204
  }
194
205
  default: {
195
- throw new Error(
206
+ throw new M2Error(
196
207
  `Easings.fromTypeAsString(): Unknown easing function type ${easingType}`
197
208
  );
198
209
  }
@@ -394,12 +405,12 @@ const _Timer = class _Timer {
394
405
  static start(name) {
395
406
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
396
407
  if (timer === void 0) {
397
- throw new Error(
408
+ throw new M2Error(
398
409
  `can't start timer. timer with name ${name} does not exist.`
399
410
  );
400
411
  } else {
401
412
  if (timer.stopped === false) {
402
- throw new Error(
413
+ throw new M2Error(
403
414
  `can't start timer. timer with name ${name} is already started.`
404
415
  );
405
416
  }
@@ -419,12 +430,12 @@ const _Timer = class _Timer {
419
430
  static stop(name) {
420
431
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
421
432
  if (timer === void 0) {
422
- throw new Error(
433
+ throw new M2Error(
423
434
  `can't stop timer. timer with name ${name} does not exist.`
424
435
  );
425
436
  }
426
437
  if (timer.stopped === true) {
427
- throw new Error(
438
+ throw new M2Error(
428
439
  `can't stop timer. timer with name ${name} is already stopped.`
429
440
  );
430
441
  }
@@ -445,7 +456,7 @@ const _Timer = class _Timer {
445
456
  static elapsed(name) {
446
457
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
447
458
  if (timer === void 0) {
448
- throw new Error(
459
+ throw new M2Error(
449
460
  `can't get elapsed time. timer with name ${name} does not exist.`
450
461
  );
451
462
  }
@@ -467,7 +478,7 @@ const _Timer = class _Timer {
467
478
  static remove(name) {
468
479
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
469
480
  if (timer === void 0) {
470
- throw new Error(
481
+ throw new M2Error(
471
482
  `can't remove timer. timer with name ${name} does not exist.`
472
483
  );
473
484
  }
@@ -761,7 +772,7 @@ class M2c2KitHelpers {
761
772
  if (typeof value2 === "boolean") {
762
773
  return value2.toString();
763
774
  }
764
- throw new Error(`Error parsing "${value2}" as a string.`);
775
+ throw new M2Error(`Error parsing "${value2}" as a string.`);
765
776
  }
766
777
  function canBeNumber(value2) {
767
778
  if (typeof value2 === "number") {
@@ -781,11 +792,11 @@ class M2c2KitHelpers {
781
792
  return value2;
782
793
  }
783
794
  if (typeof value2 !== "string") {
784
- throw new Error(`Error parsing "${value2}" as a number.`);
795
+ throw new M2Error(`Error parsing "${value2}" as a number.`);
785
796
  }
786
797
  const n = parseFloat(value2);
787
798
  if (Number.isNaN(n)) {
788
- throw new Error(`Error parsing "${value2}" as a number.`);
799
+ throw new M2Error(`Error parsing "${value2}" as a number.`);
789
800
  }
790
801
  return n;
791
802
  }
@@ -807,11 +818,11 @@ class M2c2KitHelpers {
807
818
  return value2;
808
819
  }
809
820
  if (typeof value2 !== "string") {
810
- throw new Error(`Error parsing "${value2}" as an integer.`);
821
+ throw new M2Error(`Error parsing "${value2}" as an integer.`);
811
822
  }
812
823
  const n = parseInt(value2);
813
824
  if (Number.isNaN(n)) {
814
- throw new Error(`Error parsing "${value2}" as an integer.`);
825
+ throw new M2Error(`Error parsing "${value2}" as an integer.`);
815
826
  }
816
827
  return n;
817
828
  }
@@ -829,7 +840,7 @@ class M2c2KitHelpers {
829
840
  return value2;
830
841
  }
831
842
  if (value2 !== "true" && value2 !== "false") {
832
- throw new Error(`Error parsing "${value2}" as a boolean.`);
843
+ throw new M2Error(`Error parsing "${value2}" as a boolean.`);
833
844
  }
834
845
  return value2 === "true";
835
846
  }
@@ -858,7 +869,7 @@ class M2c2KitHelpers {
858
869
  return value2;
859
870
  }
860
871
  if (typeof value2 !== "string") {
861
- throw new Error(`Error parsing "${value2}" as an array.`);
872
+ throw new M2Error(`Error parsing "${value2}" as an array.`);
862
873
  }
863
874
  try {
864
875
  const a = JSON.parse(value2);
@@ -871,7 +882,7 @@ class M2c2KitHelpers {
871
882
  return a;
872
883
  }
873
884
  }
874
- throw new Error(`Error parsing "${value2}" as an array.`);
885
+ throw new M2Error(`Error parsing "${value2}" as an array.`);
875
886
  }
876
887
  function canBeObject(value2) {
877
888
  if (typeof value2 === "object" && !Array.isArray(value2) && value2 !== null) {
@@ -898,7 +909,7 @@ class M2c2KitHelpers {
898
909
  return value2;
899
910
  }
900
911
  if (typeof value2 !== "string") {
901
- throw new Error(`Error parsing "${value2}" as an object.`);
912
+ throw new M2Error(`Error parsing "${value2}" as an object.`);
902
913
  }
903
914
  try {
904
915
  const o = JSON.parse(value2);
@@ -911,7 +922,7 @@ class M2c2KitHelpers {
911
922
  return o;
912
923
  }
913
924
  }
914
- throw new Error(`Error parsing "${value2}" as an object.`);
925
+ throw new M2Error(`Error parsing "${value2}" as an object.`);
915
926
  }
916
927
  function canBeNull(value2) {
917
928
  if (value2 === null || value2 === "null") {
@@ -921,7 +932,7 @@ class M2c2KitHelpers {
921
932
  }
922
933
  function asNull(value2) {
923
934
  if (value2 !== "null" && value2 !== null) {
924
- throw new Error(`Error parsing "${value2}" as null.`);
935
+ throw new M2Error(`Error parsing "${value2}" as null.`);
925
936
  }
926
937
  return null;
927
938
  }
@@ -944,20 +955,20 @@ class M2c2KitHelpers {
944
955
  null: asNull
945
956
  };
946
957
  if (type === void 0) {
947
- throw new Error(`Error with "${value}" as a target type.`);
958
+ throw new M2Error(`Error with "${value}" as a target type.`);
948
959
  }
949
960
  if (!Array.isArray(type)) {
950
961
  if (typeCheckers[type](value)) {
951
962
  return typeConverters[type](value);
952
963
  }
953
- throw new Error(`Error parsing "${value}" as a ${type}.`);
964
+ throw new M2Error(`Error parsing "${value}" as a ${type}.`);
954
965
  }
955
966
  for (const t of type) {
956
967
  if (typeCheckers[t](value)) {
957
968
  return typeConverters[t](value);
958
969
  }
959
970
  }
960
- throw new Error(`Error parsing "${value}" as one of ${type}.`);
971
+ throw new M2Error(`Error parsing "${value}" as one of ${type}.`);
961
972
  }
962
973
  /**
963
974
  * Load scripts from URLs.
@@ -1237,7 +1248,7 @@ class M2c2KitHelpers {
1237
1248
  */
1238
1249
  static isPointInsideRectangle(point, rect) {
1239
1250
  if (rect.length !== 4) {
1240
- throw new Error("Invalid input: expected an array of four points");
1251
+ throw new M2Error("Invalid input: expected an array of four points");
1241
1252
  }
1242
1253
  return M2c2KitHelpers.arePointsOnSameSideOfLine(
1243
1254
  point,
@@ -1300,7 +1311,7 @@ class M2c2KitHelpers {
1300
1311
  */
1301
1312
  static findCentroid(points) {
1302
1313
  if (points.length !== 4) {
1303
- throw new Error("Invalid input: expected an array of four points");
1314
+ throw new M2Error("Invalid input: expected an array of four points");
1304
1315
  }
1305
1316
  let xSum = 0;
1306
1317
  let ySum = 0;
@@ -1383,7 +1394,7 @@ function nodeNeedsRotation(node) {
1383
1394
  }
1384
1395
  function rotateRectangle(rect, radians, center) {
1385
1396
  if (rect.length !== 4) {
1386
- throw new Error("Invalid input: expected an array of four points");
1397
+ throw new M2Error("Invalid input: expected an array of four points");
1387
1398
  }
1388
1399
  const rotated = [];
1389
1400
  for (const p of rect) {
@@ -1421,7 +1432,7 @@ class Futurable {
1421
1432
  */
1422
1433
  pushToExpression(value) {
1423
1434
  if (value === this) {
1424
- throw new Error(
1435
+ throw new M2Error(
1425
1436
  "Cannot add, subtract, or assign a Futurable with itself."
1426
1437
  );
1427
1438
  }
@@ -1760,7 +1771,7 @@ class Action {
1760
1771
  Action.evaluateRotateAction(action, node, elapsed, dt);
1761
1772
  break;
1762
1773
  default:
1763
- throw new Error(`Action type not recognized: ${action.type}`);
1774
+ throw new M2Error(`Action type not recognized: ${action.type}`);
1764
1775
  }
1765
1776
  }
1766
1777
  static evaluateRepeatingActions(action, now) {
@@ -1778,7 +1789,7 @@ class Action {
1778
1789
  action.restartAction(action, now);
1779
1790
  } else {
1780
1791
  if (action.type === ActionType.RepeatForever) {
1781
- throw new Error("RepeatForever action should never complete");
1792
+ throw new M2Error("RepeatForever action should never complete");
1782
1793
  }
1783
1794
  action.duration.assign(action.cumulativeDuration);
1784
1795
  action.running = false;
@@ -1884,7 +1895,7 @@ class Action {
1884
1895
  }
1885
1896
  static evaluatePlayAction(node, action) {
1886
1897
  if (node.type !== M2NodeType.SoundPlayer) {
1887
- throw new Error("Play action can only be used with a SoundPlayer");
1898
+ throw new M2Error("Play action can only be used with a SoundPlayer");
1888
1899
  }
1889
1900
  const playAction = action;
1890
1901
  const soundPlayer = node;
@@ -1907,7 +1918,7 @@ class Action {
1907
1918
  playAction.started = true;
1908
1919
  } else {
1909
1920
  if (m2Sound.status === M2SoundStatus.Error) {
1910
- throw new Error(
1921
+ throw new M2Error(
1911
1922
  `error loading sound ${m2Sound.soundName} (url ${m2Sound.url})`
1912
1923
  );
1913
1924
  }
@@ -2075,13 +2086,17 @@ class Action {
2075
2086
  */
2076
2087
  static rotate(options) {
2077
2088
  if (options.byAngle !== void 0 && options.toAngle !== void 0) {
2078
- throw new Error("rotate Action: cannot specify both byAngle and toAngle");
2089
+ throw new M2Error(
2090
+ "rotate Action: cannot specify both byAngle and toAngle"
2091
+ );
2079
2092
  }
2080
2093
  if (options.byAngle === void 0 && options.toAngle === void 0) {
2081
- throw new Error("rotate Action: must specify either byAngle or toAngle");
2094
+ throw new M2Error(
2095
+ "rotate Action: must specify either byAngle or toAngle"
2096
+ );
2082
2097
  }
2083
2098
  if (options.toAngle === void 0 && options.shortestUnitArc !== void 0) {
2084
- throw new Error(
2099
+ throw new M2Error(
2085
2100
  "rotate Action: shortestUnitArc can only be specified when toAngle is provided"
2086
2101
  );
2087
2102
  }
@@ -2252,7 +2267,7 @@ class RepeatAction extends Action {
2252
2267
  }
2253
2268
  clone() {
2254
2269
  if (this.children.length !== 1) {
2255
- throw new Error("Repeat action must have exactly one child");
2270
+ throw new M2Error("Repeat action must have exactly one child");
2256
2271
  }
2257
2272
  const clonedAction = Action.repeat({
2258
2273
  // RepeatAction always has exactly one child
@@ -2297,7 +2312,7 @@ class RepeatForeverAction extends RepeatAction {
2297
2312
  }
2298
2313
  clone() {
2299
2314
  if (this.children.length !== 1) {
2300
- throw new Error("RepeatForever action must have exactly one child");
2315
+ throw new M2Error("RepeatForever action must have exactly one child");
2301
2316
  }
2302
2317
  const clonedAction = Action.repeatForever({
2303
2318
  // RepeatForeverAction always has exactly one child
@@ -2982,10 +2997,10 @@ class M2Node {
2982
2997
  }
2983
2998
  // we will override this in each derived class. This method will never be called.
2984
2999
  initialize() {
2985
- throw new Error("initialize() called in abstract base class Node.");
3000
+ throw new M2Error("initialize() called in abstract base class Node.");
2986
3001
  }
2987
3002
  get completeNodeOptions() {
2988
- throw new Error(
3003
+ throw new M2Error(
2989
3004
  "get completeNodeOptions() called in abstract base class Node."
2990
3005
  );
2991
3006
  }
@@ -3055,7 +3070,7 @@ class M2Node {
3055
3070
  get game() {
3056
3071
  const findParentScene = (node) => {
3057
3072
  if (!node.parent) {
3058
- throw new Error(`Node ${this} has not been added to a scene.`);
3073
+ throw new M2Error(`Node ${this} has not been added to a scene.`);
3059
3074
  } else if (node.parent.type === M2NodeType.Scene) {
3060
3075
  return node.parent;
3061
3076
  } else {
@@ -3097,17 +3112,17 @@ class M2Node {
3097
3112
  addChild(child) {
3098
3113
  const suppressEvents = this.suppressEvents || child.suppressEvents;
3099
3114
  if (child === this) {
3100
- throw new Error(
3115
+ throw new M2Error(
3101
3116
  `Cannot add node ${child.toString()} as a child to itself.`
3102
3117
  );
3103
3118
  }
3104
3119
  if (child.type == M2NodeType.Scene) {
3105
- throw new Error(
3120
+ throw new M2Error(
3106
3121
  `Cannot add scene ${child.toString()} as a child to node ${this.toString()}. A scene cannot be the child of a node. A scene can only be added to a game object.`
3107
3122
  );
3108
3123
  }
3109
3124
  if (this.children.filter((c) => c !== child).map((c) => c.name).includes(child.name)) {
3110
- throw new Error(
3125
+ throw new M2Error(
3111
3126
  `Cannot add child node ${child.toString()} to parent node ${this.toString()}. A child with name "${child.name}" already exists on this parent.`
3112
3127
  );
3113
3128
  }
@@ -3138,11 +3153,11 @@ class M2Node {
3138
3153
  }
3139
3154
  const firstOtherParent = otherParents.find(Boolean);
3140
3155
  if (firstOtherParent === this) {
3141
- throw new Error(
3156
+ throw new M2Error(
3142
3157
  `Cannot add child node ${child.toString()} to parent node ${this.toString()}. This child already exists on this parent. The child cannot be added again.`
3143
3158
  );
3144
3159
  }
3145
- throw new Error(
3160
+ throw new M2Error(
3146
3161
  `Cannot add child node ${child.toString()} to parent node ${this.toString()}. This child already exists on other parent node: ${firstOtherParent?.toString()}}. Remove the child from the other parent first.`
3147
3162
  );
3148
3163
  }
@@ -3181,7 +3196,7 @@ class M2Node {
3181
3196
  child.parent = void 0;
3182
3197
  this.children = this.children.filter((c) => c !== child);
3183
3198
  } else {
3184
- throw new Error(
3199
+ throw new M2Error(
3185
3200
  `cannot remove node ${child} from parent ${this} because the node is not currently a child of the parent`
3186
3201
  );
3187
3202
  }
@@ -3205,7 +3220,7 @@ class M2Node {
3205
3220
  removeChildren(children) {
3206
3221
  children.forEach((child) => {
3207
3222
  if (!this.children.includes(child)) {
3208
- throw new Error(
3223
+ throw new M2Error(
3209
3224
  `cannot remove node ${child} from parent ${this} because the node is not currently a child of the parent`
3210
3225
  );
3211
3226
  }
@@ -3224,7 +3239,7 @@ class M2Node {
3224
3239
  descendant(name) {
3225
3240
  const descendant = this.descendants.filter((child) => child.name === name).find(Boolean);
3226
3241
  if (descendant === void 0) {
3227
- throw new Error(
3242
+ throw new M2Error(
3228
3243
  `descendant with name ${name} not found on parent ${this.toString()}`
3229
3244
  );
3230
3245
  }
@@ -3449,7 +3464,7 @@ class M2Node {
3449
3464
  additionalExceptionMessage = `. sibling node named "${nodeName}" has not been added to the game object`;
3450
3465
  }
3451
3466
  if (node === void 0) {
3452
- throw new Error(
3467
+ throw new M2Error(
3453
3468
  "could not find sibling node for constraint" + additionalExceptionMessage
3454
3469
  );
3455
3470
  }
@@ -3612,7 +3627,7 @@ class M2Node {
3612
3627
  }
3613
3628
  }
3614
3629
  if (siblingConstraint === void 0) {
3615
- throw new Error(
3630
+ throw new M2Error(
3616
3631
  "error getting uuid of sibling constraint" + additionalExceptionMessage
3617
3632
  );
3618
3633
  }
@@ -3637,7 +3652,7 @@ class M2Node {
3637
3652
  uuidsInUpdateOrder.forEach((uuid) => {
3638
3653
  const child = this.children.filter((c) => c.uuid === uuid).find(Boolean);
3639
3654
  if (child === void 0) {
3640
- throw new Error("error in dag topological sort");
3655
+ throw new M2Error("error in dag topological sort");
3641
3656
  }
3642
3657
  childrenInUpdateOrder.push(child);
3643
3658
  });
@@ -3705,7 +3720,7 @@ class M2Node {
3705
3720
  }
3706
3721
  getDrawableOptions() {
3707
3722
  if (!this.isDrawable) {
3708
- throw new Error(
3723
+ throw new M2Error(
3709
3724
  "getDrawableOptions() called object that is not IDrawable"
3710
3725
  );
3711
3726
  }
@@ -3717,7 +3732,7 @@ class M2Node {
3717
3732
  }
3718
3733
  getTextOptions() {
3719
3734
  if (!this.isText) {
3720
- throw new Error("getTextOptions() called object that is not IText");
3735
+ throw new M2Error("getTextOptions() called object that is not IText");
3721
3736
  }
3722
3737
  const textOptions = {
3723
3738
  text: this.text,
@@ -3734,7 +3749,7 @@ class M2Node {
3734
3749
  */
3735
3750
  // get parentScene(): Scene {
3736
3751
  // if (this.type === M2NodeType.scene) {
3737
- // throw new Error(
3752
+ // throw new M2Error(
3738
3753
  // `Node ${this} is a scene and cannot have a parent scene`
3739
3754
  // );
3740
3755
  // }
@@ -3743,21 +3758,23 @@ class M2Node {
3743
3758
  // } else if (this.parent) {
3744
3759
  // return this.parent.parentScene;
3745
3760
  // }
3746
- // throw new Error(`Node ${this} has not been added to a scene`);
3761
+ // throw new M2Error(`Node ${this} has not been added to a scene`);
3747
3762
  // }
3748
3763
  get canvasKit() {
3749
3764
  return this.game.canvasKit;
3750
3765
  }
3751
3766
  get parentSceneAsNode() {
3752
3767
  if (this.type === M2NodeType.Scene) {
3753
- throw new Error(`Node ${this} is a scene and cannot have a parent scene`);
3768
+ throw new M2Error(
3769
+ `Node ${this} is a scene and cannot have a parent scene`
3770
+ );
3754
3771
  }
3755
3772
  if (this.parent && this.parent.type === M2NodeType.Scene) {
3756
3773
  return this.parent;
3757
3774
  } else if (this.parent) {
3758
3775
  return this.parent.parentSceneAsNode;
3759
3776
  }
3760
- throw new Error(`Node ${this} has not been added to a scene`);
3777
+ throw new M2Error(`Node ${this} has not been added to a scene`);
3761
3778
  }
3762
3779
  get size() {
3763
3780
  const node = this;
@@ -3908,7 +3925,7 @@ class M2Node {
3908
3925
  if (inDegree.has(edge)) {
3909
3926
  const inDegreeCount = inDegree.get(edge);
3910
3927
  if (inDegreeCount === void 0) {
3911
- throw new Error(`Could not find inDegree for edge ${edge}`);
3928
+ throw new M2Error(`Could not find inDegree for edge ${edge}`);
3912
3929
  }
3913
3930
  inDegree.set(edge, inDegreeCount + 1);
3914
3931
  } else {
@@ -3932,7 +3949,7 @@ class M2Node {
3932
3949
  adjList.get(current)?.forEach((edge) => {
3933
3950
  const inDegreeCount = inDegree.get(edge);
3934
3951
  if (inDegreeCount === void 0) {
3935
- throw new Error(`Could not find inDegree for edge ${edge}`);
3952
+ throw new M2Error(`Could not find inDegree for edge ${edge}`);
3936
3953
  }
3937
3954
  if (inDegree.has(edge) && inDegreeCount > 0) {
3938
3955
  const newDegree = inDegreeCount - 1;
@@ -4173,7 +4190,7 @@ class ImageManager {
4173
4190
  localizeImageUrl(url, locale) {
4174
4191
  const extensionIndex = url.lastIndexOf(".");
4175
4192
  if (extensionIndex === -1) {
4176
- throw new Error("URL does not have an extension");
4193
+ throw new M2Error("URL does not have an extension");
4177
4194
  }
4178
4195
  const localizedUrl = url.slice(0, extensionIndex) + `.${locale}` + url.slice(extensionIndex);
4179
4196
  return localizedUrl;
@@ -4201,7 +4218,7 @@ class ImageManager {
4201
4218
  browserImages.map((i) => i.imageName)
4202
4219
  );
4203
4220
  if (duplicateImageNames.length > 0) {
4204
- throw new Error(
4221
+ throw new M2Error(
4205
4222
  `image names must be unique. these image names are duplicated within a game ${this.game.id}: ` + duplicateImageNames.join(", ")
4206
4223
  );
4207
4224
  }
@@ -4229,7 +4246,7 @@ class ImageManager {
4229
4246
  if (error instanceof Error) {
4230
4247
  throw error;
4231
4248
  } else {
4232
- throw new Error(
4249
+ throw new M2Error(
4233
4250
  `prepareDeferredImage(): unable to render image named ${image.imageName}. image source was ${image.svgString ? "svgString" : `url: ${image.url}`}`
4234
4251
  );
4235
4252
  }
@@ -4256,7 +4273,7 @@ class ImageManager {
4256
4273
  const imgElement = document.createElement("img");
4257
4274
  const renderAfterBrowserLoad = (resolve) => {
4258
4275
  if (!this.scratchCanvas || !this.ctx || !this.scale) {
4259
- throw new Error("image manager not set up");
4276
+ throw new M2Error("image manager not set up");
4260
4277
  }
4261
4278
  this.scratchCanvas.width = image.width * this.scale;
4262
4279
  this.scratchCanvas.height = image.height * this.scale;
@@ -4265,14 +4282,14 @@ class ImageManager {
4265
4282
  this.ctx.drawImage(imgElement, 0, 0, image.width, image.height);
4266
4283
  this.scratchCanvas.toBlob((blob) => {
4267
4284
  if (!blob) {
4268
- throw new Error(
4285
+ throw new M2Error(
4269
4286
  `renderM2Image(): blob is undefined for ${image.imageName}`
4270
4287
  );
4271
4288
  }
4272
4289
  blob.arrayBuffer().then((buffer) => {
4273
4290
  const canvaskitImage = this.canvasKit.MakeImageFromEncoded(buffer);
4274
4291
  if (!canvaskitImage) {
4275
- throw new Error(
4292
+ throw new M2Error(
4276
4293
  `could not create image with name "${image.imageName}."`
4277
4294
  );
4278
4295
  }
@@ -4308,12 +4325,12 @@ class ImageManager {
4308
4325
  renderAfterBrowserLoad(resolve);
4309
4326
  };
4310
4327
  if (!image.svgString && !image.url) {
4311
- throw new Error(
4328
+ throw new M2Error(
4312
4329
  `no svgString or url provided for image named ${image.imageName}`
4313
4330
  );
4314
4331
  }
4315
4332
  if (image.svgString && image.url) {
4316
- throw new Error(
4333
+ throw new M2Error(
4317
4334
  `provide svgString or url. both were provided for image named ${image.imageName}`
4318
4335
  );
4319
4336
  }
@@ -4419,7 +4436,9 @@ class ImageManager {
4419
4436
  document.body.appendChild(this._scratchCanvas);
4420
4437
  const context2d = this._scratchCanvas.getContext("2d");
4421
4438
  if (context2d === null) {
4422
- throw new Error("could not get 2d canvas context from scratch canvas");
4439
+ throw new M2Error(
4440
+ "could not get 2d canvas context from scratch canvas"
4441
+ );
4423
4442
  }
4424
4443
  this.ctx = context2d;
4425
4444
  this.scale = window.devicePixelRatio;
@@ -4432,6 +4451,8 @@ class ImageManager {
4432
4451
  }
4433
4452
  }
4434
4453
 
4454
+ const STRING_INTERPOLATION_CHARACTERS = "{{}}";
4455
+ const TRANSLATION_INTERPOLATION_CHARACTERS = "[[]]";
4435
4456
  class I18n {
4436
4457
  /**
4437
4458
  * The I18n class localizes text and images.
@@ -4539,39 +4560,198 @@ class I18n {
4539
4560
  }
4540
4561
  }
4541
4562
  /**
4563
+ * Returns the localized text and font information for the given key in the
4564
+ * current locale.
4542
4565
  *
4543
4566
  * @param key - Translation key
4544
4567
  * @param interpolation - Interpolation keys and values to replace
4545
- * placeholders in the translated text
4546
- * @returns a `TextLocalizationResult` object with the localized text, font
4547
- * information, and whether the translation is a fallback.
4568
+ * string interpolation placeholders in the translated text
4569
+ * @returns object with the localized text, font information, and whether the
4570
+ * translation is a fallback.
4548
4571
  */
4549
4572
  getTextLocalization(key, interpolation) {
4550
- let localizedText = "";
4551
- let isFallbackOrMissingTranslation = false;
4573
+ const primaryResult = this.attemptTranslation(key, interpolation);
4574
+ if (primaryResult.isFallbackOrMissingTranslation) {
4575
+ const placeholdersResult = this.handleTranslationPlaceholders(
4576
+ key,
4577
+ primaryResult,
4578
+ interpolation
4579
+ );
4580
+ if (placeholdersResult) {
4581
+ if (interpolation !== void 0) {
4582
+ placeholdersResult.text = this.insertInterpolations(
4583
+ STRING_INTERPOLATION_CHARACTERS,
4584
+ placeholdersResult.text,
4585
+ interpolation
4586
+ );
4587
+ }
4588
+ return placeholdersResult;
4589
+ }
4590
+ }
4591
+ return primaryResult;
4592
+ }
4593
+ /**
4594
+ *
4595
+ * @param key - Translation key to be translated
4596
+ * @param interpolation - String interpolation keys and values to replace
4597
+ * @returns result object with the localized text, font
4598
+ */
4599
+ attemptTranslation(key, interpolation) {
4552
4600
  let tf = this.tf(key, interpolation);
4553
- if (tf?.text !== void 0) {
4554
- localizedText = tf.text;
4555
- } else {
4601
+ let isFallbackOrMissingTranslation = false;
4602
+ if (tf?.text === void 0) {
4556
4603
  tf = this.tf(key, {
4557
4604
  useFallbackLocale: true,
4558
4605
  ...interpolation
4559
4606
  });
4560
- if (tf === void 0 || tf.text === void 0) {
4561
- localizedText = key;
4562
- } else {
4563
- localizedText = tf.text;
4564
- }
4565
4607
  isFallbackOrMissingTranslation = true;
4566
4608
  }
4609
+ const text = tf?.text ?? key;
4567
4610
  return {
4568
- text: localizedText,
4611
+ text,
4569
4612
  fontSize: tf?.fontSize,
4570
4613
  fontName: tf?.fontName,
4571
4614
  fontNames: tf?.fontNames,
4572
4615
  isFallbackOrMissingTranslation
4573
4616
  };
4574
4617
  }
4618
+ /**
4619
+ * Handles translation placeholders in a string.
4620
+ *
4621
+ * @remarks The value of a translation placeholder (text within `[[]]`)
4622
+ * may also contain string interpolation placeholders (`{{}}`), so we need
4623
+ * to handle that as well.
4624
+ *
4625
+ * @param key - Translation key for the string to be localized
4626
+ * @param initialResult - Initial translation result for the string
4627
+ * @param interpolation - Interpolation keys and values to replace
4628
+ * interpolation placeholders in the translated text
4629
+ * @returns result object with the localized text,
4630
+ */
4631
+ handleTranslationPlaceholders(key, initialResult, interpolation) {
4632
+ const placeholders = this.getTranslationPlaceholders(key);
4633
+ if (placeholders.length === 0) {
4634
+ return null;
4635
+ }
4636
+ const fontProps = {
4637
+ size: /* @__PURE__ */ new Set(),
4638
+ name: /* @__PURE__ */ new Set(),
4639
+ names: /* @__PURE__ */ new Set()
4640
+ };
4641
+ const interpolationMap = {};
4642
+ let isFallbackOrMissingTranslation = false;
4643
+ placeholders.forEach((placeholderKey) => {
4644
+ const placeholderResult = this.translatePlaceholder(
4645
+ placeholderKey,
4646
+ fontProps,
4647
+ interpolation
4648
+ );
4649
+ interpolationMap[placeholderKey] = placeholderResult.text;
4650
+ isFallbackOrMissingTranslation = isFallbackOrMissingTranslation || placeholderResult.isFallback;
4651
+ });
4652
+ this.warnConflictingFontProperties(key, fontProps);
4653
+ const text = this.insertInterpolations(
4654
+ TRANSLATION_INTERPOLATION_CHARACTERS,
4655
+ key,
4656
+ interpolationMap
4657
+ );
4658
+ const fontSize = initialResult.fontSize || (fontProps.size.size > 0 ? [...fontProps.size][0] : void 0);
4659
+ const fontName = initialResult.fontName || (fontProps.name.size > 0 ? [...fontProps.name][0] : void 0);
4660
+ const fontNames = initialResult.fontNames || (fontProps.names.size > 0 ? [...fontProps.names][0].split(",") : void 0);
4661
+ return {
4662
+ text,
4663
+ fontSize,
4664
+ fontName,
4665
+ fontNames,
4666
+ isFallbackOrMissingTranslation
4667
+ };
4668
+ }
4669
+ /**
4670
+ * Translates a translation placeholder key to its text and collects font properties.
4671
+ *
4672
+ * @param placeholderKey - Translation key for the placeholder
4673
+ * @param fontProps - Font properties sets to collect font information
4674
+ * @param interpolation - Interpolation keys and values to replace
4675
+ * string interpolation placeholders in the translated text
4676
+ * @returns result object with the translated text and whether it is a fallback translation
4677
+ */
4678
+ translatePlaceholder(placeholderKey, fontProps, interpolation) {
4679
+ let tf = this.tf(placeholderKey, interpolation);
4680
+ let isFallback = false;
4681
+ if (tf?.text === void 0) {
4682
+ tf = this.tf(placeholderKey, {
4683
+ useFallbackLocale: true,
4684
+ ...interpolation
4685
+ });
4686
+ isFallback = true;
4687
+ }
4688
+ if (tf?.fontSize !== void 0) {
4689
+ fontProps.size.add(tf.fontSize);
4690
+ }
4691
+ if (tf?.fontName !== void 0) {
4692
+ fontProps.name.add(tf.fontName);
4693
+ }
4694
+ if (tf?.fontNames !== void 0) {
4695
+ fontProps.names.add(tf.fontNames.sort().join(","));
4696
+ }
4697
+ return {
4698
+ text: tf?.text ?? placeholderKey,
4699
+ isFallback
4700
+ };
4701
+ }
4702
+ /**
4703
+ * Extracts translation key placeholders from a string.
4704
+ *
4705
+ * @remarks Translation key placeholders are denoted by double square brackets,
4706
+ * e.g., "The translated word is [[RED]]", and RED is a key for translation.
4707
+ *
4708
+ * @param s - string to search for placeholders
4709
+ * @returns an array of placeholders found in the string, without the square
4710
+ * brackets
4711
+ */
4712
+ getTranslationPlaceholders(s) {
4713
+ const [open, close] = [
4714
+ TRANSLATION_INTERPOLATION_CHARACTERS.slice(0, 2),
4715
+ TRANSLATION_INTERPOLATION_CHARACTERS.slice(2)
4716
+ ];
4717
+ const escapedOpen = open.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4718
+ const escapedClose = close.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4719
+ const regex = new RegExp(`${escapedOpen}(.*?)${escapedClose}`, "g");
4720
+ const matches = s.match(regex);
4721
+ if (!matches) {
4722
+ return [];
4723
+ }
4724
+ return matches.map(
4725
+ (placeholder) => placeholder.slice(open.length, -close.length).trim()
4726
+ );
4727
+ }
4728
+ /**
4729
+ * Logs warnings if the string to be localized has conflicting font
4730
+ * properties.
4731
+ *
4732
+ * @remarks This can happen due to multiple placeholders in the string
4733
+ * that specify different font sizes, font names, or font names arrays.
4734
+ *
4735
+ * @param key - Translation key for which the string is being localized
4736
+ * @param fontProps - font properties sets collected from the placeholders
4737
+ */
4738
+ warnConflictingFontProperties(key, fontProps) {
4739
+ if (fontProps.size.size > 1) {
4740
+ console.warn(
4741
+ `i18n: placeholders set multiple different font sizes in string to be localized. Only one will be used. String: ${key}`
4742
+ );
4743
+ }
4744
+ if (fontProps.name.size > 1) {
4745
+ console.warn(
4746
+ `i18n: placeholders set multiple different font names within string to be localized. Only one will be used. String: ${key}`
4747
+ );
4748
+ }
4749
+ if (fontProps.names.size > 1) {
4750
+ console.warn(
4751
+ `i18n: placeholders set multiple different font names arrays within string to be localized. Only one will be used. String: ${key}`
4752
+ );
4753
+ }
4754
+ }
4575
4755
  /**
4576
4756
  * Returns the translation text for the given key in the current locale.
4577
4757
  *
@@ -4604,6 +4784,7 @@ class I18n {
4604
4784
  const t = this.translation[this.locale]?.[key];
4605
4785
  if (this.isStringOrTextWithFontCustomization(t)) {
4606
4786
  return this.insertInterpolations(
4787
+ STRING_INTERPOLATION_CHARACTERS,
4607
4788
  this.getKeyText(t),
4608
4789
  interpolationMap
4609
4790
  );
@@ -4613,6 +4794,7 @@ class I18n {
4613
4794
  const fallbackT = this.translation[this.fallbackLocale]?.[key];
4614
4795
  if (this.isStringOrTextWithFontCustomization(fallbackT)) {
4615
4796
  return this.insertInterpolations(
4797
+ STRING_INTERPOLATION_CHARACTERS,
4616
4798
  this.getKeyText(fallbackT),
4617
4799
  interpolationMap
4618
4800
  );
@@ -4641,6 +4823,7 @@ class I18n {
4641
4823
  const tf = this.getKeyTextAndFont(t, this.locale);
4642
4824
  if (tf.text) {
4643
4825
  tf.text = this.insertInterpolations(
4826
+ STRING_INTERPOLATION_CHARACTERS,
4644
4827
  tf.text,
4645
4828
  interpolationMap
4646
4829
  );
@@ -4657,6 +4840,7 @@ class I18n {
4657
4840
  );
4658
4841
  if (tf.text) {
4659
4842
  tf.text = this.insertInterpolations(
4843
+ STRING_INTERPOLATION_CHARACTERS,
4660
4844
  tf.text,
4661
4845
  interpolationMap
4662
4846
  );
@@ -4713,15 +4897,19 @@ class I18n {
4713
4897
  return { text, fontSize, fontNames };
4714
4898
  }
4715
4899
  }
4716
- insertInterpolations(text, options) {
4900
+ insertInterpolations(specialChars, text, options) {
4717
4901
  if (!options) {
4718
4902
  return text;
4719
4903
  }
4720
- return text.replace(/\{\{(.*?)\}\}/g, (_match, key) => {
4904
+ const [open, close] = [specialChars.slice(0, 2), specialChars.slice(2)];
4905
+ const escapedOpen = open.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4906
+ const escapedClose = close.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4907
+ const regex = new RegExp(`${escapedOpen}(.*?)${escapedClose}`, "g");
4908
+ return text.replace(regex, (_match, key) => {
4721
4909
  if (Object.prototype.hasOwnProperty.call(options, key)) {
4722
4910
  return options[key];
4723
4911
  } else {
4724
- throw new Error(
4912
+ throw new M2Error(
4725
4913
  `insertInterpolations(): placeholder "${key}" not found. Text was ${text}, provided interpolation was ${JSON.stringify(options)}`
4726
4914
  );
4727
4915
  }
@@ -4931,7 +5119,7 @@ class EventStore {
4931
5119
  while (this.events.length > 0 && this.events[0].timestamp <= replayTimestamp) {
4932
5120
  const event = this.events.shift();
4933
5121
  if (!event) {
4934
- throw new Error("EventStore.dequeueEvents(): undefined event");
5122
+ throw new M2Error("EventStore.dequeueEvents(): undefined event");
4935
5123
  }
4936
5124
  if (event.sequence !== void 0 && event.sequence > this.replayThoughSequence) {
4937
5125
  continue;
@@ -4951,7 +5139,7 @@ class EventStore {
4951
5139
  sortEventStore(events) {
4952
5140
  events.sort((a, b) => {
4953
5141
  if (a.sequence === void 0 || b.sequence === void 0) {
4954
- throw new Error("EventStore.sortEventStore(): undefined sequence");
5142
+ throw new M2Error("EventStore.sortEventStore(): undefined sequence");
4955
5143
  }
4956
5144
  if (a.sequence !== b.sequence) {
4957
5145
  return a.sequence - b.sequence;
@@ -4976,11 +5164,19 @@ const M2FontStatus = {
4976
5164
  /** Font has fully finished loading and is ready to use. */
4977
5165
  Ready: "Ready"};
4978
5166
 
5167
+ const TAG_NAME = {
5168
+ UNDERLINE: "u",
5169
+ ITALIC: "i",
5170
+ BOLD: "b",
5171
+ STRIKETHROUGH: "s",
5172
+ OVERLINE: "o"
5173
+ };
4979
5174
  class Label extends M2Node {
4980
5175
  /**
4981
5176
  * Single or multi-line text formatted and rendered on the screen.
4982
5177
  *
4983
- * @remarks Label (in contrast to TextLine) has enhanced text support for line wrapping, centering/alignment, and background colors.
5178
+ * @remarks Label (in contrast to TextLine) has enhanced text support for
5179
+ * line wrapping, centering/alignment, and background colors.
4984
5180
  *
4985
5181
  * @param options - {@link LabelOptions}
4986
5182
  */
@@ -5005,6 +5201,9 @@ class Label extends M2Node {
5005
5201
  // public getter/setter is below
5006
5202
  this._localize = true;
5007
5203
  this.localizedFontNames = [];
5204
+ this.textAfterLocalization = "";
5205
+ this.plainText = "";
5206
+ this.styleSegments = [];
5008
5207
  handleInterfaceOptions(this, options);
5009
5208
  if (options.horizontalAlignmentMode) {
5010
5209
  this.horizontalAlignmentMode = options.horizontalAlignmentMode;
@@ -5045,7 +5244,7 @@ class Label extends M2Node {
5045
5244
  ckTextAlign = this.canvasKit.TextAlign.Right;
5046
5245
  break;
5047
5246
  default:
5048
- throw new Error("unknown horizontalAlignmentMode");
5247
+ throw new M2Error("unknown horizontalAlignmentMode");
5049
5248
  }
5050
5249
  if (!this.text) {
5051
5250
  this.text = "";
@@ -5056,14 +5255,13 @@ class Label extends M2Node {
5056
5255
  this.fontColor[2],
5057
5256
  this.fontColor[3]
5058
5257
  );
5059
- let textForParagraph;
5060
5258
  const i18n = this.game.i18n;
5061
5259
  if (i18n && this.localize !== false) {
5062
5260
  const textLocalization = i18n.getTextLocalization(
5063
5261
  this.text,
5064
5262
  this.interpolation
5065
5263
  );
5066
- textForParagraph = textLocalization.text;
5264
+ this.textAfterLocalization = textLocalization.text;
5067
5265
  this.localizedFontSize = textLocalization.fontSize;
5068
5266
  this.localizedFontName = textLocalization.fontName;
5069
5267
  this.localizedFontNames = textLocalization.fontNames ?? [];
@@ -5076,10 +5274,13 @@ class Label extends M2Node {
5076
5274
  );
5077
5275
  }
5078
5276
  } else {
5079
- textForParagraph = this.text;
5277
+ this.textAfterLocalization = this.text;
5080
5278
  }
5279
+ const parsedText = this.parseFormattedText(this.textAfterLocalization);
5280
+ this.plainText = parsedText.plainText;
5281
+ this.styleSegments = parsedText.styleSegments;
5081
5282
  if (this.fontName && this.fontNames) {
5082
- throw new Error("cannot specify both fontName and fontNames");
5283
+ throw new M2Error("cannot specify both fontName and fontNames");
5083
5284
  }
5084
5285
  const fontManager = this.game.fontManager;
5085
5286
  const requiredFonts = this.getRequiredLabelFonts(fontManager);
@@ -5117,36 +5318,36 @@ class Label extends M2Node {
5117
5318
  } else {
5118
5319
  this.backgroundPaint.setColor(this.canvasKit.Color(0, 0, 0, 0));
5119
5320
  }
5120
- this.builder.pushPaintStyle(
5121
- {
5122
- fontFamilies: requiredFonts.map((font) => font.fontName),
5123
- fontSize: (this.localizedFontSize ?? this.fontSize) * m2c2Globals.canvasScale,
5124
- // set default values for below properties as well.
5125
- fontStyle: {
5126
- weight: this.canvasKit.FontWeight.Normal,
5127
- width: this.canvasKit.FontWidth.Normal,
5128
- slant: this.canvasKit.FontSlant.Oblique
5129
- },
5130
- // Normal font style
5131
- decoration: 0,
5132
- // No decoration
5133
- decorationThickness: 1,
5134
- // Default decoration thickness
5135
- decorationStyle: this.canvasKit.DecorationStyle.Solid,
5136
- // Solid decoration style
5137
- heightMultiplier: -1,
5138
- // Providing -1, rather than 1.0, gives default height multiplier
5139
- halfLeading: false,
5140
- // Default half leading
5141
- letterSpacing: 0,
5142
- // Default letter spacing
5143
- wordSpacing: 0
5144
- // Default word spacing
5321
+ const defaultStyle = {
5322
+ fontFamilies: requiredFonts.map((font) => font.fontName),
5323
+ fontSize: (this.localizedFontSize ?? this.fontSize) * m2c2Globals.canvasScale,
5324
+ fontStyle: {
5325
+ weight: this.canvasKit.FontWeight.Normal,
5326
+ width: this.canvasKit.FontWidth.Normal,
5327
+ slant: this.canvasKit.FontSlant.Upright
5145
5328
  },
5329
+ // Normal font style
5330
+ decoration: 0,
5331
+ // No decoration
5332
+ decorationThickness: 1,
5333
+ // Default decoration thickness
5334
+ decorationStyle: this.canvasKit.DecorationStyle.Solid,
5335
+ heightMultiplier: -1,
5336
+ // Providing -1, rather than 1.0, gives default height multiplier
5337
+ halfLeading: false,
5338
+ letterSpacing: 0,
5339
+ wordSpacing: 0
5340
+ };
5341
+ this.builder.pushPaintStyle(
5342
+ defaultStyle,
5146
5343
  this.fontPaint,
5147
5344
  this.backgroundPaint
5148
5345
  );
5149
- this.builder.addText(textForParagraph);
5346
+ this.addStyleSegmentsToParagraphBuilder(
5347
+ this.builder,
5348
+ this.styleSegments,
5349
+ defaultStyle
5350
+ );
5150
5351
  if (this.paragraph) {
5151
5352
  this.paragraph.delete();
5152
5353
  }
@@ -5158,7 +5359,9 @@ class Label extends M2Node {
5158
5359
  let calculatedWidth = preferredWidth;
5159
5360
  if (preferredWidth === 0 || this.layout.width === 0) {
5160
5361
  if (this.parent === void 0) {
5161
- throw new Error("width is set to match parent, but node has no parent");
5362
+ throw new M2Error(
5363
+ "width is set to match parent, but node has no parent"
5364
+ );
5162
5365
  }
5163
5366
  const marginStart = this.layout.marginStart ?? 0;
5164
5367
  const marginEnd = this.layout.marginEnd ?? 0;
@@ -5174,6 +5377,216 @@ class Label extends M2Node {
5174
5377
  this.size.height = this.paragraph.getHeight() / m2c2Globals.canvasScale;
5175
5378
  this.needsInitialization = false;
5176
5379
  }
5380
+ /**
5381
+ * Parses text with formatting tags and returns plain text and style segments.
5382
+ * Supports <b> for bold, <i> for italics, and <u> for underline.
5383
+ * Properly handles nested tags like <b><u>bold and underlined</u></b>.
5384
+ * Throws errors for malformed tags, but treats unknown tags as plain text.
5385
+ *
5386
+ * @param text - The text with formatting tags
5387
+ * @returns The parsed text result
5388
+ * @throws Error if tags are improperly nested or unclosed
5389
+ */
5390
+ parseFormattedText(text) {
5391
+ let plainText = "";
5392
+ const styleChanges = [];
5393
+ const tagStack = [];
5394
+ const validTags = /* @__PURE__ */ new Set([
5395
+ TAG_NAME.UNDERLINE,
5396
+ TAG_NAME.BOLD,
5397
+ TAG_NAME.ITALIC,
5398
+ TAG_NAME.STRIKETHROUGH,
5399
+ TAG_NAME.OVERLINE
5400
+ ]);
5401
+ const tagPattern = /<\/?([^>]+)>/g;
5402
+ let lastIndex = 0;
5403
+ let plainIndex = 0;
5404
+ let match = null;
5405
+ const getPosition = (index) => {
5406
+ let line = 1;
5407
+ let column = 1;
5408
+ for (let i = 0; i < index; i++) {
5409
+ if (text[i] === "\n") {
5410
+ line++;
5411
+ column = 1;
5412
+ } else {
5413
+ column++;
5414
+ }
5415
+ }
5416
+ return `line ${line}, column ${column}`;
5417
+ };
5418
+ while ((match = tagPattern.exec(text)) !== null) {
5419
+ const fullTag = match[0];
5420
+ const tagName = match[1];
5421
+ const isClosing = fullTag.charAt(1) === "/";
5422
+ const position = getPosition(match.index);
5423
+ if (!validTags.has(tagName)) {
5424
+ const beforeTag2 = text.substring(lastIndex, match.index);
5425
+ plainText += beforeTag2;
5426
+ plainIndex += beforeTag2.length;
5427
+ plainText += fullTag;
5428
+ plainIndex += fullTag.length;
5429
+ lastIndex = match.index + fullTag.length;
5430
+ continue;
5431
+ }
5432
+ const beforeTag = text.substring(lastIndex, match.index);
5433
+ plainText += beforeTag;
5434
+ plainIndex += beforeTag.length;
5435
+ if (isClosing) {
5436
+ if (tagStack.length === 0) {
5437
+ throw new M2Error(
5438
+ `Label has closing tag </${tagName}> at ${position} without matching opening tag. Text is: ${text}`
5439
+ );
5440
+ }
5441
+ const lastOpenTag = tagStack.pop();
5442
+ if (lastOpenTag !== tagName) {
5443
+ throw new M2Error(
5444
+ `Label has improperly nested tags at ${position}. Expected </${lastOpenTag}> but found </${tagName}>. Tags must be properly nested. Text is: ${text}`
5445
+ );
5446
+ }
5447
+ styleChanges.push({
5448
+ position: plainIndex,
5449
+ style: tagName,
5450
+ isStart: false
5451
+ });
5452
+ } else {
5453
+ tagStack.push(tagName);
5454
+ styleChanges.push({
5455
+ position: plainIndex,
5456
+ style: tagName,
5457
+ isStart: true
5458
+ });
5459
+ }
5460
+ lastIndex = match.index + fullTag.length;
5461
+ }
5462
+ plainText += text.substring(lastIndex);
5463
+ if (tagStack.length > 0) {
5464
+ throw new M2Error(
5465
+ `Label has unclosed format tags: <${tagStack.join(">, <")}>. All tags must be closed. Text is: ${text}`
5466
+ );
5467
+ }
5468
+ const activeStyles = /* @__PURE__ */ new Set();
5469
+ const segments = [];
5470
+ let lastPosition = 0;
5471
+ styleChanges.sort((a, b) => a.position - b.position);
5472
+ for (const change of styleChanges) {
5473
+ if (change.position > lastPosition && activeStyles.size > 0) {
5474
+ segments.push({
5475
+ start: lastPosition,
5476
+ end: change.position,
5477
+ styles: new Set(activeStyles)
5478
+ // Create a copy of the current styles
5479
+ });
5480
+ }
5481
+ if (change.isStart) {
5482
+ activeStyles.add(change.style);
5483
+ } else {
5484
+ activeStyles.delete(change.style);
5485
+ }
5486
+ lastPosition = change.position;
5487
+ }
5488
+ return {
5489
+ plainText,
5490
+ styleSegments: segments
5491
+ };
5492
+ }
5493
+ /**
5494
+ * Adds text segments with consistent styling to the paragraph builder.
5495
+ *
5496
+ * @param builder - {@link ParagraphBuilder}
5497
+ * @param styleSegments - Segments of text with consistent styling
5498
+ * @param defaultStyle - Default style to apply
5499
+ */
5500
+ addStyleSegmentsToParagraphBuilder(builder, styleSegments, defaultStyle) {
5501
+ if (styleSegments.length === 0) {
5502
+ builder.addText(this.plainText);
5503
+ } else {
5504
+ let lastIndex = 0;
5505
+ for (const segment of styleSegments) {
5506
+ if (segment.start > lastIndex) {
5507
+ this.addTextWithStyle(
5508
+ builder,
5509
+ this.plainText.substring(lastIndex, segment.start),
5510
+ defaultStyle
5511
+ );
5512
+ }
5513
+ const styleModifiers = {};
5514
+ if (segment.styles.has(TAG_NAME.BOLD)) {
5515
+ styleModifiers.fontStyle = {
5516
+ ...styleModifiers.fontStyle || defaultStyle.fontStyle,
5517
+ weight: this.canvasKit.FontWeight.Black
5518
+ };
5519
+ }
5520
+ if (segment.styles.has(TAG_NAME.ITALIC)) {
5521
+ styleModifiers.fontStyle = {
5522
+ ...styleModifiers.fontStyle || defaultStyle.fontStyle,
5523
+ slant: this.canvasKit.FontSlant.Italic
5524
+ };
5525
+ }
5526
+ if (segment.styles.has(TAG_NAME.UNDERLINE)) {
5527
+ styleModifiers.decoration = this.canvasKit.UnderlineDecoration;
5528
+ styleModifiers.decorationThickness = 1;
5529
+ styleModifiers.decorationStyle = this.canvasKit.DecorationStyle.Solid;
5530
+ styleModifiers.decorationColor = this.fontColor;
5531
+ }
5532
+ if (segment.styles.has(TAG_NAME.STRIKETHROUGH)) {
5533
+ styleModifiers.decoration = this.canvasKit.LineThroughDecoration;
5534
+ styleModifiers.decorationThickness = 1;
5535
+ styleModifiers.decorationStyle = this.canvasKit.DecorationStyle.Solid;
5536
+ styleModifiers.decorationColor = this.fontColor;
5537
+ }
5538
+ if (segment.styles.has(TAG_NAME.OVERLINE)) {
5539
+ styleModifiers.decoration = this.canvasKit.OverlineDecoration;
5540
+ styleModifiers.decorationThickness = 1;
5541
+ styleModifiers.decorationStyle = this.canvasKit.DecorationStyle.Solid;
5542
+ styleModifiers.decorationColor = this.fontColor;
5543
+ }
5544
+ const numberOfDecorations = [
5545
+ TAG_NAME.UNDERLINE,
5546
+ TAG_NAME.STRIKETHROUGH,
5547
+ TAG_NAME.OVERLINE
5548
+ ].filter((tag) => segment.styles.has(tag)).length;
5549
+ if (numberOfDecorations > 1) {
5550
+ throw new M2Error(
5551
+ `Label does not support multiple text decorations (underline, overline, or strikethrough) on a single text segment. Text is: ${this.textAfterLocalization}`
5552
+ );
5553
+ }
5554
+ this.addTextWithStyle(
5555
+ builder,
5556
+ this.plainText.substring(segment.start, segment.end),
5557
+ defaultStyle,
5558
+ styleModifiers
5559
+ );
5560
+ lastIndex = segment.end;
5561
+ }
5562
+ if (lastIndex < this.plainText.length) {
5563
+ this.addTextWithStyle(
5564
+ builder,
5565
+ this.plainText.substring(lastIndex),
5566
+ defaultStyle
5567
+ );
5568
+ }
5569
+ }
5570
+ }
5571
+ /**
5572
+ * Helper that adds text to the paragraph builder with the specified style.
5573
+ *
5574
+ * @param builder - {@link ParagraphBuilder}
5575
+ * @param text - The text to add
5576
+ * @param defaultStyle - The default style to apply
5577
+ * @param styleModifiers - Additional style modifications
5578
+ * @returns void
5579
+ */
5580
+ addTextWithStyle(builder, text, defaultStyle, styleModifiers = {}) {
5581
+ if (!text) return;
5582
+ const style = {
5583
+ ...defaultStyle,
5584
+ ...styleModifiers
5585
+ };
5586
+ builder.pushPaintStyle(style, this.fontPaint, this.backgroundPaint);
5587
+ builder.addText(text);
5588
+ builder.pop();
5589
+ }
5177
5590
  /**
5178
5591
  * Determines the M2Font objects that need to be ready in order to draw
5179
5592
  * the Label.
@@ -5204,7 +5617,7 @@ class Label extends M2Node {
5204
5617
  } else if (this.fontNames !== void 0 && this.fontNames.length > 0) {
5205
5618
  requiredFonts = this.fontNames.map((font) => fontManager.fonts[font]);
5206
5619
  } else {
5207
- throw new Error("cannot determine required fonts");
5620
+ throw new M2Error("cannot determine required fonts");
5208
5621
  }
5209
5622
  return requiredFonts;
5210
5623
  }
@@ -5379,7 +5792,7 @@ class Label extends M2Node {
5379
5792
  }
5380
5793
  get backgroundPaint() {
5381
5794
  if (!this._backgroundPaint) {
5382
- throw new Error("backgroundPaint cannot be undefined");
5795
+ throw new M2Error("backgroundPaint cannot be undefined");
5383
5796
  }
5384
5797
  return this._backgroundPaint;
5385
5798
  }
@@ -5388,7 +5801,7 @@ class Label extends M2Node {
5388
5801
  }
5389
5802
  get fontPaint() {
5390
5803
  if (!this._fontPaint) {
5391
- throw new Error("fontPaint cannot be undefined");
5804
+ throw new M2Error("fontPaint cannot be undefined");
5392
5805
  }
5393
5806
  return this._fontPaint;
5394
5807
  }
@@ -5439,7 +5852,7 @@ class Label extends M2Node {
5439
5852
  const x = (this.absolutePosition.x - this.size.width * this.anchorPoint.x * this.absoluteScale) * drawScale;
5440
5853
  const y = (this.absolutePosition.y - this.size.height * this.anchorPoint.y * this.absoluteScale) * drawScale;
5441
5854
  if (this.paragraph === void 0) {
5442
- throw new Error("no paragraph");
5855
+ throw new M2Error("no paragraph");
5443
5856
  }
5444
5857
  canvas.drawParagraph(this.paragraph, x, y);
5445
5858
  canvas.restore();
@@ -5465,7 +5878,7 @@ class Label extends M2Node {
5465
5878
  }
5466
5879
  this.initialize();
5467
5880
  if (!this.paragraph) {
5468
- throw new Error(
5881
+ throw new M2Error(
5469
5882
  `warmup Label node ${this.toString()}: paragraph is undefined`
5470
5883
  );
5471
5884
  }
@@ -5534,7 +5947,7 @@ class Scene extends M2Node {
5534
5947
  */
5535
5948
  get game() {
5536
5949
  if (this._game === void 0) {
5537
- throw new Error(`Scene ${this} has not been added to a game.`);
5950
+ throw new M2Error(`Scene ${this} has not been added to a game.`);
5538
5951
  }
5539
5952
  return this._game;
5540
5953
  }
@@ -5686,7 +6099,7 @@ class Scene extends M2Node {
5686
6099
  canvas.scale(1 / drawScale, 1 / drawScale);
5687
6100
  M2c2KitHelpers.rotateCanvasForDrawableNode(canvas, this);
5688
6101
  if (!this.backgroundPaint) {
5689
- throw new Error(`in Scene ${this}, background paint is undefined.`);
6102
+ throw new M2Error(`in Scene ${this}, background paint is undefined.`);
5690
6103
  }
5691
6104
  if (this.absoluteAlphaChange !== 0) {
5692
6105
  this.backgroundPaint.setAlphaf(this.absoluteAlpha);
@@ -5709,7 +6122,7 @@ class Scene extends M2Node {
5709
6122
  const drawScale = m2c2Globals.canvasScale / this.absoluteScale;
5710
6123
  canvas.scale(1 / drawScale, 1 / drawScale);
5711
6124
  if (!this.backgroundPaint) {
5712
- throw new Error(`in Scene ${this}, background paint is undefined.`);
6125
+ throw new M2Error(`in Scene ${this}, background paint is undefined.`);
5713
6126
  }
5714
6127
  canvas.drawRect(
5715
6128
  [
@@ -5768,7 +6181,7 @@ class Shape extends M2Node {
5768
6181
  }
5769
6182
  if (this.shapeIsSvgStringPath()) {
5770
6183
  if (options.size !== void 0) {
5771
- throw new Error(
6184
+ throw new M2Error(
5772
6185
  "Size cannot be specified when path is SVG string path"
5773
6186
  );
5774
6187
  }
@@ -5776,7 +6189,7 @@ class Shape extends M2Node {
5776
6189
  this.svgPathRequestedWidth = options.path.width;
5777
6190
  this.svgPathRequestedHeight = options.path.height;
5778
6191
  if (this.svgPathRequestedHeight !== void 0 && this.svgPathRequestedWidth !== void 0) {
5779
- throw new Error(
6192
+ throw new M2Error(
5780
6193
  "Cannot specify both width and height for SVG string path."
5781
6194
  );
5782
6195
  }
@@ -5787,7 +6200,7 @@ class Shape extends M2Node {
5787
6200
  this.lineWidth = Constants.DEFAULT_PATH_LINE_WIDTH;
5788
6201
  }
5789
6202
  if (options.circleOfRadius || options.rect) {
5790
- throw new Error(
6203
+ throw new M2Error(
5791
6204
  "Shape must specify only one of: path, circleOfRadius, or rect"
5792
6205
  );
5793
6206
  }
@@ -5796,10 +6209,10 @@ class Shape extends M2Node {
5796
6209
  this.circleOfRadius = options.circleOfRadius;
5797
6210
  this.shapeType = ShapeType.Circle;
5798
6211
  if (options.size !== void 0) {
5799
- throw new Error("Size cannot be specified for circle shape");
6212
+ throw new M2Error("Size cannot be specified for circle shape");
5800
6213
  }
5801
6214
  if (options.path || options.rect) {
5802
- throw new Error(
6215
+ throw new M2Error(
5803
6216
  "Shape must specify only one of: path, circleOfRadius, or rect"
5804
6217
  );
5805
6218
  }
@@ -5822,7 +6235,7 @@ class Shape extends M2Node {
5822
6235
  }
5823
6236
  this.shapeType = ShapeType.Rectangle;
5824
6237
  if (options.size !== void 0) {
5825
- throw new Error("Size cannot be specified for rectangle shape");
6238
+ throw new M2Error("Size cannot be specified for rectangle shape");
5826
6239
  }
5827
6240
  }
5828
6241
  if (options.cornerRadius !== void 0) {
@@ -5877,7 +6290,7 @@ class Shape extends M2Node {
5877
6290
  if (this.shapeIsSvgStringPath()) {
5878
6291
  const pathString = this.path.pathString ?? this.path.svgPathString;
5879
6292
  if (!pathString) {
5880
- throw new Error("SVG Path string is null/undefined");
6293
+ throw new M2Error("SVG Path string is null/undefined");
5881
6294
  }
5882
6295
  if (this.path.svgPathString !== void 0) {
5883
6296
  console.warn(
@@ -5886,7 +6299,7 @@ class Shape extends M2Node {
5886
6299
  }
5887
6300
  this.ckPath = this.canvasKit.Path.MakeFromSVGString(pathString);
5888
6301
  if (!this.ckPath) {
5889
- throw new Error("could not make CanvasKit Path from SVG string");
6302
+ throw new M2Error("could not make CanvasKit Path from SVG string");
5890
6303
  }
5891
6304
  const bounds = this.ckPath.getBounds();
5892
6305
  this.svgPathWidth = bounds[2] + (bounds[0] < 0 ? Math.abs(bounds[0]) : 0);
@@ -5904,7 +6317,7 @@ class Shape extends M2Node {
5904
6317
  }
5905
6318
  if (this.shapeIsM2Path()) {
5906
6319
  if (this.size.width === 0 || this.size.height === 0 || this.size.width === void 0 || this.size.height === void 0) {
5907
- throw new Error(
6320
+ throw new M2Error(
5908
6321
  "Size of shape must have non-zero height and width when path is M2Path"
5909
6322
  );
5910
6323
  }
@@ -6096,7 +6509,7 @@ class Shape extends M2Node {
6096
6509
  }
6097
6510
  }
6098
6511
  if (paint === void 0) {
6099
- throw new Error("paint is undefined");
6512
+ throw new M2Error("paint is undefined");
6100
6513
  }
6101
6514
  canvas.drawLine(
6102
6515
  pathOriginX + points[i].x * m2c2Globals.canvasScale,
@@ -6409,7 +6822,7 @@ class Shape extends M2Node {
6409
6822
  }
6410
6823
  get fillColorPaintAntialiased() {
6411
6824
  if (!this._fillColorPaintAntialiased) {
6412
- throw new Error("fillColorPaintAntiAliased is undefined");
6825
+ throw new M2Error("fillColorPaintAntiAliased is undefined");
6413
6826
  }
6414
6827
  return this._fillColorPaintAntialiased;
6415
6828
  }
@@ -6418,7 +6831,7 @@ class Shape extends M2Node {
6418
6831
  }
6419
6832
  get strokeColorPaintAntialiased() {
6420
6833
  if (!this._strokeColorPaintAntialiased) {
6421
- throw new Error("strokeColorPaintAntiAliased is undefined");
6834
+ throw new M2Error("strokeColorPaintAntiAliased is undefined");
6422
6835
  }
6423
6836
  return this._strokeColorPaintAntialiased;
6424
6837
  }
@@ -6427,7 +6840,7 @@ class Shape extends M2Node {
6427
6840
  }
6428
6841
  get fillColorPaintNotAntialiased() {
6429
6842
  if (!this._fillColorPaintNotAntialiased) {
6430
- throw new Error("fillColorPaintNotAntiAliased is undefined");
6843
+ throw new M2Error("fillColorPaintNotAntiAliased is undefined");
6431
6844
  }
6432
6845
  return this._fillColorPaintNotAntialiased;
6433
6846
  }
@@ -6436,7 +6849,7 @@ class Shape extends M2Node {
6436
6849
  }
6437
6850
  get strokeColorPaintNotAntialiased() {
6438
6851
  if (!this._strokeColorPaintNotAntialiased) {
6439
- throw new Error("strokeColorPaintNotAntiAliased is undefined");
6852
+ throw new M2Error("strokeColorPaintNotAntiAliased is undefined");
6440
6853
  }
6441
6854
  return this._strokeColorPaintNotAntialiased;
6442
6855
  }
@@ -6534,7 +6947,7 @@ class TextLine extends M2Node {
6534
6947
  getRequiredTextLineFont(fontManager) {
6535
6948
  if (this.game.i18n) {
6536
6949
  if (this.localizedFontName !== void 0 && this.localizedFontNames.length !== 0 || this.localizedFontNames.length > 1) {
6537
- throw new Error(
6950
+ throw new M2Error(
6538
6951
  `TextLine supports only one font, but multiple fonts are specified in translation.`
6539
6952
  );
6540
6953
  }
@@ -6746,7 +7159,7 @@ class TextLine extends M2Node {
6746
7159
  const x = this.absolutePosition.x * drawScale;
6747
7160
  const y = (this.absolutePosition.y + this.size.height * this.anchorPoint.y * this.absoluteScale) * drawScale;
6748
7161
  if (this.paint === void 0 || this.font === void 0) {
6749
- throw new Error(
7162
+ throw new M2Error(
6750
7163
  `in TextLine node ${this}, Paint or Font is undefined.`
6751
7164
  );
6752
7165
  }
@@ -6774,7 +7187,7 @@ class TextLine extends M2Node {
6774
7187
  }
6775
7188
  this.initialize();
6776
7189
  if (this.paint === void 0 || this.font === void 0) {
6777
- throw new Error(
7190
+ throw new M2Error(
6778
7191
  `warmup TextLine node ${this.toString()}: Paint or Font is undefined.`
6779
7192
  );
6780
7193
  }
@@ -6816,7 +7229,7 @@ class Sprite extends M2Node {
6816
7229
  initialize() {
6817
7230
  this.m2Image = this.game.imageManager.getImage(this._imageName);
6818
7231
  if (!this.m2Image) {
6819
- throw new Error(
7232
+ throw new M2Error(
6820
7233
  `could not create sprite. the image named ${this._imageName} has not been loaded`
6821
7234
  );
6822
7235
  }
@@ -6887,7 +7300,7 @@ class Sprite extends M2Node {
6887
7300
  }
6888
7301
  get paint() {
6889
7302
  if (!this._paint) {
6890
- throw new Error(
7303
+ throw new M2Error(
6891
7304
  `in paint getter: Sprite node ${this.toString()} paint is undefined.`
6892
7305
  );
6893
7306
  }
@@ -6947,7 +7360,7 @@ class Sprite extends M2Node {
6947
7360
  this.game.imageManager.prepareDeferredImage(this.m2Image);
6948
7361
  }
6949
7362
  if (this.m2Image.status === M2ImageStatus.Error) {
6950
- throw new Error(
7363
+ throw new M2Error(
6951
7364
  `error status on image ${this.m2Image.imageName} for Sprite node ${this.toString()}`
6952
7365
  );
6953
7366
  }
@@ -6961,12 +7374,12 @@ class Sprite extends M2Node {
6961
7374
  if (this.m2Image?.status === M2ImageStatus.Ready) {
6962
7375
  this.initialize();
6963
7376
  if (!this.m2Image) {
6964
- throw new Error(
7377
+ throw new M2Error(
6965
7378
  `in Sprite.warmup(): Sprite node ${this.toString()}: image not loaded.`
6966
7379
  );
6967
7380
  }
6968
7381
  if (!this.m2Image.canvaskitImage) {
6969
- throw new Error(
7382
+ throw new M2Error(
6970
7383
  `in Sprite.warmup(): Sprite node ${this.toString()} image ${this.m2Image.imageName} is undefined.`
6971
7384
  );
6972
7385
  }
@@ -7028,10 +7441,10 @@ class M2NodeFactory {
7028
7441
  createNode(type, compositeType, options) {
7029
7442
  const classNameToCreate = compositeType ? compositeType : type;
7030
7443
  if (!this.hasClassRegistration(classNameToCreate)) {
7031
- throw new Error(`Unknown node type: ${classNameToCreate}`);
7444
+ throw new M2Error(`Unknown node type: ${classNameToCreate}`);
7032
7445
  }
7033
7446
  if (!m2c2Globals.m2NodeClassRegistry) {
7034
- throw new Error("Node class registry is not initialized.");
7447
+ throw new M2Error("Node class registry is not initialized.");
7035
7448
  }
7036
7449
  const classToInstantiate = m2c2Globals.m2NodeClassRegistry[classNameToCreate];
7037
7450
  const node = new classToInstantiate(options);
@@ -7150,7 +7563,7 @@ class FontManager {
7150
7563
  async fetchFontAsArrayBuffer(font) {
7151
7564
  const response = await fetch(font.url);
7152
7565
  if (!response.ok) {
7153
- throw new Error(
7566
+ throw new M2Error(
7154
7567
  `cannot fetch font ${font.fontName} at url ${font.url}: ${response.statusText}`
7155
7568
  );
7156
7569
  }
@@ -7161,7 +7574,7 @@ class FontManager {
7161
7574
  this.provider.registerFont(arrayBuffer, font.fontName);
7162
7575
  const typeface = this.canvasKit.Typeface.MakeFreeTypeFaceFromData(arrayBuffer);
7163
7576
  if (!typeface) {
7164
- throw new Error(
7577
+ throw new M2Error(
7165
7578
  `cannot make typeface for font ${font.fontName} at url ${font.url}`
7166
7579
  );
7167
7580
  }
@@ -7198,7 +7611,7 @@ class FontManager {
7198
7611
  getDefaultFont() {
7199
7612
  const defaultFont = Object.values(this.fonts).find((font) => font.default);
7200
7613
  if (!defaultFont) {
7201
- throw new Error(
7614
+ throw new M2Error(
7202
7615
  `no default font found; please make sure at least one font is loaded`
7203
7616
  );
7204
7617
  }
@@ -7230,7 +7643,7 @@ class FontManager {
7230
7643
  getTypeface(fontName) {
7231
7644
  const typeface = this.fonts[fontName]?.typeface;
7232
7645
  if (!typeface) {
7233
- throw new Error(`font ${fontName} not found`);
7646
+ throw new M2Error(`font ${fontName} not found`);
7234
7647
  }
7235
7648
  return typeface;
7236
7649
  }
@@ -7253,7 +7666,7 @@ function getDefaultExportFromCjs (x) {
7253
7666
  }
7254
7667
 
7255
7668
  function getAugmentedNamespace(n) {
7256
- if (n.__esModule) return n;
7669
+ if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;
7257
7670
  var f = n.default;
7258
7671
  if (typeof f == "function") {
7259
7672
  var a = function a () {
@@ -7550,272 +7963,276 @@ function requireCanvaskit () {
7550
7963
  return (
7551
7964
  function(moduleArg = {}) {
7552
7965
 
7553
- var w=moduleArg,ba,fa;w.ready=new Promise((a,b)=>{ba=a;fa=b;});
7554
- (function(a){a.Td=a.Td||[];a.Td.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,f="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||f||(c=document.getElementById(b),c)))throw "Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.Ld=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var f={width:b,height:c,colorType:a.ColorType.RGBA_8888,
7555
- alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},h=b*c*4,m=a._malloc(h);if(f=a.Surface._makeRasterDirect(f,m,4*b))f.Ld=null,f.Hf=b,f.Df=c,f.Ff=h,f.bf=m,f.getCanvas().clear(a.TRANSPARENT);return f};a.MakeRasterDirectSurface=function(b,c,f){return a.Surface._makeRasterDirect(b,c.byteOffset,f)};a.Surface.prototype.flush=function(b){a.Md(this.Kd);this._flush();if(this.Ld){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.bf,this.Ff);c=new ImageData(c,this.Hf,this.Df);b?this.Ld.getContext("2d").putImageData(c,
7556
- 0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.Ld.getContext("2d").putImageData(c,0,0);}};a.Surface.prototype.dispose=function(){this.bf&&a._free(this.bf);this.delete();};a.Md=a.Md||function(){};a.Te=a.Te||function(){return null};});})(w);
7557
- (function(a){a.Td=a.Td||[];a.Td.push(function(){function b(n,p,v){return n&&n.hasOwnProperty(p)?n[p]:v}function c(n){var p=ha(ia);ia[p]=n;return p}function f(n){return n.naturalHeight||n.videoHeight||n.displayHeight||n.height}function h(n){return n.naturalWidth||n.videoWidth||n.displayWidth||n.width}function m(n,p,v,E){n.bindTexture(n.TEXTURE_2D,p);E||v.alphaType!==a.AlphaType.Premul||n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,true);return p}function u(n,p,v){v||p.alphaType!==a.AlphaType.Premul||
7966
+ var w=moduleArg,aa,ca;w.ready=new Promise((a,b)=>{aa=a;ca=b;});
7967
+ (function(a){a.ke=a.ke||[];a.ke.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,f="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||f||(c=document.getElementById(b),c)))throw "Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.ce=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var f={width:b,height:c,colorType:a.ColorType.RGBA_8888,
7968
+ alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},h=b*c*4,m=a._malloc(h);if(f=a.Surface._makeRasterDirect(f,m,4*b))f.ce=null,f.Xf=b,f.Tf=c,f.Vf=h,f.wf=m,f.getCanvas().clear(a.TRANSPARENT);return f};a.MakeRasterDirectSurface=function(b,c,f){return a.Surface._makeRasterDirect(b,c.byteOffset,f)};a.Surface.prototype.flush=function(b){a.de(this.be);this._flush();if(this.ce){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.wf,this.Vf);c=new ImageData(c,this.Xf,this.Tf);b?this.ce.getContext("2d").putImageData(c,
7969
+ 0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.ce.getContext("2d").putImageData(c,0,0);}};a.Surface.prototype.dispose=function(){this.wf&&a._free(this.wf);this.delete();};a.de=a.de||function(){};a.mf=a.mf||function(){return null};});})(w);
7970
+ (function(a){a.ke=a.ke||[];a.ke.push(function(){function b(n,p,v){return n&&n.hasOwnProperty(p)?n[p]:v}function c(n){var p=da(ha);ha[p]=n;return p}function f(n){return n.naturalHeight||n.videoHeight||n.displayHeight||n.height}function h(n){return n.naturalWidth||n.videoWidth||n.displayWidth||n.width}function m(n,p,v,E){n.bindTexture(n.TEXTURE_2D,p);E||v.alphaType!==a.AlphaType.Premul||n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,true);return p}function u(n,p,v){v||p.alphaType!==a.AlphaType.Premul||
7558
7971
  n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,false);n.bindTexture(n.TEXTURE_2D,null);}a.GetWebGLContext=function(n,p){if(!n)throw "null canvas passed into makeWebGLContext";var v={alpha:b(p,"alpha",1),depth:b(p,"depth",1),stencil:b(p,"stencil",8),antialias:b(p,"antialias",0),premultipliedAlpha:b(p,"premultipliedAlpha",1),preserveDrawingBuffer:b(p,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(p,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(p,"failIfMajorPerformanceCaveat",
7559
- 0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};v.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw "explicitSwapControl is not supported";n=la(n,v);if(!n)return 0;oa(n);A.fe.getExtension("WEBGL_debug_renderer_info");return n};a.deleteContext=function(n){A===pa[n]&&(A=null);"object"==typeof JSEvents&&
7560
- JSEvents.ug(pa[n].fe.canvas);pa[n]&&pa[n].fe.canvas&&(pa[n].fe.canvas.zf=void 0);pa[n]=null;};a._setTextureCleanup({deleteTexture:function(n,p){var v=ia[p];v&&pa[n].fe.deleteTexture(v);ia[p]=null;}});a.MakeWebGLContext=function(n){if(!this.Md(n))return null;var p=this._MakeGrContext();if(!p)return null;p.Kd=n;var v=p.delete.bind(p);p["delete"]=function(){a.Md(this.Kd);v();}.bind(p);return A.ff=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Md(this.Kd);
7561
- this._getResourceCacheLimitBytes();};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Md(this.Kd);this._getResourceCacheUsageBytes();};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Md(this.Kd);this._releaseResourcesAndAbandonContext();};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(n){a.Md(this.Kd);this._setResourceCacheLimitBytes(n);};a.MakeOnScreenGLSurface=function(n,p,v,E,H,L){if(!this.Md(n.Kd))return null;p=void 0===H||void 0===L?
7562
- this._MakeOnScreenGLSurface(n,p,v,E):this._MakeOnScreenGLSurface(n,p,v,E,H,L);if(!p)return null;p.Kd=n.Kd;return p};a.MakeRenderTarget=function(){var n=arguments[0];if(!this.Md(n.Kd))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(n,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(n,arguments[1]),!p)return null}else return null;p.Kd=n.Kd;return p};a.MakeWebGLCanvasSurface=function(n,p,v){p=p||null;var E=n,H="undefined"!==
7563
- typeof OffscreenCanvas&&E instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&E instanceof HTMLCanvasElement||H||(E=document.getElementById(n),E)))throw "Canvas with id "+n+" was not found";n=this.GetWebGLContext(E,v);if(!n||0>n)throw "failed to create webgl context: err "+n;n=this.MakeWebGLContext(n);p=this.MakeOnScreenGLSurface(n,E.width,E.height,p);return p?p:(p=E.cloneNode(true),E.parentNode.replaceChild(p,E),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
7564
- a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(n,p){a.Md(this.Kd);n=c(n);if(p=this._makeImageFromTexture(this.Kd,n,p))p.Le=n;return p};a.Surface.prototype.makeImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.Md(this.Kd);var E=A.fe;v=m(E,E.createTexture(),p,v);2===A.version?E.texImage2D(E.TEXTURE_2D,0,E.RGBA,p.width,p.height,
7565
- 0,E.RGBA,E.UNSIGNED_BYTE,n):E.texImage2D(E.TEXTURE_2D,0,E.RGBA,E.RGBA,E.UNSIGNED_BYTE,n);u(E,p);this._resetContext();return this.makeImageFromTexture(v,p)};a.Surface.prototype.updateTextureFromSource=function(n,p,v){if(n.Le){a.Md(this.Kd);var E=n.getImageInfo(),H=A.fe,L=m(H,ia[n.Le],E,v);2===A.version?H.texImage2D(H.TEXTURE_2D,0,H.RGBA,h(p),f(p),0,H.RGBA,H.UNSIGNED_BYTE,p):H.texImage2D(H.TEXTURE_2D,0,H.RGBA,H.RGBA,H.UNSIGNED_BYTE,p);u(H,E,v);this._resetContext();ia[n.Le]=null;n.Le=c(L);E.colorSpace=
7566
- n.getColorSpace();p=this._makeImageFromTexture(this.Kd,n.Le,E);v=n.Jd.Rd;H=n.Jd.Yd;n.Jd.Rd=p.Jd.Rd;n.Jd.Yd=p.Jd.Yd;p.Jd.Rd=v;p.Jd.Yd=H;p.delete();E.colorSpace.delete();}};a.MakeLazyImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var E={makeTexture:function(){var H=A,L=H.fe,y=m(L,L.createTexture(),p,v);2===H.version?L.texImage2D(L.TEXTURE_2D,0,L.RGBA,
7567
- p.width,p.height,0,L.RGBA,L.UNSIGNED_BYTE,n):L.texImage2D(L.TEXTURE_2D,0,L.RGBA,L.RGBA,L.UNSIGNED_BYTE,n);u(L,p,v);return c(y)},freeSrc:function(){}};"VideoFrame"===n.constructor.name&&(E.freeSrc=function(){n.close();});return a.Image._makeFromGenerator(p,E)};a.Md=function(n){return n?oa(n):false};a.Te=function(){return A&&A.ff&&!A.ff.isDeleted()?A.ff:null};});})(w);
7972
+ 0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};v.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw "explicitSwapControl is not supported";n=ia(n,v);if(!n)return 0;ja(n);B.xe.getExtension("WEBGL_debug_renderer_info");return n};a.deleteContext=function(n){B===ma[n]&&(B=null);"object"==typeof JSEvents&&
7973
+ JSEvents.Mg(ma[n].xe.canvas);ma[n]&&ma[n].xe.canvas&&(ma[n].xe.canvas.Rf=void 0);ma[n]=null;};a._setTextureCleanup({deleteTexture:function(n,p){var v=ha[p];v&&ma[n].xe.deleteTexture(v);ha[p]=null;}});a.MakeWebGLContext=function(n){if(!this.de(n))return null;var p=this._MakeGrContext();if(!p)return null;p.be=n;var v=p.delete.bind(p);p["delete"]=function(){a.de(this.be);v();}.bind(p);return B.Af=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.de(this.be);
7974
+ this._getResourceCacheLimitBytes();};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.de(this.be);this._getResourceCacheUsageBytes();};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.de(this.be);this._releaseResourcesAndAbandonContext();};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(n){a.de(this.be);this._setResourceCacheLimitBytes(n);};a.MakeOnScreenGLSurface=function(n,p,v,E,G,L){if(!this.de(n.be))return null;p=void 0===G||void 0===L?
7975
+ this._MakeOnScreenGLSurface(n,p,v,E):this._MakeOnScreenGLSurface(n,p,v,E,G,L);if(!p)return null;p.be=n.be;return p};a.MakeRenderTarget=function(){var n=arguments[0];if(!this.de(n.be))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(n,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(n,arguments[1]),!p)return null}else return null;p.be=n.be;return p};a.MakeWebGLCanvasSurface=function(n,p,v){p=p||null;var E=n,G="undefined"!==
7976
+ typeof OffscreenCanvas&&E instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&E instanceof HTMLCanvasElement||G||(E=document.getElementById(n),E)))throw "Canvas with id "+n+" was not found";n=this.GetWebGLContext(E,v);if(!n||0>n)throw "failed to create webgl context: err "+n;n=this.MakeWebGLContext(n);p=this.MakeOnScreenGLSurface(n,E.width,E.height,p);return p?p:(p=E.cloneNode(true),E.parentNode.replaceChild(p,E),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
7977
+ a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(n,p){a.de(this.be);n=c(n);if(p=this._makeImageFromTexture(this.be,n,p))p.cf=n;return p};a.Surface.prototype.makeImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.de(this.be);var E=B.xe;v=m(E,E.createTexture(),p,v);2===B.version?E.texImage2D(E.TEXTURE_2D,0,E.RGBA,p.width,p.height,
7978
+ 0,E.RGBA,E.UNSIGNED_BYTE,n):E.texImage2D(E.TEXTURE_2D,0,E.RGBA,E.RGBA,E.UNSIGNED_BYTE,n);u(E,p);this._resetContext();return this.makeImageFromTexture(v,p)};a.Surface.prototype.updateTextureFromSource=function(n,p,v){if(n.cf){a.de(this.be);var E=n.getImageInfo(),G=B.xe,L=m(G,ha[n.cf],E,v);2===B.version?G.texImage2D(G.TEXTURE_2D,0,G.RGBA,h(p),f(p),0,G.RGBA,G.UNSIGNED_BYTE,p):G.texImage2D(G.TEXTURE_2D,0,G.RGBA,G.RGBA,G.UNSIGNED_BYTE,p);u(G,E,v);this._resetContext();ha[n.cf]=null;n.cf=c(L);E.colorSpace=
7979
+ n.getColorSpace();p=this._makeImageFromTexture(this.be,n.cf,E);v=n.ae.ie;G=n.ae.pe;n.ae.ie=p.ae.ie;n.ae.pe=p.ae.pe;p.ae.ie=v;p.ae.pe=G;p.delete();E.colorSpace.delete();}};a.MakeLazyImageFromTextureSource=function(n,p,v){p||(p={height:f(n),width:h(n),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var E={makeTexture:function(){var G=B,L=G.xe,y=m(L,L.createTexture(),p,v);2===G.version?L.texImage2D(L.TEXTURE_2D,0,L.RGBA,
7980
+ p.width,p.height,0,L.RGBA,L.UNSIGNED_BYTE,n):L.texImage2D(L.TEXTURE_2D,0,L.RGBA,L.RGBA,L.UNSIGNED_BYTE,n);u(L,p,v);return c(y)},freeSrc:function(){}};"VideoFrame"===n.constructor.name&&(E.freeSrc=function(){n.close();});return a.Image._makeFromGenerator(p,E)};a.de=function(n){return n?ja(n):false};a.mf=function(){return B&&B.Af&&!B.Af.isDeleted()?B.Af:null};});})(w);
7568
7981
  (function(a){function b(e,d,g,l,t){for(var x=0;x<e.length;x++)d[x*g+(x*t+l+g)%g]=e[x];return d}function c(e){for(var d=e*e,g=Array(d);d--;)g[d]=0===d%(e+1)?1:0;return g}function f(e){return e?e.constructor===Float32Array&&4===e.length:false}function h(e){return (n(255*e[3])<<24|n(255*e[0])<<16|n(255*e[1])<<8|n(255*e[2])<<0)>>>0}function m(e){if(e&&e._ck)return e;if(e instanceof Float32Array){for(var d=Math.floor(e.length/4),g=new Uint32Array(d),l=0;l<d;l++)g[l]=h(e.slice(4*l,4*(l+1)));return g}if(e instanceof
7569
- Uint32Array)return e;if(e instanceof Array&&e[0]instanceof Float32Array)return e.map(h)}function u(e){if(void 0===e)return 1;var d=parseFloat(e);return e&&-1!==e.indexOf("%")?d/100:d}function n(e){return Math.round(Math.max(0,Math.min(e||0,255)))}function p(e,d){d&&d._ck||a._free(e);}function v(e,d,g){if(!e||!e.length)return W;if(e&&e._ck)return e.byteOffset;var l=a[d].BYTES_PER_ELEMENT;g||(g=a._malloc(e.length*l));a[d].set(e,g/l);return g}function E(e){var d={be:W,count:e.length,colorType:a.ColorType.RGBA_F32};
7570
- if(e instanceof Float32Array)d.be=v(e,"HEAPF32"),d.count=e.length/4;else if(e instanceof Uint32Array)d.be=v(e,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(e instanceof Array){if(e&&e.length){for(var g=a._malloc(16*e.length),l=0,t=g/4,x=0;x<e.length;x++)for(var C=0;4>C;C++)a.HEAPF32[t+l]=e[x][C],l++;e=g;}else e=W;d.be=e;}else throw "Invalid argument to copyFlexibleColorArray, Not a color array "+typeof e;return d}function H(e){if(!e)return W;var d=Vb.toTypedArray();if(e.length){if(6===e.length||
7571
- 9===e.length)return v(e,"HEAPF32",Na),6===e.length&&a.HEAPF32.set(wd,6+Na/4),Na;if(16===e.length)return d[0]=e[0],d[1]=e[1],d[2]=e[3],d[3]=e[4],d[4]=e[5],d[5]=e[7],d[6]=e[12],d[7]=e[13],d[8]=e[15],Na;throw "invalid matrix size";}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m41;d[3]=e.m12;d[4]=e.m22;d[5]=e.m42;d[6]=e.m14;d[7]=e.m24;d[8]=e.m44;return Na}function L(e){if(!e)return W;var d=Wb.toTypedArray();if(e.length){if(16!==e.length&&6!==e.length&&9!==e.length)throw "invalid matrix size";
7572
- if(16===e.length)return v(e,"HEAPF32",$a);d.fill(0);d[0]=e[0];d[1]=e[1];d[3]=e[2];d[4]=e[3];d[5]=e[4];d[7]=e[5];d[10]=1;d[12]=e[6];d[13]=e[7];d[15]=e[8];6===e.length&&(d[12]=0,d[13]=0,d[15]=1);return $a}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m31;d[3]=e.m41;d[4]=e.m12;d[5]=e.m22;d[6]=e.m32;d[7]=e.m42;d[8]=e.m13;d[9]=e.m23;d[10]=e.m33;d[11]=e.m43;d[12]=e.m14;d[13]=e.m24;d[14]=e.m34;d[15]=e.m44;return $a}function y(e,d){return v(e,"HEAPF32",d||Ta)}function N(e,
7573
- d,g,l){var t=Xb.toTypedArray();t[0]=e;t[1]=d;t[2]=g;t[3]=l;return Ta}function T(e){for(var d=new Float32Array(4),g=0;4>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function S(e,d){return v(e,"HEAPF32",d||ja)}function sa(e,d){return v(e,"HEAPF32",d||Yb)}function ma(){for(var e=0,d=0;d<arguments.length-1;d+=2)e+=arguments[d]*arguments[d+1];return e}function gb(e,d,g){for(var l=Array(e.length),t=0;t<g;t++)for(var x=0;x<g;x++){for(var C=0,J=0;J<g;J++)C+=e[g*t+J]*d[g*J+x];l[t*g+x]=C;}return l}function hb(e,d){for(var g=
7574
- gb(d[0],d[1],e),l=2;l<d.length;)g=gb(g,d[l],e),l++;return g}a.Color=function(e,d,g,l){ void 0===l&&(l=1);return a.Color4f(n(e)/255,n(d)/255,n(g)/255,l)};a.ColorAsInt=function(e,d,g,l){ void 0===l&&(l=255);return (n(l)<<24|n(e)<<16|n(d)<<8|n(g)<<0&268435455)>>>0};a.Color4f=function(e,d,g,l){ void 0===l&&(l=1);return Float32Array.of(e,d,g,l)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,
7982
+ Uint32Array)return e;if(e instanceof Array&&e[0]instanceof Float32Array)return e.map(h)}function u(e){if(void 0===e)return 1;var d=parseFloat(e);return e&&-1!==e.indexOf("%")?d/100:d}function n(e){return Math.round(Math.max(0,Math.min(e||0,255)))}function p(e,d){d&&d._ck||a._free(e);}function v(e,d,g){if(!e||!e.length)return X;if(e&&e._ck)return e.byteOffset;var l=a[d].BYTES_PER_ELEMENT;g||(g=a._malloc(e.length*l));a[d].set(e,g/l);return g}function E(e){var d={te:X,count:e.length,colorType:a.ColorType.RGBA_F32};
7983
+ if(e instanceof Float32Array)d.te=v(e,"HEAPF32"),d.count=e.length/4;else if(e instanceof Uint32Array)d.te=v(e,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(e instanceof Array){if(e&&e.length){for(var g=a._malloc(16*e.length),l=0,t=g/4,x=0;x<e.length;x++)for(var C=0;4>C;C++)a.HEAPF32[t+l]=e[x][C],l++;e=g;}else e=X;d.te=e;}else throw "Invalid argument to copyFlexibleColorArray, Not a color array "+typeof e;return d}function G(e){if(!e)return X;var d=Xb.toTypedArray();if(e.length){if(6===e.length||
7984
+ 9===e.length)return v(e,"HEAPF32",Oa),6===e.length&&a.HEAPF32.set(Hd,6+Oa/4),Oa;if(16===e.length)return d[0]=e[0],d[1]=e[1],d[2]=e[3],d[3]=e[4],d[4]=e[5],d[5]=e[7],d[6]=e[12],d[7]=e[13],d[8]=e[15],Oa;throw "invalid matrix size";}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m41;d[3]=e.m12;d[4]=e.m22;d[5]=e.m42;d[6]=e.m14;d[7]=e.m24;d[8]=e.m44;return Oa}function L(e){if(!e)return X;var d=Yb.toTypedArray();if(e.length){if(16!==e.length&&6!==e.length&&9!==e.length)throw "invalid matrix size";
7985
+ if(16===e.length)return v(e,"HEAPF32",bb);d.fill(0);d[0]=e[0];d[1]=e[1];d[3]=e[2];d[4]=e[3];d[5]=e[4];d[7]=e[5];d[10]=1;d[12]=e[6];d[13]=e[7];d[15]=e[8];6===e.length&&(d[12]=0,d[13]=0,d[15]=1);return bb}if(void 0===e.m11)throw "invalid matrix argument";d[0]=e.m11;d[1]=e.m21;d[2]=e.m31;d[3]=e.m41;d[4]=e.m12;d[5]=e.m22;d[6]=e.m32;d[7]=e.m42;d[8]=e.m13;d[9]=e.m23;d[10]=e.m33;d[11]=e.m43;d[12]=e.m14;d[13]=e.m24;d[14]=e.m34;d[15]=e.m44;return bb}function y(e,d){return v(e,"HEAPF32",d||Va)}function M(e,
7986
+ d,g,l){var t=Zb.toTypedArray();t[0]=e;t[1]=d;t[2]=g;t[3]=l;return Va}function T(e){for(var d=new Float32Array(4),g=0;4>g;g++)d[g]=a.HEAPF32[e/4+g];return d}function S(e,d){return v(e,"HEAPF32",d||ka)}function sa(e,d){return v(e,"HEAPF32",d||$b)}function pa(){for(var e=0,d=0;d<arguments.length-1;d+=2)e+=arguments[d]*arguments[d+1];return e}function ib(e,d,g){for(var l=Array(e.length),t=0;t<g;t++)for(var x=0;x<g;x++){for(var C=0,K=0;K<g;K++)C+=e[g*t+K]*d[g*K+x];l[t*g+x]=C;}return l}function jb(e,d){for(var g=
7987
+ ib(d[0],d[1],e),l=2;l<d.length;)g=ib(g,d[l],e),l++;return g}a.Color=function(e,d,g,l){ void 0===l&&(l=1);return a.Color4f(n(e)/255,n(d)/255,n(g)/255,l)};a.ColorAsInt=function(e,d,g,l){ void 0===l&&(l=255);return (n(l)<<24|n(e)<<16|n(d)<<8|n(g)<<0&268435455)>>>0};a.Color4f=function(e,d,g,l){ void 0===l&&(l=1);return Float32Array.of(e,d,g,l)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,
7575
7988
  "WHITE",{get:function(){return a.Color4f(1,1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,
7576
7989
  0,1,1)}});a.getColorComponents=function(e){return [Math.floor(255*e[0]),Math.floor(255*e[1]),Math.floor(255*e[2]),e[3]]};a.parseColorString=function(e,d){e=e.toLowerCase();if(e.startsWith("#")){d=255;switch(e.length){case 9:d=parseInt(e.slice(7,9),16);case 7:var g=parseInt(e.slice(1,3),16);var l=parseInt(e.slice(3,5),16);var t=parseInt(e.slice(5,7),16);break;case 5:d=17*parseInt(e.slice(4,5),16);case 4:g=17*parseInt(e.slice(1,2),16),l=17*parseInt(e.slice(2,3),16),t=17*parseInt(e.slice(3,4),16);}return a.Color(g,
7577
- l,t,d/255)}return e.startsWith("rgba")?(e=e.slice(5,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("rgb")?(e=e.slice(4,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("gray(")||e.startsWith("hsl")||!d||(e=d[e],void 0===e)?a.BLACK:e};a.multiplyByAlpha=function(e,d){e=e.slice();e[3]=Math.max(0,Math.min(e[3]*d,1));return e};a.Malloc=function(e,d){var g=a._malloc(d*e.BYTES_PER_ELEMENT);return {_ck:true,length:d,byteOffset:g,qe:null,subarray:function(l,t){l=this.toTypedArray().subarray(l,
7578
- t);l._ck=true;return l},toTypedArray:function(){if(this.qe&&this.qe.length)return this.qe;this.qe=new e(a.HEAPU8.buffer,g,d);this.qe._ck=true;return this.qe}}};a.Free=function(e){a._free(e.byteOffset);e.byteOffset=W;e.toTypedArray=null;e.qe=null;};var Na=W,Vb,$a=W,Wb,Ta=W,Xb,Ba,ja=W,xc,Oa=W,yc,Zb=W,zc,$b=W,yb,ib=W,Ac,Yb=W,Bc,Cc=W,wd=Float32Array.of(0,0,1),W=0;a.onRuntimeInitialized=function(){function e(d,g,l,t,x,C,J){C||(C=4*t.width,t.colorType===a.ColorType.RGBA_F16?C*=2:t.colorType===a.ColorType.RGBA_F32&&
7579
- (C*=4));var P=C*t.height;var O=x?x.byteOffset:a._malloc(P);if(J?!d._readPixels(t,O,C,g,l,J):!d._readPixels(t,O,C,g,l))return x||a._free(O),null;if(x)return x.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,O,P)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,O,P)).slice();break;default:return null}a._free(O);return d}Xb=a.Malloc(Float32Array,4);Ta=Xb.byteOffset;Wb=a.Malloc(Float32Array,16);$a=Wb.byteOffset;
7580
- Vb=a.Malloc(Float32Array,9);Na=Vb.byteOffset;Ac=a.Malloc(Float32Array,12);Yb=Ac.byteOffset;Bc=a.Malloc(Float32Array,12);Cc=Bc.byteOffset;Ba=a.Malloc(Float32Array,4);ja=Ba.byteOffset;xc=a.Malloc(Float32Array,4);Oa=xc.byteOffset;yc=a.Malloc(Float32Array,3);Zb=yc.byteOffset;zc=a.Malloc(Float32Array,3);$b=zc.byteOffset;yb=a.Malloc(Int32Array,4);ib=yb.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();
7581
- a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=function(d){var g=v(d,"HEAPF32"),l=a.Path._MakeFromCmds(g,d.length);p(g,d);return l};a.Path.MakeFromVerbsPointsWeights=function(d,g,l){var t=v(d,"HEAPU8"),x=v(g,"HEAPF32"),C=v(l,"HEAPF32"),J=a.Path._MakeFromVerbsPointsWeights(t,d.length,x,g.length,C,l&&l.length||0);p(t,d);p(x,g);p(C,l);return J};a.Path.prototype.addArc=function(d,g,l){d=S(d);this._addArc(d,g,l);return this};a.Path.prototype.addCircle=function(d,g,l,t){this._addCircle(d,
7990
+ l,t,d/255)}return e.startsWith("rgba")?(e=e.slice(5,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("rgb")?(e=e.slice(4,-1),e=e.split(","),a.Color(+e[0],+e[1],+e[2],u(e[3]))):e.startsWith("gray(")||e.startsWith("hsl")||!d||(e=d[e],void 0===e)?a.BLACK:e};a.multiplyByAlpha=function(e,d){e=e.slice();e[3]=Math.max(0,Math.min(e[3]*d,1));return e};a.Malloc=function(e,d){var g=a._malloc(d*e.BYTES_PER_ELEMENT);return {_ck:true,length:d,byteOffset:g,Je:null,subarray:function(l,t){l=this.toTypedArray().subarray(l,
7991
+ t);l._ck=true;return l},toTypedArray:function(){if(this.Je&&this.Je.length)return this.Je;this.Je=new e(a.HEAPU8.buffer,g,d);this.Je._ck=true;return this.Je}}};a.Free=function(e){a._free(e.byteOffset);e.byteOffset=X;e.toTypedArray=null;e.Je=null;};var Oa=X,Xb,bb=X,Yb,Va=X,Zb,Ca,ka=X,zc,Pa=X,Ac,ac=X,Bc,bc=X,Ab,kb=X,Cc,$b=X,Dc,Ec=X,Hd=Float32Array.of(0,0,1),X=0;a.onRuntimeInitialized=function(){function e(d,g,l,t,x,C,K){C||(C=4*t.width,t.colorType===a.ColorType.RGBA_F16?C*=2:t.colorType===a.ColorType.RGBA_F32&&
7992
+ (C*=4));var O=C*t.height;var P=x?x.byteOffset:a._malloc(O);if(K?!d._readPixels(t,P,C,g,l,K):!d._readPixels(t,P,C,g,l))return x||a._free(P),null;if(x)return x.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,P,O)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,P,O)).slice();break;default:return null}a._free(P);return d}Zb=a.Malloc(Float32Array,4);Va=Zb.byteOffset;Yb=a.Malloc(Float32Array,16);bb=Yb.byteOffset;
7993
+ Xb=a.Malloc(Float32Array,9);Oa=Xb.byteOffset;Cc=a.Malloc(Float32Array,12);$b=Cc.byteOffset;Dc=a.Malloc(Float32Array,12);Ec=Dc.byteOffset;Ca=a.Malloc(Float32Array,4);ka=Ca.byteOffset;zc=a.Malloc(Float32Array,4);Pa=zc.byteOffset;Ac=a.Malloc(Float32Array,3);ac=Ac.byteOffset;Bc=a.Malloc(Float32Array,3);bc=Bc.byteOffset;Ab=a.Malloc(Int32Array,4);kb=Ab.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();
7994
+ a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=function(d){var g=v(d,"HEAPF32"),l=a.Path._MakeFromCmds(g,d.length);p(g,d);return l};a.Path.MakeFromVerbsPointsWeights=function(d,g,l){var t=v(d,"HEAPU8"),x=v(g,"HEAPF32"),C=v(l,"HEAPF32"),K=a.Path._MakeFromVerbsPointsWeights(t,d.length,x,g.length,C,l&&l.length||0);p(t,d);p(x,g);p(C,l);return K};a.Path.prototype.addArc=function(d,g,l){d=S(d);this._addArc(d,g,l);return this};a.Path.prototype.addCircle=function(d,g,l,t){this._addCircle(d,
7582
7995
  g,l,!!t);return this};a.Path.prototype.addOval=function(d,g,l){ void 0===l&&(l=1);d=S(d);this._addOval(d,!!g,l);return this};a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),g=d[0],l=false;"boolean"===typeof d[d.length-1]&&(l=d.pop());if(1===d.length)this._addPath(g,1,0,0,0,1,0,0,0,1,l);else if(2===d.length)d=d[1],this._addPath(g,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,l);else if(7===d.length||10===d.length)this._addPath(g,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||
7583
7996
  0,d[8]||0,d[9]||1,l);else return null;return this};a.Path.prototype.addPoly=function(d,g){var l=v(d,"HEAPF32");this._addPoly(l,d.length/2,g);p(l,d);return this};a.Path.prototype.addRect=function(d,g){d=S(d);this._addRect(d,!!g);return this};a.Path.prototype.addRRect=function(d,g){d=sa(d);this._addRRect(d,!!g);return this};a.Path.prototype.addVerbsPointsWeights=function(d,g,l){var t=v(d,"HEAPU8"),x=v(g,"HEAPF32"),C=v(l,"HEAPF32");this._addVerbsPointsWeights(t,d.length,x,g.length,C,l&&l.length||0);
7584
- p(t,d);p(x,g);p(C,l);};a.Path.prototype.arc=function(d,g,l,t,x,C){d=a.LTRBRect(d-l,g-l,d+l,g+l);x=(x-t)/Math.PI*180-360*!!C;C=new a.Path;C.addArc(d,t/Math.PI*180,x);this.addPath(C,true);C.delete();return this};a.Path.prototype.arcToOval=function(d,g,l,t){d=S(d);this._arcToOval(d,g,l,t);return this};a.Path.prototype.arcToRotated=function(d,g,l,t,x,C,J){this._arcToRotated(d,g,l,!!t,!!x,C,J);return this};a.Path.prototype.arcToTangent=function(d,g,l,t,x){this._arcToTangent(d,g,l,t,x);return this};a.Path.prototype.close=
7585
- function(){this._close();return this};a.Path.prototype.conicTo=function(d,g,l,t,x){this._conicTo(d,g,l,t,x);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(ja);var g=Ba.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.cubicTo=function(d,g,l,t,x,C){this._cubicTo(d,g,l,t,x,C);return this};a.Path.prototype.dash=function(d,g,l){return this._dash(d,g,l)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(ja);var g=Ba.toTypedArray();return d?
7586
- (d.set(g),d):g.slice()};a.Path.prototype.lineTo=function(d,g){this._lineTo(d,g);return this};a.Path.prototype.moveTo=function(d,g){this._moveTo(d,g);return this};a.Path.prototype.offset=function(d,g){this._transform(1,0,d,0,1,g,0,0,1);return this};a.Path.prototype.quadTo=function(d,g,l,t){this._quadTo(d,g,l,t);return this};a.Path.prototype.rArcTo=function(d,g,l,t,x,C,J){this._rArcTo(d,g,l,t,x,C,J);return this};a.Path.prototype.rConicTo=function(d,g,l,t,x){this._rConicTo(d,g,l,t,x);return this};a.Path.prototype.rCubicTo=
7997
+ p(t,d);p(x,g);p(C,l);};a.Path.prototype.arc=function(d,g,l,t,x,C){d=a.LTRBRect(d-l,g-l,d+l,g+l);x=(x-t)/Math.PI*180-360*!!C;C=new a.Path;C.addArc(d,t/Math.PI*180,x);this.addPath(C,true);C.delete();return this};a.Path.prototype.arcToOval=function(d,g,l,t){d=S(d);this._arcToOval(d,g,l,t);return this};a.Path.prototype.arcToRotated=function(d,g,l,t,x,C,K){this._arcToRotated(d,g,l,!!t,!!x,C,K);return this};a.Path.prototype.arcToTangent=function(d,g,l,t,x){this._arcToTangent(d,g,l,t,x);return this};a.Path.prototype.close=
7998
+ function(){this._close();return this};a.Path.prototype.conicTo=function(d,g,l,t,x){this._conicTo(d,g,l,t,x);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(ka);var g=Ca.toTypedArray();return d?(d.set(g),d):g.slice()};a.Path.prototype.cubicTo=function(d,g,l,t,x,C){this._cubicTo(d,g,l,t,x,C);return this};a.Path.prototype.dash=function(d,g,l){return this._dash(d,g,l)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(ka);var g=Ca.toTypedArray();return d?
7999
+ (d.set(g),d):g.slice()};a.Path.prototype.lineTo=function(d,g){this._lineTo(d,g);return this};a.Path.prototype.moveTo=function(d,g){this._moveTo(d,g);return this};a.Path.prototype.offset=function(d,g){this._transform(1,0,d,0,1,g,0,0,1);return this};a.Path.prototype.quadTo=function(d,g,l,t){this._quadTo(d,g,l,t);return this};a.Path.prototype.rArcTo=function(d,g,l,t,x,C,K){this._rArcTo(d,g,l,t,x,C,K);return this};a.Path.prototype.rConicTo=function(d,g,l,t,x){this._rConicTo(d,g,l,t,x);return this};a.Path.prototype.rCubicTo=
7587
8000
  function(d,g,l,t,x,C){this._rCubicTo(d,g,l,t,x,C);return this};a.Path.prototype.rLineTo=function(d,g){this._rLineTo(d,g);return this};a.Path.prototype.rMoveTo=function(d,g){this._rMoveTo(d,g);return this};a.Path.prototype.rQuadTo=function(d,g,l,t){this._rQuadTo(d,g,l,t);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};
7588
8001
  a.Path.prototype.transform=function(){if(1===arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);}else if(6===arguments.length||9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw "transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,g,l){return this._trim(d,g,!!l)?this:null};a.Image.prototype.encodeToBytes=function(d,g){var l=
7589
- a.Te();d=d||a.ImageFormat.PNG;g=g||100;return l?this._encodeToBytes(d,g,l):this._encodeToBytes(d,g)};a.Image.prototype.makeShaderCubic=function(d,g,l,t,x){x=H(x);return this._makeShaderCubic(d,g,l,t,x)};a.Image.prototype.makeShaderOptions=function(d,g,l,t,x){x=H(x);return this._makeShaderOptions(d,g,l,t,x)};a.Image.prototype.readPixels=function(d,g,l,t,x){var C=a.Te();return e(this,d,g,l,t,x,C)};a.Canvas.prototype.clear=function(d){a.Md(this.Kd);d=y(d);this._clear(d);};a.Canvas.prototype.clipRRect=
7590
- function(d,g,l){a.Md(this.Kd);d=sa(d);this._clipRRect(d,g,l);};a.Canvas.prototype.clipRect=function(d,g,l){a.Md(this.Kd);d=S(d);this._clipRect(d,g,l);};a.Canvas.prototype.concat=function(d){a.Md(this.Kd);d=L(d);this._concat(d);};a.Canvas.prototype.drawArc=function(d,g,l,t,x){a.Md(this.Kd);d=S(d);this._drawArc(d,g,l,t,x);};a.Canvas.prototype.drawAtlas=function(d,g,l,t,x,C,J){if(d&&t&&g&&l&&g.length===l.length){a.Md(this.Kd);x||(x=a.BlendMode.SrcOver);var P=v(g,"HEAPF32"),O=v(l,"HEAPF32"),Y=l.length/4,
7591
- aa=v(m(C),"HEAPU32");if(J&&"B"in J&&"C"in J)this._drawAtlasCubic(d,O,P,aa,Y,x,J.B,J.C,t);else {let r=a.FilterMode.Linear,D=a.MipmapMode.None;J&&(r=J.filter,"mipmap"in J&&(D=J.mipmap));this._drawAtlasOptions(d,O,P,aa,Y,x,r,D,t);}p(P,g);p(O,l);p(aa,C);}};a.Canvas.prototype.drawCircle=function(d,g,l,t){a.Md(this.Kd);this._drawCircle(d,g,l,t);};a.Canvas.prototype.drawColor=function(d,g){a.Md(this.Kd);d=y(d);void 0!==g?this._drawColor(d,g):this._drawColor(d);};a.Canvas.prototype.drawColorInt=function(d,g){a.Md(this.Kd);
7592
- this._drawColorInt(d,g||a.BlendMode.SrcOver);};a.Canvas.prototype.drawColorComponents=function(d,g,l,t,x){a.Md(this.Kd);d=N(d,g,l,t);void 0!==x?this._drawColor(d,x):this._drawColor(d);};a.Canvas.prototype.drawDRRect=function(d,g,l){a.Md(this.Kd);d=sa(d,Yb);g=sa(g,Cc);this._drawDRRect(d,g,l);};a.Canvas.prototype.drawImage=function(d,g,l,t){a.Md(this.Kd);this._drawImage(d,g,l,t||null);};a.Canvas.prototype.drawImageCubic=function(d,g,l,t,x,C){a.Md(this.Kd);this._drawImageCubic(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageOptions=
7593
- function(d,g,l,t,x,C){a.Md(this.Kd);this._drawImageOptions(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageNine=function(d,g,l,t,x){a.Md(this.Kd);g=v(g,"HEAP32",ib);l=S(l);this._drawImageNine(d,g,l,t,x||null);};a.Canvas.prototype.drawImageRect=function(d,g,l,t,x){a.Md(this.Kd);S(g,ja);S(l,Oa);this._drawImageRect(d,ja,Oa,t,!!x);};a.Canvas.prototype.drawImageRectCubic=function(d,g,l,t,x,C){a.Md(this.Kd);S(g,ja);S(l,Oa);this._drawImageRectCubic(d,ja,Oa,t,x,C||null);};a.Canvas.prototype.drawImageRectOptions=
7594
- function(d,g,l,t,x,C){a.Md(this.Kd);S(g,ja);S(l,Oa);this._drawImageRectOptions(d,ja,Oa,t,x,C||null);};a.Canvas.prototype.drawLine=function(d,g,l,t,x){a.Md(this.Kd);this._drawLine(d,g,l,t,x);};a.Canvas.prototype.drawOval=function(d,g){a.Md(this.Kd);d=S(d);this._drawOval(d,g);};a.Canvas.prototype.drawPaint=function(d){a.Md(this.Kd);this._drawPaint(d);};a.Canvas.prototype.drawParagraph=function(d,g,l){a.Md(this.Kd);this._drawParagraph(d,g,l);};a.Canvas.prototype.drawPatch=function(d,g,l,t,x){if(24>d.length)throw "Need 12 cubic points";
7595
- if(g&&4>g.length)throw "Need 4 colors";if(l&&8>l.length)throw "Need 4 shader coordinates";a.Md(this.Kd);const C=v(d,"HEAPF32"),J=g?v(m(g),"HEAPU32"):W,P=l?v(l,"HEAPF32"):W;t||(t=a.BlendMode.Modulate);this._drawPatch(C,J,P,t,x);p(P,l);p(J,g);p(C,d);};a.Canvas.prototype.drawPath=function(d,g){a.Md(this.Kd);this._drawPath(d,g);};a.Canvas.prototype.drawPicture=function(d){a.Md(this.Kd);this._drawPicture(d);};a.Canvas.prototype.drawPoints=function(d,g,l){a.Md(this.Kd);var t=v(g,"HEAPF32");this._drawPoints(d,
7596
- t,g.length/2,l);p(t,g);};a.Canvas.prototype.drawRRect=function(d,g){a.Md(this.Kd);d=sa(d);this._drawRRect(d,g);};a.Canvas.prototype.drawRect=function(d,g){a.Md(this.Kd);d=S(d);this._drawRect(d,g);};a.Canvas.prototype.drawRect4f=function(d,g,l,t,x){a.Md(this.Kd);this._drawRect4f(d,g,l,t,x);};a.Canvas.prototype.drawShadow=function(d,g,l,t,x,C,J){a.Md(this.Kd);var P=v(x,"HEAPF32"),O=v(C,"HEAPF32");g=v(g,"HEAPF32",Zb);l=v(l,"HEAPF32",$b);this._drawShadow(d,g,l,t,P,O,J);p(P,x);p(O,C);};a.getShadowLocalBounds=
7597
- function(d,g,l,t,x,C,J){d=H(d);l=v(l,"HEAPF32",Zb);t=v(t,"HEAPF32",$b);if(!this._getShadowLocalBounds(d,g,l,t,x,C,ja))return null;g=Ba.toTypedArray();return J?(J.set(g),J):g.slice()};a.Canvas.prototype.drawTextBlob=function(d,g,l,t){a.Md(this.Kd);this._drawTextBlob(d,g,l,t);};a.Canvas.prototype.drawVertices=function(d,g,l){a.Md(this.Kd);this._drawVertices(d,g,l);};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(ib);var g=yb.toTypedArray();d?d.set(g):d=g.slice();return d};
7598
- a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice($a);for(var d=$a,g=Array(16),l=0;16>l;l++)g[l]=a.HEAPF32[d/4+l];return g};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(Na);for(var d=Array(9),g=0;9>g;g++)d[g]=a.HEAPF32[Na/4+g];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Kd=this.Kd;return d};a.Canvas.prototype.readPixels=function(d,g,l,t,x){a.Md(this.Kd);return e(this,d,g,l,t,x)};a.Canvas.prototype.saveLayer=function(d,g,l,
7599
- t){g=S(g);return this._saveLayer(d||null,g,l||null,t||0)};a.Canvas.prototype.writePixels=function(d,g,l,t,x,C,J,P){if(d.byteLength%(g*l))throw "pixels length must be a multiple of the srcWidth * srcHeight";a.Md(this.Kd);var O=d.byteLength/(g*l);C=C||a.AlphaType.Unpremul;J=J||a.ColorType.RGBA_8888;P=P||a.ColorSpace.SRGB;var Y=O*g;O=v(d,"HEAPU8");g=this._writePixels({width:g,height:l,colorType:J,alphaType:C,colorSpace:P},O,Y,t,x);p(O,d);return g};a.ColorFilter.MakeBlend=function(d,g,l){d=y(d);l=l||a.ColorSpace.SRGB;
7600
- return a.ColorFilter._MakeBlend(d,g,l)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw "invalid color matrix";var g=v(d,"HEAPF32"),l=a.ColorFilter._makeMatrix(g);p(g,d);return l};a.ContourMeasure.prototype.getPosTan=function(d,g){this._getPosTan(d,ja);d=Ba.toTypedArray();return g?(g.set(d),g):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,g,l){d=S(d,ja);g=H(g);this._getOutputBounds(d,g,ib);g=yb.toTypedArray();return l?(l.set(g),l):g.slice()};a.ImageFilter.MakeDropShadow=
7601
- function(d,g,l,t,x,C){x=y(x,Ta);return a.ImageFilter._MakeDropShadow(d,g,l,t,x,C)};a.ImageFilter.MakeDropShadowOnly=function(d,g,l,t,x,C){x=y(x,Ta);return a.ImageFilter._MakeDropShadowOnly(d,g,l,t,x,C)};a.ImageFilter.MakeImage=function(d,g,l,t){l=S(l,ja);t=S(t,Oa);if("B"in g&&"C"in g)return a.ImageFilter._MakeImageCubic(d,g.B,g.C,l,t);const x=g.filter;let C=a.MipmapMode.None;"mipmap"in g&&(C=g.mipmap);return a.ImageFilter._MakeImageOptions(d,x,C,l,t)};a.ImageFilter.MakeMatrixTransform=function(d,
7602
- g,l){d=H(d);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(d,g.B,g.C,l);const t=g.filter;let x=a.MipmapMode.None;"mipmap"in g&&(x=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,x,l)};a.Paint.prototype.getColor=function(){this._getColor(Ta);return T(Ta)};a.Paint.prototype.setColor=function(d,g){g=g||null;d=y(d);this._setColor(d,g);};a.Paint.prototype.setColorComponents=function(d,g,l,t,x){x=x||null;d=N(d,g,l,t);this._setColor(d,x);};a.Path.prototype.getPoint=function(d,
7603
- g){this._getPoint(d,ja);d=Ba.toTypedArray();return g?(g[0]=d[0],g[1]=d[1],g):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,g,l,t,x){t=H(t);x=S(x);return this._makeShader(d,g,l,t,x)};a.Picture.prototype.cullRect=function(d){this._cullRect(ja);var g=Ba.toTypedArray();return d?(d.set(g),d):g.slice()};a.PictureRecorder.prototype.beginRecording=function(d,g){d=S(d);return this._beginRecording(d,!!g)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Kd=this.Kd;return d};a.Surface.prototype.makeImageSnapshot=
7604
- function(d){a.Md(this.Kd);d=v(d,"HEAP32",ib);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.Md(this.Kd);d=this._makeSurface(d);d.Kd=this.Kd;return d};a.Surface.prototype.Gf=function(d,g){this.He||(this.He=this.getCanvas());return requestAnimationFrame(function(){a.Md(this.Kd);d(this.He);this.flush(g);}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Gf);a.Surface.prototype.Cf=function(d,g){this.He||
7605
- (this.He=this.getCanvas());requestAnimationFrame(function(){a.Md(this.Kd);d(this.He);this.flush(g);this.dispose();}.bind(this));};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Cf);a.PathEffect.MakeDash=function(d,g){g||(g=0);if(!d.length||1===d.length%2)throw "Intervals array must have even length";var l=v(d,"HEAPF32");g=a.PathEffect._MakeDash(l,d.length,g);p(l,d);return g};a.PathEffect.MakeLine2D=function(d,g){g=H(g);return a.PathEffect._MakeLine2D(d,g)};a.PathEffect.MakePath2D=
7606
- function(d,g){d=H(d);return a.PathEffect._MakePath2D(d,g)};a.Shader.MakeColor=function(d,g){g=g||null;d=y(d);return a.Shader._MakeColor(d,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,g,l,t,x,C,J,P){P=P||null;var O=E(l),Y=v(t,"HEAPF32");J=J||0;C=H(C);var aa=Ba.toTypedArray();aa.set(d);aa.set(g,2);d=a.Shader._MakeLinearGradient(ja,O.be,O.colorType,Y,O.count,x,J,C,P);p(O.be,l);t&&p(Y,t);return d};a.Shader.MakeRadialGradient=function(d,
7607
- g,l,t,x,C,J,P){P=P||null;var O=E(l),Y=v(t,"HEAPF32");J=J||0;C=H(C);d=a.Shader._MakeRadialGradient(d[0],d[1],g,O.be,O.colorType,Y,O.count,x,J,C,P);p(O.be,l);t&&p(Y,t);return d};a.Shader.MakeSweepGradient=function(d,g,l,t,x,C,J,P,O,Y){Y=Y||null;var aa=E(l),r=v(t,"HEAPF32");J=J||0;P=P||0;O=O||360;C=H(C);d=a.Shader._MakeSweepGradient(d,g,aa.be,aa.colorType,r,aa.count,x,P,O,J,C,Y);p(aa.be,l);t&&p(r,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,g,l,t,x,C,J,P,O,Y){Y=Y||null;var aa=E(x),r=
7608
- v(C,"HEAPF32");O=O||0;P=H(P);var D=Ba.toTypedArray();D.set(d);D.set(l,2);d=a.Shader._MakeTwoPointConicalGradient(ja,g,t,aa.be,aa.colorType,r,aa.count,J,O,P,Y);p(aa.be,x);C&&p(r,C);return d};a.Vertices.prototype.bounds=function(d){this._bounds(ja);var g=Ba.toTypedArray();return d?(d.set(g),d):g.slice()};a.Td&&a.Td.forEach(function(d){d();});};a.computeTonalColors=function(e){var d=v(e.ambient,"HEAPF32"),g=v(e.spot,"HEAPF32");this._computeTonalColors(d,g);var l={ambient:T(d),spot:T(g)};p(d,e.ambient);
7609
- p(g,e.spot);return l};a.LTRBRect=function(e,d,g,l){return Float32Array.of(e,d,g,l)};a.XYWHRect=function(e,d,g,l){return Float32Array.of(e,d,e+g,d+l)};a.LTRBiRect=function(e,d,g,l){return Int32Array.of(e,d,g,l)};a.XYWHiRect=function(e,d,g,l){return Int32Array.of(e,d,e+g,d+l)};a.RRectXY=function(e,d,g){return Float32Array.of(e[0],e[1],e[2],e[3],d,g,d,g,d,g,d,g)};a.MakeAnimatedImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._decodeAnimatedImage(d,
7610
- e.byteLength))?e:null};a.MakeImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._decodeImage(d,e.byteLength))?e:null};var jb=null;a.MakeImageFromCanvasImageSource=function(e){var d=e.width,g=e.height;jb||(jb=document.createElement("canvas"));jb.width=d;jb.height=g;var l=jb.getContext("2d",{willReadFrequently:true});l.drawImage(e,0,0);e=l.getImageData(0,0,d,g);return a.MakeImage({width:d,height:g,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,
7611
- colorSpace:a.ColorSpace.SRGB},e.data,4*d)};a.MakeImage=function(e,d,g){var l=a._malloc(d.length);a.HEAPU8.set(d,l);return a._MakeImage(e,l,d.length,g)};a.MakeVertices=function(e,d,g,l,t,x){var C=t&&t.length||0,J=0;g&&g.length&&(J|=1);l&&l.length&&(J|=2);void 0===x||x||(J|=4);e=new a._VerticesBuilder(e,d.length/2,C,J);v(d,"HEAPF32",e.positions());e.texCoords()&&v(g,"HEAPF32",e.texCoords());e.colors()&&v(m(l),"HEAPU32",e.colors());e.indices()&&v(t,"HEAPU16",e.indices());return e.detach()};a.Matrix=
7612
- {};a.Matrix.identity=function(){return c(3)};a.Matrix.invert=function(e){var d=e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7];return d?[(e[4]*e[8]-e[5]*e[7])/d,(e[2]*e[7]-e[1]*e[8])/d,(e[1]*e[5]-e[2]*e[4])/d,(e[5]*e[6]-e[3]*e[8])/d,(e[0]*e[8]-e[2]*e[6])/d,(e[2]*e[3]-e[0]*e[5])/d,(e[3]*e[7]-e[4]*e[6])/d,(e[1]*e[6]-e[0]*e[7])/d,(e[0]*e[4]-e[1]*e[3])/d]:null};a.Matrix.mapPoints=function(e,d){for(var g=0;g<d.length;g+=2){var l=d[g],t=d[g+1],x=e[6]*l+e[7]*t+e[8],
7613
- C=e[3]*l+e[4]*t+e[5];d[g]=(e[0]*l+e[1]*t+e[2])/x;d[g+1]=C/x;}return d};a.Matrix.multiply=function(){return hb(3,arguments)};a.Matrix.rotated=function(e,d,g){d=d||0;g=g||0;var l=Math.sin(e);e=Math.cos(e);return [e,-l,ma(l,g,1-e,d),l,e,ma(-l,d,1-e,g),0,0,1]};a.Matrix.scaled=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,0,1);return b([g-e*g,l-d*l],t,3,2,0)};a.Matrix.skewed=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,1,-1);return b([-e*g,-d*l],t,3,2,0)};a.Matrix.translated=function(e,d){return b(arguments,
7614
- c(3),3,2,0)};a.Vector={};a.Vector.dot=function(e,d){return e.map(function(g,l){return g*d[l]}).reduce(function(g,l){return g+l})};a.Vector.lengthSquared=function(e){return a.Vector.dot(e,e)};a.Vector.length=function(e){return Math.sqrt(a.Vector.lengthSquared(e))};a.Vector.mulScalar=function(e,d){return e.map(function(g){return g*d})};a.Vector.add=function(e,d){return e.map(function(g,l){return g+d[l]})};a.Vector.sub=function(e,d){return e.map(function(g,l){return g-d[l]})};a.Vector.dist=function(e,
7615
- d){return a.Vector.length(a.Vector.sub(e,d))};a.Vector.normalize=function(e){return a.Vector.mulScalar(e,1/a.Vector.length(e))};a.Vector.cross=function(e,d){return [e[1]*d[2]-e[2]*d[1],e[2]*d[0]-e[0]*d[2],e[0]*d[1]-e[1]*d[0]]};a.M44={};a.M44.identity=function(){return c(4)};a.M44.translated=function(e){return b(e,c(4),4,3,0)};a.M44.scaled=function(e){return b(e,c(4),4,0,1)};a.M44.rotated=function(e,d){return a.M44.rotatedUnitSinCos(a.Vector.normalize(e),Math.sin(d),Math.cos(d))};a.M44.rotatedUnitSinCos=
7616
- function(e,d,g){var l=e[0],t=e[1];e=e[2];var x=1-g;return [x*l*l+g,x*l*t-d*e,x*l*e+d*t,0,x*l*t+d*e,x*t*t+g,x*t*e-d*l,0,x*l*e-d*t,x*t*e+d*l,x*e*e+g,0,0,0,0,1]};a.M44.lookat=function(e,d,g){d=a.Vector.normalize(a.Vector.sub(d,e));g=a.Vector.normalize(g);g=a.Vector.normalize(a.Vector.cross(d,g));var l=a.M44.identity();b(g,l,4,0,0);b(a.Vector.cross(g,d),l,4,1,0);b(a.Vector.mulScalar(d,-1),l,4,2,0);b(e,l,4,3,0);e=a.M44.invert(l);return null===e?a.M44.identity():e};a.M44.perspective=function(e,d,g){var l=
7617
- 1/(d-e);g/=2;g=Math.cos(g)/Math.sin(g);return [g,0,0,0,0,g,0,0,0,0,(d+e)*l,2*d*e*l,0,0,-1,1]};a.M44.rc=function(e,d,g){return e[4*d+g]};a.M44.multiply=function(){return hb(4,arguments)};a.M44.invert=function(e){var d=e[0],g=e[4],l=e[8],t=e[12],x=e[1],C=e[5],J=e[9],P=e[13],O=e[2],Y=e[6],aa=e[10],r=e[14],D=e[3],U=e[7],ca=e[11];e=e[15];var ka=d*C-g*x,va=d*J-l*x,wa=d*P-t*x,na=g*J-l*C,G=g*P-t*C,k=l*P-t*J,q=O*U-Y*D,z=O*ca-aa*D,B=O*e-r*D,F=Y*ca-aa*U,I=Y*e-r*U,M=aa*e-r*ca,da=ka*M-va*I+wa*F+na*B-G*z+k*q,ea=
7618
- 1/da;if(0===da||Infinity===ea)return null;ka*=ea;va*=ea;wa*=ea;na*=ea;G*=ea;k*=ea;q*=ea;z*=ea;B*=ea;F*=ea;I*=ea;M*=ea;d=[C*M-J*I+P*F,J*B-x*M-P*z,x*I-C*B+P*q,C*z-x*F-J*q,l*I-g*M-t*F,d*M-l*B+t*z,g*B-d*I-t*q,d*F-g*z+l*q,U*k-ca*G+e*na,ca*wa-D*k-e*va,D*G-U*wa+e*ka,U*va-D*na-ca*ka,aa*G-Y*k-r*na,O*k-aa*wa+r*va,Y*wa-O*G-r*ka,O*na-Y*va+aa*ka];return d.every(function(Ia){return !isNaN(Ia)&&Infinity!==Ia&&-Infinity!==Ia})?d:null};a.M44.transpose=function(e){return [e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],
7619
- e[6],e[10],e[14],e[3],e[7],e[11],e[15]]};a.M44.mustInvert=function(e){e=a.M44.invert(e);if(null===e)throw "Matrix not invertible";return e};a.M44.setupCamera=function(e,d,g){var l=a.M44.lookat(g.eye,g.coa,g.up);g=a.M44.perspective(g.near,g.far,g.angle);d=[(e[2]-e[0])/2,(e[3]-e[1])/2,d];e=a.M44.multiply(a.M44.translated([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),a.M44.scaled(d));return a.M44.multiply(e,g,l,a.M44.mustInvert(e))};a.ColorMatrix={};a.ColorMatrix.identity=function(){var e=new Float32Array(20);e[0]=
7620
- 1;e[6]=1;e[12]=1;e[18]=1;return e};a.ColorMatrix.scaled=function(e,d,g,l){var t=new Float32Array(20);t[0]=e;t[6]=d;t[12]=g;t[18]=l;return t};var xd=[[6,7,11,12],[0,10,2,12],[0,1,5,6]];a.ColorMatrix.rotated=function(e,d,g){var l=a.ColorMatrix.identity();e=xd[e];l[e[0]]=g;l[e[1]]=d;l[e[2]]=-d;l[e[3]]=g;return l};a.ColorMatrix.postTranslate=function(e,d,g,l,t){e[4]+=d;e[9]+=g;e[14]+=l;e[19]+=t;return e};a.ColorMatrix.concat=function(e,d){for(var g=new Float32Array(20),l=0,t=0;20>t;t+=5){for(var x=0;4>
7621
- x;x++)g[l++]=e[t]*d[x]+e[t+1]*d[x+5]+e[t+2]*d[x+10]+e[t+3]*d[x+15];g[l++]=e[t]*d[4]+e[t+1]*d[9]+e[t+2]*d[14]+e[t+3]*d[19]+e[t+4];}return g};(function(e){e.Td=e.Td||[];e.Td.push(function(){function d(r){r&&(r.dir=0===r.dir?e.TextDirection.RTL:e.TextDirection.LTR);return r}function g(r){if(!r||!r.length)return [];for(var D=[],U=0;U<r.length;U+=5){var ca=e.LTRBRect(r[U],r[U+1],r[U+2],r[U+3]),ka=e.TextDirection.LTR;0===r[U+4]&&(ka=e.TextDirection.RTL);D.push({rect:ca,dir:ka});}e._free(r.byteOffset);return D}
7622
- function l(r){r=r||{};void 0===r.weight&&(r.weight=e.FontWeight.Normal);r.width=r.width||e.FontWidth.Normal;r.slant=r.slant||e.FontSlant.Upright;return r}function t(r){if(!r||!r.length)return W;for(var D=[],U=0;U<r.length;U++){var ca=x(r[U]);D.push(ca);}return v(D,"HEAPU32")}function x(r){if(P[r])return P[r];var D=qa(r)+1,U=e._malloc(D);ra(r,K,U,D);return P[r]=U}function C(r){r._colorPtr=y(r.color);r._foregroundColorPtr=W;r._backgroundColorPtr=W;r._decorationColorPtr=W;r.foregroundColor&&(r._foregroundColorPtr=
7623
- y(r.foregroundColor,O));r.backgroundColor&&(r._backgroundColorPtr=y(r.backgroundColor,Y));r.decorationColor&&(r._decorationColorPtr=y(r.decorationColor,aa));Array.isArray(r.fontFamilies)&&r.fontFamilies.length?(r._fontFamiliesPtr=t(r.fontFamilies),r._fontFamiliesLen=r.fontFamilies.length):(r._fontFamiliesPtr=W,r._fontFamiliesLen=0);if(r.locale){var D=r.locale;r._localePtr=x(D);r._localeLen=qa(D)+1;}else r._localePtr=W,r._localeLen=0;if(Array.isArray(r.shadows)&&r.shadows.length){D=r.shadows;var U=
7624
- D.map(function(G){return G.color||e.BLACK}),ca=D.map(function(G){return G.blurRadius||0});r._shadowLen=D.length;for(var ka=e._malloc(8*D.length),va=ka/4,wa=0;wa<D.length;wa++){var na=D[wa].offset||[0,0];e.HEAPF32[va]=na[0];e.HEAPF32[va+1]=na[1];va+=2;}r._shadowColorsPtr=E(U).be;r._shadowOffsetsPtr=ka;r._shadowBlurRadiiPtr=v(ca,"HEAPF32");}else r._shadowLen=0,r._shadowColorsPtr=W,r._shadowOffsetsPtr=W,r._shadowBlurRadiiPtr=W;Array.isArray(r.fontFeatures)&&r.fontFeatures.length?(D=r.fontFeatures,U=D.map(function(G){return G.name}),
7625
- ca=D.map(function(G){return G.value}),r._fontFeatureLen=D.length,r._fontFeatureNamesPtr=t(U),r._fontFeatureValuesPtr=v(ca,"HEAPU32")):(r._fontFeatureLen=0,r._fontFeatureNamesPtr=W,r._fontFeatureValuesPtr=W);Array.isArray(r.fontVariations)&&r.fontVariations.length?(D=r.fontVariations,U=D.map(function(G){return G.axis}),ca=D.map(function(G){return G.value}),r._fontVariationLen=D.length,r._fontVariationAxesPtr=t(U),r._fontVariationValuesPtr=v(ca,"HEAPF32")):(r._fontVariationLen=0,r._fontVariationAxesPtr=
7626
- W,r._fontVariationValuesPtr=W);}function J(r){e._free(r._fontFamiliesPtr);e._free(r._shadowColorsPtr);e._free(r._shadowOffsetsPtr);e._free(r._shadowBlurRadiiPtr);e._free(r._fontFeatureNamesPtr);e._free(r._fontFeatureValuesPtr);e._free(r._fontVariationAxesPtr);e._free(r._fontVariationValuesPtr);}e.Paragraph.prototype.getRectsForRange=function(r,D,U,ca){r=this._getRectsForRange(r,D,U,ca);return g(r)};e.Paragraph.prototype.getRectsForPlaceholders=function(){var r=this._getRectsForPlaceholders();return g(r)};
7627
- e.Paragraph.prototype.getGlyphInfoAt=function(r){return d(this._getGlyphInfoAt(r))};e.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(r,D){return d(this._getClosestGlyphInfoAtCoordinate(r,D))};e.TypefaceFontProvider.prototype.registerFont=function(r,D){r=e.Typeface.MakeFreeTypeFaceFromData(r);if(!r)return null;D=x(D);this._registerFont(r,D);};e.ParagraphStyle=function(r){r.disableHinting=r.disableHinting||false;if(r.ellipsis){var D=r.ellipsis;r._ellipsisPtr=x(D);r._ellipsisLen=qa(D)+1;}else r._ellipsisPtr=
7628
- W,r._ellipsisLen=0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.maxLines=r.maxLines||0;r.replaceTabCharacters=r.replaceTabCharacters||false;D=(D=r.strutStyle)||{};D.strutEnabled=D.strutEnabled||false;D.strutEnabled&&Array.isArray(D.fontFamilies)&&D.fontFamilies.length?(D._fontFamiliesPtr=t(D.fontFamilies),D._fontFamiliesLen=D.fontFamilies.length):(D._fontFamiliesPtr=W,D._fontFamiliesLen=0);D.fontStyle=l(D.fontStyle);null==D.fontSize&&(D.fontSize=-1);null==D.heightMultiplier&&(D.heightMultiplier=
7629
- -1);D.halfLeading=D.halfLeading||false;D.leading=D.leading||0;D.forceStrutHeight=D.forceStrutHeight||false;r.strutStyle=D;r.textAlign=r.textAlign||e.TextAlign.Start;r.textDirection=r.textDirection||e.TextDirection.LTR;r.textHeightBehavior=r.textHeightBehavior||e.TextHeightBehavior.All;r.textStyle=e.TextStyle(r.textStyle);r.applyRoundingHack=false!==r.applyRoundingHack;return r};e.TextStyle=function(r){r.color||(r.color=e.BLACK);r.decoration=r.decoration||0;r.decorationThickness=r.decorationThickness||0;r.decorationStyle=
7630
- r.decorationStyle||e.DecorationStyle.Solid;r.textBaseline=r.textBaseline||e.TextBaseline.Alphabetic;null==r.fontSize&&(r.fontSize=-1);r.letterSpacing=r.letterSpacing||0;r.wordSpacing=r.wordSpacing||0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.halfLeading=r.halfLeading||false;r.fontStyle=l(r.fontStyle);return r};var P={},O=e._malloc(16),Y=e._malloc(16),aa=e._malloc(16);e.ParagraphBuilder.Make=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._Make(r,D);J(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontProvider=
7631
- function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontProvider(r,D);J(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontCollection=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontCollection(r,D);J(r.textStyle);return D};e.ParagraphBuilder.ShapeText=function(r,D,U){let ca=0;for(const ka of D)ca+=ka.length;if(ca!==r.length)throw "Accumulated block lengths must equal text.length";return e.ParagraphBuilder._ShapeText(r,D,U)};e.ParagraphBuilder.prototype.pushStyle=function(r){C(r);
7632
- this._pushStyle(r);J(r);};e.ParagraphBuilder.prototype.pushPaintStyle=function(r,D,U){C(r);this._pushPaintStyle(r,D,U);J(r);};e.ParagraphBuilder.prototype.addPlaceholder=function(r,D,U,ca,ka){U=U||e.PlaceholderAlignment.Baseline;ca=ca||e.TextBaseline.Alphabetic;this._addPlaceholder(r||0,D||0,U,ca,ka||0);};e.ParagraphBuilder.prototype.setWordsUtf8=function(r){var D=v(r,"HEAPU32");this._setWordsUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setWordsUtf16=function(r){var D=v(r,"HEAPU32");this._setWordsUtf16(D,
7633
- r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf16(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setLineBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf16=function(r){var D=v(r,
7634
- "HEAPU32");this._setLineBreaksUtf16(D,r&&r.length||0);p(D,r);};});})(w);a.Td=a.Td||[];a.Td.push(function(){a.Path.prototype.op=function(e,d){return this._op(e,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?this:null};});a.Td=a.Td||[];a.Td.push(function(){a.Canvas.prototype.drawText=function(e,d,g,l,t){var x=qa(e),C=a._malloc(x+1);ra(e,K,C,x+1);this._drawSimpleText(C,x,d,g,t,l);a._free(C);};a.Canvas.prototype.drawGlyphs=function(e,d,g,l,t,x){if(!(2*e.length<=d.length))throw "Not enough positions for the array of gyphs";
7635
- a.Md(this.Kd);const C=v(e,"HEAPU16"),J=v(d,"HEAPF32");this._drawGlyphs(e.length,C,J,g,l,t,x);p(J,d);p(C,e);};a.Font.prototype.getGlyphBounds=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(16*e.length);this._getGlyphWidthBounds(l,e.length,W,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.Font.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var l=qa(e)+1,t=a._malloc(l);ra(e,K,t,l);e=a._malloc(2*
7636
- d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.Font.prototype.getGlyphIntercepts=function(e,d,g,l){var t=v(e,"HEAPU16"),x=v(d,"HEAPF32");return this._getGlyphIntercepts(t,e.length,!(e&&e._ck),x,d.length,!(d&&d._ck),g,l)};a.Font.prototype.getGlyphWidths=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(4*e.length);this._getGlyphWidthBounds(l,e.length,t,W,
7637
- d||null);d=new Float32Array(a.HEAPU8.buffer,t,e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.FontMgr.FromData=function(){if(!arguments.length)return null;var e=arguments;1===e.length&&Array.isArray(e[0])&&(e=arguments[0]);if(!e.length)return null;for(var d=[],g=[],l=0;l<e.length;l++){var t=new Uint8Array(e[l]),x=v(t,"HEAPU8");d.push(x);g.push(t.byteLength);}d=v(d,"HEAPU32");g=v(g,"HEAPU32");e=a.FontMgr._fromData(d,g,e.length);a._free(d);a._free(g);
7638
- return e};a.Typeface.MakeFreeTypeFaceFromData=function(e){e=new Uint8Array(e);var d=v(e,"HEAPU8");return (e=a.Typeface._MakeFreeTypeFaceFromData(d,e.byteLength))?e:null};a.Typeface.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var l=qa(e)+1,t=a._malloc(l);ra(e,K,t,l);e=a._malloc(2*d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.TextBlob.MakeOnPath=
7639
- function(e,d,g,l){if(e&&e.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(e,g);l||(l=0);var t=g.getGlyphIDs(e);t=g.getGlyphWidths(t);var x=[];d=new a.ContourMeasureIter(d,false,1);for(var C=d.next(),J=new Float32Array(4),P=0;P<e.length&&C;P++){var O=t[P];l+=O/2;if(l>C.length()){C.delete();C=d.next();if(!C){e=e.substring(0,P);break}l=O/2;}C.getPosTan(l,J);var Y=J[2],aa=J[3];x.push(Y,aa,J[0]-O/2*Y,J[1]-O/2*aa);l+=O/2;}e=this.MakeFromRSXform(e,x,g);C&&C.delete();d.delete();return e}};
7640
- a.TextBlob.MakeFromRSXform=function(e,d,g){var l=qa(e)+1,t=a._malloc(l);ra(e,K,t,l);e=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXform(t,l-1,e,g);a._free(t);return g?g:null};a.TextBlob.MakeFromRSXformGlyphs=function(e,d,g){var l=v(e,"HEAPU16");d=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXformGlyphs(l,2*e.length,d,g);p(l,e);return g?g:null};a.TextBlob.MakeFromGlyphs=function(e,d){var g=v(e,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(g,2*e.length,d);p(g,e);return d?d:null};a.TextBlob.MakeFromText=function(e,d){var g=
7641
- qa(e)+1,l=a._malloc(g);ra(e,K,l,g);e=a.TextBlob._MakeFromText(l,g-1,d);a._free(l);return e?e:null};a.MallocGlyphIDs=function(e){return a.Malloc(Uint16Array,e)};});a.Td=a.Td||[];a.Td.push(function(){a.MakePicture=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._MakePicture(d,e.byteLength))?e:null};});a.Td=a.Td||[];a.Td.push(function(){a.RuntimeEffect.Make=function(e,d){return a.RuntimeEffect._Make(e,{onError:d||function(g){console.log("RuntimeEffect error",
7642
- g);}})};a.RuntimeEffect.MakeForBlender=function(e,d){return a.RuntimeEffect._MakeForBlender(e,{onError:d||function(g){console.log("RuntimeEffect error",g);}})};a.RuntimeEffect.prototype.makeShader=function(e,d){var g=!e._ck,l=v(e,"HEAPF32");d=H(d);return this._makeShader(l,4*e.length,g,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(e,d,g){var l=!e._ck,t=v(e,"HEAPF32");g=H(g);for(var x=[],C=0;C<d.length;C++)x.push(d[C].Jd.Rd);d=v(x,"HEAPU32");return this._makeShaderWithChildren(t,4*e.length,
7643
- l,d,x.length,g)};a.RuntimeEffect.prototype.makeBlender=function(e){var d=!e._ck,g=v(e,"HEAPF32");return this._makeBlender(g,4*e.length,d)};});(function(){function e(G){for(var k=0;k<G.length;k++)if(void 0!==G[k]&&!Number.isFinite(G[k]))return false;return true}function d(G){var k=a.getColorComponents(G);G=k[0];var q=k[1],z=k[2];k=k[3];if(1===k)return G=G.toString(16).toLowerCase(),q=q.toString(16).toLowerCase(),z=z.toString(16).toLowerCase(),G=1===G.length?"0"+G:G,q=1===q.length?"0"+q:q,z=1===z.length?"0"+
7644
- z:z,"#"+G+q+z;k=0===k||1===k?k:k.toFixed(8);return "rgba("+G+", "+q+", "+z+", "+k+")"}function g(G){return a.parseColorString(G,va)}function l(G){G=wa.exec(G);if(!G)return null;var k=parseFloat(G[4]),q=16;switch(G[5]){case "em":case "rem":q=16*k;break;case "pt":q=4*k/3;break;case "px":q=k;break;case "pc":q=16*k;break;case "in":q=96*k;break;case "cm":q=96*k/2.54;break;case "mm":q=96/25.4*k;break;case "q":q=96/25.4/4*k;break;case "%":q=16/75*k;}return {style:G[1],variant:G[2],weight:G[3],sizePx:q,family:G[6].trim()}}
7645
- function t(G){this.Ld=G;this.Od=new a.Paint;this.Od.setAntiAlias(true);this.Od.setStrokeMiter(10);this.Od.setStrokeCap(a.StrokeCap.Butt);this.Od.setStrokeJoin(a.StrokeJoin.Miter);this.Re="10px monospace";this.me=new a.Font(null,10);this.me.setSubpixel(true);this.ae=this.ge=a.BLACK;this.ve=0;this.Je=a.TRANSPARENT;this.xe=this.we=0;this.Ke=this.ie=1;this.Ie=0;this.ue=[];this.Nd=a.BlendMode.SrcOver;this.Od.setStrokeWidth(this.Ke);this.Od.setBlendMode(this.Nd);this.Qd=new a.Path;this.Sd=a.Matrix.identity();
7646
- this.lf=[];this.Be=[];this.le=function(){this.Qd.delete();this.Od.delete();this.me.delete();this.Be.forEach(function(k){k.le();});};Object.defineProperty(this,"currentTransform",{enumerable:true,get:function(){return {a:this.Sd[0],c:this.Sd[1],e:this.Sd[2],b:this.Sd[3],d:this.Sd[4],f:this.Sd[5]}},set:function(k){k.a&&this.setTransform(k.a,k.b,k.c,k.d,k.e,k.f);}});Object.defineProperty(this,"fillStyle",{enumerable:true,get:function(){return f(this.ae)?d(this.ae):this.ae},set:function(k){"string"===typeof k?
7647
- this.ae=g(k):k.te&&(this.ae=k);}});Object.defineProperty(this,"font",{enumerable:true,get:function(){return this.Re},set:function(k){var q=l(k),z=q.family;q.typeface=na[z]?na[z][(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal")]||na[z]["*"]:null;q&&(this.me.setSize(q.sizePx),this.me.setTypeface(q.typeface),this.Re=k);}});Object.defineProperty(this,"globalAlpha",{enumerable:true,get:function(){return this.ie},set:function(k){!isFinite(k)||0>k||1<k||(this.ie=k);}});Object.defineProperty(this,
7648
- "globalCompositeOperation",{enumerable:true,get:function(){switch(this.Nd){case a.BlendMode.SrcOver:return "source-over";case a.BlendMode.DstOver:return "destination-over";case a.BlendMode.Src:return "copy";case a.BlendMode.Dst:return "destination";case a.BlendMode.Clear:return "clear";case a.BlendMode.SrcIn:return "source-in";case a.BlendMode.DstIn:return "destination-in";case a.BlendMode.SrcOut:return "source-out";case a.BlendMode.DstOut:return "destination-out";case a.BlendMode.SrcATop:return "source-atop";
7649
- case a.BlendMode.DstATop:return "destination-atop";case a.BlendMode.Xor:return "xor";case a.BlendMode.Plus:return "lighter";case a.BlendMode.Multiply:return "multiply";case a.BlendMode.Screen:return "screen";case a.BlendMode.Overlay:return "overlay";case a.BlendMode.Darken:return "darken";case a.BlendMode.Lighten:return "lighten";case a.BlendMode.ColorDodge:return "color-dodge";case a.BlendMode.ColorBurn:return "color-burn";case a.BlendMode.HardLight:return "hard-light";case a.BlendMode.SoftLight:return "soft-light";
7650
- case a.BlendMode.Difference:return "difference";case a.BlendMode.Exclusion:return "exclusion";case a.BlendMode.Hue:return "hue";case a.BlendMode.Saturation:return "saturation";case a.BlendMode.Color:return "color";case a.BlendMode.Luminosity:return "luminosity"}},set:function(k){switch(k){case "source-over":this.Nd=a.BlendMode.SrcOver;break;case "destination-over":this.Nd=a.BlendMode.DstOver;break;case "copy":this.Nd=a.BlendMode.Src;break;case "destination":this.Nd=a.BlendMode.Dst;break;case "clear":this.Nd=
7651
- a.BlendMode.Clear;break;case "source-in":this.Nd=a.BlendMode.SrcIn;break;case "destination-in":this.Nd=a.BlendMode.DstIn;break;case "source-out":this.Nd=a.BlendMode.SrcOut;break;case "destination-out":this.Nd=a.BlendMode.DstOut;break;case "source-atop":this.Nd=a.BlendMode.SrcATop;break;case "destination-atop":this.Nd=a.BlendMode.DstATop;break;case "xor":this.Nd=a.BlendMode.Xor;break;case "lighter":this.Nd=a.BlendMode.Plus;break;case "plus-lighter":this.Nd=a.BlendMode.Plus;break;case "plus-darker":throw "plus-darker is not supported";
7652
- case "multiply":this.Nd=a.BlendMode.Multiply;break;case "screen":this.Nd=a.BlendMode.Screen;break;case "overlay":this.Nd=a.BlendMode.Overlay;break;case "darken":this.Nd=a.BlendMode.Darken;break;case "lighten":this.Nd=a.BlendMode.Lighten;break;case "color-dodge":this.Nd=a.BlendMode.ColorDodge;break;case "color-burn":this.Nd=a.BlendMode.ColorBurn;break;case "hard-light":this.Nd=a.BlendMode.HardLight;break;case "soft-light":this.Nd=a.BlendMode.SoftLight;break;case "difference":this.Nd=a.BlendMode.Difference;
7653
- break;case "exclusion":this.Nd=a.BlendMode.Exclusion;break;case "hue":this.Nd=a.BlendMode.Hue;break;case "saturation":this.Nd=a.BlendMode.Saturation;break;case "color":this.Nd=a.BlendMode.Color;break;case "luminosity":this.Nd=a.BlendMode.Luminosity;break;default:return}this.Od.setBlendMode(this.Nd);}});Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:true,get:function(){return true},set:function(){}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:true,get:function(){return "high"},
7654
- set:function(){}});Object.defineProperty(this,"lineCap",{enumerable:true,get:function(){switch(this.Od.getStrokeCap()){case a.StrokeCap.Butt:return "butt";case a.StrokeCap.Round:return "round";case a.StrokeCap.Square:return "square"}},set:function(k){switch(k){case "butt":this.Od.setStrokeCap(a.StrokeCap.Butt);break;case "round":this.Od.setStrokeCap(a.StrokeCap.Round);break;case "square":this.Od.setStrokeCap(a.StrokeCap.Square);}}});Object.defineProperty(this,"lineDashOffset",{enumerable:true,get:function(){return this.Ie},
7655
- set:function(k){isFinite(k)&&(this.Ie=k);}});Object.defineProperty(this,"lineJoin",{enumerable:true,get:function(){switch(this.Od.getStrokeJoin()){case a.StrokeJoin.Miter:return "miter";case a.StrokeJoin.Round:return "round";case a.StrokeJoin.Bevel:return "bevel"}},set:function(k){switch(k){case "miter":this.Od.setStrokeJoin(a.StrokeJoin.Miter);break;case "round":this.Od.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.Od.setStrokeJoin(a.StrokeJoin.Bevel);}}});Object.defineProperty(this,"lineWidth",
7656
- {enumerable:true,get:function(){return this.Od.getStrokeWidth()},set:function(k){0>=k||!k||(this.Ke=k,this.Od.setStrokeWidth(k));}});Object.defineProperty(this,"miterLimit",{enumerable:true,get:function(){return this.Od.getStrokeMiter()},set:function(k){0>=k||!k||this.Od.setStrokeMiter(k);}});Object.defineProperty(this,"shadowBlur",{enumerable:true,get:function(){return this.ve},set:function(k){0>k||!isFinite(k)||(this.ve=k);}});Object.defineProperty(this,"shadowColor",{enumerable:true,get:function(){return d(this.Je)},
7657
- set:function(k){this.Je=g(k);}});Object.defineProperty(this,"shadowOffsetX",{enumerable:true,get:function(){return this.we},set:function(k){isFinite(k)&&(this.we=k);}});Object.defineProperty(this,"shadowOffsetY",{enumerable:true,get:function(){return this.xe},set:function(k){isFinite(k)&&(this.xe=k);}});Object.defineProperty(this,"strokeStyle",{enumerable:true,get:function(){return d(this.ge)},set:function(k){"string"===typeof k?this.ge=g(k):k.te&&(this.ge=k);}});this.arc=function(k,q,z,B,F,I){r(this.Qd,k,
7658
- q,z,z,0,B,F,I);};this.arcTo=function(k,q,z,B,F){O(this.Qd,k,q,z,B,F);};this.beginPath=function(){this.Qd.delete();this.Qd=new a.Path;};this.bezierCurveTo=function(k,q,z,B,F,I){var M=this.Qd;e([k,q,z,B,F,I])&&(M.isEmpty()&&M.moveTo(k,q),M.cubicTo(k,q,z,B,F,I));};this.clearRect=function(k,q,z,B){this.Od.setStyle(a.PaintStyle.Fill);this.Od.setBlendMode(a.BlendMode.Clear);this.Ld.drawRect(a.XYWHRect(k,q,z,B),this.Od);this.Od.setBlendMode(this.Nd);};this.clip=function(k,q){"string"===typeof k?(q=k,k=this.Qd):
7659
- k&&k.af&&(k=k.Ud);k||(k=this.Qd);k=k.copy();q&&"evenodd"===q.toLowerCase()?k.setFillType(a.FillType.EvenOdd):k.setFillType(a.FillType.Winding);this.Ld.clipPath(k,a.ClipOp.Intersect,true);k.delete();};this.closePath=function(){Y(this.Qd);};this.createImageData=function(){if(1===arguments.length){var k=arguments[0];return new J(new Uint8ClampedArray(4*k.width*k.height),k.width,k.height)}if(2===arguments.length){k=arguments[0];var q=arguments[1];return new J(new Uint8ClampedArray(4*k*q),k,q)}throw "createImageData expects 1 or 2 arguments, got "+
7660
- arguments.length;};this.createLinearGradient=function(k,q,z,B){if(e(arguments)){var F=new P(k,q,z,B);this.Be.push(F);return F}};this.createPattern=function(k,q){k=new ca(k,q);this.Be.push(k);return k};this.createRadialGradient=function(k,q,z,B,F,I){if(e(arguments)){var M=new ka(k,q,z,B,F,I);this.Be.push(M);return M}};this.drawImage=function(k){k instanceof C&&(k=k.tf());var q=this.Qe();if(3===arguments.length||5===arguments.length)var z=a.XYWHRect(arguments[1],arguments[2],arguments[3]||k.width(),
7661
- arguments[4]||k.height()),B=a.XYWHRect(0,0,k.width(),k.height());else if(9===arguments.length)z=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),B=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw "invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.Ld.drawImageRect(k,B,z,q,false);q.dispose();};this.ellipse=function(k,q,z,B,F,I,M,da){r(this.Qd,k,q,z,B,F,I,M,da);};this.Qe=function(){var k=this.Od.copy();k.setStyle(a.PaintStyle.Fill);
7662
- if(f(this.ae)){var q=a.multiplyByAlpha(this.ae,this.ie);k.setColor(q);}else q=this.ae.te(this.Sd),k.setColor(a.Color(0,0,0,this.ie)),k.setShader(q);k.dispose=function(){this.delete();};return k};this.fill=function(k,q){"string"===typeof k?(q=k,k=this.Qd):k&&k.af&&(k=k.Ud);if("evenodd"===q)this.Qd.setFillType(a.FillType.EvenOdd);else {if("nonzero"!==q&&q)throw "invalid fill rule";this.Qd.setFillType(a.FillType.Winding);}k||(k=this.Qd);q=this.Qe();var z=this.ye(q);z&&(this.Ld.save(),this.re(),this.Ld.drawPath(k,
7663
- z),this.Ld.restore(),z.dispose());this.Ld.drawPath(k,q);q.dispose();};this.fillRect=function(k,q,z,B){var F=this.Qe(),I=this.ye(F);I&&(this.Ld.save(),this.re(),this.Ld.drawRect(a.XYWHRect(k,q,z,B),I),this.Ld.restore(),I.dispose());this.Ld.drawRect(a.XYWHRect(k,q,z,B),F);F.dispose();};this.fillText=function(k,q,z){var B=this.Qe();k=a.TextBlob.MakeFromText(k,this.me);var F=this.ye(B);F&&(this.Ld.save(),this.re(),this.Ld.drawTextBlob(k,q,z,F),this.Ld.restore(),F.dispose());this.Ld.drawTextBlob(k,q,z,B);
7664
- k.delete();B.dispose();};this.getImageData=function(k,q,z,B){return (k=this.Ld.readPixels(k,q,{width:z,height:B,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB}))?new J(new Uint8ClampedArray(k.buffer),z,B):null};this.getLineDash=function(){return this.ue.slice()};this.mf=function(k){var q=a.Matrix.invert(this.Sd);a.Matrix.mapPoints(q,k);return k};this.isPointInPath=function(k,q,z){var B=arguments;if(3===B.length)var F=this.Qd;else if(4===B.length)F=B[0],k=
7665
- B[1],q=B[2],z=B[3];else throw "invalid arg count, need 3 or 4, got "+B.length;if(!isFinite(k)||!isFinite(q))return false;z=z||"nonzero";if("nonzero"!==z&&"evenodd"!==z)return false;B=this.mf([k,q]);k=B[0];q=B[1];F.setFillType("nonzero"===z?a.FillType.Winding:a.FillType.EvenOdd);return F.contains(k,q)};this.isPointInStroke=function(k,q){var z=arguments;if(2===z.length)var B=this.Qd;else if(3===z.length)B=z[0],k=z[1],q=z[2];else throw "invalid arg count, need 2 or 3, got "+z.length;if(!isFinite(k)||!isFinite(q))return false;
7666
- z=this.mf([k,q]);k=z[0];q=z[1];B=B.copy();B.setFillType(a.FillType.Winding);B.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.Od.getStrokeCap(),join:this.Od.getStrokeJoin(),precision:.3});z=B.contains(k,q);B.delete();return z};this.lineTo=function(k,q){D(this.Qd,k,q);};this.measureText=function(k){k=this.me.getGlyphIDs(k);k=this.me.getGlyphWidths(k);let q=0;for(const z of k)q+=z;return {width:q}};this.moveTo=function(k,q){var z=this.Qd;e([k,q])&&z.moveTo(k,q);};this.putImageData=function(k,
7667
- q,z,B,F,I,M){if(e([q,z,B,F,I,M]))if(void 0===B)this.Ld.writePixels(k.data,k.width,k.height,q,z);else if(B=B||0,F=F||0,I=I||k.width,M=M||k.height,0>I&&(B+=I,I=Math.abs(I)),0>M&&(F+=M,M=Math.abs(M)),0>B&&(I+=B,B=0),0>F&&(M+=F,F=0),!(0>=I||0>=M)){k=a.MakeImage({width:k.width,height:k.height,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},k.data,4*k.width);var da=a.XYWHRect(B,F,I,M);q=a.XYWHRect(q+B,z+F,I,M);z=a.Matrix.invert(this.Sd);this.Ld.save();this.Ld.concat(z);
7668
- this.Ld.drawImageRect(k,da,q,null,false);this.Ld.restore();k.delete();}};this.quadraticCurveTo=function(k,q,z,B){var F=this.Qd;e([k,q,z,B])&&(F.isEmpty()&&F.moveTo(k,q),F.quadTo(k,q,z,B));};this.rect=function(k,q,z,B){var F=this.Qd;k=a.XYWHRect(k,q,z,B);e(k)&&F.addRect(k);};this.resetTransform=function(){this.Qd.transform(this.Sd);var k=a.Matrix.invert(this.Sd);this.Ld.concat(k);this.Sd=this.Ld.getTotalMatrix();};this.restore=function(){var k=this.lf.pop();if(k){var q=a.Matrix.multiply(this.Sd,a.Matrix.invert(k.Jf));
7669
- this.Qd.transform(q);this.Od.delete();this.Od=k.ag;this.ue=k.Zf;this.Ke=k.mg;this.ge=k.lg;this.ae=k.fs;this.we=k.jg;this.xe=k.kg;this.ve=k.sb;this.Je=k.ig;this.ie=k.ga;this.Nd=k.Qf;this.Ie=k.$f;this.Re=k.Pf;this.Ld.restore();this.Sd=this.Ld.getTotalMatrix();}};this.rotate=function(k){if(isFinite(k)){var q=a.Matrix.rotated(-k);this.Qd.transform(q);this.Ld.rotate(k/Math.PI*180,0,0);this.Sd=this.Ld.getTotalMatrix();}};this.save=function(){if(this.ae.se){var k=this.ae.se();this.Be.push(k);}else k=this.ae;
7670
- if(this.ge.se){var q=this.ge.se();this.Be.push(q);}else q=this.ge;this.lf.push({Jf:this.Sd.slice(),Zf:this.ue.slice(),mg:this.Ke,lg:q,fs:k,jg:this.we,kg:this.xe,sb:this.ve,ig:this.Je,ga:this.ie,$f:this.Ie,Qf:this.Nd,ag:this.Od.copy(),Pf:this.Re});this.Ld.save();};this.scale=function(k,q){if(e(arguments)){var z=a.Matrix.scaled(1/k,1/q);this.Qd.transform(z);this.Ld.scale(k,q);this.Sd=this.Ld.getTotalMatrix();}};this.setLineDash=function(k){for(var q=0;q<k.length;q++)if(!isFinite(k[q])||0>k[q])return;1===
7671
- k.length%2&&Array.prototype.push.apply(k,k);this.ue=k;};this.setTransform=function(k,q,z,B,F,I){e(arguments)&&(this.resetTransform(),this.transform(k,q,z,B,F,I));};this.re=function(){var k=a.Matrix.invert(this.Sd);this.Ld.concat(k);this.Ld.concat(a.Matrix.translated(this.we,this.xe));this.Ld.concat(this.Sd);};this.ye=function(k){var q=a.multiplyByAlpha(this.Je,this.ie);if(!a.getColorComponents(q)[3]||!(this.ve||this.xe||this.we))return null;k=k.copy();k.setColor(q);var z=a.MaskFilter.MakeBlur(a.BlurStyle.Normal,
7672
- this.ve/2,false);k.setMaskFilter(z);k.dispose=function(){z.delete();this.delete();};return k};this.cf=function(){var k=this.Od.copy();k.setStyle(a.PaintStyle.Stroke);if(f(this.ge)){var q=a.multiplyByAlpha(this.ge,this.ie);k.setColor(q);}else q=this.ge.te(this.Sd),k.setColor(a.Color(0,0,0,this.ie)),k.setShader(q);k.setStrokeWidth(this.Ke);if(this.ue.length){var z=a.PathEffect.MakeDash(this.ue,this.Ie);k.setPathEffect(z);}k.dispose=function(){z&&z.delete();this.delete();};return k};this.stroke=function(k){k=
7673
- k?k.Ud:this.Qd;var q=this.cf(),z=this.ye(q);z&&(this.Ld.save(),this.re(),this.Ld.drawPath(k,z),this.Ld.restore(),z.dispose());this.Ld.drawPath(k,q);q.dispose();};this.strokeRect=function(k,q,z,B){var F=this.cf(),I=this.ye(F);I&&(this.Ld.save(),this.re(),this.Ld.drawRect(a.XYWHRect(k,q,z,B),I),this.Ld.restore(),I.dispose());this.Ld.drawRect(a.XYWHRect(k,q,z,B),F);F.dispose();};this.strokeText=function(k,q,z){var B=this.cf();k=a.TextBlob.MakeFromText(k,this.me);var F=this.ye(B);F&&(this.Ld.save(),this.re(),
7674
- this.Ld.drawTextBlob(k,q,z,F),this.Ld.restore(),F.dispose());this.Ld.drawTextBlob(k,q,z,B);k.delete();B.dispose();};this.translate=function(k,q){if(e(arguments)){var z=a.Matrix.translated(-k,-q);this.Qd.transform(z);this.Ld.translate(k,q);this.Sd=this.Ld.getTotalMatrix();}};this.transform=function(k,q,z,B,F,I){k=[k,z,F,q,B,I,0,0,1];q=a.Matrix.invert(k);this.Qd.transform(q);this.Ld.concat(k);this.Sd=this.Ld.getTotalMatrix();};this.addHitRegion=function(){};this.clearHitRegions=function(){};this.drawFocusIfNeeded=
7675
- function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:false});}function x(G){this.df=G;this.Kd=new t(G.getCanvas());this.Se=[];this.decodeImage=function(k){k=a.MakeImageFromEncoded(k);if(!k)throw "Invalid input";this.Se.push(k);return new C(k)};this.loadFont=function(k,q){k=a.Typeface.MakeFreeTypeFaceFromData(k);if(!k)return null;this.Se.push(k);var z=(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal");
7676
- q=q.family;na[q]||(na[q]={"*":k});na[q][z]=k;};this.makePath2D=function(k){k=new U(k);this.Se.push(k.Ud);return k};this.getContext=function(k){return "2d"===k?this.Kd:null};this.toDataURL=function(k,q){this.df.flush();var z=this.df.makeImageSnapshot();if(z){k=k||"image/png";var B=a.ImageFormat.PNG;"image/jpeg"===k&&(B=a.ImageFormat.JPEG);if(q=z.encodeToBytes(B,q||.92)){z.delete();k="data:"+k+";base64,";if("undefined"!==typeof Buffer)q=Buffer.from(q).toString("base64");else {z=0;B=q.length;for(var F=
7677
- "",I;z<B;)I=q.slice(z,Math.min(z+32768,B)),F+=String.fromCharCode.apply(null,I),z+=32768;q=btoa(F);}return k+q}}};this.dispose=function(){this.Kd.le();this.Se.forEach(function(k){k.delete();});this.df.dispose();};}function C(G){this.width=G.width();this.height=G.height();this.naturalWidth=this.width;this.naturalHeight=this.height;this.tf=function(){return G};}function J(G,k,q){if(!k||0===q)throw "invalid dimensions, width and height must be non-zero";if(G.length%4)throw "arr must be a multiple of 4";q=q||
7678
- G.length/(4*k);Object.defineProperty(this,"data",{value:G,writable:false});Object.defineProperty(this,"height",{value:q,writable:false});Object.defineProperty(this,"width",{value:k,writable:false});}function P(G,k,q,z){this.Wd=null;this.ce=[];this.Zd=[];this.addColorStop=function(B,F){if(0>B||1<B||!isFinite(B))throw "offset must be between 0 and 1 inclusively";F=g(F);var I=this.Zd.indexOf(B);if(-1!==I)this.ce[I]=F;else {for(I=0;I<this.Zd.length&&!(this.Zd[I]>B);I++);this.Zd.splice(I,0,B);this.ce.splice(I,0,F);}};
7679
- this.se=function(){var B=new P(G,k,q,z);B.ce=this.ce.slice();B.Zd=this.Zd.slice();return B};this.le=function(){this.Wd&&(this.Wd.delete(),this.Wd=null);};this.te=function(B){var F=[G,k,q,z];a.Matrix.mapPoints(B,F);B=F[0];var I=F[1],M=F[2];F=F[3];this.le();return this.Wd=a.Shader.MakeLinearGradient([B,I],[M,F],this.ce,this.Zd,a.TileMode.Clamp)};}function O(G,k,q,z,B,F){if(e([k,q,z,B,F])){if(0>F)throw "radii cannot be negative";G.isEmpty()&&G.moveTo(k,q);G.arcToTangent(k,q,z,B,F);}}function Y(G){if(!G.isEmpty()){var k=
7680
- G.getBounds();(k[3]-k[1]||k[2]-k[0])&&G.close();}}function aa(G,k,q,z,B,F,I){I=(I-F)/Math.PI*180;F=F/Math.PI*180;k=a.LTRBRect(k-z,q-B,k+z,q+B);1E-5>Math.abs(Math.abs(I)-360)?(q=I/2,G.arcToOval(k,F,q,false),G.arcToOval(k,F+q,q,false)):G.arcToOval(k,F,I,false);}function r(G,k,q,z,B,F,I,M,da){if(e([k,q,z,B,F,I,M])){if(0>z||0>B)throw "radii cannot be negative";var ea=2*Math.PI,Ia=I%ea;0>Ia&&(Ia+=ea);var ab=Ia-I;I=Ia;M+=ab;!da&&M-I>=ea?M=I+ea:da&&I-M>=ea?M=I-ea:!da&&I>M?M=I+(ea-(I-M)%ea):da&&I<M&&(M=I-(ea-(M-I)%ea));
7681
- F?(da=a.Matrix.rotated(F,k,q),F=a.Matrix.rotated(-F,k,q),G.transform(F),aa(G,k,q,z,B,I,M),G.transform(da)):aa(G,k,q,z,B,I,M);}}function D(G,k,q){e([k,q])&&(G.isEmpty()&&G.moveTo(k,q),G.lineTo(k,q));}function U(G){this.Ud=null;this.Ud="string"===typeof G?a.Path.MakeFromSVGString(G):G&&G.af?G.Ud.copy():new a.Path;this.af=function(){return this.Ud};this.addPath=function(k,q){q||(q={a:1,c:0,e:0,b:0,d:1,f:0});this.Ud.addPath(k.Ud,[q.a,q.c,q.e,q.b,q.d,q.f]);};this.arc=function(k,q,z,B,F,I){r(this.Ud,k,q,z,
7682
- z,0,B,F,I);};this.arcTo=function(k,q,z,B,F){O(this.Ud,k,q,z,B,F);};this.bezierCurveTo=function(k,q,z,B,F,I){var M=this.Ud;e([k,q,z,B,F,I])&&(M.isEmpty()&&M.moveTo(k,q),M.cubicTo(k,q,z,B,F,I));};this.closePath=function(){Y(this.Ud);};this.ellipse=function(k,q,z,B,F,I,M,da){r(this.Ud,k,q,z,B,F,I,M,da);};this.lineTo=function(k,q){D(this.Ud,k,q);};this.moveTo=function(k,q){var z=this.Ud;e([k,q])&&z.moveTo(k,q);};this.quadraticCurveTo=function(k,q,z,B){var F=this.Ud;e([k,q,z,B])&&(F.isEmpty()&&F.moveTo(k,q),
7683
- F.quadTo(k,q,z,B));};this.rect=function(k,q,z,B){var F=this.Ud;k=a.XYWHRect(k,q,z,B);e(k)&&F.addRect(k);};}function ca(G,k){this.Wd=null;G instanceof C&&(G=G.tf());this.Ef=G;this._transform=a.Matrix.identity();""===k&&(k="repeat");switch(k){case "repeat-x":this.ze=a.TileMode.Repeat;this.Ae=a.TileMode.Decal;break;case "repeat-y":this.ze=a.TileMode.Decal;this.Ae=a.TileMode.Repeat;break;case "repeat":this.Ae=this.ze=a.TileMode.Repeat;break;case "no-repeat":this.Ae=this.ze=a.TileMode.Decal;break;default:throw "invalid repetition mode "+
7684
- k;}this.setTransform=function(q){q=[q.a,q.c,q.e,q.b,q.d,q.f,0,0,1];e(q)&&(this._transform=q);};this.se=function(){var q=new ca;q.ze=this.ze;q.Ae=this.Ae;return q};this.le=function(){this.Wd&&(this.Wd.delete(),this.Wd=null);};this.te=function(){this.le();return this.Wd=this.Ef.makeShaderCubic(this.ze,this.Ae,1/3,1/3,this._transform)};}function ka(G,k,q,z,B,F){this.Wd=null;this.ce=[];this.Zd=[];this.addColorStop=function(I,M){if(0>I||1<I||!isFinite(I))throw "offset must be between 0 and 1 inclusively";
7685
- M=g(M);var da=this.Zd.indexOf(I);if(-1!==da)this.ce[da]=M;else {for(da=0;da<this.Zd.length&&!(this.Zd[da]>I);da++);this.Zd.splice(da,0,I);this.ce.splice(da,0,M);}};this.se=function(){var I=new ka(G,k,q,z,B,F);I.ce=this.ce.slice();I.Zd=this.Zd.slice();return I};this.le=function(){this.Wd&&(this.Wd.delete(),this.Wd=null);};this.te=function(I){var M=[G,k,z,B];a.Matrix.mapPoints(I,M);var da=M[0],ea=M[1],Ia=M[2];M=M[3];var ab=(Math.abs(I[0])+Math.abs(I[4]))/2;I=q*ab;ab*=F;this.le();return this.Wd=a.Shader.MakeTwoPointConicalGradient([da,
7686
- ea],I,[Ia,M],ab,this.ce,this.Zd,a.TileMode.Clamp)};}a._testing={};var va={aliceblue:Float32Array.of(.941,.973,1,1),antiquewhite:Float32Array.of(.98,.922,.843,1),aqua:Float32Array.of(0,1,1,1),aquamarine:Float32Array.of(.498,1,.831,1),azure:Float32Array.of(.941,1,1,1),beige:Float32Array.of(.961,.961,.863,1),bisque:Float32Array.of(1,.894,.769,1),black:Float32Array.of(0,0,0,1),blanchedalmond:Float32Array.of(1,.922,.804,1),blue:Float32Array.of(0,0,1,1),blueviolet:Float32Array.of(.541,.169,.886,1),brown:Float32Array.of(.647,
7687
- .165,.165,1),burlywood:Float32Array.of(.871,.722,.529,1),cadetblue:Float32Array.of(.373,.62,.627,1),chartreuse:Float32Array.of(.498,1,0,1),chocolate:Float32Array.of(.824,.412,.118,1),coral:Float32Array.of(1,.498,.314,1),cornflowerblue:Float32Array.of(.392,.584,.929,1),cornsilk:Float32Array.of(1,.973,.863,1),crimson:Float32Array.of(.863,.078,.235,1),cyan:Float32Array.of(0,1,1,1),darkblue:Float32Array.of(0,0,.545,1),darkcyan:Float32Array.of(0,.545,.545,1),darkgoldenrod:Float32Array.of(.722,.525,.043,
7688
- 1),darkgray:Float32Array.of(.663,.663,.663,1),darkgreen:Float32Array.of(0,.392,0,1),darkgrey:Float32Array.of(.663,.663,.663,1),darkkhaki:Float32Array.of(.741,.718,.42,1),darkmagenta:Float32Array.of(.545,0,.545,1),darkolivegreen:Float32Array.of(.333,.42,.184,1),darkorange:Float32Array.of(1,.549,0,1),darkorchid:Float32Array.of(.6,.196,.8,1),darkred:Float32Array.of(.545,0,0,1),darksalmon:Float32Array.of(.914,.588,.478,1),darkseagreen:Float32Array.of(.561,.737,.561,1),darkslateblue:Float32Array.of(.282,
7689
- .239,.545,1),darkslategray:Float32Array.of(.184,.31,.31,1),darkslategrey:Float32Array.of(.184,.31,.31,1),darkturquoise:Float32Array.of(0,.808,.82,1),darkviolet:Float32Array.of(.58,0,.827,1),deeppink:Float32Array.of(1,.078,.576,1),deepskyblue:Float32Array.of(0,.749,1,1),dimgray:Float32Array.of(.412,.412,.412,1),dimgrey:Float32Array.of(.412,.412,.412,1),dodgerblue:Float32Array.of(.118,.565,1,1),firebrick:Float32Array.of(.698,.133,.133,1),floralwhite:Float32Array.of(1,.98,.941,1),forestgreen:Float32Array.of(.133,
7690
- .545,.133,1),fuchsia:Float32Array.of(1,0,1,1),gainsboro:Float32Array.of(.863,.863,.863,1),ghostwhite:Float32Array.of(.973,.973,1,1),gold:Float32Array.of(1,.843,0,1),goldenrod:Float32Array.of(.855,.647,.125,1),gray:Float32Array.of(.502,.502,.502,1),green:Float32Array.of(0,.502,0,1),greenyellow:Float32Array.of(.678,1,.184,1),grey:Float32Array.of(.502,.502,.502,1),honeydew:Float32Array.of(.941,1,.941,1),hotpink:Float32Array.of(1,.412,.706,1),indianred:Float32Array.of(.804,.361,.361,1),indigo:Float32Array.of(.294,
7691
- 0,.51,1),ivory:Float32Array.of(1,1,.941,1),khaki:Float32Array.of(.941,.902,.549,1),lavender:Float32Array.of(.902,.902,.98,1),lavenderblush:Float32Array.of(1,.941,.961,1),lawngreen:Float32Array.of(.486,.988,0,1),lemonchiffon:Float32Array.of(1,.98,.804,1),lightblue:Float32Array.of(.678,.847,.902,1),lightcoral:Float32Array.of(.941,.502,.502,1),lightcyan:Float32Array.of(.878,1,1,1),lightgoldenrodyellow:Float32Array.of(.98,.98,.824,1),lightgray:Float32Array.of(.827,.827,.827,1),lightgreen:Float32Array.of(.565,
7692
- .933,.565,1),lightgrey:Float32Array.of(.827,.827,.827,1),lightpink:Float32Array.of(1,.714,.757,1),lightsalmon:Float32Array.of(1,.627,.478,1),lightseagreen:Float32Array.of(.125,.698,.667,1),lightskyblue:Float32Array.of(.529,.808,.98,1),lightslategray:Float32Array.of(.467,.533,.6,1),lightslategrey:Float32Array.of(.467,.533,.6,1),lightsteelblue:Float32Array.of(.69,.769,.871,1),lightyellow:Float32Array.of(1,1,.878,1),lime:Float32Array.of(0,1,0,1),limegreen:Float32Array.of(.196,.804,.196,1),linen:Float32Array.of(.98,
7693
- .941,.902,1),magenta:Float32Array.of(1,0,1,1),maroon:Float32Array.of(.502,0,0,1),mediumaquamarine:Float32Array.of(.4,.804,.667,1),mediumblue:Float32Array.of(0,0,.804,1),mediumorchid:Float32Array.of(.729,.333,.827,1),mediumpurple:Float32Array.of(.576,.439,.859,1),mediumseagreen:Float32Array.of(.235,.702,.443,1),mediumslateblue:Float32Array.of(.482,.408,.933,1),mediumspringgreen:Float32Array.of(0,.98,.604,1),mediumturquoise:Float32Array.of(.282,.82,.8,1),mediumvioletred:Float32Array.of(.78,.082,.522,
7694
- 1),midnightblue:Float32Array.of(.098,.098,.439,1),mintcream:Float32Array.of(.961,1,.98,1),mistyrose:Float32Array.of(1,.894,.882,1),moccasin:Float32Array.of(1,.894,.71,1),navajowhite:Float32Array.of(1,.871,.678,1),navy:Float32Array.of(0,0,.502,1),oldlace:Float32Array.of(.992,.961,.902,1),olive:Float32Array.of(.502,.502,0,1),olivedrab:Float32Array.of(.42,.557,.137,1),orange:Float32Array.of(1,.647,0,1),orangered:Float32Array.of(1,.271,0,1),orchid:Float32Array.of(.855,.439,.839,1),palegoldenrod:Float32Array.of(.933,
7695
- .91,.667,1),palegreen:Float32Array.of(.596,.984,.596,1),paleturquoise:Float32Array.of(.686,.933,.933,1),palevioletred:Float32Array.of(.859,.439,.576,1),papayawhip:Float32Array.of(1,.937,.835,1),peachpuff:Float32Array.of(1,.855,.725,1),peru:Float32Array.of(.804,.522,.247,1),pink:Float32Array.of(1,.753,.796,1),plum:Float32Array.of(.867,.627,.867,1),powderblue:Float32Array.of(.69,.878,.902,1),purple:Float32Array.of(.502,0,.502,1),rebeccapurple:Float32Array.of(.4,.2,.6,1),red:Float32Array.of(1,0,0,1),
7696
- rosybrown:Float32Array.of(.737,.561,.561,1),royalblue:Float32Array.of(.255,.412,.882,1),saddlebrown:Float32Array.of(.545,.271,.075,1),salmon:Float32Array.of(.98,.502,.447,1),sandybrown:Float32Array.of(.957,.643,.376,1),seagreen:Float32Array.of(.18,.545,.341,1),seashell:Float32Array.of(1,.961,.933,1),sienna:Float32Array.of(.627,.322,.176,1),silver:Float32Array.of(.753,.753,.753,1),skyblue:Float32Array.of(.529,.808,.922,1),slateblue:Float32Array.of(.416,.353,.804,1),slategray:Float32Array.of(.439,.502,
7697
- .565,1),slategrey:Float32Array.of(.439,.502,.565,1),snow:Float32Array.of(1,.98,.98,1),springgreen:Float32Array.of(0,1,.498,1),steelblue:Float32Array.of(.275,.51,.706,1),tan:Float32Array.of(.824,.706,.549,1),teal:Float32Array.of(0,.502,.502,1),thistle:Float32Array.of(.847,.749,.847,1),tomato:Float32Array.of(1,.388,.278,1),transparent:Float32Array.of(0,0,0,0),turquoise:Float32Array.of(.251,.878,.816,1),violet:Float32Array.of(.933,.51,.933,1),wheat:Float32Array.of(.961,.871,.702,1),white:Float32Array.of(1,
7698
- 1,1,1),whitesmoke:Float32Array.of(.961,.961,.961,1),yellow:Float32Array.of(1,1,0,1),yellowgreen:Float32Array.of(.604,.804,.196,1)};a._testing.parseColor=g;a._testing.colorToString=d;var wa=RegExp("(italic|oblique|normal|)\\s*(small-caps|normal|)\\s*(bold|bolder|lighter|[1-9]00|normal|)\\s*([\\d\\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)"),na={"Noto Mono":{"*":null},monospace:{"*":null}};a._testing.parseFontString=l;a.MakeCanvas=function(G,k){return (G=a.MakeSurface(G,k))?new x(G):null};a.ImageData=
7699
- function(){if(2===arguments.length){var G=arguments[0],k=arguments[1];return new J(new Uint8ClampedArray(4*G*k),G,k)}if(3===arguments.length){var q=arguments[0];if(q.prototype.constructor!==Uint8ClampedArray)throw "bytes must be given as a Uint8ClampedArray";G=arguments[1];k=arguments[2];if(q%4)throw "bytes must be given in a multiple of 4";if(q%G)throw "bytes must divide evenly by width";if(k&&k!==q/(4*G))throw "invalid height given";return new J(q,G,q/(4*G))}throw "invalid number of arguments - takes 2 or 3, saw "+
7700
- arguments.length;};})();})(w);var ta=Object.assign({},w),ua="./this.program",xa=(a,b)=>{throw b;},ya="object"==typeof window,za="function"==typeof importScripts,Aa="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,Ca="",Da,Ea,Fa;
7701
- if(Aa){var fs=require$$0,Ga=require$$1;Ca=za?Ga.dirname(Ca)+"/":__dirname+"/";Da=(a,b)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};Fa=a=>{a=Da(a,true);a.buffer||(a=new Uint8Array(a));return a};Ea=(a,b,c,f=true)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);fs.readFile(a,f?void 0:"utf8",(h,m)=>{h?c(h):b(f?m.buffer:m);});};!w.thisProgram&&1<process.argv.length&&(ua=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);xa=(a,b)=>{process.exitCode=
7702
- a;throw b;};w.inspect=()=>"[Emscripten Module object]";}else if(ya||za)za?Ca=self.location.href:"undefined"!=typeof document&&document.currentScript&&(Ca=document.currentScript.src),_scriptDir&&(Ca=_scriptDir),0!==Ca.indexOf("blob:")?Ca=Ca.substr(0,Ca.replace(/[?#].*/,"").lastIndexOf("/")+1):Ca="",Da=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.send(null);return b.responseText},za&&(Fa=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),
7703
- Ea=(a,b,c)=>{var f=new XMLHttpRequest;f.open("GET",a,true);f.responseType="arraybuffer";f.onload=()=>{200==f.status||0==f.status&&f.response?b(f.response):c();};f.onerror=c;f.send(null);};var Ha=w.print||console.log.bind(console),Ja=w.printErr||console.error.bind(console);Object.assign(w,ta);ta=null;w.thisProgram&&(ua=w.thisProgram);w.quit&&(xa=w.quit);var Ka;w.wasmBinary&&(Ka=w.wasmBinary);w.noExitRuntime||true;"object"!=typeof WebAssembly&&La("no native wasm support detected");
7704
- var Ma,Q,Pa=false,Qa,K,Ra,Sa,R,Ua,V,Va;function Wa(){var a=Ma.buffer;w.HEAP8=Qa=new Int8Array(a);w.HEAP16=Ra=new Int16Array(a);w.HEAP32=R=new Int32Array(a);w.HEAPU8=K=new Uint8Array(a);w.HEAPU16=Sa=new Uint16Array(a);w.HEAPU32=Ua=new Uint32Array(a);w.HEAPF32=V=new Float32Array(a);w.HEAPF64=Va=new Float64Array(a);}var Xa,Ya=[],Za=[],bb=[];function cb(){var a=w.preRun.shift();Ya.unshift(a);}var db=0,fb=null;
7705
- function La(a){if(w.onAbort)w.onAbort(a);a="Aborted("+a+")";Ja(a);Pa=true;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}function kb(a){return a.startsWith("data:application/octet-stream;base64,")}var lb;lb="canvaskit.wasm";if(!kb(lb)){var mb=lb;lb=w.locateFile?w.locateFile(mb,Ca):Ca+mb;}function nb(a){if(a==lb&&Ka)return new Uint8Array(Ka);if(Fa)return Fa(a);throw "both async and sync fetching of the wasm failed";}
7706
- function ob(a){if(!Ka&&(ya||za)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(b=>{if(!b.ok)throw "failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>nb(a));if(Ea)return new Promise((b,c)=>{Ea(a,f=>b(new Uint8Array(f)),c);})}return Promise.resolve().then(()=>nb(a))}function pb(a,b,c){return ob(a).then(f=>WebAssembly.instantiate(f,b)).then(f=>f).then(c,f=>{Ja("failed to asynchronously prepare wasm: "+f);La(f);})}
7707
- function qb(a,b){var c=lb;return Ka||"function"!=typeof WebAssembly.instantiateStreaming||kb(c)||c.startsWith("file://")||Aa||"function"!=typeof fetch?pb(c,a,b):fetch(c,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,a).then(b,function(h){Ja("wasm streaming compile failed: "+h);Ja("falling back to ArrayBuffer instantiation");return pb(c,a,b)}))}function rb(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a;}
7708
- var sb=a=>{for(;0<a.length;)a.shift()(w);},tb="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,ub=(a,b,c)=>{var f=b+c;for(c=b;a[c]&&!(c>=f);)++c;if(16<c-b&&a.buffer&&tb)return tb.decode(a.subarray(b,c));for(f="";b<c;){var h=a[b++];if(h&128){var m=a[b++]&63;if(192==(h&224))f+=String.fromCharCode((h&31)<<6|m);else {var u=a[b++]&63;h=224==(h&240)?(h&15)<<12|m<<6|u:(h&7)<<18|m<<12|u<<6|a[b++]&63;65536>h?f+=String.fromCharCode(h):(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023));}}else f+=
7709
- String.fromCharCode(h);}return f},vb={};function wb(a){for(;a.length;){var b=a.pop();a.pop()(b);}}function xb(a){return this.fromWireType(R[a>>2])}var zb={},Ab={},Bb={},Cb=void 0;function Db(a){throw new Cb(a);}
7710
- function Eb(a,b,c){function f(n){n=c(n);n.length!==a.length&&Db("Mismatched type converter count");for(var p=0;p<a.length;++p)Fb(a[p],n[p]);}a.forEach(function(n){Bb[n]=b;});var h=Array(b.length),m=[],u=0;b.forEach((n,p)=>{Ab.hasOwnProperty(n)?h[p]=Ab[n]:(m.push(n),zb.hasOwnProperty(n)||(zb[n]=[]),zb[n].push(()=>{h[p]=Ab[n];++u;u===m.length&&f(h);}));});0===m.length&&f(h);}
7711
- function Gb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`);}}var Hb=void 0;function Ib(a){for(var b="";K[a];)b+=Hb[K[a++]];return b}var Jb=void 0;function X(a){throw new Jb(a);}
7712
- function Kb(a,b,c={}){var f=b.name;a||X(`type "${f}" must have a positive integer typeid pointer`);if(Ab.hasOwnProperty(a)){if(c.Wf)return;X(`Cannot register type '${f}' twice`);}Ab[a]=b;delete Bb[a];zb.hasOwnProperty(a)&&(b=zb[a],delete zb[a],b.forEach(h=>h()));}function Fb(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");Kb(a,b,c);}function Lb(a){X(a.Jd.Vd.Pd.name+" instance already deleted");}var Mb=false;function Nb(){}
7713
- function Ob(a){--a.count.value;0===a.count.value&&(a.Yd?a.ee.ke(a.Yd):a.Vd.Pd.ke(a.Rd));}function Pb(a,b,c){if(b===c)return a;if(void 0===c.$d)return null;a=Pb(a,b,c.$d);return null===a?null:c.Mf(a)}var Qb={},Rb=[];function Sb(){for(;Rb.length;){var a=Rb.pop();a.Jd.Ee=false;a["delete"]();}}var Tb=void 0,Ub={};function ac(a,b){for(void 0===b&&X("ptr should not be undefined");a.$d;)b=a.Oe(b),a=a.$d;return Ub[b]}
7714
- function bc(a,b){b.Vd&&b.Rd||Db("makeClassHandle requires ptr and ptrType");!!b.ee!==!!b.Yd&&Db("Both smartPtrType and smartPtr must be specified");b.count={value:1};return cc(Object.create(a,{Jd:{value:b}}))}function cc(a){if("undefined"===typeof FinalizationRegistry)return cc=b=>b,a;Mb=new FinalizationRegistry(b=>{Ob(b.Jd);});cc=b=>{var c=b.Jd;c.Yd&&Mb.register(b,{Jd:c},b);return b};Nb=b=>{Mb.unregister(b);};return cc(a)}function dc(){}
7715
- function ec(a){if(void 0===a)return "_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a}function fc(a,b){a=ec(a);return {[a]:function(){return b.apply(this,arguments)}}[a]}
7716
- function gc(a,b,c){if(void 0===a[b].Xd){var f=a[b];a[b]=function(){a[b].Xd.hasOwnProperty(arguments.length)||X(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].Xd})!`);return a[b].Xd[arguments.length].apply(this,arguments)};a[b].Xd=[];a[b].Xd[f.Ce]=f;}}
7717
- function hc(a,b,c){w.hasOwnProperty(a)?((void 0===c||void 0!==w[a].Xd&&void 0!==w[a].Xd[c])&&X(`Cannot register public name '${a}' twice`),gc(w,a,a),w.hasOwnProperty(c)&&X(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`),w[a].Xd[c]=b):(w[a]=b,void 0!==c&&(w[a].tg=c));}function ic(a,b,c,f,h,m,u,n){this.name=a;this.constructor=b;this.Fe=c;this.ke=f;this.$d=h;this.Rf=m;this.Oe=u;this.Mf=n;this.cg=[];}
7718
- function jc(a,b,c){for(;b!==c;)b.Oe||X(`Expected null or instance of ${c.name}, got an instance of ${b.name}`),a=b.Oe(a),b=b.$d;return a}function kc(a,b){if(null===b)return this.gf&&X(`null is not a valid ${this.name}`),0;b.Jd||X(`Cannot pass "${lc(b)}" as a ${this.name}`);b.Jd.Rd||X(`Cannot pass deleted object as a pointer of type ${this.name}`);return jc(b.Jd.Rd,b.Jd.Vd.Pd,this.Pd)}
7719
- function mc(a,b){if(null===b){this.gf&&X(`null is not a valid ${this.name}`);if(this.Ve){var c=this.hf();null!==a&&a.push(this.ke,c);return c}return 0}b.Jd||X(`Cannot pass "${lc(b)}" as a ${this.name}`);b.Jd.Rd||X(`Cannot pass deleted object as a pointer of type ${this.name}`);!this.Ue&&b.Jd.Vd.Ue&&X(`Cannot convert argument of type ${b.Jd.ee?b.Jd.ee.name:b.Jd.Vd.name} to parameter type ${this.name}`);c=jc(b.Jd.Rd,b.Jd.Vd.Pd,this.Pd);if(this.Ve)switch(void 0===b.Jd.Yd&&X("Passing raw pointer to smart pointer is illegal"),
7720
- this.hg){case 0:b.Jd.ee===this?c=b.Jd.Yd:X(`Cannot convert argument of type ${b.Jd.ee?b.Jd.ee.name:b.Jd.Vd.name} to parameter type ${this.name}`);break;case 1:c=b.Jd.Yd;break;case 2:if(b.Jd.ee===this)c=b.Jd.Yd;else {var f=b.clone();c=this.dg(c,nc(function(){f["delete"]();}));null!==a&&a.push(this.ke,c);}break;default:X("Unsupporting sharing policy");}return c}
7721
- function oc(a,b){if(null===b)return this.gf&&X(`null is not a valid ${this.name}`),0;b.Jd||X(`Cannot pass "${lc(b)}" as a ${this.name}`);b.Jd.Rd||X(`Cannot pass deleted object as a pointer of type ${this.name}`);b.Jd.Vd.Ue&&X(`Cannot convert argument of type ${b.Jd.Vd.name} to parameter type ${this.name}`);return jc(b.Jd.Rd,b.Jd.Vd.Pd,this.Pd)}
7722
- function pc(a,b,c,f,h,m,u,n,p,v,E){this.name=a;this.Pd=b;this.gf=c;this.Ue=f;this.Ve=h;this.bg=m;this.hg=u;this.vf=n;this.hf=p;this.dg=v;this.ke=E;h||void 0!==b.$d?this.toWireType=mc:(this.toWireType=f?kc:oc,this.de=null);}function qc(a,b,c){w.hasOwnProperty(a)||Db("Replacing nonexistant public symbol");void 0!==w[a].Xd&&void 0!==c?w[a].Xd[c]=b:(w[a]=b,w[a].Ce=c);}
7723
- var rc=(a,b)=>{var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var f=w["dynCall_"+a];f=c&&c.length?f.apply(null,[b].concat(c)):f.call(null,b);}else f=Xa.get(b).apply(null,c);return f}};function sc(a,b){a=Ib(a);var c=a.includes("j")?rc(a,b):Xa.get(b);"function"!=typeof c&&X(`unknown function pointer with signature ${a}: ${b}`);return c}var tc=void 0;function uc(a){a=vc(a);var b=Ib(a);wc(a);return b}
7724
- function Dc(a,b){function c(m){h[m]||Ab[m]||(Bb[m]?Bb[m].forEach(c):(f.push(m),h[m]=true));}var f=[],h={};b.forEach(c);throw new tc(`${a}: `+f.map(uc).join([", "]));}
7725
- function Ec(a,b,c,f,h){var m=b.length;2>m&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");var u=null!==b[1]&&null!==c,n=false;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].de){n=true;break}var p="void"!==b[0].name,v=m-2,E=Array(v),H=[],L=[];return function(){arguments.length!==v&&X(`function ${a} called with ${arguments.length} arguments, expected ${v} args!`);L.length=0;H.length=u?2:1;H[0]=h;if(u){var y=b[1].toWireType(L,this);H[1]=y;}for(var N=0;N<v;++N)E[N]=
7726
- b[N+2].toWireType(L,arguments[N]),H.push(E[N]);N=f.apply(null,H);if(n)wb(L);else for(var T=u?1:2;T<b.length;T++){var S=1===T?y:E[T-2];null!==b[T].de&&b[T].de(S);}y=p?b[0].fromWireType(N):void 0;return y}}function Fc(a,b){for(var c=[],f=0;f<a;f++)c.push(Ua[b+4*f>>2]);return c}function Gc(){this.je=[void 0];this.sf=[];}var Hc=new Gc;function Ic(a){a>=Hc.Ge&&0===--Hc.get(a).wf&&Hc.Bf(a);}
7727
- var Jc=a=>{a||X("Cannot use deleted val. handle = "+a);return Hc.get(a).value},nc=a=>{switch(a){case void 0:return 1;case null:return 2;case true:return 3;case false:return 4;default:return Hc.Af({wf:1,value:a})}};function Kc(a,b,c){switch(b){case 0:return function(f){return this.fromWireType((c?Qa:K)[f])};case 1:return function(f){return this.fromWireType((c?Ra:Sa)[f>>1])};case 2:return function(f){return this.fromWireType((c?R:Ua)[f>>2])};default:throw new TypeError("Unknown integer type: "+a);}}
7728
- function Lc(a,b){var c=Ab[a];void 0===c&&X(b+" has unknown type "+uc(a));return c}function lc(a){if(null===a)return "null";var b=typeof a;return "object"===b||"array"===b||"function"===b?a.toString():""+a}function Mc(a,b){switch(b){case 2:return function(c){return this.fromWireType(V[c>>2])};case 3:return function(c){return this.fromWireType(Va[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
7729
- function Nc(a,b,c){switch(b){case 0:return c?function(f){return Qa[f]}:function(f){return K[f]};case 1:return c?function(f){return Ra[f>>1]}:function(f){return Sa[f>>1]};case 2:return c?function(f){return R[f>>2]}:function(f){return Ua[f>>2]};default:throw new TypeError("Unknown integer type: "+a);}}
7730
- var ra=(a,b,c,f)=>{if(!(0<f))return 0;var h=c;f=c+f-1;for(var m=0;m<a.length;++m){var u=a.charCodeAt(m);if(55296<=u&&57343>=u){var n=a.charCodeAt(++m);u=65536+((u&1023)<<10)|n&1023;}if(127>=u){if(c>=f)break;b[c++]=u;}else {if(2047>=u){if(c+1>=f)break;b[c++]=192|u>>6;}else {if(65535>=u){if(c+2>=f)break;b[c++]=224|u>>12;}else {if(c+3>=f)break;b[c++]=240|u>>18;b[c++]=128|u>>12&63;}b[c++]=128|u>>6&63;}b[c++]=128|u&63;}}b[c]=0;return c-h},qa=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);127>=f?b++:2047>=
7731
- f?b+=2:55296<=f&&57343>=f?(b+=4,++c):b+=3;}return b},Oc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Pc=(a,b)=>{var c=a>>1;for(var f=c+b/2;!(c>=f)&&Sa[c];)++c;c<<=1;if(32<c-a&&Oc)return Oc.decode(K.subarray(a,c));c="";for(f=0;!(f>=b/2);++f){var h=Ra[a+2*f>>1];if(0==h)break;c+=String.fromCharCode(h);}return c},Qc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var f=b;c=c<2*a.length?c/2:a.length;for(var h=0;h<c;++h)Ra[b>>1]=a.charCodeAt(h),b+=2;Ra[b>>1]=0;return b-f},
7732
- Rc=a=>2*a.length,Sc=(a,b)=>{for(var c=0,f="";!(c>=b/4);){var h=R[a+4*c>>2];if(0==h)break;++c;65536<=h?(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023)):f+=String.fromCharCode(h);}return f},Tc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(4>c)return 0;var f=b;c=f+c-4;for(var h=0;h<a.length;++h){var m=a.charCodeAt(h);if(55296<=m&&57343>=m){var u=a.charCodeAt(++h);m=65536+((m&1023)<<10)|u&1023;}R[b>>2]=m;b+=4;if(b+4>c)break}R[b>>2]=0;return b-f},Uc=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);
7733
- 55296<=f&&57343>=f&&++c;b+=4;}return b},Vc={};function Wc(a){var b=Vc[a];return void 0===b?Ib(a):b}var Xc=[];
7734
- function Yc(){function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;"object"==typeof commonjsGlobal&&a(commonjsGlobal)?$$$embind_global$$$=commonjsGlobal:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");
7735
- }function Zc(a){var b=Xc.length;Xc.push(a);return b}function $c(a,b){for(var c=Array(a),f=0;f<a;++f)c[f]=Lc(Ua[b+4*f>>2],"parameter "+f);return c}var ad=[];function bd(a){var b=Array(a+1);return function(c,f,h){b[0]=c;for(var m=0;m<a;++m){var u=Lc(Ua[f+4*m>>2],"parameter "+m);b[m+1]=u.readValueFromPointer(h);h+=u.argPackAdvance;}c=new (c.bind.apply(c,b));return nc(c)}}var cd={};
7736
- function dd(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,f){b.vertexAttribDivisorANGLE(c,f);},a.drawArraysInstanced=function(c,f,h,m){b.drawArraysInstancedANGLE(c,f,h,m);},a.drawElementsInstanced=function(c,f,h,m,u){b.drawElementsInstancedANGLE(c,f,h,m,u);});}
7737
- function ed(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c);},a.bindVertexArray=function(c){b.bindVertexArrayOES(c);},a.isVertexArray=function(c){return b.isVertexArrayOES(c)});}function fd(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,f){b.drawBuffersWEBGL(c,f);});}
7738
- var gd=1,hd=[],jd=[],kd=[],ld=[],ia=[],md=[],nd=[],pa=[],od=[],pd=[],qd={},rd={},sd=4;function td(a){ud||(ud=a);}function ha(a){for(var b=gd++,c=a.length;c<b;c++)a[c]=null;return b}function la(a,b){a.Ge||(a.Ge=a.getContext,a.getContext=function(f,h){h=a.Ge(f,h);return "webgl"==f==h instanceof WebGLRenderingContext?h:null});var c=1<b.majorVersion?a.getContext("webgl2",b):a.getContext("webgl",b);return c?vd(c,b):0}
7739
- function vd(a,b){var c=ha(pa),f={handle:c,attributes:b,version:b.majorVersion,fe:a};a.canvas&&(a.canvas.zf=f);pa[c]=f;("undefined"==typeof b.Nf||b.Nf)&&yd(f);return c}function oa(a){A=pa[a];w.rg=Z=A&&A.fe;return !(a&&!Z)}
7740
- function yd(a){a||(a=A);if(!a.Xf){a.Xf=true;var b=a.fe;dd(b);ed(b);fd(b);b.pf=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.uf=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.qf=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.qf)b.qf=b.getExtension("EXT_disjoint_timer_query");b.sg=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c);});}}
7741
- var A,ud,zd={},Bd=()=>{if(!Ad){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ua||"./this.program"},b;for(b in zd) void 0===zd[b]?delete a[b]:a[b]=zd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Ad=c;}return Ad},Ad,Cd=[null,[],[]];function Dd(a){Z.bindVertexArray(nd[a]);}
7742
- function Ed(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2];Z.deleteVertexArray(nd[f]);nd[f]=null;}}var Fd=[];function Gd(a,b,c,f){Z.drawElements(a,b,c,f);}function Hd(a,b,c,f){for(var h=0;h<a;h++){var m=Z[c](),u=m&&ha(f);m?(m.name=u,f[u]=m):td(1282);R[b+4*h>>2]=u;}}function Id(a,b){Hd(a,b,"createVertexArray",nd);}
7743
- function Jd(a,b,c){if(b){var f=void 0;switch(a){case 36346:f=1;break;case 36344:0!=c&&1!=c&&td(1280);return;case 34814:case 36345:f=0;break;case 34466:var h=Z.getParameter(34467);f=h?h.length:0;break;case 33309:if(2>A.version){td(1282);return}f=2*(Z.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>A.version){td(1280);return}f=33307==a?3:0;}if(void 0===f)switch(h=Z.getParameter(a),typeof h){case "number":f=h;break;case "boolean":f=h?1:0;break;case "string":td(1280);return;case "object":if(null===
7744
- h)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:f=0;break;default:td(1280);return}else {if(h instanceof Float32Array||h instanceof Uint32Array||h instanceof Int32Array||h instanceof Array){for(a=0;a<h.length;++a)switch(c){case 0:R[b+4*a>>2]=h[a];break;case 2:V[b+4*a>>2]=h[a];break;case 4:Qa[b+a>>0]=h[a]?1:0;}return}try{f=h.name|
7745
- 0;}catch(m){td(1280);Ja("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+m+")");return}}break;default:td(1280);Ja("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+h+" of type "+typeof h+"!");return}switch(c){case 1:c=f;Ua[b>>2]=c;Ua[b+4>>2]=(c-Ua[b>>2])/4294967296;break;case 0:R[b>>2]=f;break;case 2:V[b>>2]=f;break;case 4:Qa[b>>0]=f?1:0;}}else td(1281);}var Ld=a=>{var b=qa(a)+1,c=Kd(b);c&&ra(a,K,c,b);return c};
7746
- function Md(a){return "]"==a.slice(-1)&&a.lastIndexOf("[")}function Nd(a){a-=5120;return 0==a?Qa:1==a?K:2==a?Ra:4==a?R:6==a?V:5==a||28922==a||28520==a||30779==a||30782==a?Ua:Sa}function Od(a,b,c,f,h){a=Nd(a);var m=31-Math.clz32(a.BYTES_PER_ELEMENT),u=sd;return a.subarray(h>>m,h+f*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<<m)+u-1&-u)>>m)}
7747
- function Pd(a){var b=Z.Kf;if(b){var c=b.Ne[a];"number"==typeof c&&(b.Ne[a]=c=Z.getUniformLocation(b,b.xf[a]+(0<c?"["+c+"]":"")));return c}td(1282);}var Qd=[],Rd=[],Sd=a=>0===a%4&&(0!==a%100||0===a%400),Td=[31,29,31,30,31,30,31,31,30,31,30,31],Ud=[31,28,31,30,31,30,31,31,30,31,30,31];function Vd(a){var b=Array(qa(a)+1);ra(a,b,0,b.length);return b}
7748
- var Wd=(a,b,c,f)=>{function h(y,N,T){for(y="number"==typeof y?y.toString():y||"";y.length<N;)y=T[0]+y;return y}function m(y,N){return h(y,N,"0")}function u(y,N){function T(sa){return 0>sa?-1:0<sa?1:0}var S;0===(S=T(y.getFullYear()-N.getFullYear()))&&0===(S=T(y.getMonth()-N.getMonth()))&&(S=T(y.getDate()-N.getDate()));return S}function n(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),
7749
- 0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function p(y){var N=y.oe;for(y=new Date((new Date(y.pe+1900,0,1)).getTime());0<N;){var T=y.getMonth(),S=(Sd(y.getFullYear())?Td:Ud)[T];if(N>S-y.getDate())N-=S-y.getDate()+1,y.setDate(1),11>T?y.setMonth(T+1):(y.setMonth(0),y.setFullYear(y.getFullYear()+1));else {y.setDate(y.getDate()+N);break}}T=new Date(y.getFullYear()+1,0,4);N=n(new Date(y.getFullYear(),
7750
- 0,4));T=n(T);return 0>=u(N,y)?0>=u(T,y)?y.getFullYear()+1:y.getFullYear():y.getFullYear()-1}var v=R[f+40>>2];f={pg:R[f>>2],og:R[f+4>>2],Ze:R[f+8>>2],jf:R[f+12>>2],$e:R[f+16>>2],pe:R[f+20>>2],he:R[f+24>>2],oe:R[f+28>>2],vg:R[f+32>>2],ng:R[f+36>>2],qg:v?v?ub(K,v):"":""};c=c?ub(K,c):"";v={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y",
7751
- "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var E in v)c=c.replace(new RegExp(E,"g"),v[E]);var H="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),L="January February March April May June July August September October November December".split(" ");v={"%a":y=>H[y.he].substring(0,3),"%A":y=>H[y.he],"%b":y=>L[y.$e].substring(0,3),"%B":y=>L[y.$e],"%C":y=>m((y.pe+1900)/
7752
- 100|0,2),"%d":y=>m(y.jf,2),"%e":y=>h(y.jf,2," "),"%g":y=>p(y).toString().substring(2),"%G":y=>p(y),"%H":y=>m(y.Ze,2),"%I":y=>{y=y.Ze;0==y?y=12:12<y&&(y-=12);return m(y,2)},"%j":y=>{for(var N=0,T=0;T<=y.$e-1;N+=(Sd(y.pe+1900)?Td:Ud)[T++]);return m(y.jf+N,3)},"%m":y=>m(y.$e+1,2),"%M":y=>m(y.og,2),"%n":()=>"\n","%p":y=>0<=y.Ze&&12>y.Ze?"AM":"PM","%S":y=>m(y.pg,2),"%t":()=>"\t","%u":y=>y.he||7,"%U":y=>m(Math.floor((y.oe+7-y.he)/7),2),"%V":y=>{var N=Math.floor((y.oe+7-(y.he+6)%7)/7);2>=(y.he+371-y.oe-
7753
- 2)%7&&N++;if(N)53==N&&(T=(y.he+371-y.oe)%7,4==T||3==T&&Sd(y.pe)||(N=1));else {N=52;var T=(y.he+7-y.oe-1)%7;(4==T||5==T&&Sd(y.pe%400-1))&&N++;}return m(N,2)},"%w":y=>y.he,"%W":y=>m(Math.floor((y.oe+7-(y.he+6)%7)/7),2),"%y":y=>(y.pe+1900).toString().substring(2),"%Y":y=>y.pe+1900,"%z":y=>{y=y.ng;var N=0<=y;y=Math.abs(y)/60;return (N?"+":"-")+String("0000"+(y/60*100+y%60)).slice(-4)},"%Z":y=>y.qg,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(E in v)c.includes(E)&&(c=c.replace(new RegExp(E,"g"),v[E](f)));
7754
- c=c.replace(/\0\0/g,"%");E=Vd(c);if(E.length>b)return 0;Qa.set(E,a);return E.length-1};Cb=w.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError";}};for(var Xd=Array(256),Yd=0;256>Yd;++Yd)Xd[Yd]=String.fromCharCode(Yd);Hb=Xd;Jb=w.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError";}};
7755
- dc.prototype.isAliasOf=function(a){if(!(this instanceof dc&&a instanceof dc))return false;var b=this.Jd.Vd.Pd,c=this.Jd.Rd,f=a.Jd.Vd.Pd;for(a=a.Jd.Rd;b.$d;)c=b.Oe(c),b=b.$d;for(;f.$d;)a=f.Oe(a),f=f.$d;return b===f&&c===a};
7756
- dc.prototype.clone=function(){this.Jd.Rd||Lb(this);if(this.Jd.Me)return this.Jd.count.value+=1,this;var a=cc,b=Object,c=b.create,f=Object.getPrototypeOf(this),h=this.Jd;a=a(c.call(b,f,{Jd:{value:{count:h.count,Ee:h.Ee,Me:h.Me,Rd:h.Rd,Vd:h.Vd,Yd:h.Yd,ee:h.ee}}}));a.Jd.count.value+=1;a.Jd.Ee=false;return a};dc.prototype["delete"]=function(){this.Jd.Rd||Lb(this);this.Jd.Ee&&!this.Jd.Me&&X("Object already scheduled for deletion");Nb(this);Ob(this.Jd);this.Jd.Me||(this.Jd.Yd=void 0,this.Jd.Rd=void 0);};
7757
- dc.prototype.isDeleted=function(){return !this.Jd.Rd};dc.prototype.deleteLater=function(){this.Jd.Rd||Lb(this);this.Jd.Ee&&!this.Jd.Me&&X("Object already scheduled for deletion");Rb.push(this);1===Rb.length&&Tb&&Tb(Sb);this.Jd.Ee=true;return this};w.getInheritedInstanceCount=function(){return Object.keys(Ub).length};w.getLiveInheritedInstances=function(){var a=[],b;for(b in Ub)Ub.hasOwnProperty(b)&&a.push(Ub[b]);return a};w.flushPendingDeletes=Sb;w.setDelayFunction=function(a){Tb=a;Rb.length&&Tb&&Tb(Sb);};
7758
- pc.prototype.Sf=function(a){this.vf&&(a=this.vf(a));return a};pc.prototype.nf=function(a){this.ke&&this.ke(a);};pc.prototype.argPackAdvance=8;pc.prototype.readValueFromPointer=xb;pc.prototype.deleteObject=function(a){if(null!==a)a["delete"]();};
7759
- pc.prototype.fromWireType=function(a){function b(){return this.Ve?bc(this.Pd.Fe,{Vd:this.bg,Rd:c,ee:this,Yd:a}):bc(this.Pd.Fe,{Vd:this,Rd:a})}var c=this.Sf(a);if(!c)return this.nf(a),null;var f=ac(this.Pd,c);if(void 0!==f){if(0===f.Jd.count.value)return f.Jd.Rd=c,f.Jd.Yd=a,f.clone();f=f.clone();this.nf(a);return f}f=this.Pd.Rf(c);f=Qb[f];if(!f)return b.call(this);f=this.Ue?f.If:f.pointerType;var h=Pb(c,this.Pd,f.Pd);return null===h?b.call(this):this.Ve?bc(f.Pd.Fe,{Vd:f,Rd:h,ee:this,Yd:a}):bc(f.Pd.Fe,
7760
- {Vd:f,Rd:h})};tc=w.UnboundTypeError=function(a,b){var c=fc(b,function(f){this.name=b;this.message=f;f=Error(f).stack;void 0!==f&&(this.stack=this.toString()+"\n"+f.replace(/^Error(:[^\n]*)?\n/,""));});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c}(Error,"UnboundTypeError");
7761
- Object.assign(Gc.prototype,{get(a){return this.je[a]},has(a){return void 0!==this.je[a]},Af(a){var b=this.sf.pop()||this.je.length;this.je[b]=a;return b},Bf(a){this.je[a]=void 0;this.sf.push(a);}});Hc.je.push({value:void 0},{value:null},{value:true},{value:false});Hc.Ge=Hc.je.length;w.count_emval_handles=function(){for(var a=0,b=Hc.Ge;b<Hc.je.length;++b) void 0!==Hc.je[b]&&++a;return a};for(var Z,Zd=0;32>Zd;++Zd)Fd.push(Array(Zd));var $d=new Float32Array(288);
7762
- for(Zd=0;288>Zd;++Zd)Qd[Zd]=$d.subarray(0,Zd+1);var ae=new Int32Array(288);for(Zd=0;288>Zd;++Zd)Rd[Zd]=ae.subarray(0,Zd+1);
7763
- var qe={T:function(){return 0},Bb:()=>{},Db:function(){return 0},yb:()=>{},zb:()=>{},U:function(){},Ab:()=>{},C:function(a){var b=vb[a];delete vb[a];var c=b.hf,f=b.ke,h=b.rf,m=h.map(u=>u.Vf).concat(h.map(u=>u.fg));Eb([a],m,u=>{var n={};h.forEach((p,v)=>{var E=u[v],H=p.Tf,L=p.Uf,y=u[v+h.length],N=p.eg,T=p.gg;n[p.Of]={read:S=>E.fromWireType(H(L,S)),write:(S,sa)=>{var ma=[];N(T,S,y.toWireType(ma,sa));wb(ma);}};});return [{name:b.name,fromWireType:function(p){var v={},E;for(E in n)v[E]=n[E].read(p);f(p);
7764
- return v},toWireType:function(p,v){for(var E in n)if(!(E in v))throw new TypeError(`Missing field: "${E}"`);var H=c();for(E in n)n[E].write(H,v[E]);null!==p&&p.push(f,H);return H},argPackAdvance:8,readValueFromPointer:xb,de:f}]});},qb:function(){},Hb:function(a,b,c,f,h){var m=Gb(c);b=Ib(b);Fb(a,{name:b,fromWireType:function(u){return !!u},toWireType:function(u,n){return n?f:h},argPackAdvance:8,readValueFromPointer:function(u){if(1===c)var n=Qa;else if(2===c)n=Ra;else if(4===c)n=R;else throw new TypeError("Unknown boolean type size: "+
7765
- b);return this.fromWireType(n[u>>m])},de:null});},m:function(a,b,c,f,h,m,u,n,p,v,E,H,L){E=Ib(E);m=sc(h,m);n&&(n=sc(u,n));v&&(v=sc(p,v));L=sc(H,L);var y=ec(E);hc(y,function(){Dc(`Cannot construct ${E} due to unbound types`,[f]);});Eb([a,b,c],f?[f]:[],function(N){N=N[0];if(f){var T=N.Pd;var S=T.Fe;}else S=dc.prototype;N=fc(y,function(){if(Object.getPrototypeOf(this)!==sa)throw new Jb("Use 'new' to construct "+E);if(void 0===ma.ne)throw new Jb(E+" has no accessible constructor");var hb=ma.ne[arguments.length];
7766
- if(void 0===hb)throw new Jb(`Tried to invoke ctor of ${E} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(ma.ne).toString()}) parameters instead!`);return hb.apply(this,arguments)});var sa=Object.create(S,{constructor:{value:N}});N.prototype=sa;var ma=new ic(E,N,sa,L,T,m,n,v);ma.$d&&(void 0===ma.$d.Pe&&(ma.$d.Pe=[]),ma.$d.Pe.push(ma));T=new pc(E,ma,true,false,false);S=new pc(E+"*",ma,false,false,false);var gb=new pc(E+" const*",ma,false,true,false);Qb[a]={pointerType:S,If:gb};qc(y,N);return [T,
7767
- S,gb]});},f:function(a,b,c,f,h,m,u){var n=Fc(c,f);b=Ib(b);m=sc(h,m);Eb([],[a],function(p){function v(){Dc(`Cannot call ${E} due to unbound types`,n);}p=p[0];var E=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var H=p.Pd.constructor;void 0===H[b]?(v.Ce=c-1,H[b]=v):(gc(H,b,E),H[b].Xd[c-1]=v);Eb([],n,function(L){L=[L[0],null].concat(L.slice(1));L=Ec(E,L,null,m,u);void 0===H[b].Xd?(L.Ce=c-1,H[b]=L):H[b].Xd[c-1]=L;if(p.Pd.Pe)for(const y of p.Pd.Pe)y.constructor.hasOwnProperty(b)||(y.constructor[b]=
7768
- L);return []});return []});},A:function(a,b,c,f,h,m){var u=Fc(b,c);h=sc(f,h);Eb([],[a],function(n){n=n[0];var p=`constructor ${n.name}`;void 0===n.Pd.ne&&(n.Pd.ne=[]);if(void 0!==n.Pd.ne[b-1])throw new Jb(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${n.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);n.Pd.ne[b-1]=()=>{Dc(`Cannot construct ${n.name} due to unbound types`,u);};Eb([],u,function(v){v.splice(1,
7769
- 0,null);n.Pd.ne[b-1]=Ec(p,v,null,h,m);return []});return []});},b:function(a,b,c,f,h,m,u,n){var p=Fc(c,f);b=Ib(b);m=sc(h,m);Eb([],[a],function(v){function E(){Dc(`Cannot call ${H} due to unbound types`,p);}v=v[0];var H=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);n&&v.Pd.cg.push(b);var L=v.Pd.Fe,y=L[b];void 0===y||void 0===y.Xd&&y.className!==v.name&&y.Ce===c-2?(E.Ce=c-2,E.className=v.name,L[b]=E):(gc(L,b,H),L[b].Xd[c-2]=E);Eb([],p,function(N){N=Ec(H,N,v,m,u);void 0===L[b].Xd?(N.Ce=
7770
- c-2,L[b]=N):L[b].Xd[c-2]=N;return []});return []});},t:function(a,b,c){a=Ib(a);Eb([],[b],function(f){f=f[0];w[a]=f.fromWireType(c);return []});},Gb:function(a,b){b=Ib(b);Fb(a,{name:b,fromWireType:function(c){var f=Jc(c);Ic(c);return f},toWireType:function(c,f){return nc(f)},argPackAdvance:8,readValueFromPointer:xb,de:null});},l:function(a,b,c,f){function h(){}c=Gb(c);b=Ib(b);h.values={};Fb(a,{name:b,constructor:h,fromWireType:function(m){return this.constructor.values[m]},toWireType:function(m,u){return u.value},
7771
- argPackAdvance:8,readValueFromPointer:Kc(b,c,f),de:null});hc(b,h);},c:function(a,b,c){var f=Lc(a,"enum");b=Ib(b);a=f.constructor;f=Object.create(f.constructor.prototype,{value:{value:c},constructor:{value:fc(`${f.name}_${b}`,function(){})}});a.values[c]=f;a[b]=f;},W:function(a,b,c){c=Gb(c);b=Ib(b);Fb(a,{name:b,fromWireType:function(f){return f},toWireType:function(f,h){return h},argPackAdvance:8,readValueFromPointer:Mc(b,c),de:null});},y:function(a,b,c,f,h,m){var u=Fc(b,c);a=Ib(a);h=sc(f,h);hc(a,function(){Dc(`Cannot call ${a} due to unbound types`,
7772
- u);},b-1);Eb([],u,function(n){n=[n[0],null].concat(n.slice(1));qc(a,Ec(a,n,null,h,m),b-1);return []});},E:function(a,b,c,f,h){b=Ib(b);-1===h&&(h=4294967295);h=Gb(c);var m=n=>n;if(0===f){var u=32-8*c;m=n=>n<<u>>>u;}c=b.includes("unsigned")?function(n,p){return p>>>0}:function(n,p){return p};Fb(a,{name:b,fromWireType:m,toWireType:c,argPackAdvance:8,readValueFromPointer:Nc(b,h,0!==f),de:null});},s:function(a,b,c){function f(m){m>>=2;var u=Ua;return new h(u.buffer,u[m+1],u[m])}var h=[Int8Array,Uint8Array,
7773
- Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=Ib(c);Fb(a,{name:c,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},{Wf:true});},q:function(a,b,c,f,h,m,u,n,p,v,E,H){c=Ib(c);m=sc(h,m);n=sc(u,n);v=sc(p,v);H=sc(E,H);Eb([a],[b],function(L){L=L[0];return [new pc(c,L.Pd,false,false,true,L,f,m,n,v,H)]});},V:function(a,b){b=Ib(b);var c="std::string"===b;Fb(a,{name:b,fromWireType:function(f){var h=Ua[f>>2],m=f+4;if(c)for(var u=m,n=0;n<=h;++n){var p=m+n;if(n==h||0==K[p]){u=u?ub(K,u,
7774
- p-u):"";if(void 0===v)var v=u;else v+=String.fromCharCode(0),v+=u;u=p+1;}}else {v=Array(h);for(n=0;n<h;++n)v[n]=String.fromCharCode(K[m+n]);v=v.join("");}wc(f);return v},toWireType:function(f,h){h instanceof ArrayBuffer&&(h=new Uint8Array(h));var m="string"==typeof h;m||h instanceof Uint8Array||h instanceof Uint8ClampedArray||h instanceof Int8Array||X("Cannot pass non-string to std::string");var u=c&&m?qa(h):h.length;var n=Kd(4+u+1),p=n+4;Ua[n>>2]=u;if(c&&m)ra(h,K,p,u+1);else if(m)for(m=0;m<u;++m){var v=
7775
- h.charCodeAt(m);255<v&&(wc(p),X("String has UTF-16 code units that do not fit in 8 bits"));K[p+m]=v;}else for(m=0;m<u;++m)K[p+m]=h[m];null!==f&&f.push(wc,n);return n},argPackAdvance:8,readValueFromPointer:xb,de:function(f){wc(f);}});},N:function(a,b,c){c=Ib(c);if(2===b){var f=Pc;var h=Qc;var m=Rc;var u=()=>Sa;var n=1;}else 4===b&&(f=Sc,h=Tc,m=Uc,u=()=>Ua,n=2);Fb(a,{name:c,fromWireType:function(p){for(var v=Ua[p>>2],E=u(),H,L=p+4,y=0;y<=v;++y){var N=p+4+y*b;if(y==v||0==E[N>>n])L=f(L,N-L),void 0===H?H=
7776
- L:(H+=String.fromCharCode(0),H+=L),L=N+b;}wc(p);return H},toWireType:function(p,v){"string"!=typeof v&&X(`Cannot pass non-string to C++ string type ${c}`);var E=m(v),H=Kd(4+E+b);Ua[H>>2]=E>>n;h(v,H+4,E+b);null!==p&&p.push(wc,H);return H},argPackAdvance:8,readValueFromPointer:xb,de:function(p){wc(p);}});},D:function(a,b,c,f,h,m){vb[a]={name:Ib(b),hf:sc(c,f),ke:sc(h,m),rf:[]};},e:function(a,b,c,f,h,m,u,n,p,v){vb[a].rf.push({Of:Ib(b),Vf:c,Tf:sc(f,h),Uf:m,fg:u,eg:sc(n,p),gg:v});},Ib:function(a,b){b=Ib(b);
7777
- Fb(a,{Yf:true,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}});},Fb:()=>true,ub:()=>{throw Infinity;},F:function(a,b,c){a=Jc(a);b=Lc(b,"emval::as");var f=[],h=nc(f);Ua[c>>2]=h;return b.toWireType(f,a)},Z:function(a,b,c,f,h){a=Xc[a];b=Jc(b);c=Wc(c);var m=[];Ua[f>>2]=nc(m);return a(b,c,m,h)},w:function(a,b,c,f){a=Xc[a];b=Jc(b);c=Wc(c);a(b,c,null,f);},d:Ic,K:function(a){if(0===a)return nc(Yc());a=Wc(a);return nc(Yc()[a])},u:function(a,b){var c=$c(a,b),f=c[0];b=f.name+"_$"+c.slice(1).map(function(u){return u.name}).join("_")+
7778
- "$";var h=ad[b];if(void 0!==h)return h;var m=Array(a-1);h=Zc((u,n,p,v)=>{for(var E=0,H=0;H<a-1;++H)m[H]=c[H+1].readValueFromPointer(v+E),E+=c[H+1].argPackAdvance;u=u[n].apply(u,m);for(H=0;H<a-1;++H)c[H+1].Lf&&c[H+1].Lf(m[H]);if(!f.Yf)return f.toWireType(p,u)});return ad[b]=h},z:function(a,b){a=Jc(a);b=Jc(b);return nc(a[b])},p:function(a){4<a&&(Hc.get(a).wf+=1);},J:function(a,b,c,f){a=Jc(a);var h=cd[b];h||(h=bd(b),cd[b]=h);return h(a,c,f)},H:function(){return nc([])},g:function(a){return nc(Wc(a))},
7779
- G:function(){return nc({})},kb:function(a){a=Jc(a);return !a},B:function(a){var b=Jc(a);wb(b);Ic(a);},i:function(a,b,c){a=Jc(a);b=Jc(b);c=Jc(c);a[b]=c;},h:function(a,b){a=Lc(a,"_emval_take_value");a=a.readValueFromPointer(b);return nc(a)},nb:function(){return -52},ob:function(){},a:()=>{La("");},Eb:()=>performance.now(),vb:a=>{var b=K.length;a>>>=0;if(2147483648<a)return false;for(var c=1;4>=c;c*=2){var f=b*(1+.2/c);f=Math.min(f,a+100663296);var h=Math;f=Math.max(a,f);a:{h=h.min.call(h,2147483648,f+(65536-
7780
- f%65536)%65536)-Ma.buffer.byteLength+65535>>>16;try{Ma.grow(h);Wa();var m=1;break a}catch(u){}m=void 0;}if(m)return true}return false},lb:function(){return A?A.handle:0},wb:(a,b)=>{var c=0;Bd().forEach(function(f,h){var m=b+c;h=Ua[a+4*h>>2]=m;for(m=0;m<f.length;++m)Qa[h++>>0]=f.charCodeAt(m);Qa[h>>0]=0;c+=f.length+1;});return 0},xb:(a,b)=>{var c=Bd();Ua[a>>2]=c.length;var f=0;c.forEach(function(h){f+=h.length+1;});Ua[b>>2]=f;return 0},Jb:a=>{xa(a,new rb(a));},
7781
- M:()=>52,mb:function(){return 52},Cb:()=>52,pb:function(){return 70},S:(a,b,c,f)=>{for(var h=0,m=0;m<c;m++){var u=Ua[b>>2],n=Ua[b+4>>2];b+=8;for(var p=0;p<n;p++){var v=K[u+p],E=Cd[a];0===v||10===v?((1===a?Ha:Ja)(ub(E,0)),E.length=0):E.push(v);}h+=n;}Ua[f>>2]=h;return 0},aa:function(a){Z.activeTexture(a);},ba:function(a,b){Z.attachShader(jd[a],md[b]);},ca:function(a,b,c){Z.bindAttribLocation(jd[a],b,c?ub(K,c):"");},da:function(a,b){35051==a?Z.ef=b:35052==a&&(Z.De=b);Z.bindBuffer(a,hd[b]);},$:function(a,
7782
- b){Z.bindFramebuffer(a,kd[b]);},fc:function(a,b){Z.bindRenderbuffer(a,ld[b]);},Rb:function(a,b){Z.bindSampler(a,od[b]);},ea:function(a,b){Z.bindTexture(a,ia[b]);},zc:Dd,Cc:Dd,fa:function(a,b,c,f){Z.blendColor(a,b,c,f);},ga:function(a){Z.blendEquation(a);},ha:function(a,b){Z.blendFunc(a,b);},$b:function(a,b,c,f,h,m,u,n,p,v){Z.blitFramebuffer(a,b,c,f,h,m,u,n,p,v);},ia:function(a,b,c,f){2<=A.version?c&&b?Z.bufferData(a,K,f,c,b):Z.bufferData(a,b,f):Z.bufferData(a,c?K.subarray(c,c+b):b,f);},ja:function(a,b,c,f){2<=
7783
- A.version?c&&Z.bufferSubData(a,b,K,f,c):Z.bufferSubData(a,b,K.subarray(f,f+c));},gc:function(a){return Z.checkFramebufferStatus(a)},Q:function(a){Z.clear(a);},_:function(a,b,c,f){Z.clearColor(a,b,c,f);},R:function(a){Z.clearStencil(a);},sb:function(a,b,c,f){return Z.clientWaitSync(pd[a],b,(c>>>0)+4294967296*f)},ka:function(a,b,c,f){Z.colorMask(!!a,!!b,!!c,!!f);},la:function(a){Z.compileShader(md[a]);},ma:function(a,b,c,f,h,m,u,n){2<=A.version?Z.De||!u?Z.compressedTexImage2D(a,b,c,f,h,m,u,n):Z.compressedTexImage2D(a,
7784
- b,c,f,h,m,K,n,u):Z.compressedTexImage2D(a,b,c,f,h,m,n?K.subarray(n,n+u):null);},na:function(a,b,c,f,h,m,u,n,p){2<=A.version?Z.De||!n?Z.compressedTexSubImage2D(a,b,c,f,h,m,u,n,p):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,K,p,n):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,p?K.subarray(p,p+n):null);},Zb:function(a,b,c,f,h){Z.copyBufferSubData(a,b,c,f,h);},oa:function(a,b,c,f,h,m,u,n){Z.copyTexSubImage2D(a,b,c,f,h,m,u,n);},pa:function(){var a=ha(jd),b=Z.createProgram();b.name=a;b.Ye=b.We=b.Xe=0;b.kf=1;jd[a]=b;
7785
- return a},qa:function(a){var b=ha(md);md[b]=Z.createShader(a);return b},ra:function(a){Z.cullFace(a);},sa:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2],h=hd[f];h&&(Z.deleteBuffer(h),h.name=0,hd[f]=null,f==Z.ef&&(Z.ef=0),f==Z.De&&(Z.De=0));}},hc:function(a,b){for(var c=0;c<a;++c){var f=R[b+4*c>>2],h=kd[f];h&&(Z.deleteFramebuffer(h),h.name=0,kd[f]=null);}},ta:function(a){if(a){var b=jd[a];b?(Z.deleteProgram(b),b.name=0,jd[a]=null):td(1281);}},ic:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>
7786
- 2],h=ld[f];h&&(Z.deleteRenderbuffer(h),h.name=0,ld[f]=null);}},Sb:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2],h=od[f];h&&(Z.deleteSampler(h),h.name=0,od[f]=null);}},ua:function(a){if(a){var b=md[a];b?(Z.deleteShader(b),md[a]=null):td(1281);}},_b:function(a){if(a){var b=pd[a];b?(Z.deleteSync(b),b.name=0,pd[a]=null):td(1281);}},va:function(a,b){for(var c=0;c<a;c++){var f=R[b+4*c>>2],h=ia[f];h&&(Z.deleteTexture(h),h.name=0,ia[f]=null);}},Ac:Ed,Dc:Ed,wa:function(a){Z.depthMask(!!a);},xa:function(a){Z.disable(a);},
7787
- ya:function(a){Z.disableVertexAttribArray(a);},za:function(a,b,c){Z.drawArrays(a,b,c);},xc:function(a,b,c,f){Z.drawArraysInstanced(a,b,c,f);},vc:function(a,b,c,f,h){Z.pf.drawArraysInstancedBaseInstanceWEBGL(a,b,c,f,h);},tc:function(a,b){for(var c=Fd[a],f=0;f<a;f++)c[f]=R[b+4*f>>2];Z.drawBuffers(c);},Aa:Gd,yc:function(a,b,c,f,h){Z.drawElementsInstanced(a,b,c,f,h);},wc:function(a,b,c,f,h,m,u){Z.pf.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,f,h,m,u);},nc:function(a,b,c,f,h,m){Gd(a,f,h,m);},Ba:function(a){Z.enable(a);},
7788
- Ca:function(a){Z.enableVertexAttribArray(a);},Xb:function(a,b){return (a=Z.fenceSync(a,b))?(b=ha(pd),a.name=b,pd[b]=a,b):0},Da:function(){Z.finish();},Ea:function(){Z.flush();},jc:function(a,b,c,f){Z.framebufferRenderbuffer(a,b,c,ld[f]);},kc:function(a,b,c,f,h){Z.framebufferTexture2D(a,b,c,ia[f],h);},Fa:function(a){Z.frontFace(a);},Ga:function(a,b){Hd(a,b,"createBuffer",hd);},lc:function(a,b){Hd(a,b,"createFramebuffer",kd);},mc:function(a,b){Hd(a,b,"createRenderbuffer",ld);},Tb:function(a,b){Hd(a,b,"createSampler",
7789
- od);},Ha:function(a,b){Hd(a,b,"createTexture",ia);},Bc:Id,Ec:Id,bc:function(a){Z.generateMipmap(a);},Ia:function(a,b,c){c?R[c>>2]=Z.getBufferParameter(a,b):td(1281);},Ja:function(){var a=Z.getError()||ud;ud=0;return a},Ka:function(a,b){Jd(a,b,2);},cc:function(a,b,c,f){a=Z.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;R[f>>2]=a;},L:function(a,b){Jd(a,b,0);},La:function(a,b,c,f){a=Z.getProgramInfoLog(jd[a]);null===a&&(a="(unknown error)");
7790
- b=0<b&&f?ra(a,K,f,b):0;c&&(R[c>>2]=b);},Ma:function(a,b,c){if(c)if(a>=gd)td(1281);else if(a=jd[a],35716==b)a=Z.getProgramInfoLog(a),null===a&&(a="(unknown error)"),R[c>>2]=a.length+1;else if(35719==b){if(!a.Ye)for(b=0;b<Z.getProgramParameter(a,35718);++b)a.Ye=Math.max(a.Ye,Z.getActiveUniform(a,b).name.length+1);R[c>>2]=a.Ye;}else if(35722==b){if(!a.We)for(b=0;b<Z.getProgramParameter(a,35721);++b)a.We=Math.max(a.We,Z.getActiveAttrib(a,b).name.length+1);R[c>>2]=a.We;}else if(35381==b){if(!a.Xe)for(b=0;b<
7791
- Z.getProgramParameter(a,35382);++b)a.Xe=Math.max(a.Xe,Z.getActiveUniformBlockName(a,b).length+1);R[c>>2]=a.Xe;}else R[c>>2]=Z.getProgramParameter(a,b);else td(1281);},dc:function(a,b,c){c?R[c>>2]=Z.getRenderbufferParameter(a,b):td(1281);},Na:function(a,b,c,f){a=Z.getShaderInfoLog(md[a]);null===a&&(a="(unknown error)");b=0<b&&f?ra(a,K,f,b):0;c&&(R[c>>2]=b);},Ob:function(a,b,c,f){a=Z.getShaderPrecisionFormat(a,b);R[c>>2]=a.rangeMin;R[c+4>>2]=a.rangeMax;R[f>>2]=a.precision;},Oa:function(a,b,c){c?35716==b?
7792
- (a=Z.getShaderInfoLog(md[a]),null===a&&(a="(unknown error)"),R[c>>2]=a?a.length+1:0):35720==b?(a=Z.getShaderSource(md[a]),R[c>>2]=a?a.length+1:0):R[c>>2]=Z.getShaderParameter(md[a],b):td(1281);},P:function(a){var b=qd[a];if(!b){switch(a){case 7939:b=Z.getSupportedExtensions()||[];b=b.concat(b.map(function(f){return "GL_"+f}));b=Ld(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=Z.getParameter(a))||td(1280);b=b&&Ld(b);break;case 7938:b=Z.getParameter(7938);b=2<=A.version?"OpenGL ES 3.0 ("+
7793
- b+")":"OpenGL ES 2.0 ("+b+")";b=Ld(b);break;case 35724:b=Z.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=Ld(b);break;default:td(1280);}qd[a]=b;}return b},jb:function(a,b){if(2>A.version)return td(1282),0;var c=rd[a];if(c)return 0>b||b>=c.length?(td(1281),0):c[b];switch(a){case 7939:return c=Z.getSupportedExtensions()||[],c=c.concat(c.map(function(f){return "GL_"+f})),c=c.map(function(f){return Ld(f)}),
7794
- c=rd[a]=c,0>b||b>=c.length?(td(1281),0):c[b];default:return td(1280),0}},Pa:function(a,b){b=b?ub(K,b):"";if(a=jd[a]){var c=a,f=c.Ne,h=c.yf,m;if(!f)for(c.Ne=f={},c.xf={},m=0;m<Z.getProgramParameter(c,35718);++m){var u=Z.getActiveUniform(c,m);var n=u.name;u=u.size;var p=Md(n);p=0<p?n.slice(0,p):n;var v=c.kf;c.kf+=u;h[p]=[u,v];for(n=0;n<u;++n)f[v]=n,c.xf[v++]=p;}c=a.Ne;f=0;h=b;m=Md(b);0<m&&(f=parseInt(b.slice(m+1))>>>0,h=b.slice(0,m));if((h=a.yf[h])&&f<h[0]&&(f+=h[1],c[f]=c[f]||Z.getUniformLocation(a,
7795
- b)))return f}else td(1281);return -1},Pb:function(a,b,c){for(var f=Fd[b],h=0;h<b;h++)f[h]=R[c+4*h>>2];Z.invalidateFramebuffer(a,f);},Qb:function(a,b,c,f,h,m,u){for(var n=Fd[b],p=0;p<b;p++)n[p]=R[c+4*p>>2];Z.invalidateSubFramebuffer(a,n,f,h,m,u);},Yb:function(a){return Z.isSync(pd[a])},Qa:function(a){return (a=ia[a])?Z.isTexture(a):0},Ra:function(a){Z.lineWidth(a);},Sa:function(a){a=jd[a];Z.linkProgram(a);a.Ne=0;a.yf={};},rc:function(a,b,c,f,h,m){Z.uf.multiDrawArraysInstancedBaseInstanceWEBGL(a,R,b>>2,R,
7796
- c>>2,R,f>>2,Ua,h>>2,m);},sc:function(a,b,c,f,h,m,u,n){Z.uf.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,R,b>>2,c,R,f>>2,R,h>>2,R,m>>2,Ua,u>>2,n);},Ta:function(a,b){3317==a&&(sd=b);Z.pixelStorei(a,b);},uc:function(a){Z.readBuffer(a);},Ua:function(a,b,c,f,h,m,u){if(2<=A.version)if(Z.ef)Z.readPixels(a,b,c,f,h,m,u);else {var n=Nd(m);Z.readPixels(a,b,c,f,h,m,n,u>>31-Math.clz32(n.BYTES_PER_ELEMENT));}else (u=Od(m,h,c,f,u))?Z.readPixels(a,b,c,f,h,m,u):td(1280);},ec:function(a,b,c,f){Z.renderbufferStorage(a,
7797
- b,c,f);},ac:function(a,b,c,f,h){Z.renderbufferStorageMultisample(a,b,c,f,h);},Ub:function(a,b,c){Z.samplerParameterf(od[a],b,c);},Vb:function(a,b,c){Z.samplerParameteri(od[a],b,c);},Wb:function(a,b,c){Z.samplerParameteri(od[a],b,R[c>>2]);},Va:function(a,b,c,f){Z.scissor(a,b,c,f);},Wa:function(a,b,c,f){for(var h="",m=0;m<b;++m){var u=f?R[f+4*m>>2]:-1,n=R[c+4*m>>2];u=n?ub(K,n,0>u?void 0:u):"";h+=u;}Z.shaderSource(md[a],h);},Xa:function(a,b,c){Z.stencilFunc(a,b,c);},Ya:function(a,b,c,f){Z.stencilFuncSeparate(a,
7798
- b,c,f);},Za:function(a){Z.stencilMask(a);},_a:function(a,b){Z.stencilMaskSeparate(a,b);},$a:function(a,b,c){Z.stencilOp(a,b,c);},ab:function(a,b,c,f){Z.stencilOpSeparate(a,b,c,f);},bb:function(a,b,c,f,h,m,u,n,p){if(2<=A.version)if(Z.De)Z.texImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Nd(n);Z.texImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texImage2D(a,b,c,f,h,m,u,n,null);else Z.texImage2D(a,b,c,f,h,m,u,n,p?Od(n,u,f,h,p):null);},cb:function(a,b,c){Z.texParameterf(a,b,c);},db:function(a,
7799
- b,c){Z.texParameterf(a,b,V[c>>2]);},eb:function(a,b,c){Z.texParameteri(a,b,c);},fb:function(a,b,c){Z.texParameteri(a,b,R[c>>2]);},oc:function(a,b,c,f,h){Z.texStorage2D(a,b,c,f,h);},gb:function(a,b,c,f,h,m,u,n,p){if(2<=A.version)if(Z.De)Z.texSubImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Nd(n);Z.texSubImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texSubImage2D(a,b,c,f,h,m,u,n,null);else v=null,p&&(v=Od(n,u,h,m,p)),Z.texSubImage2D(a,b,c,f,h,m,u,n,v);},hb:function(a,b){Z.uniform1f(Pd(a),
7800
- b);},ib:function(a,b,c){if(2<=A.version)b&&Z.uniform1fv(Pd(a),V,c>>2,b);else {if(288>=b)for(var f=Qd[b-1],h=0;h<b;++h)f[h]=V[c+4*h>>2];else f=V.subarray(c>>2,c+4*b>>2);Z.uniform1fv(Pd(a),f);}},Zc:function(a,b){Z.uniform1i(Pd(a),b);},_c:function(a,b,c){if(2<=A.version)b&&Z.uniform1iv(Pd(a),R,c>>2,b);else {if(288>=b)for(var f=Rd[b-1],h=0;h<b;++h)f[h]=R[c+4*h>>2];else f=R.subarray(c>>2,c+4*b>>2);Z.uniform1iv(Pd(a),f);}},$c:function(a,b,c){Z.uniform2f(Pd(a),b,c);},ad:function(a,b,c){if(2<=A.version)b&&Z.uniform2fv(Pd(a),
7801
- V,c>>2,2*b);else {if(144>=b)for(var f=Qd[2*b-1],h=0;h<2*b;h+=2)f[h]=V[c+4*h>>2],f[h+1]=V[c+(4*h+4)>>2];else f=V.subarray(c>>2,c+8*b>>2);Z.uniform2fv(Pd(a),f);}},Yc:function(a,b,c){Z.uniform2i(Pd(a),b,c);},Xc:function(a,b,c){if(2<=A.version)b&&Z.uniform2iv(Pd(a),R,c>>2,2*b);else {if(144>=b)for(var f=Rd[2*b-1],h=0;h<2*b;h+=2)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2];else f=R.subarray(c>>2,c+8*b>>2);Z.uniform2iv(Pd(a),f);}},Wc:function(a,b,c,f){Z.uniform3f(Pd(a),b,c,f);},Vc:function(a,b,c){if(2<=A.version)b&&
7802
- Z.uniform3fv(Pd(a),V,c>>2,3*b);else {if(96>=b)for(var f=Qd[3*b-1],h=0;h<3*b;h+=3)f[h]=V[c+4*h>>2],f[h+1]=V[c+(4*h+4)>>2],f[h+2]=V[c+(4*h+8)>>2];else f=V.subarray(c>>2,c+12*b>>2);Z.uniform3fv(Pd(a),f);}},Uc:function(a,b,c,f){Z.uniform3i(Pd(a),b,c,f);},Tc:function(a,b,c){if(2<=A.version)b&&Z.uniform3iv(Pd(a),R,c>>2,3*b);else {if(96>=b)for(var f=Rd[3*b-1],h=0;h<3*b;h+=3)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2],f[h+2]=R[c+(4*h+8)>>2];else f=R.subarray(c>>2,c+12*b>>2);Z.uniform3iv(Pd(a),f);}},Sc:function(a,
7803
- b,c,f,h){Z.uniform4f(Pd(a),b,c,f,h);},Rc:function(a,b,c){if(2<=A.version)b&&Z.uniform4fv(Pd(a),V,c>>2,4*b);else {if(72>=b){var f=Qd[4*b-1],h=V;c>>=2;for(var m=0;m<4*b;m+=4){var u=c+m;f[m]=h[u];f[m+1]=h[u+1];f[m+2]=h[u+2];f[m+3]=h[u+3];}}else f=V.subarray(c>>2,c+16*b>>2);Z.uniform4fv(Pd(a),f);}},Fc:function(a,b,c,f,h){Z.uniform4i(Pd(a),b,c,f,h);},Gc:function(a,b,c){if(2<=A.version)b&&Z.uniform4iv(Pd(a),R,c>>2,4*b);else {if(72>=b)for(var f=Rd[4*b-1],h=0;h<4*b;h+=4)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2],
7804
- f[h+2]=R[c+(4*h+8)>>2],f[h+3]=R[c+(4*h+12)>>2];else f=R.subarray(c>>2,c+16*b>>2);Z.uniform4iv(Pd(a),f);}},Hc:function(a,b,c,f){if(2<=A.version)b&&Z.uniformMatrix2fv(Pd(a),!!c,V,f>>2,4*b);else {if(72>=b)for(var h=Qd[4*b-1],m=0;m<4*b;m+=4)h[m]=V[f+4*m>>2],h[m+1]=V[f+(4*m+4)>>2],h[m+2]=V[f+(4*m+8)>>2],h[m+3]=V[f+(4*m+12)>>2];else h=V.subarray(f>>2,f+16*b>>2);Z.uniformMatrix2fv(Pd(a),!!c,h);}},Ic:function(a,b,c,f){if(2<=A.version)b&&Z.uniformMatrix3fv(Pd(a),!!c,V,f>>2,9*b);else {if(32>=b)for(var h=Qd[9*b-
7805
- 1],m=0;m<9*b;m+=9)h[m]=V[f+4*m>>2],h[m+1]=V[f+(4*m+4)>>2],h[m+2]=V[f+(4*m+8)>>2],h[m+3]=V[f+(4*m+12)>>2],h[m+4]=V[f+(4*m+16)>>2],h[m+5]=V[f+(4*m+20)>>2],h[m+6]=V[f+(4*m+24)>>2],h[m+7]=V[f+(4*m+28)>>2],h[m+8]=V[f+(4*m+32)>>2];else h=V.subarray(f>>2,f+36*b>>2);Z.uniformMatrix3fv(Pd(a),!!c,h);}},Jc:function(a,b,c,f){if(2<=A.version)b&&Z.uniformMatrix4fv(Pd(a),!!c,V,f>>2,16*b);else {if(18>=b){var h=Qd[16*b-1],m=V;f>>=2;for(var u=0;u<16*b;u+=16){var n=f+u;h[u]=m[n];h[u+1]=m[n+1];h[u+2]=m[n+2];h[u+3]=m[n+
7806
- 3];h[u+4]=m[n+4];h[u+5]=m[n+5];h[u+6]=m[n+6];h[u+7]=m[n+7];h[u+8]=m[n+8];h[u+9]=m[n+9];h[u+10]=m[n+10];h[u+11]=m[n+11];h[u+12]=m[n+12];h[u+13]=m[n+13];h[u+14]=m[n+14];h[u+15]=m[n+15];}}else h=V.subarray(f>>2,f+64*b>>2);Z.uniformMatrix4fv(Pd(a),!!c,h);}},Kc:function(a){a=jd[a];Z.useProgram(a);Z.Kf=a;},Lc:function(a,b){Z.vertexAttrib1f(a,b);},Mc:function(a,b){Z.vertexAttrib2f(a,V[b>>2],V[b+4>>2]);},Nc:function(a,b){Z.vertexAttrib3f(a,V[b>>2],V[b+4>>2],V[b+8>>2]);},Oc:function(a,b){Z.vertexAttrib4f(a,V[b>>
7807
- 2],V[b+4>>2],V[b+8>>2],V[b+12>>2]);},pc:function(a,b){Z.vertexAttribDivisor(a,b);},qc:function(a,b,c,f,h){Z.vertexAttribIPointer(a,b,c,f,h);},Pc:function(a,b,c,f,h,m){Z.vertexAttribPointer(a,b,c,!!f,h,m);},Qc:function(a,b,c,f){Z.viewport(a,b,c,f);},rb:function(a,b,c,f){Z.waitSync(pd[a],b,(c>>>0)+4294967296*f);},j:be,n:ce,k:de,I:ee,Lb:fe,Y:ge,X:he,O:ie,o:je,x:ke,r:le,v:me,Kb:ne,Mb:oe,Nb:pe,tb:(a,b,c,f)=>Wd(a,b,c,f)};
7808
- (function(){function a(c){Q=c=c.exports;Ma=Q.bd;Wa();Xa=Q.dd;Za.unshift(Q.cd);db--;w.monitorRunDependencies&&w.monitorRunDependencies(db);if(0==db&&(fb)){var f=fb;fb=null;f();}return c}var b={a:qe};db++;w.monitorRunDependencies&&w.monitorRunDependencies(db);if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){Ja("Module.instantiateWasm callback failed with error: "+c),fa(c);}qb(b,function(c){a(c.instance);}).catch(fa);return {}})();
7809
- var wc=w._free=a=>(wc=w._free=Q.ed)(a),Kd=w._malloc=a=>(Kd=w._malloc=Q.fd)(a),vc=a=>(vc=Q.gd)(a);w.__embind_initialize_bindings=()=>(w.__embind_initialize_bindings=Q.hd)();var re=(a,b)=>(re=Q.id)(a,b),se=()=>(se=Q.jd)(),te=a=>(te=Q.kd)(a);w.dynCall_viji=(a,b,c,f,h)=>(w.dynCall_viji=Q.ld)(a,b,c,f,h);w.dynCall_vijiii=(a,b,c,f,h,m,u)=>(w.dynCall_vijiii=Q.md)(a,b,c,f,h,m,u);w.dynCall_viiiiij=(a,b,c,f,h,m,u,n)=>(w.dynCall_viiiiij=Q.nd)(a,b,c,f,h,m,u,n);
7810
- w.dynCall_jiiiijiiiii=(a,b,c,f,h,m,u,n,p,v,E,H)=>(w.dynCall_jiiiijiiiii=Q.od)(a,b,c,f,h,m,u,n,p,v,E,H);w.dynCall_viiij=(a,b,c,f,h,m)=>(w.dynCall_viiij=Q.pd)(a,b,c,f,h,m);w.dynCall_jii=(a,b,c)=>(w.dynCall_jii=Q.qd)(a,b,c);w.dynCall_vij=(a,b,c,f)=>(w.dynCall_vij=Q.rd)(a,b,c,f);w.dynCall_iiij=(a,b,c,f,h)=>(w.dynCall_iiij=Q.sd)(a,b,c,f,h);w.dynCall_iiiij=(a,b,c,f,h,m)=>(w.dynCall_iiiij=Q.td)(a,b,c,f,h,m);w.dynCall_viij=(a,b,c,f,h)=>(w.dynCall_viij=Q.ud)(a,b,c,f,h);
7811
- w.dynCall_ji=(a,b)=>(w.dynCall_ji=Q.vd)(a,b);w.dynCall_iij=(a,b,c,f)=>(w.dynCall_iij=Q.wd)(a,b,c,f);w.dynCall_jiiiiii=(a,b,c,f,h,m,u)=>(w.dynCall_jiiiiii=Q.xd)(a,b,c,f,h,m,u);w.dynCall_jiiiiji=(a,b,c,f,h,m,u,n)=>(w.dynCall_jiiiiji=Q.yd)(a,b,c,f,h,m,u,n);w.dynCall_iijj=(a,b,c,f,h,m)=>(w.dynCall_iijj=Q.zd)(a,b,c,f,h,m);w.dynCall_iiiji=(a,b,c,f,h,m)=>(w.dynCall_iiiji=Q.Ad)(a,b,c,f,h,m);w.dynCall_iiji=(a,b,c,f,h)=>(w.dynCall_iiji=Q.Bd)(a,b,c,f,h);
7812
- w.dynCall_iijjiii=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iijjiii=Q.Cd)(a,b,c,f,h,m,u,n,p);w.dynCall_vijjjii=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_vijjjii=Q.Dd)(a,b,c,f,h,m,u,n,p,v);w.dynCall_jiji=(a,b,c,f,h)=>(w.dynCall_jiji=Q.Ed)(a,b,c,f,h);w.dynCall_viijii=(a,b,c,f,h,m,u)=>(w.dynCall_viijii=Q.Fd)(a,b,c,f,h,m,u);w.dynCall_iiiiij=(a,b,c,f,h,m,u)=>(w.dynCall_iiiiij=Q.Gd)(a,b,c,f,h,m,u);w.dynCall_iiiiijj=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iiiiijj=Q.Hd)(a,b,c,f,h,m,u,n,p);
7813
- w.dynCall_iiiiiijj=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_iiiiiijj=Q.Id)(a,b,c,f,h,m,u,n,p,v);function de(a,b,c,f){var h=se();try{return Xa.get(a)(b,c,f)}catch(m){te(h);if(m!==m+0)throw m;re(1,0);}}function be(a,b){var c=se();try{return Xa.get(a)(b)}catch(f){te(c);if(f!==f+0)throw f;re(1,0);}}function pe(a,b,c,f,h,m,u,n,p,v){var E=se();try{Xa.get(a)(b,c,f,h,m,u,n,p,v);}catch(H){te(E);if(H!==H+0)throw H;re(1,0);}}
7814
- function le(a,b,c,f){var h=se();try{Xa.get(a)(b,c,f);}catch(m){te(h);if(m!==m+0)throw m;re(1,0);}}function ke(a,b,c){var f=se();try{Xa.get(a)(b,c);}catch(h){te(f);if(h!==h+0)throw h;re(1,0);}}function ie(a){var b=se();try{Xa.get(a)();}catch(c){te(b);if(c!==c+0)throw c;re(1,0);}}function me(a,b,c,f,h){var m=se();try{Xa.get(a)(b,c,f,h);}catch(u){te(m);if(u!==u+0)throw u;re(1,0);}}function je(a,b){var c=se();try{Xa.get(a)(b);}catch(f){te(c);if(f!==f+0)throw f;re(1,0);}}
7815
- function ce(a,b,c){var f=se();try{return Xa.get(a)(b,c)}catch(h){te(f);if(h!==h+0)throw h;re(1,0);}}function oe(a,b,c,f,h,m,u){var n=se();try{Xa.get(a)(b,c,f,h,m,u);}catch(p){te(n);if(p!==p+0)throw p;re(1,0);}}function ee(a,b,c,f,h){var m=se();try{return Xa.get(a)(b,c,f,h)}catch(u){te(m);if(u!==u+0)throw u;re(1,0);}}function fe(a,b,c,f,h,m){var u=se();try{return Xa.get(a)(b,c,f,h,m)}catch(n){te(u);if(n!==n+0)throw n;re(1,0);}}
7816
- function ge(a,b,c,f,h,m,u){var n=se();try{return Xa.get(a)(b,c,f,h,m,u)}catch(p){te(n);if(p!==p+0)throw p;re(1,0);}}function ne(a,b,c,f,h,m){var u=se();try{Xa.get(a)(b,c,f,h,m);}catch(n){te(u);if(n!==n+0)throw n;re(1,0);}}function he(a,b,c,f,h,m,u,n,p,v){var E=se();try{return Xa.get(a)(b,c,f,h,m,u,n,p,v)}catch(H){te(E);if(H!==H+0)throw H;re(1,0);}}var ue;fb=function ve(){ue||we();ue||(fb=ve);};
7817
- function we(){function a(){if(!ue&&(ue=true,w.calledRun=true,!Pa)){sb(Za);ba(w);if(w.onRuntimeInitialized)w.onRuntimeInitialized();if(w.postRun)for("function"==typeof w.postRun&&(w.postRun=[w.postRun]);w.postRun.length;){var b=w.postRun.shift();bb.unshift(b);}sb(bb);}}if(!(0<db)){if(w.preRun)for("function"==typeof w.preRun&&(w.preRun=[w.preRun]);w.preRun.length;)cb();sb(Ya);0<db||(w.setStatus?(w.setStatus("Running..."),setTimeout(function(){setTimeout(function(){w.setStatus("");},1);a();},1)):a());}}
7818
- if(w.preInit)for("function"==typeof w.preInit&&(w.preInit=[w.preInit]);0<w.preInit.length;)w.preInit.pop()();we();
8002
+ a.mf();d=d||a.ImageFormat.PNG;g=g||100;return l?this._encodeToBytes(d,g,l):this._encodeToBytes(d,g)};a.Image.prototype.makeShaderCubic=function(d,g,l,t,x){x=G(x);return this._makeShaderCubic(d,g,l,t,x)};a.Image.prototype.makeShaderOptions=function(d,g,l,t,x){x=G(x);return this._makeShaderOptions(d,g,l,t,x)};a.Image.prototype.readPixels=function(d,g,l,t,x){var C=a.mf();return e(this,d,g,l,t,x,C)};a.Canvas.prototype.clear=function(d){a.de(this.be);d=y(d);this._clear(d);};a.Canvas.prototype.clipRRect=
8003
+ function(d,g,l){a.de(this.be);d=sa(d);this._clipRRect(d,g,l);};a.Canvas.prototype.clipRect=function(d,g,l){a.de(this.be);d=S(d);this._clipRect(d,g,l);};a.Canvas.prototype.concat=function(d){a.de(this.be);d=L(d);this._concat(d);};a.Canvas.prototype.drawArc=function(d,g,l,t,x){a.de(this.be);d=S(d);this._drawArc(d,g,l,t,x);};a.Canvas.prototype.drawAtlas=function(d,g,l,t,x,C,K){if(d&&t&&g&&l&&g.length===l.length){a.de(this.be);x||(x=a.BlendMode.SrcOver);var O=v(g,"HEAPF32"),P=v(l,"HEAPF32"),Y=l.length/4,
8004
+ ba=v(m(C),"HEAPU32");if(K&&"B"in K&&"C"in K)this._drawAtlasCubic(d,P,O,ba,Y,x,K.B,K.C,t);else {let r=a.FilterMode.Linear,D=a.MipmapMode.None;K&&(r=K.filter,"mipmap"in K&&(D=K.mipmap));this._drawAtlasOptions(d,P,O,ba,Y,x,r,D,t);}p(O,g);p(P,l);p(ba,C);}};a.Canvas.prototype.drawCircle=function(d,g,l,t){a.de(this.be);this._drawCircle(d,g,l,t);};a.Canvas.prototype.drawColor=function(d,g){a.de(this.be);d=y(d);void 0!==g?this._drawColor(d,g):this._drawColor(d);};a.Canvas.prototype.drawColorInt=function(d,g){a.de(this.be);
8005
+ this._drawColorInt(d,g||a.BlendMode.SrcOver);};a.Canvas.prototype.drawColorComponents=function(d,g,l,t,x){a.de(this.be);d=M(d,g,l,t);void 0!==x?this._drawColor(d,x):this._drawColor(d);};a.Canvas.prototype.drawDRRect=function(d,g,l){a.de(this.be);d=sa(d,$b);g=sa(g,Ec);this._drawDRRect(d,g,l);};a.Canvas.prototype.drawImage=function(d,g,l,t){a.de(this.be);this._drawImage(d,g,l,t||null);};a.Canvas.prototype.drawImageCubic=function(d,g,l,t,x,C){a.de(this.be);this._drawImageCubic(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageOptions=
8006
+ function(d,g,l,t,x,C){a.de(this.be);this._drawImageOptions(d,g,l,t,x,C||null);};a.Canvas.prototype.drawImageNine=function(d,g,l,t,x){a.de(this.be);g=v(g,"HEAP32",kb);l=S(l);this._drawImageNine(d,g,l,t,x||null);};a.Canvas.prototype.drawImageRect=function(d,g,l,t,x){a.de(this.be);S(g,ka);S(l,Pa);this._drawImageRect(d,ka,Pa,t,!!x);};a.Canvas.prototype.drawImageRectCubic=function(d,g,l,t,x,C){a.de(this.be);S(g,ka);S(l,Pa);this._drawImageRectCubic(d,ka,Pa,t,x,C||null);};a.Canvas.prototype.drawImageRectOptions=
8007
+ function(d,g,l,t,x,C){a.de(this.be);S(g,ka);S(l,Pa);this._drawImageRectOptions(d,ka,Pa,t,x,C||null);};a.Canvas.prototype.drawLine=function(d,g,l,t,x){a.de(this.be);this._drawLine(d,g,l,t,x);};a.Canvas.prototype.drawOval=function(d,g){a.de(this.be);d=S(d);this._drawOval(d,g);};a.Canvas.prototype.drawPaint=function(d){a.de(this.be);this._drawPaint(d);};a.Canvas.prototype.drawParagraph=function(d,g,l){a.de(this.be);this._drawParagraph(d,g,l);};a.Canvas.prototype.drawPatch=function(d,g,l,t,x){if(24>d.length)throw "Need 12 cubic points";
8008
+ if(g&&4>g.length)throw "Need 4 colors";if(l&&8>l.length)throw "Need 4 shader coordinates";a.de(this.be);const C=v(d,"HEAPF32"),K=g?v(m(g),"HEAPU32"):X,O=l?v(l,"HEAPF32"):X;t||(t=a.BlendMode.Modulate);this._drawPatch(C,K,O,t,x);p(O,l);p(K,g);p(C,d);};a.Canvas.prototype.drawPath=function(d,g){a.de(this.be);this._drawPath(d,g);};a.Canvas.prototype.drawPicture=function(d){a.de(this.be);this._drawPicture(d);};a.Canvas.prototype.drawPoints=function(d,g,l){a.de(this.be);var t=v(g,"HEAPF32");this._drawPoints(d,
8009
+ t,g.length/2,l);p(t,g);};a.Canvas.prototype.drawRRect=function(d,g){a.de(this.be);d=sa(d);this._drawRRect(d,g);};a.Canvas.prototype.drawRect=function(d,g){a.de(this.be);d=S(d);this._drawRect(d,g);};a.Canvas.prototype.drawRect4f=function(d,g,l,t,x){a.de(this.be);this._drawRect4f(d,g,l,t,x);};a.Canvas.prototype.drawShadow=function(d,g,l,t,x,C,K){a.de(this.be);var O=v(x,"HEAPF32"),P=v(C,"HEAPF32");g=v(g,"HEAPF32",ac);l=v(l,"HEAPF32",bc);this._drawShadow(d,g,l,t,O,P,K);p(O,x);p(P,C);};a.getShadowLocalBounds=
8010
+ function(d,g,l,t,x,C,K){d=G(d);l=v(l,"HEAPF32",ac);t=v(t,"HEAPF32",bc);if(!this._getShadowLocalBounds(d,g,l,t,x,C,ka))return null;g=Ca.toTypedArray();return K?(K.set(g),K):g.slice()};a.Canvas.prototype.drawTextBlob=function(d,g,l,t){a.de(this.be);this._drawTextBlob(d,g,l,t);};a.Canvas.prototype.drawVertices=function(d,g,l){a.de(this.be);this._drawVertices(d,g,l);};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(kb);var g=Ab.toTypedArray();d?d.set(g):d=g.slice();return d};
8011
+ a.Canvas.prototype.quickReject=function(d){d=S(d);return this._quickReject(d)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(bb);for(var d=bb,g=Array(16),l=0;16>l;l++)g[l]=a.HEAPF32[d/4+l];return g};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(Oa);for(var d=Array(9),g=0;9>g;g++)d[g]=a.HEAPF32[Oa/4+g];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.be=this.be;return d};a.Canvas.prototype.readPixels=function(d,g,l,t,x){a.de(this.be);
8012
+ return e(this,d,g,l,t,x)};a.Canvas.prototype.saveLayer=function(d,g,l,t,x){g=S(g);return this._saveLayer(d||null,g,l||null,t||0,x||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(d,g,l,t,x,C,K,O){if(d.byteLength%(g*l))throw "pixels length must be a multiple of the srcWidth * srcHeight";a.de(this.be);var P=d.byteLength/(g*l);C=C||a.AlphaType.Unpremul;K=K||a.ColorType.RGBA_8888;O=O||a.ColorSpace.SRGB;var Y=P*g;P=v(d,"HEAPU8");g=this._writePixels({width:g,height:l,colorType:K,alphaType:C,colorSpace:O},
8013
+ P,Y,t,x);p(P,d);return g};a.ColorFilter.MakeBlend=function(d,g,l){d=y(d);l=l||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(d,g,l)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw "invalid color matrix";var g=v(d,"HEAPF32"),l=a.ColorFilter._makeMatrix(g);p(g,d);return l};a.ContourMeasure.prototype.getPosTan=function(d,g){this._getPosTan(d,ka);d=Ca.toTypedArray();return g?(g.set(d),g):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,g,l){d=S(d,ka);g=G(g);this._getOutputBounds(d,
8014
+ g,kb);g=Ab.toTypedArray();return l?(l.set(g),l):g.slice()};a.ImageFilter.MakeDropShadow=function(d,g,l,t,x,C){x=y(x,Va);return a.ImageFilter._MakeDropShadow(d,g,l,t,x,C)};a.ImageFilter.MakeDropShadowOnly=function(d,g,l,t,x,C){x=y(x,Va);return a.ImageFilter._MakeDropShadowOnly(d,g,l,t,x,C)};a.ImageFilter.MakeImage=function(d,g,l,t){l=S(l,ka);t=S(t,Pa);if("B"in g&&"C"in g)return a.ImageFilter._MakeImageCubic(d,g.B,g.C,l,t);const x=g.filter;let C=a.MipmapMode.None;"mipmap"in g&&(C=g.mipmap);return a.ImageFilter._MakeImageOptions(d,
8015
+ x,C,l,t)};a.ImageFilter.MakeMatrixTransform=function(d,g,l){d=G(d);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(d,g.B,g.C,l);const t=g.filter;let x=a.MipmapMode.None;"mipmap"in g&&(x=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,x,l)};a.Paint.prototype.getColor=function(){this._getColor(Va);return T(Va)};a.Paint.prototype.setColor=function(d,g){g=g||null;d=y(d);this._setColor(d,g);};a.Paint.prototype.setColorComponents=function(d,g,l,t,x){x=x||null;d=M(d,g,l,
8016
+ t);this._setColor(d,x);};a.Path.prototype.getPoint=function(d,g){this._getPoint(d,ka);d=Ca.toTypedArray();return g?(g[0]=d[0],g[1]=d[1],g):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,g,l,t,x){t=G(t);x=S(x);return this._makeShader(d,g,l,t,x)};a.Picture.prototype.cullRect=function(d){this._cullRect(ka);var g=Ca.toTypedArray();return d?(d.set(g),d):g.slice()};a.PictureRecorder.prototype.beginRecording=function(d,g){d=S(d);return this._beginRecording(d,!!g)};a.Surface.prototype.getCanvas=function(){var d=
8017
+ this._getCanvas();d.be=this.be;return d};a.Surface.prototype.makeImageSnapshot=function(d){a.de(this.be);d=v(d,"HEAP32",kb);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.de(this.be);d=this._makeSurface(d);d.be=this.be;return d};a.Surface.prototype.Wf=function(d,g){this.Ze||(this.Ze=this.getCanvas());return requestAnimationFrame(function(){a.de(this.be);d(this.Ze);this.flush(g);}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=
8018
+ a.Surface.prototype.Wf);a.Surface.prototype.Sf=function(d,g){this.Ze||(this.Ze=this.getCanvas());requestAnimationFrame(function(){a.de(this.be);d(this.Ze);this.flush(g);this.dispose();}.bind(this));};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Sf);a.PathEffect.MakeDash=function(d,g){g||(g=0);if(!d.length||1===d.length%2)throw "Intervals array must have even length";var l=v(d,"HEAPF32");g=a.PathEffect._MakeDash(l,d.length,g);p(l,d);return g};a.PathEffect.MakeLine2D=
8019
+ function(d,g){g=G(g);return a.PathEffect._MakeLine2D(d,g)};a.PathEffect.MakePath2D=function(d,g){d=G(d);return a.PathEffect._MakePath2D(d,g)};a.Shader.MakeColor=function(d,g){g=g||null;d=y(d);return a.Shader._MakeColor(d,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,g,l,t,x,C,K,O){O=O||null;var P=E(l),Y=v(t,"HEAPF32");K=K||0;C=G(C);var ba=Ca.toTypedArray();ba.set(d);ba.set(g,2);d=a.Shader._MakeLinearGradient(ka,P.te,P.colorType,Y,P.count,
8020
+ x,K,C,O);p(P.te,l);t&&p(Y,t);return d};a.Shader.MakeRadialGradient=function(d,g,l,t,x,C,K,O){O=O||null;var P=E(l),Y=v(t,"HEAPF32");K=K||0;C=G(C);d=a.Shader._MakeRadialGradient(d[0],d[1],g,P.te,P.colorType,Y,P.count,x,K,C,O);p(P.te,l);t&&p(Y,t);return d};a.Shader.MakeSweepGradient=function(d,g,l,t,x,C,K,O,P,Y){Y=Y||null;var ba=E(l),r=v(t,"HEAPF32");K=K||0;O=O||0;P=P||360;C=G(C);d=a.Shader._MakeSweepGradient(d,g,ba.te,ba.colorType,r,ba.count,x,O,P,K,C,Y);p(ba.te,l);t&&p(r,t);return d};a.Shader.MakeTwoPointConicalGradient=
8021
+ function(d,g,l,t,x,C,K,O,P,Y){Y=Y||null;var ba=E(x),r=v(C,"HEAPF32");P=P||0;O=G(O);var D=Ca.toTypedArray();D.set(d);D.set(l,2);d=a.Shader._MakeTwoPointConicalGradient(ka,g,t,ba.te,ba.colorType,r,ba.count,K,P,O,Y);p(ba.te,x);C&&p(r,C);return d};a.Vertices.prototype.bounds=function(d){this._bounds(ka);var g=Ca.toTypedArray();return d?(d.set(g),d):g.slice()};a.ke&&a.ke.forEach(function(d){d();});};a.computeTonalColors=function(e){var d=v(e.ambient,"HEAPF32"),g=v(e.spot,"HEAPF32");this._computeTonalColors(d,
8022
+ g);var l={ambient:T(d),spot:T(g)};p(d,e.ambient);p(g,e.spot);return l};a.LTRBRect=function(e,d,g,l){return Float32Array.of(e,d,g,l)};a.XYWHRect=function(e,d,g,l){return Float32Array.of(e,d,e+g,d+l)};a.LTRBiRect=function(e,d,g,l){return Int32Array.of(e,d,g,l)};a.XYWHiRect=function(e,d,g,l){return Int32Array.of(e,d,e+g,d+l)};a.RRectXY=function(e,d,g){return Float32Array.of(e[0],e[1],e[2],e[3],d,g,d,g,d,g,d,g)};a.MakeAnimatedImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);
8023
+ a.HEAPU8.set(e,d);return (e=a._decodeAnimatedImage(d,e.byteLength))?e:null};a.MakeImageFromEncoded=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._decodeImage(d,e.byteLength))?e:null};var lb=null;a.MakeImageFromCanvasImageSource=function(e){var d=e.width,g=e.height;lb||(lb=document.createElement("canvas"));lb.width=d;lb.height=g;var l=lb.getContext("2d",{willReadFrequently:true});l.drawImage(e,0,0);e=l.getImageData(0,0,d,g);return a.MakeImage({width:d,height:g,
8024
+ alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},e.data,4*d)};a.MakeImage=function(e,d,g){var l=a._malloc(d.length);a.HEAPU8.set(d,l);return a._MakeImage(e,l,d.length,g)};a.MakeVertices=function(e,d,g,l,t,x){var C=t&&t.length||0,K=0;g&&g.length&&(K|=1);l&&l.length&&(K|=2);void 0===x||x||(K|=4);e=new a._VerticesBuilder(e,d.length/2,C,K);v(d,"HEAPF32",e.positions());e.texCoords()&&v(g,"HEAPF32",e.texCoords());e.colors()&&v(m(l),"HEAPU32",e.colors());e.indices()&&
8025
+ v(t,"HEAPU16",e.indices());return e.detach()};a.Matrix={};a.Matrix.identity=function(){return c(3)};a.Matrix.invert=function(e){var d=e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7];return d?[(e[4]*e[8]-e[5]*e[7])/d,(e[2]*e[7]-e[1]*e[8])/d,(e[1]*e[5]-e[2]*e[4])/d,(e[5]*e[6]-e[3]*e[8])/d,(e[0]*e[8]-e[2]*e[6])/d,(e[2]*e[3]-e[0]*e[5])/d,(e[3]*e[7]-e[4]*e[6])/d,(e[1]*e[6]-e[0]*e[7])/d,(e[0]*e[4]-e[1]*e[3])/d]:null};a.Matrix.mapPoints=function(e,d){for(var g=0;g<
8026
+ d.length;g+=2){var l=d[g],t=d[g+1],x=e[6]*l+e[7]*t+e[8],C=e[3]*l+e[4]*t+e[5];d[g]=(e[0]*l+e[1]*t+e[2])/x;d[g+1]=C/x;}return d};a.Matrix.multiply=function(){return jb(3,arguments)};a.Matrix.rotated=function(e,d,g){d=d||0;g=g||0;var l=Math.sin(e);e=Math.cos(e);return [e,-l,pa(l,g,1-e,d),l,e,pa(-l,d,1-e,g),0,0,1]};a.Matrix.scaled=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,0,1);return b([g-e*g,l-d*l],t,3,2,0)};a.Matrix.skewed=function(e,d,g,l){g=g||0;l=l||0;var t=b([e,d],c(3),3,1,-1);return b([-e*
8027
+ g,-d*l],t,3,2,0)};a.Matrix.translated=function(e,d){return b(arguments,c(3),3,2,0)};a.Vector={};a.Vector.dot=function(e,d){return e.map(function(g,l){return g*d[l]}).reduce(function(g,l){return g+l})};a.Vector.lengthSquared=function(e){return a.Vector.dot(e,e)};a.Vector.length=function(e){return Math.sqrt(a.Vector.lengthSquared(e))};a.Vector.mulScalar=function(e,d){return e.map(function(g){return g*d})};a.Vector.add=function(e,d){return e.map(function(g,l){return g+d[l]})};a.Vector.sub=function(e,
8028
+ d){return e.map(function(g,l){return g-d[l]})};a.Vector.dist=function(e,d){return a.Vector.length(a.Vector.sub(e,d))};a.Vector.normalize=function(e){return a.Vector.mulScalar(e,1/a.Vector.length(e))};a.Vector.cross=function(e,d){return [e[1]*d[2]-e[2]*d[1],e[2]*d[0]-e[0]*d[2],e[0]*d[1]-e[1]*d[0]]};a.M44={};a.M44.identity=function(){return c(4)};a.M44.translated=function(e){return b(e,c(4),4,3,0)};a.M44.scaled=function(e){return b(e,c(4),4,0,1)};a.M44.rotated=function(e,d){return a.M44.rotatedUnitSinCos(a.Vector.normalize(e),
8029
+ Math.sin(d),Math.cos(d))};a.M44.rotatedUnitSinCos=function(e,d,g){var l=e[0],t=e[1];e=e[2];var x=1-g;return [x*l*l+g,x*l*t-d*e,x*l*e+d*t,0,x*l*t+d*e,x*t*t+g,x*t*e-d*l,0,x*l*e-d*t,x*t*e+d*l,x*e*e+g,0,0,0,0,1]};a.M44.lookat=function(e,d,g){d=a.Vector.normalize(a.Vector.sub(d,e));g=a.Vector.normalize(g);g=a.Vector.normalize(a.Vector.cross(d,g));var l=a.M44.identity();b(g,l,4,0,0);b(a.Vector.cross(g,d),l,4,1,0);b(a.Vector.mulScalar(d,-1),l,4,2,0);b(e,l,4,3,0);e=a.M44.invert(l);return null===e?a.M44.identity():
8030
+ e};a.M44.perspective=function(e,d,g){var l=1/(d-e);g/=2;g=Math.cos(g)/Math.sin(g);return [g,0,0,0,0,g,0,0,0,0,(d+e)*l,2*d*e*l,0,0,-1,1]};a.M44.rc=function(e,d,g){return e[4*d+g]};a.M44.multiply=function(){return jb(4,arguments)};a.M44.invert=function(e){var d=e[0],g=e[4],l=e[8],t=e[12],x=e[1],C=e[5],K=e[9],O=e[13],P=e[2],Y=e[6],ba=e[10],r=e[14],D=e[3],U=e[7],ea=e[11];e=e[15];var la=d*C-g*x,ta=d*K-l*x,xa=d*O-t*x,Da=g*K-l*C,fa=g*O-t*C,I=l*O-t*K,k=P*U-Y*D,q=P*ea-ba*D,z=P*e-r*D,A=Y*ea-ba*U,F=Y*e-r*U,H=
8031
+ ba*e-r*ea,N=la*H-ta*F+xa*A+Da*z-fa*q+I*k,V=1/N;if(0===N||Infinity===V)return null;la*=V;ta*=V;xa*=V;Da*=V;fa*=V;I*=V;k*=V;q*=V;z*=V;A*=V;F*=V;H*=V;d=[C*H-K*F+O*A,K*z-x*H-O*q,x*F-C*z+O*k,C*q-x*A-K*k,l*F-g*H-t*A,d*H-l*z+t*q,g*z-d*F-t*k,d*A-g*q+l*k,U*I-ea*fa+e*Da,ea*xa-D*I-e*ta,D*fa-U*xa+e*la,U*ta-D*Da-ea*la,ba*fa-Y*I-r*Da,P*I-ba*xa+r*ta,Y*xa-P*fa-r*la,P*Da-Y*ta+ba*la];return d.every(function(qa){return !isNaN(qa)&&Infinity!==qa&&-Infinity!==qa})?d:null};a.M44.transpose=function(e){return [e[0],e[4],e[8],
8032
+ e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]]};a.M44.mustInvert=function(e){e=a.M44.invert(e);if(null===e)throw "Matrix not invertible";return e};a.M44.setupCamera=function(e,d,g){var l=a.M44.lookat(g.eye,g.coa,g.up);g=a.M44.perspective(g.near,g.far,g.angle);d=[(e[2]-e[0])/2,(e[3]-e[1])/2,d];e=a.M44.multiply(a.M44.translated([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),a.M44.scaled(d));return a.M44.multiply(e,g,l,a.M44.mustInvert(e))};a.ColorMatrix={};a.ColorMatrix.identity=function(){var e=
8033
+ new Float32Array(20);e[0]=1;e[6]=1;e[12]=1;e[18]=1;return e};a.ColorMatrix.scaled=function(e,d,g,l){var t=new Float32Array(20);t[0]=e;t[6]=d;t[12]=g;t[18]=l;return t};var Id=[[6,7,11,12],[0,10,2,12],[0,1,5,6]];a.ColorMatrix.rotated=function(e,d,g){var l=a.ColorMatrix.identity();e=Id[e];l[e[0]]=g;l[e[1]]=d;l[e[2]]=-d;l[e[3]]=g;return l};a.ColorMatrix.postTranslate=function(e,d,g,l,t){e[4]+=d;e[9]+=g;e[14]+=l;e[19]+=t;return e};a.ColorMatrix.concat=function(e,d){for(var g=new Float32Array(20),l=0,t=
8034
+ 0;20>t;t+=5){for(var x=0;4>x;x++)g[l++]=e[t]*d[x]+e[t+1]*d[x+5]+e[t+2]*d[x+10]+e[t+3]*d[x+15];g[l++]=e[t]*d[4]+e[t+1]*d[9]+e[t+2]*d[14]+e[t+3]*d[19]+e[t+4];}return g};(function(e){e.ke=e.ke||[];e.ke.push(function(){function d(r){r&&(r.dir=0===r.dir?e.TextDirection.RTL:e.TextDirection.LTR);return r}function g(r){if(!r||!r.length)return [];for(var D=[],U=0;U<r.length;U+=5){var ea=e.LTRBRect(r[U],r[U+1],r[U+2],r[U+3]),la=e.TextDirection.LTR;0===r[U+4]&&(la=e.TextDirection.RTL);D.push({rect:ea,dir:la});}e._free(r.byteOffset);
8035
+ return D}function l(r){r=r||{};void 0===r.weight&&(r.weight=e.FontWeight.Normal);r.width=r.width||e.FontWidth.Normal;r.slant=r.slant||e.FontSlant.Upright;return r}function t(r){if(!r||!r.length)return X;for(var D=[],U=0;U<r.length;U++){var ea=x(r[U]);D.push(ea);}return v(D,"HEAPU32")}function x(r){if(O[r])return O[r];var D=na(r)+1,U=e._malloc(D);oa(r,J,U,D);return O[r]=U}function C(r){r._colorPtr=y(r.color);r._foregroundColorPtr=X;r._backgroundColorPtr=X;r._decorationColorPtr=X;r.foregroundColor&&
8036
+ (r._foregroundColorPtr=y(r.foregroundColor,P));r.backgroundColor&&(r._backgroundColorPtr=y(r.backgroundColor,Y));r.decorationColor&&(r._decorationColorPtr=y(r.decorationColor,ba));Array.isArray(r.fontFamilies)&&r.fontFamilies.length?(r._fontFamiliesPtr=t(r.fontFamilies),r._fontFamiliesLen=r.fontFamilies.length):(r._fontFamiliesPtr=X,r._fontFamiliesLen=0);if(r.locale){var D=r.locale;r._localePtr=x(D);r._localeLen=na(D);}else r._localePtr=X,r._localeLen=0;if(Array.isArray(r.shadows)&&r.shadows.length){D=
8037
+ r.shadows;var U=D.map(function(fa){return fa.color||e.BLACK}),ea=D.map(function(fa){return fa.blurRadius||0});r._shadowLen=D.length;for(var la=e._malloc(8*D.length),ta=la/4,xa=0;xa<D.length;xa++){var Da=D[xa].offset||[0,0];e.HEAPF32[ta]=Da[0];e.HEAPF32[ta+1]=Da[1];ta+=2;}r._shadowColorsPtr=E(U).te;r._shadowOffsetsPtr=la;r._shadowBlurRadiiPtr=v(ea,"HEAPF32");}else r._shadowLen=0,r._shadowColorsPtr=X,r._shadowOffsetsPtr=X,r._shadowBlurRadiiPtr=X;Array.isArray(r.fontFeatures)&&r.fontFeatures.length?(D=
8038
+ r.fontFeatures,U=D.map(function(fa){return fa.name}),ea=D.map(function(fa){return fa.value}),r._fontFeatureLen=D.length,r._fontFeatureNamesPtr=t(U),r._fontFeatureValuesPtr=v(ea,"HEAPU32")):(r._fontFeatureLen=0,r._fontFeatureNamesPtr=X,r._fontFeatureValuesPtr=X);Array.isArray(r.fontVariations)&&r.fontVariations.length?(D=r.fontVariations,U=D.map(function(fa){return fa.axis}),ea=D.map(function(fa){return fa.value}),r._fontVariationLen=D.length,r._fontVariationAxesPtr=t(U),r._fontVariationValuesPtr=
8039
+ v(ea,"HEAPF32")):(r._fontVariationLen=0,r._fontVariationAxesPtr=X,r._fontVariationValuesPtr=X);}function K(r){e._free(r._fontFamiliesPtr);e._free(r._shadowColorsPtr);e._free(r._shadowOffsetsPtr);e._free(r._shadowBlurRadiiPtr);e._free(r._fontFeatureNamesPtr);e._free(r._fontFeatureValuesPtr);e._free(r._fontVariationAxesPtr);e._free(r._fontVariationValuesPtr);}e.Paragraph.prototype.getRectsForRange=function(r,D,U,ea){r=this._getRectsForRange(r,D,U,ea);return g(r)};e.Paragraph.prototype.getRectsForPlaceholders=
8040
+ function(){var r=this._getRectsForPlaceholders();return g(r)};e.Paragraph.prototype.getGlyphInfoAt=function(r){return d(this._getGlyphInfoAt(r))};e.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(r,D){return d(this._getClosestGlyphInfoAtCoordinate(r,D))};e.TypefaceFontProvider.prototype.registerFont=function(r,D){r=e.Typeface.MakeTypefaceFromData(r);if(!r)return null;D=x(D);this._registerFont(r,D);r.delete();};e.ParagraphStyle=function(r){r.disableHinting=r.disableHinting||false;if(r.ellipsis){var D=
8041
+ r.ellipsis;r._ellipsisPtr=x(D);r._ellipsisLen=na(D);}else r._ellipsisPtr=X,r._ellipsisLen=0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.maxLines=r.maxLines||0;r.replaceTabCharacters=r.replaceTabCharacters||false;D=(D=r.strutStyle)||{};D.strutEnabled=D.strutEnabled||false;D.strutEnabled&&Array.isArray(D.fontFamilies)&&D.fontFamilies.length?(D._fontFamiliesPtr=t(D.fontFamilies),D._fontFamiliesLen=D.fontFamilies.length):(D._fontFamiliesPtr=X,D._fontFamiliesLen=0);D.fontStyle=l(D.fontStyle);null==D.fontSize&&
8042
+ (D.fontSize=-1);null==D.heightMultiplier&&(D.heightMultiplier=-1);D.halfLeading=D.halfLeading||false;D.leading=D.leading||0;D.forceStrutHeight=D.forceStrutHeight||false;r.strutStyle=D;r.textAlign=r.textAlign||e.TextAlign.Start;r.textDirection=r.textDirection||e.TextDirection.LTR;r.textHeightBehavior=r.textHeightBehavior||e.TextHeightBehavior.All;r.textStyle=e.TextStyle(r.textStyle);r.applyRoundingHack=false!==r.applyRoundingHack;return r};e.TextStyle=function(r){r.color||(r.color=e.BLACK);r.decoration=r.decoration||
8043
+ 0;r.decorationThickness=r.decorationThickness||0;r.decorationStyle=r.decorationStyle||e.DecorationStyle.Solid;r.textBaseline=r.textBaseline||e.TextBaseline.Alphabetic;null==r.fontSize&&(r.fontSize=-1);r.letterSpacing=r.letterSpacing||0;r.wordSpacing=r.wordSpacing||0;null==r.heightMultiplier&&(r.heightMultiplier=-1);r.halfLeading=r.halfLeading||false;r.fontStyle=l(r.fontStyle);return r};var O={},P=e._malloc(16),Y=e._malloc(16),ba=e._malloc(16);e.ParagraphBuilder.Make=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._Make(r,
8044
+ D);K(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontProvider=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontProvider(r,D);K(r.textStyle);return D};e.ParagraphBuilder.MakeFromFontCollection=function(r,D){C(r.textStyle);D=e.ParagraphBuilder._MakeFromFontCollection(r,D);K(r.textStyle);return D};e.ParagraphBuilder.ShapeText=function(r,D,U){let ea=0;for(const la of D)ea+=la.length;if(ea!==r.length)throw "Accumulated block lengths must equal text.length";return e.ParagraphBuilder._ShapeText(r,
8045
+ D,U)};e.ParagraphBuilder.prototype.pushStyle=function(r){C(r);this._pushStyle(r);K(r);};e.ParagraphBuilder.prototype.pushPaintStyle=function(r,D,U){C(r);this._pushPaintStyle(r,D,U);K(r);};e.ParagraphBuilder.prototype.addPlaceholder=function(r,D,U,ea,la){U=U||e.PlaceholderAlignment.Baseline;ea=ea||e.TextBaseline.Alphabetic;this._addPlaceholder(r||0,D||0,U,ea,la||0);};e.ParagraphBuilder.prototype.setWordsUtf8=function(r){var D=v(r,"HEAPU32");this._setWordsUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setWordsUtf16=
8046
+ function(r){var D=v(r,"HEAPU32");this._setWordsUtf16(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=function(r){var D=v(r,"HEAPU32");this._setGraphemeBreaksUtf16(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf8=function(r){var D=v(r,"HEAPU32");this._setLineBreaksUtf8(D,r&&r.length||0);p(D,r);};e.ParagraphBuilder.prototype.setLineBreaksUtf16=
8047
+ function(r){var D=v(r,"HEAPU32");this._setLineBreaksUtf16(D,r&&r.length||0);p(D,r);};});})(w);a.ke=a.ke||[];a.ke.push(function(){a.Path.prototype.op=function(e,d){return this._op(e,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?this:null};});a.ke=a.ke||[];a.ke.push(function(){a.Canvas.prototype.drawText=function(e,d,g,l,t){var x=na(e),C=a._malloc(x+1);oa(e,J,C,x+1);this._drawSimpleText(C,x,d,g,t,l);a._free(C);};a.Canvas.prototype.drawGlyphs=function(e,d,g,l,t,x){if(!(2*e.length<=
8048
+ d.length))throw "Not enough positions for the array of gyphs";a.de(this.be);const C=v(e,"HEAPU16"),K=v(d,"HEAPF32");this._drawGlyphs(e.length,C,K,g,l,t,x);p(K,d);p(C,e);};a.Font.prototype.getGlyphBounds=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(16*e.length);this._getGlyphWidthBounds(l,e.length,X,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.Font.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);
8049
+ var l=na(e)+1,t=a._malloc(l);oa(e,J,t,l);e=a._malloc(2*d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.Font.prototype.getGlyphIntercepts=function(e,d,g,l){var t=v(e,"HEAPU16"),x=v(d,"HEAPF32");return this._getGlyphIntercepts(t,e.length,!(e&&e._ck),x,d.length,!(d&&d._ck),g,l)};a.Font.prototype.getGlyphWidths=function(e,d,g){var l=v(e,"HEAPU16"),t=a._malloc(4*
8050
+ e.length);this._getGlyphWidthBounds(l,e.length,t,X,d||null);d=new Float32Array(a.HEAPU8.buffer,t,e.length);p(l,e);if(g)return g.set(d),a._free(t),g;e=Float32Array.from(d);a._free(t);return e};a.FontMgr.FromData=function(){if(!arguments.length)return null;var e=arguments;1===e.length&&Array.isArray(e[0])&&(e=arguments[0]);if(!e.length)return null;for(var d=[],g=[],l=0;l<e.length;l++){var t=new Uint8Array(e[l]),x=v(t,"HEAPU8");d.push(x);g.push(t.byteLength);}d=v(d,"HEAPU32");g=v(g,"HEAPU32");e=a.FontMgr._fromData(d,
8051
+ g,e.length);a._free(d);a._free(g);return e};a.Typeface.MakeTypefaceFromData=function(e){e=new Uint8Array(e);var d=v(e,"HEAPU8");return (e=a.Typeface._MakeTypefaceFromData(d,e.byteLength))?e:null};a.Typeface.MakeFreeTypeFaceFromData=a.Typeface.MakeTypefaceFromData;a.Typeface.prototype.getGlyphIDs=function(e,d,g){d||(d=e.length);var l=na(e)+1,t=a._malloc(l);oa(e,J,t,l);e=a._malloc(2*d);d=this._getGlyphIDs(t,l-1,d,e);a._free(t);if(0>d)return a._free(e),null;t=new Uint16Array(a.HEAPU8.buffer,e,d);if(g)return g.set(t),
8052
+ a._free(e),g;g=Uint16Array.from(t);a._free(e);return g};a.TextBlob.MakeOnPath=function(e,d,g,l){if(e&&e.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(e,g);l||(l=0);var t=g.getGlyphIDs(e);t=g.getGlyphWidths(t);var x=[];d=new a.ContourMeasureIter(d,false,1);for(var C=d.next(),K=new Float32Array(4),O=0;O<e.length&&C;O++){var P=t[O];l+=P/2;if(l>C.length()){C.delete();C=d.next();if(!C){e=e.substring(0,O);break}l=P/2;}C.getPosTan(l,K);var Y=K[2],ba=K[3];x.push(Y,ba,K[0]-P/2*Y,
8053
+ K[1]-P/2*ba);l+=P/2;}e=this.MakeFromRSXform(e,x,g);C&&C.delete();d.delete();return e}};a.TextBlob.MakeFromRSXform=function(e,d,g){var l=na(e)+1,t=a._malloc(l);oa(e,J,t,l);e=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXform(t,l-1,e,g);a._free(t);return g?g:null};a.TextBlob.MakeFromRSXformGlyphs=function(e,d,g){var l=v(e,"HEAPU16");d=v(d,"HEAPF32");g=a.TextBlob._MakeFromRSXformGlyphs(l,2*e.length,d,g);p(l,e);return g?g:null};a.TextBlob.MakeFromGlyphs=function(e,d){var g=v(e,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(g,
8054
+ 2*e.length,d);p(g,e);return d?d:null};a.TextBlob.MakeFromText=function(e,d){var g=na(e)+1,l=a._malloc(g);oa(e,J,l,g);e=a.TextBlob._MakeFromText(l,g-1,d);a._free(l);return e?e:null};a.MallocGlyphIDs=function(e){return a.Malloc(Uint16Array,e)};});a.ke=a.ke||[];a.ke.push(function(){a.MakePicture=function(e){e=new Uint8Array(e);var d=a._malloc(e.byteLength);a.HEAPU8.set(e,d);return (e=a._MakePicture(d,e.byteLength))?e:null};});a.ke=a.ke||[];a.ke.push(function(){a.RuntimeEffect.Make=function(e,d){return a.RuntimeEffect._Make(e,
8055
+ {onError:d||function(g){console.log("RuntimeEffect error",g);}})};a.RuntimeEffect.MakeForBlender=function(e,d){return a.RuntimeEffect._MakeForBlender(e,{onError:d||function(g){console.log("RuntimeEffect error",g);}})};a.RuntimeEffect.prototype.makeShader=function(e,d){var g=!e._ck,l=v(e,"HEAPF32");d=G(d);return this._makeShader(l,4*e.length,g,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(e,d,g){var l=!e._ck,t=v(e,"HEAPF32");g=G(g);for(var x=[],C=0;C<d.length;C++)x.push(d[C].ae.ie);d=
8056
+ v(x,"HEAPU32");return this._makeShaderWithChildren(t,4*e.length,l,d,x.length,g)};a.RuntimeEffect.prototype.makeBlender=function(e){var d=!e._ck,g=v(e,"HEAPF32");return this._makeBlender(g,4*e.length,d)};});(function(){function e(I){for(var k=0;k<I.length;k++)if(void 0!==I[k]&&!Number.isFinite(I[k]))return false;return true}function d(I){var k=a.getColorComponents(I);I=k[0];var q=k[1],z=k[2];k=k[3];if(1===k)return I=I.toString(16).toLowerCase(),q=q.toString(16).toLowerCase(),z=z.toString(16).toLowerCase(),
8057
+ I=1===I.length?"0"+I:I,q=1===q.length?"0"+q:q,z=1===z.length?"0"+z:z,"#"+I+q+z;k=0===k||1===k?k:k.toFixed(8);return "rgba("+I+", "+q+", "+z+", "+k+")"}function g(I){return a.parseColorString(I,xa)}function l(I){I=Da.exec(I);if(!I)return null;var k=parseFloat(I[4]),q=16;switch(I[5]){case "em":case "rem":q=16*k;break;case "pt":q=4*k/3;break;case "px":q=k;break;case "pc":q=16*k;break;case "in":q=96*k;break;case "cm":q=96*k/2.54;break;case "mm":q=96/25.4*k;break;case "q":q=96/25.4/4*k;break;case "%":q=
8058
+ 16/75*k;}return {style:I[1],variant:I[2],weight:I[3],sizePx:q,family:I[6].trim()}}function t(){fa||(fa={"Noto Mono":{"*":a.Typeface.GetDefault()},monospace:{"*":a.Typeface.GetDefault()}});}function x(I){this.ce=I;this.fe=new a.Paint;this.fe.setAntiAlias(true);this.fe.setStrokeMiter(10);this.fe.setStrokeCap(a.StrokeCap.Butt);this.fe.setStrokeJoin(a.StrokeJoin.Miter);this.kf="10px monospace";this.Fe=new a.Font(a.Typeface.GetDefault(),10);this.Fe.setSubpixel(true);this.se=this.ye=a.BLACK;this.Oe=0;this.af=
8059
+ a.TRANSPARENT;this.Qe=this.Pe=0;this.bf=this.Be=1;this.$e=0;this.Ne=[];this.ee=a.BlendMode.SrcOver;this.fe.setStrokeWidth(this.bf);this.fe.setBlendMode(this.ee);this.he=new a.Path;this.je=a.Matrix.identity();this.Ff=[];this.Ue=[];this.Ee=function(){this.he.delete();this.fe.delete();this.Fe.delete();this.Ue.forEach(function(k){k.Ee();});};Object.defineProperty(this,"currentTransform",{enumerable:true,get:function(){return {a:this.je[0],c:this.je[1],e:this.je[2],b:this.je[3],d:this.je[4],f:this.je[5]}},
8060
+ set:function(k){k.a&&this.setTransform(k.a,k.b,k.c,k.d,k.e,k.f);}});Object.defineProperty(this,"fillStyle",{enumerable:true,get:function(){return f(this.se)?d(this.se):this.se},set:function(k){"string"===typeof k?this.se=g(k):k.Me&&(this.se=k);}});Object.defineProperty(this,"font",{enumerable:true,get:function(){return this.kf},set:function(k){var q=l(k);var z=(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal");var A=q.family;t();z=fa[A]?fa[A][z]||fa[A]["*"]:a.Typeface.GetDefault();q.typeface=
8061
+ z;q&&(this.Fe.setSize(q.sizePx),this.Fe.setTypeface(q.typeface),this.kf=k);}});Object.defineProperty(this,"globalAlpha",{enumerable:true,get:function(){return this.Be},set:function(k){!isFinite(k)||0>k||1<k||(this.Be=k);}});Object.defineProperty(this,"globalCompositeOperation",{enumerable:true,get:function(){switch(this.ee){case a.BlendMode.SrcOver:return "source-over";case a.BlendMode.DstOver:return "destination-over";case a.BlendMode.Src:return "copy";case a.BlendMode.Dst:return "destination";case a.BlendMode.Clear:return "clear";
8062
+ case a.BlendMode.SrcIn:return "source-in";case a.BlendMode.DstIn:return "destination-in";case a.BlendMode.SrcOut:return "source-out";case a.BlendMode.DstOut:return "destination-out";case a.BlendMode.SrcATop:return "source-atop";case a.BlendMode.DstATop:return "destination-atop";case a.BlendMode.Xor:return "xor";case a.BlendMode.Plus:return "lighter";case a.BlendMode.Multiply:return "multiply";case a.BlendMode.Screen:return "screen";case a.BlendMode.Overlay:return "overlay";case a.BlendMode.Darken:return "darken";
8063
+ case a.BlendMode.Lighten:return "lighten";case a.BlendMode.ColorDodge:return "color-dodge";case a.BlendMode.ColorBurn:return "color-burn";case a.BlendMode.HardLight:return "hard-light";case a.BlendMode.SoftLight:return "soft-light";case a.BlendMode.Difference:return "difference";case a.BlendMode.Exclusion:return "exclusion";case a.BlendMode.Hue:return "hue";case a.BlendMode.Saturation:return "saturation";case a.BlendMode.Color:return "color";case a.BlendMode.Luminosity:return "luminosity"}},set:function(k){switch(k){case "source-over":this.ee=
8064
+ a.BlendMode.SrcOver;break;case "destination-over":this.ee=a.BlendMode.DstOver;break;case "copy":this.ee=a.BlendMode.Src;break;case "destination":this.ee=a.BlendMode.Dst;break;case "clear":this.ee=a.BlendMode.Clear;break;case "source-in":this.ee=a.BlendMode.SrcIn;break;case "destination-in":this.ee=a.BlendMode.DstIn;break;case "source-out":this.ee=a.BlendMode.SrcOut;break;case "destination-out":this.ee=a.BlendMode.DstOut;break;case "source-atop":this.ee=a.BlendMode.SrcATop;break;case "destination-atop":this.ee=
8065
+ a.BlendMode.DstATop;break;case "xor":this.ee=a.BlendMode.Xor;break;case "lighter":this.ee=a.BlendMode.Plus;break;case "plus-lighter":this.ee=a.BlendMode.Plus;break;case "plus-darker":throw "plus-darker is not supported";case "multiply":this.ee=a.BlendMode.Multiply;break;case "screen":this.ee=a.BlendMode.Screen;break;case "overlay":this.ee=a.BlendMode.Overlay;break;case "darken":this.ee=a.BlendMode.Darken;break;case "lighten":this.ee=a.BlendMode.Lighten;break;case "color-dodge":this.ee=a.BlendMode.ColorDodge;
8066
+ break;case "color-burn":this.ee=a.BlendMode.ColorBurn;break;case "hard-light":this.ee=a.BlendMode.HardLight;break;case "soft-light":this.ee=a.BlendMode.SoftLight;break;case "difference":this.ee=a.BlendMode.Difference;break;case "exclusion":this.ee=a.BlendMode.Exclusion;break;case "hue":this.ee=a.BlendMode.Hue;break;case "saturation":this.ee=a.BlendMode.Saturation;break;case "color":this.ee=a.BlendMode.Color;break;case "luminosity":this.ee=a.BlendMode.Luminosity;break;default:return}this.fe.setBlendMode(this.ee);}});
8067
+ Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:true,get:function(){return true},set:function(){}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:true,get:function(){return "high"},set:function(){}});Object.defineProperty(this,"lineCap",{enumerable:true,get:function(){switch(this.fe.getStrokeCap()){case a.StrokeCap.Butt:return "butt";case a.StrokeCap.Round:return "round";case a.StrokeCap.Square:return "square"}},set:function(k){switch(k){case "butt":this.fe.setStrokeCap(a.StrokeCap.Butt);
8068
+ break;case "round":this.fe.setStrokeCap(a.StrokeCap.Round);break;case "square":this.fe.setStrokeCap(a.StrokeCap.Square);}}});Object.defineProperty(this,"lineDashOffset",{enumerable:true,get:function(){return this.$e},set:function(k){isFinite(k)&&(this.$e=k);}});Object.defineProperty(this,"lineJoin",{enumerable:true,get:function(){switch(this.fe.getStrokeJoin()){case a.StrokeJoin.Miter:return "miter";case a.StrokeJoin.Round:return "round";case a.StrokeJoin.Bevel:return "bevel"}},set:function(k){switch(k){case "miter":this.fe.setStrokeJoin(a.StrokeJoin.Miter);
8069
+ break;case "round":this.fe.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.fe.setStrokeJoin(a.StrokeJoin.Bevel);}}});Object.defineProperty(this,"lineWidth",{enumerable:true,get:function(){return this.fe.getStrokeWidth()},set:function(k){0>=k||!k||(this.bf=k,this.fe.setStrokeWidth(k));}});Object.defineProperty(this,"miterLimit",{enumerable:true,get:function(){return this.fe.getStrokeMiter()},set:function(k){0>=k||!k||this.fe.setStrokeMiter(k);}});Object.defineProperty(this,"shadowBlur",{enumerable:true,
8070
+ get:function(){return this.Oe},set:function(k){0>k||!isFinite(k)||(this.Oe=k);}});Object.defineProperty(this,"shadowColor",{enumerable:true,get:function(){return d(this.af)},set:function(k){this.af=g(k);}});Object.defineProperty(this,"shadowOffsetX",{enumerable:true,get:function(){return this.Pe},set:function(k){isFinite(k)&&(this.Pe=k);}});Object.defineProperty(this,"shadowOffsetY",{enumerable:true,get:function(){return this.Qe},set:function(k){isFinite(k)&&(this.Qe=k);}});Object.defineProperty(this,"strokeStyle",
8071
+ {enumerable:true,get:function(){return d(this.ye)},set:function(k){"string"===typeof k?this.ye=g(k):k.Me&&(this.ye=k);}});this.arc=function(k,q,z,A,F,H){D(this.he,k,q,z,z,0,A,F,H);};this.arcTo=function(k,q,z,A,F){Y(this.he,k,q,z,A,F);};this.beginPath=function(){this.he.delete();this.he=new a.Path;};this.bezierCurveTo=function(k,q,z,A,F,H){var N=this.he;e([k,q,z,A,F,H])&&(N.isEmpty()&&N.moveTo(k,q),N.cubicTo(k,q,z,A,F,H));};this.clearRect=function(k,q,z,A){this.fe.setStyle(a.PaintStyle.Fill);this.fe.setBlendMode(a.BlendMode.Clear);
8072
+ this.ce.drawRect(a.XYWHRect(k,q,z,A),this.fe);this.fe.setBlendMode(this.ee);};this.clip=function(k,q){"string"===typeof k?(q=k,k=this.he):k&&k.vf&&(k=k.le);k||(k=this.he);k=k.copy();q&&"evenodd"===q.toLowerCase()?k.setFillType(a.FillType.EvenOdd):k.setFillType(a.FillType.Winding);this.ce.clipPath(k,a.ClipOp.Intersect,true);k.delete();};this.closePath=function(){ba(this.he);};this.createImageData=function(){if(1===arguments.length){var k=arguments[0];return new O(new Uint8ClampedArray(4*k.width*k.height),
8073
+ k.width,k.height)}if(2===arguments.length){k=arguments[0];var q=arguments[1];return new O(new Uint8ClampedArray(4*k*q),k,q)}throw "createImageData expects 1 or 2 arguments, got "+arguments.length;};this.createLinearGradient=function(k,q,z,A){if(e(arguments)){var F=new P(k,q,z,A);this.Ue.push(F);return F}};this.createPattern=function(k,q){k=new la(k,q);this.Ue.push(k);return k};this.createRadialGradient=function(k,q,z,A,F,H){if(e(arguments)){var N=new ta(k,q,z,A,F,H);this.Ue.push(N);return N}};this.drawImage=
8074
+ function(k){k instanceof K&&(k=k.Lf());var q=this.jf();if(3===arguments.length||5===arguments.length)var z=a.XYWHRect(arguments[1],arguments[2],arguments[3]||k.width(),arguments[4]||k.height()),A=a.XYWHRect(0,0,k.width(),k.height());else if(9===arguments.length)z=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),A=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw "invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.ce.drawImageRect(k,
8075
+ A,z,q,false);q.dispose();};this.ellipse=function(k,q,z,A,F,H,N,V){D(this.he,k,q,z,A,F,H,N,V);};this.jf=function(){var k=this.fe.copy();k.setStyle(a.PaintStyle.Fill);if(f(this.se)){var q=a.multiplyByAlpha(this.se,this.Be);k.setColor(q);}else q=this.se.Me(this.je),k.setColor(a.Color(0,0,0,this.Be)),k.setShader(q);k.dispose=function(){this.delete();};return k};this.fill=function(k,q){"string"===typeof k?(q=k,k=this.he):k&&k.vf&&(k=k.le);if("evenodd"===q)this.he.setFillType(a.FillType.EvenOdd);else {if("nonzero"!==
8076
+ q&&q)throw "invalid fill rule";this.he.setFillType(a.FillType.Winding);}k||(k=this.he);q=this.jf();var z=this.Re(q);z&&(this.ce.save(),this.Ke(),this.ce.drawPath(k,z),this.ce.restore(),z.dispose());this.ce.drawPath(k,q);q.dispose();};this.fillRect=function(k,q,z,A){var F=this.jf(),H=this.Re(F);H&&(this.ce.save(),this.Ke(),this.ce.drawRect(a.XYWHRect(k,q,z,A),H),this.ce.restore(),H.dispose());this.ce.drawRect(a.XYWHRect(k,q,z,A),F);F.dispose();};this.fillText=function(k,q,z){var A=this.jf();k=a.TextBlob.MakeFromText(k,
8077
+ this.Fe);var F=this.Re(A);F&&(this.ce.save(),this.Ke(),this.ce.drawTextBlob(k,q,z,F),this.ce.restore(),F.dispose());this.ce.drawTextBlob(k,q,z,A);k.delete();A.dispose();};this.getImageData=function(k,q,z,A){return (k=this.ce.readPixels(k,q,{width:z,height:A,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB}))?new O(new Uint8ClampedArray(k.buffer),z,A):null};this.getLineDash=function(){return this.Ne.slice()};this.Gf=function(k){var q=a.Matrix.invert(this.je);
8078
+ a.Matrix.mapPoints(q,k);return k};this.isPointInPath=function(k,q,z){var A=arguments;if(3===A.length)var F=this.he;else if(4===A.length)F=A[0],k=A[1],q=A[2],z=A[3];else throw "invalid arg count, need 3 or 4, got "+A.length;if(!isFinite(k)||!isFinite(q))return false;z=z||"nonzero";if("nonzero"!==z&&"evenodd"!==z)return false;A=this.Gf([k,q]);k=A[0];q=A[1];F.setFillType("nonzero"===z?a.FillType.Winding:a.FillType.EvenOdd);return F.contains(k,q)};this.isPointInStroke=function(k,q){var z=arguments;if(2===z.length)var A=
8079
+ this.he;else if(3===z.length)A=z[0],k=z[1],q=z[2];else throw "invalid arg count, need 2 or 3, got "+z.length;if(!isFinite(k)||!isFinite(q))return false;z=this.Gf([k,q]);k=z[0];q=z[1];A=A.copy();A.setFillType(a.FillType.Winding);A.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.fe.getStrokeCap(),join:this.fe.getStrokeJoin(),precision:.3});z=A.contains(k,q);A.delete();return z};this.lineTo=function(k,q){U(this.he,k,q);};this.measureText=function(k){k=this.Fe.getGlyphIDs(k);k=this.Fe.getGlyphWidths(k);
8080
+ let q=0;for(const z of k)q+=z;return {width:q}};this.moveTo=function(k,q){var z=this.he;e([k,q])&&z.moveTo(k,q);};this.putImageData=function(k,q,z,A,F,H,N){if(e([q,z,A,F,H,N]))if(void 0===A)this.ce.writePixels(k.data,k.width,k.height,q,z);else if(A=A||0,F=F||0,H=H||k.width,N=N||k.height,0>H&&(A+=H,H=Math.abs(H)),0>N&&(F+=N,N=Math.abs(N)),0>A&&(H+=A,A=0),0>F&&(N+=F,F=0),!(0>=H||0>=N)){k=a.MakeImage({width:k.width,height:k.height,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},
8081
+ k.data,4*k.width);var V=a.XYWHRect(A,F,H,N);q=a.XYWHRect(q+A,z+F,H,N);z=a.Matrix.invert(this.je);this.ce.save();this.ce.concat(z);this.ce.drawImageRect(k,V,q,null,false);this.ce.restore();k.delete();}};this.quadraticCurveTo=function(k,q,z,A){var F=this.he;e([k,q,z,A])&&(F.isEmpty()&&F.moveTo(k,q),F.quadTo(k,q,z,A));};this.rect=function(k,q,z,A){var F=this.he;k=a.XYWHRect(k,q,z,A);e(k)&&F.addRect(k);};this.resetTransform=function(){this.he.transform(this.je);var k=a.Matrix.invert(this.je);this.ce.concat(k);
8082
+ this.je=this.ce.getTotalMatrix();};this.restore=function(){var k=this.Ff.pop();if(k){var q=a.Matrix.multiply(this.je,a.Matrix.invert(k.ag));this.he.transform(q);this.fe.delete();this.fe=k.sg;this.Ne=k.qg;this.bf=k.Eg;this.ye=k.Dg;this.se=k.fs;this.Pe=k.Bg;this.Qe=k.Cg;this.Oe=k.sb;this.af=k.Ag;this.Be=k.ga;this.ee=k.hg;this.$e=k.rg;this.kf=k.gg;this.ce.restore();this.je=this.ce.getTotalMatrix();}};this.rotate=function(k){if(isFinite(k)){var q=a.Matrix.rotated(-k);this.he.transform(q);this.ce.rotate(k/
8083
+ Math.PI*180,0,0);this.je=this.ce.getTotalMatrix();}};this.save=function(){if(this.se.Le){var k=this.se.Le();this.Ue.push(k);}else k=this.se;if(this.ye.Le){var q=this.ye.Le();this.Ue.push(q);}else q=this.ye;this.Ff.push({ag:this.je.slice(),qg:this.Ne.slice(),Eg:this.bf,Dg:q,fs:k,Bg:this.Pe,Cg:this.Qe,sb:this.Oe,Ag:this.af,ga:this.Be,rg:this.$e,hg:this.ee,sg:this.fe.copy(),gg:this.kf});this.ce.save();};this.scale=function(k,q){if(e(arguments)){var z=a.Matrix.scaled(1/k,1/q);this.he.transform(z);this.ce.scale(k,
8084
+ q);this.je=this.ce.getTotalMatrix();}};this.setLineDash=function(k){for(var q=0;q<k.length;q++)if(!isFinite(k[q])||0>k[q])return;1===k.length%2&&Array.prototype.push.apply(k,k);this.Ne=k;};this.setTransform=function(k,q,z,A,F,H){e(arguments)&&(this.resetTransform(),this.transform(k,q,z,A,F,H));};this.Ke=function(){var k=a.Matrix.invert(this.je);this.ce.concat(k);this.ce.concat(a.Matrix.translated(this.Pe,this.Qe));this.ce.concat(this.je);};this.Re=function(k){var q=a.multiplyByAlpha(this.af,this.Be);
8085
+ if(!a.getColorComponents(q)[3]||!(this.Oe||this.Qe||this.Pe))return null;k=k.copy();k.setColor(q);var z=a.MaskFilter.MakeBlur(a.BlurStyle.Normal,this.Oe/2,false);k.setMaskFilter(z);k.dispose=function(){z.delete();this.delete();};return k};this.xf=function(){var k=this.fe.copy();k.setStyle(a.PaintStyle.Stroke);if(f(this.ye)){var q=a.multiplyByAlpha(this.ye,this.Be);k.setColor(q);}else q=this.ye.Me(this.je),k.setColor(a.Color(0,0,0,this.Be)),k.setShader(q);k.setStrokeWidth(this.bf);if(this.Ne.length){var z=
8086
+ a.PathEffect.MakeDash(this.Ne,this.$e);k.setPathEffect(z);}k.dispose=function(){z&&z.delete();this.delete();};return k};this.stroke=function(k){k=k?k.le:this.he;var q=this.xf(),z=this.Re(q);z&&(this.ce.save(),this.Ke(),this.ce.drawPath(k,z),this.ce.restore(),z.dispose());this.ce.drawPath(k,q);q.dispose();};this.strokeRect=function(k,q,z,A){var F=this.xf(),H=this.Re(F);H&&(this.ce.save(),this.Ke(),this.ce.drawRect(a.XYWHRect(k,q,z,A),H),this.ce.restore(),H.dispose());this.ce.drawRect(a.XYWHRect(k,q,z,
8087
+ A),F);F.dispose();};this.strokeText=function(k,q,z){var A=this.xf();k=a.TextBlob.MakeFromText(k,this.Fe);var F=this.Re(A);F&&(this.ce.save(),this.Ke(),this.ce.drawTextBlob(k,q,z,F),this.ce.restore(),F.dispose());this.ce.drawTextBlob(k,q,z,A);k.delete();A.dispose();};this.translate=function(k,q){if(e(arguments)){var z=a.Matrix.translated(-k,-q);this.he.transform(z);this.ce.translate(k,q);this.je=this.ce.getTotalMatrix();}};this.transform=function(k,q,z,A,F,H){k=[k,z,F,q,A,H,0,0,1];q=a.Matrix.invert(k);
8088
+ this.he.transform(q);this.ce.concat(k);this.je=this.ce.getTotalMatrix();};this.addHitRegion=function(){};this.clearHitRegions=function(){};this.drawFocusIfNeeded=function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:false});}function C(I){this.yf=I;this.be=new x(I.getCanvas());this.lf=[];this.decodeImage=function(k){k=a.MakeImageFromEncoded(k);if(!k)throw "Invalid input";this.lf.push(k);return new K(k)};this.loadFont=
8089
+ function(k,q){k=a.Typeface.MakeTypefaceFromData(k);if(!k)return null;this.lf.push(k);var z=(q.style||"normal")+"|"+(q.variant||"normal")+"|"+(q.weight||"normal");q=q.family;t();fa[q]||(fa[q]={"*":k});fa[q][z]=k;};this.makePath2D=function(k){k=new ea(k);this.lf.push(k.le);return k};this.getContext=function(k){return "2d"===k?this.be:null};this.toDataURL=function(k,q){this.yf.flush();var z=this.yf.makeImageSnapshot();if(z){k=k||"image/png";var A=a.ImageFormat.PNG;"image/jpeg"===k&&(A=a.ImageFormat.JPEG);
8090
+ if(q=z.encodeToBytes(A,q||.92)){z.delete();k="data:"+k+";base64,";if("undefined"!==typeof Buffer)q=Buffer.from(q).toString("base64");else {z=0;A=q.length;for(var F="",H;z<A;)H=q.slice(z,Math.min(z+32768,A)),F+=String.fromCharCode.apply(null,H),z+=32768;q=btoa(F);}return k+q}}};this.dispose=function(){this.be.Ee();this.lf.forEach(function(k){k.delete();});this.yf.dispose();};}function K(I){this.width=I.width();this.height=I.height();this.naturalWidth=this.width;this.naturalHeight=this.height;this.Lf=function(){return I};}
8091
+ function O(I,k,q){if(!k||0===q)throw new TypeError("invalid dimensions, width and height must be non-zero");if(I.length%4)throw new TypeError("arr must be a multiple of 4");q=q||I.length/(4*k);Object.defineProperty(this,"data",{value:I,writable:false});Object.defineProperty(this,"height",{value:q,writable:false});Object.defineProperty(this,"width",{value:k,writable:false});}function P(I,k,q,z){this.ne=null;this.ue=[];this.qe=[];this.addColorStop=function(A,F){if(0>A||1<A||!isFinite(A))throw "offset must be between 0 and 1 inclusively";
8092
+ F=g(F);var H=this.qe.indexOf(A);if(-1!==H)this.ue[H]=F;else {for(H=0;H<this.qe.length&&!(this.qe[H]>A);H++);this.qe.splice(H,0,A);this.ue.splice(H,0,F);}};this.Le=function(){var A=new P(I,k,q,z);A.ue=this.ue.slice();A.qe=this.qe.slice();return A};this.Ee=function(){this.ne&&(this.ne.delete(),this.ne=null);};this.Me=function(A){var F=[I,k,q,z];a.Matrix.mapPoints(A,F);A=F[0];var H=F[1],N=F[2];F=F[3];this.Ee();return this.ne=a.Shader.MakeLinearGradient([A,H],[N,F],this.ue,this.qe,a.TileMode.Clamp)};}function Y(I,
8093
+ k,q,z,A,F){if(e([k,q,z,A,F])){if(0>F)throw "radii cannot be negative";I.isEmpty()&&I.moveTo(k,q);I.arcToTangent(k,q,z,A,F);}}function ba(I){if(!I.isEmpty()){var k=I.getBounds();(k[3]-k[1]||k[2]-k[0])&&I.close();}}function r(I,k,q,z,A,F,H){H=(H-F)/Math.PI*180;F=F/Math.PI*180;k=a.LTRBRect(k-z,q-A,k+z,q+A);1E-5>Math.abs(Math.abs(H)-360)?(q=H/2,I.arcToOval(k,F,q,false),I.arcToOval(k,F+q,q,false)):I.arcToOval(k,F,H,false);}function D(I,k,q,z,A,F,H,N,V){if(e([k,q,z,A,F,H,N])){if(0>z||0>A)throw "radii cannot be negative";
8094
+ var qa=2*Math.PI,cb=H%qa;0>cb&&(cb+=qa);var db=cb-H;H=cb;N+=db;!V&&N-H>=qa?N=H+qa:V&&H-N>=qa?N=H-qa:!V&&H>N?N=H+(qa-(H-N)%qa):V&&H<N&&(N=H-(qa-(N-H)%qa));F?(V=a.Matrix.rotated(F,k,q),F=a.Matrix.rotated(-F,k,q),I.transform(F),r(I,k,q,z,A,H,N),I.transform(V)):r(I,k,q,z,A,H,N);}}function U(I,k,q){e([k,q])&&(I.isEmpty()&&I.moveTo(k,q),I.lineTo(k,q));}function ea(I){this.le=null;this.le="string"===typeof I?a.Path.MakeFromSVGString(I):I&&I.vf?I.le.copy():new a.Path;this.vf=function(){return this.le};this.addPath=
8095
+ function(k,q){q||(q={a:1,c:0,e:0,b:0,d:1,f:0});this.le.addPath(k.le,[q.a,q.c,q.e,q.b,q.d,q.f]);};this.arc=function(k,q,z,A,F,H){D(this.le,k,q,z,z,0,A,F,H);};this.arcTo=function(k,q,z,A,F){Y(this.le,k,q,z,A,F);};this.bezierCurveTo=function(k,q,z,A,F,H){var N=this.le;e([k,q,z,A,F,H])&&(N.isEmpty()&&N.moveTo(k,q),N.cubicTo(k,q,z,A,F,H));};this.closePath=function(){ba(this.le);};this.ellipse=function(k,q,z,A,F,H,N,V){D(this.le,k,q,z,A,F,H,N,V);};this.lineTo=function(k,q){U(this.le,k,q);};this.moveTo=function(k,
8096
+ q){var z=this.le;e([k,q])&&z.moveTo(k,q);};this.quadraticCurveTo=function(k,q,z,A){var F=this.le;e([k,q,z,A])&&(F.isEmpty()&&F.moveTo(k,q),F.quadTo(k,q,z,A));};this.rect=function(k,q,z,A){var F=this.le;k=a.XYWHRect(k,q,z,A);e(k)&&F.addRect(k);};}function la(I,k){this.ne=null;I instanceof K&&(I=I.Lf());this.Uf=I;this._transform=a.Matrix.identity();""===k&&(k="repeat");switch(k){case "repeat-x":this.Se=a.TileMode.Repeat;this.Te=a.TileMode.Decal;break;case "repeat-y":this.Se=a.TileMode.Decal;this.Te=a.TileMode.Repeat;
8097
+ break;case "repeat":this.Te=this.Se=a.TileMode.Repeat;break;case "no-repeat":this.Te=this.Se=a.TileMode.Decal;break;default:throw "invalid repetition mode "+k;}this.setTransform=function(q){q=[q.a,q.c,q.e,q.b,q.d,q.f,0,0,1];e(q)&&(this._transform=q);};this.Le=function(){var q=new la;q.Se=this.Se;q.Te=this.Te;return q};this.Ee=function(){this.ne&&(this.ne.delete(),this.ne=null);};this.Me=function(){this.Ee();return this.ne=this.Uf.makeShaderCubic(this.Se,this.Te,1/3,1/3,this._transform)};}function ta(I,
8098
+ k,q,z,A,F){this.ne=null;this.ue=[];this.qe=[];this.addColorStop=function(H,N){if(0>H||1<H||!isFinite(H))throw "offset must be between 0 and 1 inclusively";N=g(N);var V=this.qe.indexOf(H);if(-1!==V)this.ue[V]=N;else {for(V=0;V<this.qe.length&&!(this.qe[V]>H);V++);this.qe.splice(V,0,H);this.ue.splice(V,0,N);}};this.Le=function(){var H=new ta(I,k,q,z,A,F);H.ue=this.ue.slice();H.qe=this.qe.slice();return H};this.Ee=function(){this.ne&&(this.ne.delete(),this.ne=null);};this.Me=function(H){var N=[I,k,z,A];
8099
+ a.Matrix.mapPoints(H,N);var V=N[0],qa=N[1],cb=N[2];N=N[3];var db=(Math.abs(H[0])+Math.abs(H[4]))/2;H=q*db;db*=F;this.Ee();return this.ne=a.Shader.MakeTwoPointConicalGradient([V,qa],H,[cb,N],db,this.ue,this.qe,a.TileMode.Clamp)};}a._testing={};var xa={aliceblue:Float32Array.of(.941,.973,1,1),antiquewhite:Float32Array.of(.98,.922,.843,1),aqua:Float32Array.of(0,1,1,1),aquamarine:Float32Array.of(.498,1,.831,1),azure:Float32Array.of(.941,1,1,1),beige:Float32Array.of(.961,.961,.863,1),bisque:Float32Array.of(1,
8100
+ .894,.769,1),black:Float32Array.of(0,0,0,1),blanchedalmond:Float32Array.of(1,.922,.804,1),blue:Float32Array.of(0,0,1,1),blueviolet:Float32Array.of(.541,.169,.886,1),brown:Float32Array.of(.647,.165,.165,1),burlywood:Float32Array.of(.871,.722,.529,1),cadetblue:Float32Array.of(.373,.62,.627,1),chartreuse:Float32Array.of(.498,1,0,1),chocolate:Float32Array.of(.824,.412,.118,1),coral:Float32Array.of(1,.498,.314,1),cornflowerblue:Float32Array.of(.392,.584,.929,1),cornsilk:Float32Array.of(1,.973,.863,1),
8101
+ crimson:Float32Array.of(.863,.078,.235,1),cyan:Float32Array.of(0,1,1,1),darkblue:Float32Array.of(0,0,.545,1),darkcyan:Float32Array.of(0,.545,.545,1),darkgoldenrod:Float32Array.of(.722,.525,.043,1),darkgray:Float32Array.of(.663,.663,.663,1),darkgreen:Float32Array.of(0,.392,0,1),darkgrey:Float32Array.of(.663,.663,.663,1),darkkhaki:Float32Array.of(.741,.718,.42,1),darkmagenta:Float32Array.of(.545,0,.545,1),darkolivegreen:Float32Array.of(.333,.42,.184,1),darkorange:Float32Array.of(1,.549,0,1),darkorchid:Float32Array.of(.6,
8102
+ .196,.8,1),darkred:Float32Array.of(.545,0,0,1),darksalmon:Float32Array.of(.914,.588,.478,1),darkseagreen:Float32Array.of(.561,.737,.561,1),darkslateblue:Float32Array.of(.282,.239,.545,1),darkslategray:Float32Array.of(.184,.31,.31,1),darkslategrey:Float32Array.of(.184,.31,.31,1),darkturquoise:Float32Array.of(0,.808,.82,1),darkviolet:Float32Array.of(.58,0,.827,1),deeppink:Float32Array.of(1,.078,.576,1),deepskyblue:Float32Array.of(0,.749,1,1),dimgray:Float32Array.of(.412,.412,.412,1),dimgrey:Float32Array.of(.412,
8103
+ .412,.412,1),dodgerblue:Float32Array.of(.118,.565,1,1),firebrick:Float32Array.of(.698,.133,.133,1),floralwhite:Float32Array.of(1,.98,.941,1),forestgreen:Float32Array.of(.133,.545,.133,1),fuchsia:Float32Array.of(1,0,1,1),gainsboro:Float32Array.of(.863,.863,.863,1),ghostwhite:Float32Array.of(.973,.973,1,1),gold:Float32Array.of(1,.843,0,1),goldenrod:Float32Array.of(.855,.647,.125,1),gray:Float32Array.of(.502,.502,.502,1),green:Float32Array.of(0,.502,0,1),greenyellow:Float32Array.of(.678,1,.184,1),grey:Float32Array.of(.502,
8104
+ .502,.502,1),honeydew:Float32Array.of(.941,1,.941,1),hotpink:Float32Array.of(1,.412,.706,1),indianred:Float32Array.of(.804,.361,.361,1),indigo:Float32Array.of(.294,0,.51,1),ivory:Float32Array.of(1,1,.941,1),khaki:Float32Array.of(.941,.902,.549,1),lavender:Float32Array.of(.902,.902,.98,1),lavenderblush:Float32Array.of(1,.941,.961,1),lawngreen:Float32Array.of(.486,.988,0,1),lemonchiffon:Float32Array.of(1,.98,.804,1),lightblue:Float32Array.of(.678,.847,.902,1),lightcoral:Float32Array.of(.941,.502,.502,
8105
+ 1),lightcyan:Float32Array.of(.878,1,1,1),lightgoldenrodyellow:Float32Array.of(.98,.98,.824,1),lightgray:Float32Array.of(.827,.827,.827,1),lightgreen:Float32Array.of(.565,.933,.565,1),lightgrey:Float32Array.of(.827,.827,.827,1),lightpink:Float32Array.of(1,.714,.757,1),lightsalmon:Float32Array.of(1,.627,.478,1),lightseagreen:Float32Array.of(.125,.698,.667,1),lightskyblue:Float32Array.of(.529,.808,.98,1),lightslategray:Float32Array.of(.467,.533,.6,1),lightslategrey:Float32Array.of(.467,.533,.6,1),lightsteelblue:Float32Array.of(.69,
8106
+ .769,.871,1),lightyellow:Float32Array.of(1,1,.878,1),lime:Float32Array.of(0,1,0,1),limegreen:Float32Array.of(.196,.804,.196,1),linen:Float32Array.of(.98,.941,.902,1),magenta:Float32Array.of(1,0,1,1),maroon:Float32Array.of(.502,0,0,1),mediumaquamarine:Float32Array.of(.4,.804,.667,1),mediumblue:Float32Array.of(0,0,.804,1),mediumorchid:Float32Array.of(.729,.333,.827,1),mediumpurple:Float32Array.of(.576,.439,.859,1),mediumseagreen:Float32Array.of(.235,.702,.443,1),mediumslateblue:Float32Array.of(.482,
8107
+ .408,.933,1),mediumspringgreen:Float32Array.of(0,.98,.604,1),mediumturquoise:Float32Array.of(.282,.82,.8,1),mediumvioletred:Float32Array.of(.78,.082,.522,1),midnightblue:Float32Array.of(.098,.098,.439,1),mintcream:Float32Array.of(.961,1,.98,1),mistyrose:Float32Array.of(1,.894,.882,1),moccasin:Float32Array.of(1,.894,.71,1),navajowhite:Float32Array.of(1,.871,.678,1),navy:Float32Array.of(0,0,.502,1),oldlace:Float32Array.of(.992,.961,.902,1),olive:Float32Array.of(.502,.502,0,1),olivedrab:Float32Array.of(.42,
8108
+ .557,.137,1),orange:Float32Array.of(1,.647,0,1),orangered:Float32Array.of(1,.271,0,1),orchid:Float32Array.of(.855,.439,.839,1),palegoldenrod:Float32Array.of(.933,.91,.667,1),palegreen:Float32Array.of(.596,.984,.596,1),paleturquoise:Float32Array.of(.686,.933,.933,1),palevioletred:Float32Array.of(.859,.439,.576,1),papayawhip:Float32Array.of(1,.937,.835,1),peachpuff:Float32Array.of(1,.855,.725,1),peru:Float32Array.of(.804,.522,.247,1),pink:Float32Array.of(1,.753,.796,1),plum:Float32Array.of(.867,.627,
8109
+ .867,1),powderblue:Float32Array.of(.69,.878,.902,1),purple:Float32Array.of(.502,0,.502,1),rebeccapurple:Float32Array.of(.4,.2,.6,1),red:Float32Array.of(1,0,0,1),rosybrown:Float32Array.of(.737,.561,.561,1),royalblue:Float32Array.of(.255,.412,.882,1),saddlebrown:Float32Array.of(.545,.271,.075,1),salmon:Float32Array.of(.98,.502,.447,1),sandybrown:Float32Array.of(.957,.643,.376,1),seagreen:Float32Array.of(.18,.545,.341,1),seashell:Float32Array.of(1,.961,.933,1),sienna:Float32Array.of(.627,.322,.176,1),
8110
+ silver:Float32Array.of(.753,.753,.753,1),skyblue:Float32Array.of(.529,.808,.922,1),slateblue:Float32Array.of(.416,.353,.804,1),slategray:Float32Array.of(.439,.502,.565,1),slategrey:Float32Array.of(.439,.502,.565,1),snow:Float32Array.of(1,.98,.98,1),springgreen:Float32Array.of(0,1,.498,1),steelblue:Float32Array.of(.275,.51,.706,1),tan:Float32Array.of(.824,.706,.549,1),teal:Float32Array.of(0,.502,.502,1),thistle:Float32Array.of(.847,.749,.847,1),tomato:Float32Array.of(1,.388,.278,1),transparent:Float32Array.of(0,
8111
+ 0,0,0),turquoise:Float32Array.of(.251,.878,.816,1),violet:Float32Array.of(.933,.51,.933,1),wheat:Float32Array.of(.961,.871,.702,1),white:Float32Array.of(1,1,1,1),whitesmoke:Float32Array.of(.961,.961,.961,1),yellow:Float32Array.of(1,1,0,1),yellowgreen:Float32Array.of(.604,.804,.196,1)};a._testing.parseColor=g;a._testing.colorToString=d;var Da=RegExp("(italic|oblique|normal|)\\s*(small-caps|normal|)\\s*(bold|bolder|lighter|[1-9]00|normal|)\\s*([\\d\\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)"),fa;
8112
+ a._testing.parseFontString=l;a.MakeCanvas=function(I,k){return (I=a.MakeSurface(I,k))?new C(I):null};a.ImageData=function(){if(2===arguments.length){var I=arguments[0],k=arguments[1];return new O(new Uint8ClampedArray(4*I*k),I,k)}if(3===arguments.length){var q=arguments[0];if(q.prototype.constructor!==Uint8ClampedArray)throw new TypeError("bytes must be given as a Uint8ClampedArray");I=arguments[1];k=arguments[2];if(q%4)throw new TypeError("bytes must be given in a multiple of 4");if(q%I)throw new TypeError("bytes must divide evenly by width");
8113
+ if(k&&k!==q/(4*I))throw new TypeError("invalid height given");return new O(q,I,q/(4*I))}throw new TypeError("invalid number of arguments - takes 2 or 3, saw "+arguments.length);};})();})(w);var ra=Object.assign({},w),ua="./this.program",va=(a,b)=>{throw b;},wa="object"==typeof window,ya="function"==typeof importScripts,za="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,Aa="",Ba,Ea,Fa;
8114
+ if(za){var fs=require$$0,Ga=require$$1;Aa=ya?Ga.dirname(Aa)+"/":__dirname+"/";Ba=(a,b)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};Fa=a=>{a=Ba(a,true);a.buffer||(a=new Uint8Array(a));return a};Ea=(a,b,c,f=true)=>{a=a.startsWith("file://")?new URL(a):Ga.normalize(a);fs.readFile(a,f?void 0:"utf8",(h,m)=>{h?c(h):b(f?m.buffer:m);});};!w.thisProgram&&1<process.argv.length&&(ua=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);va=(a,b)=>{process.exitCode=
8115
+ a;throw b;};w.inspect=()=>"[Emscripten Module object]";}else if(wa||ya)ya?Aa=self.location.href:"undefined"!=typeof document&&document.currentScript&&(Aa=document.currentScript.src),_scriptDir&&(Aa=_scriptDir),0!==Aa.indexOf("blob:")?Aa=Aa.substr(0,Aa.replace(/[?#].*/,"").lastIndexOf("/")+1):Aa="",Ba=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.send(null);return b.responseText},ya&&(Fa=a=>{var b=new XMLHttpRequest;b.open("GET",a,false);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),
8116
+ Ea=(a,b,c)=>{var f=new XMLHttpRequest;f.open("GET",a,true);f.responseType="arraybuffer";f.onload=()=>{200==f.status||0==f.status&&f.response?b(f.response):c();};f.onerror=c;f.send(null);};var Ha=w.print||console.log.bind(console),Ia=w.printErr||console.error.bind(console);Object.assign(w,ra);ra=null;w.thisProgram&&(ua=w.thisProgram);w.quit&&(va=w.quit);var Ja;w.wasmBinary&&(Ja=w.wasmBinary);w.noExitRuntime||true;"object"!=typeof WebAssembly&&Ka("no native wasm support detected");
8117
+ var La,Ma,Na=false,Qa,J,Ra,Sa,Q,Ta,R,Ua;function Wa(){var a=La.buffer;w.HEAP8=Qa=new Int8Array(a);w.HEAP16=Ra=new Int16Array(a);w.HEAP32=Q=new Int32Array(a);w.HEAPU8=J=new Uint8Array(a);w.HEAPU16=Sa=new Uint16Array(a);w.HEAPU32=Ta=new Uint32Array(a);w.HEAPF32=R=new Float32Array(a);w.HEAPF64=Ua=new Float64Array(a);}var Xa,Ya=[],Za=[],$a=[];function ab(){var a=w.preRun.shift();Ya.unshift(a);}var eb=0,gb=null;
8118
+ function Ka(a){if(w.onAbort)w.onAbort(a);a="Aborted("+a+")";Ia(a);Na=true;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ca(a);throw a;}function hb(a){return a.startsWith("data:application/octet-stream;base64,")}var mb;mb="canvaskit.wasm";if(!hb(mb)){var nb=mb;mb=w.locateFile?w.locateFile(nb,Aa):Aa+nb;}function ob(a){if(a==mb&&Ja)return new Uint8Array(Ja);if(Fa)return Fa(a);throw "both async and sync fetching of the wasm failed";}
8119
+ function pb(a){if(!Ja&&(wa||ya)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(b=>{if(!b.ok)throw "failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>ob(a));if(Ea)return new Promise((b,c)=>{Ea(a,f=>b(new Uint8Array(f)),c);})}return Promise.resolve().then(()=>ob(a))}function qb(a,b,c){return pb(a).then(f=>WebAssembly.instantiate(f,b)).then(f=>f).then(c,f=>{Ia("failed to asynchronously prepare wasm: "+f);Ka(f);})}
8120
+ function rb(a,b){var c=mb;return Ja||"function"!=typeof WebAssembly.instantiateStreaming||hb(c)||c.startsWith("file://")||za||"function"!=typeof fetch?qb(c,a,b):fetch(c,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,a).then(b,function(h){Ia("wasm streaming compile failed: "+h);Ia("falling back to ArrayBuffer instantiation");return qb(c,a,b)}))}function sb(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a;}
8121
+ var tb=a=>{for(;0<a.length;)a.shift()(w);},ub="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,vb=(a,b,c)=>{var f=b+c;for(c=b;a[c]&&!(c>=f);)++c;if(16<c-b&&a.buffer&&ub)return ub.decode(a.subarray(b,c));for(f="";b<c;){var h=a[b++];if(h&128){var m=a[b++]&63;if(192==(h&224))f+=String.fromCharCode((h&31)<<6|m);else {var u=a[b++]&63;h=224==(h&240)?(h&15)<<12|m<<6|u:(h&7)<<18|m<<12|u<<6|a[b++]&63;65536>h?f+=String.fromCharCode(h):(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023));}}else f+=
8122
+ String.fromCharCode(h);}return f},wb={};function xb(a){for(;a.length;){var b=a.pop();a.pop()(b);}}function yb(a){return this.fromWireType(Q[a>>2])}var zb={},Bb={},Cb={},Db=void 0;function Eb(a){throw new Db(a);}
8123
+ function Fb(a,b,c){function f(n){n=c(n);n.length!==a.length&&Eb("Mismatched type converter count");for(var p=0;p<a.length;++p)Gb(a[p],n[p]);}a.forEach(function(n){Cb[n]=b;});var h=Array(b.length),m=[],u=0;b.forEach((n,p)=>{Bb.hasOwnProperty(n)?h[p]=Bb[n]:(m.push(n),zb.hasOwnProperty(n)||(zb[n]=[]),zb[n].push(()=>{h[p]=Bb[n];++u;u===m.length&&f(h);}));});0===m.length&&f(h);}
8124
+ function Hb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`);}}var Ib=void 0;function Jb(a){for(var b="";J[a];)b+=Ib[J[a++]];return b}var Kb=void 0;function W(a){throw new Kb(a);}
8125
+ function Lb(a,b,c={}){var f=b.name;a||W(`type "${f}" must have a positive integer typeid pointer`);if(Bb.hasOwnProperty(a)){if(c.ng)return;W(`Cannot register type '${f}' twice`);}Bb[a]=b;delete Cb[a];zb.hasOwnProperty(a)&&(b=zb[a],delete zb[a],b.forEach(h=>h()));}function Gb(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");Lb(a,b,c);}function Mb(a){W(a.ae.me.ge.name+" instance already deleted");}var Nb=false;function Ob(){}
8126
+ function Pb(a){--a.count.value;0===a.count.value&&(a.pe?a.we.De(a.pe):a.me.ge.De(a.ie));}function Qb(a,b,c){if(b===c)return a;if(void 0===c.re)return null;a=Qb(a,b,c.re);return null===a?null:c.dg(a)}var Rb={},Sb=[];function Tb(){for(;Sb.length;){var a=Sb.pop();a.ae.Xe=false;a["delete"]();}}var Ub=void 0,Vb={};function Wb(a,b){for(void 0===b&&W("ptr should not be undefined");a.re;)b=a.gf(b),a=a.re;return Vb[b]}
8127
+ function cc(a,b){b.me&&b.ie||Eb("makeClassHandle requires ptr and ptrType");!!b.we!==!!b.pe&&Eb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return dc(Object.create(a,{ae:{value:b}}))}function dc(a){if("undefined"===typeof FinalizationRegistry)return dc=b=>b,a;Nb=new FinalizationRegistry(b=>{Pb(b.ae);});dc=b=>{var c=b.ae;c.pe&&Nb.register(b,{ae:c},b);return b};Ob=b=>{Nb.unregister(b);};return dc(a)}function ec(){}
8128
+ function fc(a){if(void 0===a)return "_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a}function gc(a,b){a=fc(a);return {[a]:function(){return b.apply(this,arguments)}}[a]}
8129
+ function hc(a,b,c){if(void 0===a[b].oe){var f=a[b];a[b]=function(){a[b].oe.hasOwnProperty(arguments.length)||W(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].oe})!`);return a[b].oe[arguments.length].apply(this,arguments)};a[b].oe=[];a[b].oe[f.Ve]=f;}}
8130
+ function ic(a,b,c){w.hasOwnProperty(a)?((void 0===c||void 0!==w[a].oe&&void 0!==w[a].oe[c])&&W(`Cannot register public name '${a}' twice`),hc(w,a,a),w.hasOwnProperty(c)&&W(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`),w[a].oe[c]=b):(w[a]=b,void 0!==c&&(w[a].Lg=c));}function jc(a,b,c,f,h,m,u,n){this.name=a;this.constructor=b;this.Ye=c;this.De=f;this.re=h;this.ig=m;this.gf=u;this.dg=n;this.ug=[];}
8131
+ function kc(a,b,c){for(;b!==c;)b.gf||W(`Expected null or instance of ${c.name}, got an instance of ${b.name}`),a=b.gf(a),b=b.re;return a}function lc(a,b){if(null===b)return this.Bf&&W(`null is not a valid ${this.name}`),0;b.ae||W(`Cannot pass "${mc(b)}" as a ${this.name}`);b.ae.ie||W(`Cannot pass deleted object as a pointer of type ${this.name}`);return kc(b.ae.ie,b.ae.me.ge,this.ge)}
8132
+ function nc(a,b){if(null===b){this.Bf&&W(`null is not a valid ${this.name}`);if(this.pf){var c=this.Cf();null!==a&&a.push(this.De,c);return c}return 0}b.ae||W(`Cannot pass "${mc(b)}" as a ${this.name}`);b.ae.ie||W(`Cannot pass deleted object as a pointer of type ${this.name}`);!this.nf&&b.ae.me.nf&&W(`Cannot convert argument of type ${b.ae.we?b.ae.we.name:b.ae.me.name} to parameter type ${this.name}`);c=kc(b.ae.ie,b.ae.me.ge,this.ge);if(this.pf)switch(void 0===b.ae.pe&&W("Passing raw pointer to smart pointer is illegal"),
8133
+ this.zg){case 0:b.ae.we===this?c=b.ae.pe:W(`Cannot convert argument of type ${b.ae.we?b.ae.we.name:b.ae.me.name} to parameter type ${this.name}`);break;case 1:c=b.ae.pe;break;case 2:if(b.ae.we===this)c=b.ae.pe;else {var f=b.clone();c=this.vg(c,oc(function(){f["delete"]();}));null!==a&&a.push(this.De,c);}break;default:W("Unsupporting sharing policy");}return c}
8134
+ function pc(a,b){if(null===b)return this.Bf&&W(`null is not a valid ${this.name}`),0;b.ae||W(`Cannot pass "${mc(b)}" as a ${this.name}`);b.ae.ie||W(`Cannot pass deleted object as a pointer of type ${this.name}`);b.ae.me.nf&&W(`Cannot convert argument of type ${b.ae.me.name} to parameter type ${this.name}`);return kc(b.ae.ie,b.ae.me.ge,this.ge)}
8135
+ function qc(a,b,c,f,h,m,u,n,p,v,E){this.name=a;this.ge=b;this.Bf=c;this.nf=f;this.pf=h;this.tg=m;this.zg=u;this.Nf=n;this.Cf=p;this.vg=v;this.De=E;h||void 0!==b.re?this.toWireType=nc:(this.toWireType=f?lc:pc,this.ve=null);}function rc(a,b,c){w.hasOwnProperty(a)||Eb("Replacing nonexistant public symbol");void 0!==w[a].oe&&void 0!==c?w[a].oe[c]=b:(w[a]=b,w[a].Ve=c);}
8136
+ var sc=(a,b)=>{var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var f=w["dynCall_"+a];f=c&&c.length?f.apply(null,[b].concat(c)):f.call(null,b);}else f=Xa.get(b).apply(null,c);return f}};function tc(a,b){a=Jb(a);var c=a.includes("j")?sc(a,b):Xa.get(b);"function"!=typeof c&&W(`unknown function pointer with signature ${a}: ${b}`);return c}var uc=void 0;function vc(a){a=wc(a);var b=Jb(a);xc(a);return b}
8137
+ function yc(a,b){function c(m){h[m]||Bb[m]||(Cb[m]?Cb[m].forEach(c):(f.push(m),h[m]=true));}var f=[],h={};b.forEach(c);throw new uc(`${a}: `+f.map(vc).join([", "]));}
8138
+ function Fc(a,b,c,f,h){var m=b.length;2>m&&W("argTypes array size mismatch! Must at least get return value and 'this' types!");var u=null!==b[1]&&null!==c,n=false;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].ve){n=true;break}var p="void"!==b[0].name,v=m-2,E=Array(v),G=[],L=[];return function(){arguments.length!==v&&W(`function ${a} called with ${arguments.length} arguments, expected ${v} args!`);L.length=0;G.length=u?2:1;G[0]=h;if(u){var y=b[1].toWireType(L,this);G[1]=y;}for(var M=0;M<v;++M)E[M]=
8139
+ b[M+2].toWireType(L,arguments[M]),G.push(E[M]);M=f.apply(null,G);if(n)xb(L);else for(var T=u?1:2;T<b.length;T++){var S=1===T?y:E[T-2];null!==b[T].ve&&b[T].ve(S);}y=p?b[0].fromWireType(M):void 0;return y}}function Gc(a,b){for(var c=[],f=0;f<a;f++)c.push(Ta[b+4*f>>2]);return c}function Hc(){this.Ce=[void 0];this.Kf=[];}var Ic=new Hc;function Jc(a){a>=Ic.df&&0===--Ic.get(a).Of&&Ic.Zf(a);}
8140
+ var Kc=a=>{a||W("Cannot use deleted val. handle = "+a);return Ic.get(a).value},oc=a=>{switch(a){case void 0:return 1;case null:return 2;case true:return 3;case false:return 4;default:return Ic.Yf({Of:1,value:a})}};function Lc(a,b,c){switch(b){case 0:return function(f){return this.fromWireType((c?Qa:J)[f])};case 1:return function(f){return this.fromWireType((c?Ra:Sa)[f>>1])};case 2:return function(f){return this.fromWireType((c?Q:Ta)[f>>2])};default:throw new TypeError("Unknown integer type: "+a);}}
8141
+ function Mc(a,b){var c=Bb[a];void 0===c&&W(b+" has unknown type "+vc(a));return c}function mc(a){if(null===a)return "null";var b=typeof a;return "object"===b||"array"===b||"function"===b?a.toString():""+a}function Nc(a,b){switch(b){case 2:return function(c){return this.fromWireType(R[c>>2])};case 3:return function(c){return this.fromWireType(Ua[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
8142
+ function Oc(a,b,c){switch(b){case 0:return c?function(f){return Qa[f]}:function(f){return J[f]};case 1:return c?function(f){return Ra[f>>1]}:function(f){return Sa[f>>1]};case 2:return c?function(f){return Q[f>>2]}:function(f){return Ta[f>>2]};default:throw new TypeError("Unknown integer type: "+a);}}
8143
+ var oa=(a,b,c,f)=>{if(!(0<f))return 0;var h=c;f=c+f-1;for(var m=0;m<a.length;++m){var u=a.charCodeAt(m);if(55296<=u&&57343>=u){var n=a.charCodeAt(++m);u=65536+((u&1023)<<10)|n&1023;}if(127>=u){if(c>=f)break;b[c++]=u;}else {if(2047>=u){if(c+1>=f)break;b[c++]=192|u>>6;}else {if(65535>=u){if(c+2>=f)break;b[c++]=224|u>>12;}else {if(c+3>=f)break;b[c++]=240|u>>18;b[c++]=128|u>>12&63;}b[c++]=128|u>>6&63;}b[c++]=128|u&63;}}b[c]=0;return c-h},na=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);127>=f?b++:2047>=
8144
+ f?b+=2:55296<=f&&57343>=f?(b+=4,++c):b+=3;}return b},Pc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Qc=(a,b)=>{var c=a>>1;for(var f=c+b/2;!(c>=f)&&Sa[c];)++c;c<<=1;if(32<c-a&&Pc)return Pc.decode(J.subarray(a,c));c="";for(f=0;!(f>=b/2);++f){var h=Ra[a+2*f>>1];if(0==h)break;c+=String.fromCharCode(h);}return c},Rc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var f=b;c=c<2*a.length?c/2:a.length;for(var h=0;h<c;++h)Ra[b>>1]=a.charCodeAt(h),b+=2;Ra[b>>1]=0;return b-f},
8145
+ Sc=a=>2*a.length,Tc=(a,b)=>{for(var c=0,f="";!(c>=b/4);){var h=Q[a+4*c>>2];if(0==h)break;++c;65536<=h?(h-=65536,f+=String.fromCharCode(55296|h>>10,56320|h&1023)):f+=String.fromCharCode(h);}return f},Uc=(a,b,c)=>{ void 0===c&&(c=2147483647);if(4>c)return 0;var f=b;c=f+c-4;for(var h=0;h<a.length;++h){var m=a.charCodeAt(h);if(55296<=m&&57343>=m){var u=a.charCodeAt(++h);m=65536+((m&1023)<<10)|u&1023;}Q[b>>2]=m;b+=4;if(b+4>c)break}Q[b>>2]=0;return b-f},Vc=a=>{for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);
8146
+ 55296<=f&&57343>=f&&++c;b+=4;}return b},Wc={};function Xc(a){var b=Wc[a];return void 0===b?Jb(a):b}var Yc=[];
8147
+ function Zc(){function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;"object"==typeof commonjsGlobal&&a(commonjsGlobal)?$$$embind_global$$$=commonjsGlobal:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");
8148
+ }function $c(a){var b=Yc.length;Yc.push(a);return b}function ad(a,b){for(var c=Array(a),f=0;f<a;++f)c[f]=Mc(Ta[b+4*f>>2],"parameter "+f);return c}var bd=[];function cd(a){var b=Array(a+1);return function(c,f,h){b[0]=c;for(var m=0;m<a;++m){var u=Mc(Ta[f+4*m>>2],"parameter "+m);b[m+1]=u.readValueFromPointer(h);h+=u.argPackAdvance;}c=new (c.bind.apply(c,b));return oc(c)}}var dd={};
8149
+ function ed(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,f){b.vertexAttribDivisorANGLE(c,f);},a.drawArraysInstanced=function(c,f,h,m){b.drawArraysInstancedANGLE(c,f,h,m);},a.drawElementsInstanced=function(c,f,h,m,u){b.drawElementsInstancedANGLE(c,f,h,m,u);});}
8150
+ function fd(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c);},a.bindVertexArray=function(c){b.bindVertexArrayOES(c);},a.isVertexArray=function(c){return b.isVertexArrayOES(c)});}function gd(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,f){b.drawBuffersWEBGL(c,f);});}
8151
+ var hd=1,jd=[],kd=[],ld=[],md=[],ha=[],nd=[],od=[],ma=[],pd=[],qd=[],rd=[],sd={},td={},ud=4;function vd(a){wd||(wd=a);}function da(a){for(var b=hd++,c=a.length;c<b;c++)a[c]=null;return b}function ia(a,b){a.df||(a.df=a.getContext,a.getContext=function(f,h){h=a.df(f,h);return "webgl"==f==h instanceof WebGLRenderingContext?h:null});var c=1<b.majorVersion?a.getContext("webgl2",b):a.getContext("webgl",b);return c?xd(c,b):0}
8152
+ function xd(a,b){var c=da(ma),f={handle:c,attributes:b,version:b.majorVersion,xe:a};a.canvas&&(a.canvas.Rf=f);ma[c]=f;("undefined"==typeof b.eg||b.eg)&&yd(f);return c}function ja(a){B=ma[a];w.Jg=Z=B&&B.xe;return !(a&&!Z)}
8153
+ function yd(a){a||(a=B);if(!a.og){a.og=true;var b=a.xe;ed(b);fd(b);gd(b);b.If=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.Mf=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.ze=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.ze)b.ze=b.getExtension("EXT_disjoint_timer_query");b.Kg=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c);});}}
8154
+ var B,wd;function zd(a,b){Z.bindFramebuffer(a,ld[b]);}function Ad(a){Z.bindVertexArray(od[a]);}function Bd(a){Z.clear(a);}function Cd(a,b,c,f){Z.clearColor(a,b,c,f);}function Dd(a){Z.clearStencil(a);}function Ed(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2];Z.deleteVertexArray(od[f]);od[f]=null;}}var Fd=[];function Gd(a,b,c,f){Z.drawElements(a,b,c,f);}function Jd(a,b,c,f){for(var h=0;h<a;h++){var m=Z[c](),u=m&&da(f);m?(m.name=u,f[u]=m):vd(1282);Q[b+4*h>>2]=u;}}
8155
+ function Kd(a,b){Jd(a,b,"createVertexArray",od);}function Ld(a,b){Ta[a>>2]=b;Ta[a+4>>2]=(b-Ta[a>>2])/4294967296;}
8156
+ function Md(a,b,c){if(b){var f=void 0;switch(a){case 36346:f=1;break;case 36344:0!=c&&1!=c&&vd(1280);return;case 34814:case 36345:f=0;break;case 34466:var h=Z.getParameter(34467);f=h?h.length:0;break;case 33309:if(2>B.version){vd(1282);return}f=2*(Z.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>B.version){vd(1280);return}f=33307==a?3:0;}if(void 0===f)switch(h=Z.getParameter(a),typeof h){case "number":f=h;break;case "boolean":f=h?1:0;break;case "string":vd(1280);return;case "object":if(null===
8157
+ h)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:f=0;break;default:vd(1280);return}else {if(h instanceof Float32Array||h instanceof Uint32Array||h instanceof Int32Array||h instanceof Array){for(a=0;a<h.length;++a)switch(c){case 0:Q[b+4*a>>2]=h[a];break;case 2:R[b+4*a>>2]=h[a];break;case 4:Qa[b+a>>0]=h[a]?1:0;}return}try{f=h.name|
8158
+ 0;}catch(m){vd(1280);Ia("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+m+")");return}}break;default:vd(1280);Ia("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+h+" of type "+typeof h+"!");return}switch(c){case 1:Ld(b,f);break;case 0:Q[b>>2]=f;break;case 2:R[b>>2]=f;break;case 4:Qa[b>>0]=f?1:0;}}else vd(1281);}function Nd(a,b){Md(a,b,0);}
8159
+ function Od(a,b,c){if(c){a=pd[a];b=2>B.version?Z.ze.getQueryObjectEXT(a,b):Z.getQueryParameter(a,b);var f;"boolean"==typeof b?f=b?1:0:f=b;Ld(c,f);}else vd(1281);}var Qd=a=>{var b=na(a)+1,c=Pd(b);c&&oa(a,J,c,b);return c};
8160
+ function Rd(a){var b=sd[a];if(!b){switch(a){case 7939:b=Z.getSupportedExtensions()||[];b=b.concat(b.map(function(f){return "GL_"+f}));b=Qd(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=Z.getParameter(a))||vd(1280);b=b&&Qd(b);break;case 7938:b=Z.getParameter(7938);b=2<=B.version?"OpenGL ES 3.0 ("+b+")":"OpenGL ES 2.0 ("+b+")";b=Qd(b);break;case 35724:b=Z.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+
8161
+ c[1]+" ("+b+")");b=Qd(b);break;default:vd(1280);}sd[a]=b;}return b}function Sd(a,b){if(2>B.version)return vd(1282),0;var c=td[a];if(c)return 0>b||b>=c.length?(vd(1281),0):c[b];switch(a){case 7939:return c=Z.getSupportedExtensions()||[],c=c.concat(c.map(function(f){return "GL_"+f})),c=c.map(function(f){return Qd(f)}),c=td[a]=c,0>b||b>=c.length?(vd(1281),0):c[b];default:return vd(1280),0}}function Td(a){return "]"==a.slice(-1)&&a.lastIndexOf("[")}
8162
+ function Ud(a){a-=5120;return 0==a?Qa:1==a?J:2==a?Ra:4==a?Q:6==a?R:5==a||28922==a||28520==a||30779==a||30782==a?Ta:Sa}function Vd(a,b,c,f,h){a=Ud(a);var m=31-Math.clz32(a.BYTES_PER_ELEMENT),u=ud;return a.subarray(h>>m,h+f*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<<m)+u-1&-u)>>m)}function Wd(a){var b=Z.bg;if(b){var c=b.ff[a];"number"==typeof c&&(b.ff[a]=c=Z.getUniformLocation(b,b.Pf[a]+(0<c?"["+c+"]":"")));return c}vd(1282);}
8163
+ var Xd=[],Yd=[],Zd={},ae=()=>{if(!$d){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ua||"./this.program"},b;for(b in Zd) void 0===Zd[b]?delete a[b]:a[b]=Zd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);$d=c;}return $d},$d,be=[null,[],[]],ce=a=>0===a%4&&(0!==a%100||0===a%400),de=[31,29,31,30,31,30,31,31,30,31,30,31],ee=[31,28,31,30,31,30,31,31,30,31,30,31];
8164
+ function fe(a){var b=Array(na(a)+1);oa(a,b,0,b.length);return b}
8165
+ var ge=(a,b,c,f)=>{function h(y,M,T){for(y="number"==typeof y?y.toString():y||"";y.length<M;)y=T[0]+y;return y}function m(y,M){return h(y,M,"0")}function u(y,M){function T(sa){return 0>sa?-1:0<sa?1:0}var S;0===(S=T(y.getFullYear()-M.getFullYear()))&&0===(S=T(y.getMonth()-M.getMonth()))&&(S=T(y.getDate()-M.getDate()));return S}function n(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),
8166
+ 0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function p(y){var M=y.He;for(y=new Date((new Date(y.Ie+1900,0,1)).getTime());0<M;){var T=y.getMonth(),S=(ce(y.getFullYear())?de:ee)[T];if(M>S-y.getDate())M-=S-y.getDate()+1,y.setDate(1),11>T?y.setMonth(T+1):(y.setMonth(0),y.setFullYear(y.getFullYear()+1));else {y.setDate(y.getDate()+M);break}}T=new Date(y.getFullYear()+1,0,4);M=n(new Date(y.getFullYear(),
8167
+ 0,4));T=n(T);return 0>=u(M,y)?0>=u(T,y)?y.getFullYear()+1:y.getFullYear():y.getFullYear()-1}var v=Q[f+40>>2];f={Hg:Q[f>>2],Gg:Q[f+4>>2],tf:Q[f+8>>2],Df:Q[f+12>>2],uf:Q[f+16>>2],Ie:Q[f+20>>2],Ae:Q[f+24>>2],He:Q[f+28>>2],Ng:Q[f+32>>2],Fg:Q[f+36>>2],Ig:v?v?vb(J,v):"":""};c=c?vb(J,c):"";v={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y",
8168
+ "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var E in v)c=c.replace(new RegExp(E,"g"),v[E]);var G="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),L="January February March April May June July August September October November December".split(" ");v={"%a":y=>G[y.Ae].substring(0,3),"%A":y=>G[y.Ae],"%b":y=>L[y.uf].substring(0,3),"%B":y=>L[y.uf],"%C":y=>m((y.Ie+1900)/
8169
+ 100|0,2),"%d":y=>m(y.Df,2),"%e":y=>h(y.Df,2," "),"%g":y=>p(y).toString().substring(2),"%G":y=>p(y),"%H":y=>m(y.tf,2),"%I":y=>{y=y.tf;0==y?y=12:12<y&&(y-=12);return m(y,2)},"%j":y=>{for(var M=0,T=0;T<=y.uf-1;M+=(ce(y.Ie+1900)?de:ee)[T++]);return m(y.Df+M,3)},"%m":y=>m(y.uf+1,2),"%M":y=>m(y.Gg,2),"%n":()=>"\n","%p":y=>0<=y.tf&&12>y.tf?"AM":"PM","%S":y=>m(y.Hg,2),"%t":()=>"\t","%u":y=>y.Ae||7,"%U":y=>m(Math.floor((y.He+7-y.Ae)/7),2),"%V":y=>{var M=Math.floor((y.He+7-(y.Ae+6)%7)/7);2>=(y.Ae+371-y.He-
8170
+ 2)%7&&M++;if(M)53==M&&(T=(y.Ae+371-y.He)%7,4==T||3==T&&ce(y.Ie)||(M=1));else {M=52;var T=(y.Ae+7-y.He-1)%7;(4==T||5==T&&ce(y.Ie%400-1))&&M++;}return m(M,2)},"%w":y=>y.Ae,"%W":y=>m(Math.floor((y.He+7-(y.Ae+6)%7)/7),2),"%y":y=>(y.Ie+1900).toString().substring(2),"%Y":y=>y.Ie+1900,"%z":y=>{y=y.Fg;var M=0<=y;y=Math.abs(y)/60;return (M?"+":"-")+String("0000"+(y/60*100+y%60)).slice(-4)},"%Z":y=>y.Ig,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(E in v)c.includes(E)&&(c=c.replace(new RegExp(E,"g"),v[E](f)));
8171
+ c=c.replace(/\0\0/g,"%");E=fe(c);if(E.length>b)return 0;Qa.set(E,a);return E.length-1};Db=w.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError";}};for(var he=Array(256),ie=0;256>ie;++ie)he[ie]=String.fromCharCode(ie);Ib=he;Kb=w.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError";}};
8172
+ ec.prototype.isAliasOf=function(a){if(!(this instanceof ec&&a instanceof ec))return false;var b=this.ae.me.ge,c=this.ae.ie,f=a.ae.me.ge;for(a=a.ae.ie;b.re;)c=b.gf(c),b=b.re;for(;f.re;)a=f.gf(a),f=f.re;return b===f&&c===a};
8173
+ ec.prototype.clone=function(){this.ae.ie||Mb(this);if(this.ae.ef)return this.ae.count.value+=1,this;var a=dc,b=Object,c=b.create,f=Object.getPrototypeOf(this),h=this.ae;a=a(c.call(b,f,{ae:{value:{count:h.count,Xe:h.Xe,ef:h.ef,ie:h.ie,me:h.me,pe:h.pe,we:h.we}}}));a.ae.count.value+=1;a.ae.Xe=false;return a};ec.prototype["delete"]=function(){this.ae.ie||Mb(this);this.ae.Xe&&!this.ae.ef&&W("Object already scheduled for deletion");Ob(this);Pb(this.ae);this.ae.ef||(this.ae.pe=void 0,this.ae.ie=void 0);};
8174
+ ec.prototype.isDeleted=function(){return !this.ae.ie};ec.prototype.deleteLater=function(){this.ae.ie||Mb(this);this.ae.Xe&&!this.ae.ef&&W("Object already scheduled for deletion");Sb.push(this);1===Sb.length&&Ub&&Ub(Tb);this.ae.Xe=true;return this};w.getInheritedInstanceCount=function(){return Object.keys(Vb).length};w.getLiveInheritedInstances=function(){var a=[],b;for(b in Vb)Vb.hasOwnProperty(b)&&a.push(Vb[b]);return a};w.flushPendingDeletes=Tb;w.setDelayFunction=function(a){Ub=a;Sb.length&&Ub&&Ub(Tb);};
8175
+ qc.prototype.jg=function(a){this.Nf&&(a=this.Nf(a));return a};qc.prototype.Hf=function(a){this.De&&this.De(a);};qc.prototype.argPackAdvance=8;qc.prototype.readValueFromPointer=yb;qc.prototype.deleteObject=function(a){if(null!==a)a["delete"]();};
8176
+ qc.prototype.fromWireType=function(a){function b(){return this.pf?cc(this.ge.Ye,{me:this.tg,ie:c,we:this,pe:a}):cc(this.ge.Ye,{me:this,ie:a})}var c=this.jg(a);if(!c)return this.Hf(a),null;var f=Wb(this.ge,c);if(void 0!==f){if(0===f.ae.count.value)return f.ae.ie=c,f.ae.pe=a,f.clone();f=f.clone();this.Hf(a);return f}f=this.ge.ig(c);f=Rb[f];if(!f)return b.call(this);f=this.nf?f.$f:f.pointerType;var h=Qb(c,this.ge,f.ge);return null===h?b.call(this):this.pf?cc(f.ge.Ye,{me:f,ie:h,we:this,pe:a}):cc(f.ge.Ye,
8177
+ {me:f,ie:h})};uc=w.UnboundTypeError=function(a,b){var c=gc(b,function(f){this.name=b;this.message=f;f=Error(f).stack;void 0!==f&&(this.stack=this.toString()+"\n"+f.replace(/^Error(:[^\n]*)?\n/,""));});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c}(Error,"UnboundTypeError");
8178
+ Object.assign(Hc.prototype,{get(a){return this.Ce[a]},has(a){return void 0!==this.Ce[a]},Yf(a){var b=this.Kf.pop()||this.Ce.length;this.Ce[b]=a;return b},Zf(a){this.Ce[a]=void 0;this.Kf.push(a);}});Ic.Ce.push({value:void 0},{value:null},{value:true},{value:false});Ic.df=Ic.Ce.length;w.count_emval_handles=function(){for(var a=0,b=Ic.df;b<Ic.Ce.length;++b) void 0!==Ic.Ce[b]&&++a;return a};for(var Z,je=0;32>je;++je)Fd.push(Array(je));var ke=new Float32Array(288);
8179
+ for(je=0;288>je;++je)Xd[je]=ke.subarray(0,je+1);var le=new Int32Array(288);for(je=0;288>je;++je)Yd[je]=le.subarray(0,je+1);
8180
+ var De={R:function(){return 0},wb:()=>{},yb:function(){return 0},tb:()=>{},ub:()=>{},S:function(){},vb:()=>{},B:function(a){var b=wb[a];delete wb[a];var c=b.Cf,f=b.De,h=b.Jf,m=h.map(u=>u.mg).concat(h.map(u=>u.xg));Fb([a],m,u=>{var n={};h.forEach((p,v)=>{var E=u[v],G=p.kg,L=p.lg,y=u[v+h.length],M=p.wg,T=p.yg;n[p.fg]={read:S=>E.fromWireType(G(L,S)),write:(S,sa)=>{var pa=[];M(T,S,y.toWireType(pa,sa));xb(pa);}};});return [{name:b.name,fromWireType:function(p){var v={},E;for(E in n)v[E]=n[E].read(p);f(p);
8181
+ return v},toWireType:function(p,v){for(var E in n)if(!(E in v))throw new TypeError(`Missing field: "${E}"`);var G=c();for(E in n)n[E].write(G,v[E]);null!==p&&p.push(f,G);return G},argPackAdvance:8,readValueFromPointer:yb,ve:f}]});},nb:function(){},Cb:function(a,b,c,f,h){var m=Hb(c);b=Jb(b);Gb(a,{name:b,fromWireType:function(u){return !!u},toWireType:function(u,n){return n?f:h},argPackAdvance:8,readValueFromPointer:function(u){if(1===c)var n=Qa;else if(2===c)n=Ra;else if(4===c)n=Q;else throw new TypeError("Unknown boolean type size: "+
8182
+ b);return this.fromWireType(n[u>>m])},ve:null});},n:function(a,b,c,f,h,m,u,n,p,v,E,G,L){E=Jb(E);m=tc(h,m);n&&(n=tc(u,n));v&&(v=tc(p,v));L=tc(G,L);var y=fc(E);ic(y,function(){yc(`Cannot construct ${E} due to unbound types`,[f]);});Fb([a,b,c],f?[f]:[],function(M){M=M[0];if(f){var T=M.ge;var S=T.Ye;}else S=ec.prototype;M=gc(y,function(){if(Object.getPrototypeOf(this)!==sa)throw new Kb("Use 'new' to construct "+E);if(void 0===pa.Ge)throw new Kb(E+" has no accessible constructor");var jb=pa.Ge[arguments.length];
8183
+ if(void 0===jb)throw new Kb(`Tried to invoke ctor of ${E} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(pa.Ge).toString()}) parameters instead!`);return jb.apply(this,arguments)});var sa=Object.create(S,{constructor:{value:M}});M.prototype=sa;var pa=new jc(E,M,sa,L,T,m,n,v);pa.re&&(void 0===pa.re.hf&&(pa.re.hf=[]),pa.re.hf.push(pa));T=new qc(E,pa,true,false,false);S=new qc(E+"*",pa,false,false,false);var ib=new qc(E+" const*",pa,false,true,false);Rb[a]={pointerType:S,$f:ib};rc(y,M);return [T,
8184
+ S,ib]});},f:function(a,b,c,f,h,m,u){var n=Gc(c,f);b=Jb(b);m=tc(h,m);Fb([],[a],function(p){function v(){yc(`Cannot call ${E} due to unbound types`,n);}p=p[0];var E=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var G=p.ge.constructor;void 0===G[b]?(v.Ve=c-1,G[b]=v):(hc(G,b,E),G[b].oe[c-1]=v);Fb([],n,function(L){L=[L[0],null].concat(L.slice(1));L=Fc(E,L,null,m,u);void 0===G[b].oe?(L.Ve=c-1,G[b]=L):G[b].oe[c-1]=L;if(p.ge.hf)for(const y of p.ge.hf)y.constructor.hasOwnProperty(b)||(y.constructor[b]=
8185
+ L);return []});return []});},A:function(a,b,c,f,h,m){var u=Gc(b,c);h=tc(f,h);Fb([],[a],function(n){n=n[0];var p=`constructor ${n.name}`;void 0===n.ge.Ge&&(n.ge.Ge=[]);if(void 0!==n.ge.Ge[b-1])throw new Kb(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${n.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);n.ge.Ge[b-1]=()=>{yc(`Cannot construct ${n.name} due to unbound types`,u);};Fb([],u,function(v){v.splice(1,
8186
+ 0,null);n.ge.Ge[b-1]=Fc(p,v,null,h,m);return []});return []});},b:function(a,b,c,f,h,m,u,n){var p=Gc(c,f);b=Jb(b);m=tc(h,m);Fb([],[a],function(v){function E(){yc(`Cannot call ${G} due to unbound types`,p);}v=v[0];var G=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);n&&v.ge.ug.push(b);var L=v.ge.Ye,y=L[b];void 0===y||void 0===y.oe&&y.className!==v.name&&y.Ve===c-2?(E.Ve=c-2,E.className=v.name,L[b]=E):(hc(L,b,G),L[b].oe[c-2]=E);Fb([],p,function(M){M=Fc(G,M,v,m,u);void 0===L[b].oe?(M.Ve=
8187
+ c-2,L[b]=M):L[b].oe[c-2]=M;return []});return []});},t:function(a,b,c){a=Jb(a);Fb([],[b],function(f){f=f[0];w[a]=f.fromWireType(c);return []});},Bb:function(a,b){b=Jb(b);Gb(a,{name:b,fromWireType:function(c){var f=Kc(c);Jc(c);return f},toWireType:function(c,f){return oc(f)},argPackAdvance:8,readValueFromPointer:yb,ve:null});},m:function(a,b,c,f){function h(){}c=Hb(c);b=Jb(b);h.values={};Gb(a,{name:b,constructor:h,fromWireType:function(m){return this.constructor.values[m]},toWireType:function(m,u){return u.value},
8188
+ argPackAdvance:8,readValueFromPointer:Lc(b,c,f),ve:null});ic(b,h);},c:function(a,b,c){var f=Mc(a,"enum");b=Jb(b);a=f.constructor;f=Object.create(f.constructor.prototype,{value:{value:c},constructor:{value:gc(`${f.name}_${b}`,function(){})}});a.values[c]=f;a[b]=f;},U:function(a,b,c){c=Hb(c);b=Jb(b);Gb(a,{name:b,fromWireType:function(f){return f},toWireType:function(f,h){return h},argPackAdvance:8,readValueFromPointer:Nc(b,c),ve:null});},y:function(a,b,c,f,h,m){var u=Gc(b,c);a=Jb(a);h=tc(f,h);ic(a,function(){yc(`Cannot call ${a} due to unbound types`,
8189
+ u);},b-1);Fb([],u,function(n){n=[n[0],null].concat(n.slice(1));rc(a,Fc(a,n,null,h,m),b-1);return []});},E:function(a,b,c,f,h){b=Jb(b);-1===h&&(h=4294967295);h=Hb(c);var m=n=>n;if(0===f){var u=32-8*c;m=n=>n<<u>>>u;}c=b.includes("unsigned")?function(n,p){return p>>>0}:function(n,p){return p};Gb(a,{name:b,fromWireType:m,toWireType:c,argPackAdvance:8,readValueFromPointer:Oc(b,h,0!==f),ve:null});},r:function(a,b,c){function f(m){m>>=2;var u=Ta;return new h(u.buffer,u[m+1],u[m])}var h=[Int8Array,Uint8Array,
8190
+ Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=Jb(c);Gb(a,{name:c,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},{ng:true});},q:function(a,b,c,f,h,m,u,n,p,v,E,G){c=Jb(c);m=tc(h,m);n=tc(u,n);v=tc(p,v);G=tc(E,G);Fb([a],[b],function(L){L=L[0];return [new qc(c,L.ge,false,false,true,L,f,m,n,v,G)]});},T:function(a,b){b=Jb(b);var c="std::string"===b;Gb(a,{name:b,fromWireType:function(f){var h=Ta[f>>2],m=f+4;if(c)for(var u=m,n=0;n<=h;++n){var p=m+n;if(n==h||0==J[p]){u=u?vb(J,u,
8191
+ p-u):"";if(void 0===v)var v=u;else v+=String.fromCharCode(0),v+=u;u=p+1;}}else {v=Array(h);for(n=0;n<h;++n)v[n]=String.fromCharCode(J[m+n]);v=v.join("");}xc(f);return v},toWireType:function(f,h){h instanceof ArrayBuffer&&(h=new Uint8Array(h));var m="string"==typeof h;m||h instanceof Uint8Array||h instanceof Uint8ClampedArray||h instanceof Int8Array||W("Cannot pass non-string to std::string");var u=c&&m?na(h):h.length;var n=Pd(4+u+1),p=n+4;Ta[n>>2]=u;if(c&&m)oa(h,J,p,u+1);else if(m)for(m=0;m<u;++m){var v=
8192
+ h.charCodeAt(m);255<v&&(xc(p),W("String has UTF-16 code units that do not fit in 8 bits"));J[p+m]=v;}else for(m=0;m<u;++m)J[p+m]=h[m];null!==f&&f.push(xc,n);return n},argPackAdvance:8,readValueFromPointer:yb,ve:function(f){xc(f);}});},N:function(a,b,c){c=Jb(c);if(2===b){var f=Qc;var h=Rc;var m=Sc;var u=()=>Sa;var n=1;}else 4===b&&(f=Tc,h=Uc,m=Vc,u=()=>Ta,n=2);Gb(a,{name:c,fromWireType:function(p){for(var v=Ta[p>>2],E=u(),G,L=p+4,y=0;y<=v;++y){var M=p+4+y*b;if(y==v||0==E[M>>n])L=f(L,M-L),void 0===G?G=
8193
+ L:(G+=String.fromCharCode(0),G+=L),L=M+b;}xc(p);return G},toWireType:function(p,v){"string"!=typeof v&&W(`Cannot pass non-string to C++ string type ${c}`);var E=m(v),G=Pd(4+E+b);Ta[G>>2]=E>>n;h(v,G+4,E+b);null!==p&&p.push(xc,G);return G},argPackAdvance:8,readValueFromPointer:yb,ve:function(p){xc(p);}});},C:function(a,b,c,f,h,m){wb[a]={name:Jb(b),Cf:tc(c,f),De:tc(h,m),Jf:[]};},e:function(a,b,c,f,h,m,u,n,p,v){wb[a].Jf.push({fg:Jb(b),mg:c,kg:tc(f,h),lg:m,xg:u,wg:tc(n,p),yg:v});},Db:function(a,b){b=Jb(b);
8194
+ Gb(a,{pg:true,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}});},Ab:()=>true,pb:()=>{throw Infinity;},F:function(a,b,c){a=Kc(a);b=Mc(b,"emval::as");var f=[],h=oc(f);Ta[c>>2]=h;return b.toWireType(f,a)},X:function(a,b,c,f,h){a=Yc[a];b=Kc(b);c=Xc(c);var m=[];Ta[f>>2]=oc(m);return a(b,c,m,h)},x:function(a,b,c,f){a=Yc[a];b=Kc(b);c=Xc(c);a(b,c,null,f);},d:Jc,K:function(a){if(0===a)return oc(Zc());a=Xc(a);return oc(Zc()[a])},u:function(a,b){var c=ad(a,b),f=c[0];b=f.name+"_$"+c.slice(1).map(function(u){return u.name}).join("_")+
8195
+ "$";var h=bd[b];if(void 0!==h)return h;var m=Array(a-1);h=$c((u,n,p,v)=>{for(var E=0,G=0;G<a-1;++G)m[G]=c[G+1].readValueFromPointer(v+E),E+=c[G+1].argPackAdvance;u=u[n].apply(u,m);for(G=0;G<a-1;++G)c[G+1].cg&&c[G+1].cg(m[G]);if(!f.pg)return f.toWireType(p,u)});return bd[b]=h},z:function(a,b){a=Kc(a);b=Kc(b);return oc(a[b])},p:function(a){4<a&&(Ic.get(a).Of+=1);},J:function(a,b,c,f){a=Kc(a);var h=dd[b];h||(h=cd(b),dd[b]=h);return h(a,c,f)},H:function(){return oc([])},g:function(a){return oc(Xc(a))},
8196
+ G:function(){return oc({})},gb:function(a){a=Kc(a);return !a},D:function(a){var b=Kc(a);xb(b);Jc(a);},l:function(a,b,c){a=Kc(a);b=Kc(b);c=Kc(c);a[b]=c;},h:function(a,b){a=Mc(a,"_emval_take_value");a=a.readValueFromPointer(b);return oc(a)},kb:function(){return -52},lb:function(){},a:()=>{Ka("");},zb:()=>performance.now(),sd:function(a){Z.activeTexture(a);},td:function(a,b){Z.attachShader(kd[a],nd[b]);},Yb:function(a,b){Z.beginQuery(a,pd[b]);},Sb:function(a,b){Z.ze.beginQueryEXT(a,pd[b]);},ud:function(a,b,c){Z.bindAttribLocation(kd[a],
8197
+ b,c?vb(J,c):"");},vd:function(a,b){35051==a?Z.zf=b:35052==a&&(Z.We=b);Z.bindBuffer(a,jd[b]);},uc:zd,vc:function(a,b){Z.bindRenderbuffer(a,md[b]);},cc:function(a,b){Z.bindSampler(a,qd[b]);},wd:function(a,b){Z.bindTexture(a,ha[b]);},Pc:Ad,Tc:Ad,Y:function(a,b,c,f){Z.blendColor(a,b,c,f);},Z:function(a){Z.blendEquation(a);},_:function(a,b){Z.blendFunc(a,b);},oc:function(a,b,c,f,h,m,u,n,p,v){Z.blitFramebuffer(a,b,c,f,h,m,u,n,p,v);},$:function(a,b,c,f){2<=B.version?c&&b?Z.bufferData(a,J,f,c,b):Z.bufferData(a,b,
8198
+ f):Z.bufferData(a,c?J.subarray(c,c+b):b,f);},aa:function(a,b,c,f){2<=B.version?c&&Z.bufferSubData(a,b,J,f,c):Z.bufferSubData(a,b,J.subarray(f,f+c));},wc:function(a){return Z.checkFramebufferStatus(a)},ba:Bd,ca:Cd,da:Dd,lc:function(a,b,c,f){return Z.clientWaitSync(rd[a],b,(c>>>0)+4294967296*f)},ea:function(a,b,c,f){Z.colorMask(!!a,!!b,!!c,!!f);},fa:function(a){Z.compileShader(nd[a]);},ga:function(a,b,c,f,h,m,u,n){2<=B.version?Z.We||!u?Z.compressedTexImage2D(a,b,c,f,h,m,u,n):Z.compressedTexImage2D(a,b,
8199
+ c,f,h,m,J,n,u):Z.compressedTexImage2D(a,b,c,f,h,m,n?J.subarray(n,n+u):null);},ha:function(a,b,c,f,h,m,u,n,p){2<=B.version?Z.We||!n?Z.compressedTexSubImage2D(a,b,c,f,h,m,u,n,p):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,J,p,n):Z.compressedTexSubImage2D(a,b,c,f,h,m,u,p?J.subarray(p,p+n):null);},nc:function(a,b,c,f,h){Z.copyBufferSubData(a,b,c,f,h);},ia:function(a,b,c,f,h,m,u,n){Z.copyTexSubImage2D(a,b,c,f,h,m,u,n);},ja:function(){var a=da(kd),b=Z.createProgram();b.name=a;b.sf=b.qf=b.rf=0;b.Ef=1;kd[a]=b;return a},
8200
+ ka:function(a){var b=da(nd);nd[b]=Z.createShader(a);return b},la:function(a){Z.cullFace(a);},ma:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=jd[f];h&&(Z.deleteBuffer(h),h.name=0,jd[f]=null,f==Z.zf&&(Z.zf=0),f==Z.We&&(Z.We=0));}},xc:function(a,b){for(var c=0;c<a;++c){var f=Q[b+4*c>>2],h=ld[f];h&&(Z.deleteFramebuffer(h),h.name=0,ld[f]=null);}},na:function(a){if(a){var b=kd[a];b?(Z.deleteProgram(b),b.name=0,kd[a]=null):vd(1281);}},Zb:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=pd[f];
8201
+ h&&(Z.deleteQuery(h),pd[f]=null);}},Tb:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=pd[f];h&&(Z.ze.deleteQueryEXT(h),pd[f]=null);}},yc:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=md[f];h&&(Z.deleteRenderbuffer(h),h.name=0,md[f]=null);}},dc:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=qd[f];h&&(Z.deleteSampler(h),h.name=0,qd[f]=null);}},oa:function(a){if(a){var b=nd[a];b?(Z.deleteShader(b),nd[a]=null):vd(1281);}},mc:function(a){if(a){var b=rd[a];b?(Z.deleteSync(b),b.name=
8202
+ 0,rd[a]=null):vd(1281);}},pa:function(a,b){for(var c=0;c<a;c++){var f=Q[b+4*c>>2],h=ha[f];h&&(Z.deleteTexture(h),h.name=0,ha[f]=null);}},Qc:Ed,Uc:Ed,qa:function(a){Z.depthMask(!!a);},ra:function(a){Z.disable(a);},sa:function(a){Z.disableVertexAttribArray(a);},ta:function(a,b,c){Z.drawArrays(a,b,c);},Nc:function(a,b,c,f){Z.drawArraysInstanced(a,b,c,f);},Lc:function(a,b,c,f,h){Z.If.drawArraysInstancedBaseInstanceWEBGL(a,b,c,f,h);},Jc:function(a,b){for(var c=Fd[a],f=0;f<a;f++)c[f]=Q[b+4*f>>2];Z.drawBuffers(c);},
8203
+ ua:Gd,Oc:function(a,b,c,f,h){Z.drawElementsInstanced(a,b,c,f,h);},Mc:function(a,b,c,f,h,m,u){Z.If.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,f,h,m,u);},Dc:function(a,b,c,f,h,m){Gd(a,f,h,m);},va:function(a){Z.enable(a);},wa:function(a){Z.enableVertexAttribArray(a);},_b:function(a){Z.endQuery(a);},Ub:function(a){Z.ze.endQueryEXT(a);},ic:function(a,b){return (a=Z.fenceSync(a,b))?(b=da(rd),a.name=b,rd[b]=a,b):0},xa:function(){Z.finish();},ya:function(){Z.flush();},zc:function(a,b,c,f){Z.framebufferRenderbuffer(a,
8204
+ b,c,md[f]);},Ac:function(a,b,c,f,h){Z.framebufferTexture2D(a,b,c,ha[f],h);},za:function(a){Z.frontFace(a);},Aa:function(a,b){Jd(a,b,"createBuffer",jd);},Bc:function(a,b){Jd(a,b,"createFramebuffer",ld);},$b:function(a,b){Jd(a,b,"createQuery",pd);},Vb:function(a,b){for(var c=0;c<a;c++){var f=Z.ze.createQueryEXT();if(!f){for(vd(1282);c<a;)Q[b+4*c++>>2]=0;break}var h=da(pd);f.name=h;pd[h]=f;Q[b+4*c>>2]=h;}},Cc:function(a,b){Jd(a,b,"createRenderbuffer",md);},ec:function(a,b){Jd(a,b,"createSampler",qd);},Ba:function(a,
8205
+ b){Jd(a,b,"createTexture",ha);},Rc:Kd,Vc:Kd,qc:function(a){Z.generateMipmap(a);},Ca:function(a,b,c){c?Q[c>>2]=Z.getBufferParameter(a,b):vd(1281);},Da:function(){var a=Z.getError()||wd;wd=0;return a},Ea:function(a,b){Md(a,b,2);},rc:function(a,b,c,f){a=Z.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;Q[f>>2]=a;},Fa:Nd,Ga:function(a,b,c,f){a=Z.getProgramInfoLog(kd[a]);null===a&&(a="(unknown error)");b=0<b&&f?oa(a,J,f,b):0;c&&(Q[c>>2]=b);},Ha:function(a,
8206
+ b,c){if(c)if(a>=hd)vd(1281);else if(a=kd[a],35716==b)a=Z.getProgramInfoLog(a),null===a&&(a="(unknown error)"),Q[c>>2]=a.length+1;else if(35719==b){if(!a.sf)for(b=0;b<Z.getProgramParameter(a,35718);++b)a.sf=Math.max(a.sf,Z.getActiveUniform(a,b).name.length+1);Q[c>>2]=a.sf;}else if(35722==b){if(!a.qf)for(b=0;b<Z.getProgramParameter(a,35721);++b)a.qf=Math.max(a.qf,Z.getActiveAttrib(a,b).name.length+1);Q[c>>2]=a.qf;}else if(35381==b){if(!a.rf)for(b=0;b<Z.getProgramParameter(a,35382);++b)a.rf=Math.max(a.rf,
8207
+ Z.getActiveUniformBlockName(a,b).length+1);Q[c>>2]=a.rf;}else Q[c>>2]=Z.getProgramParameter(a,b);else vd(1281);},Pb:Od,Qb:Od,ac:function(a,b,c){if(c){a=Z.getQueryParameter(pd[a],b);var f;"boolean"==typeof a?f=a?1:0:f=a;Q[c>>2]=f;}else vd(1281);},Wb:function(a,b,c){if(c){a=Z.ze.getQueryObjectEXT(pd[a],b);var f;"boolean"==typeof a?f=a?1:0:f=a;Q[c>>2]=f;}else vd(1281);},bc:function(a,b,c){c?Q[c>>2]=Z.getQuery(a,b):vd(1281);},Xb:function(a,b,c){c?Q[c>>2]=Z.ze.getQueryEXT(a,b):vd(1281);},sc:function(a,b,c){c?
8208
+ Q[c>>2]=Z.getRenderbufferParameter(a,b):vd(1281);},Ia:function(a,b,c,f){a=Z.getShaderInfoLog(nd[a]);null===a&&(a="(unknown error)");b=0<b&&f?oa(a,J,f,b):0;c&&(Q[c>>2]=b);},Mb:function(a,b,c,f){a=Z.getShaderPrecisionFormat(a,b);Q[c>>2]=a.rangeMin;Q[c+4>>2]=a.rangeMax;Q[f>>2]=a.precision;},Ja:function(a,b,c){c?35716==b?(a=Z.getShaderInfoLog(nd[a]),null===a&&(a="(unknown error)"),Q[c>>2]=a?a.length+1:0):35720==b?(a=Z.getShaderSource(nd[a]),Q[c>>2]=a?a.length+1:0):Q[c>>2]=Z.getShaderParameter(nd[a],b):vd(1281);},
8209
+ Ka:Rd,Sc:Sd,La:function(a,b){b=b?vb(J,b):"";if(a=kd[a]){var c=a,f=c.ff,h=c.Qf,m;if(!f)for(c.ff=f={},c.Pf={},m=0;m<Z.getProgramParameter(c,35718);++m){var u=Z.getActiveUniform(c,m);var n=u.name;u=u.size;var p=Td(n);p=0<p?n.slice(0,p):n;var v=c.Ef;c.Ef+=u;h[p]=[u,v];for(n=0;n<u;++n)f[v]=n,c.Pf[v++]=p;}c=a.ff;f=0;h=b;m=Td(b);0<m&&(f=parseInt(b.slice(m+1))>>>0,h=b.slice(0,m));if((h=a.Qf[h])&&f<h[0]&&(f+=h[1],c[f]=c[f]||Z.getUniformLocation(a,b)))return f}else vd(1281);return -1},Nb:function(a,b,c){for(var f=
8210
+ Fd[b],h=0;h<b;h++)f[h]=Q[c+4*h>>2];Z.invalidateFramebuffer(a,f);},Ob:function(a,b,c,f,h,m,u){for(var n=Fd[b],p=0;p<b;p++)n[p]=Q[c+4*p>>2];Z.invalidateSubFramebuffer(a,n,f,h,m,u);},jc:function(a){return Z.isSync(rd[a])},Ma:function(a){return (a=ha[a])?Z.isTexture(a):0},Na:function(a){Z.lineWidth(a);},Oa:function(a){a=kd[a];Z.linkProgram(a);a.ff=0;a.Qf={};},Hc:function(a,b,c,f,h,m){Z.Mf.multiDrawArraysInstancedBaseInstanceWEBGL(a,Q,b>>2,Q,c>>2,Q,f>>2,Ta,h>>2,m);},Ic:function(a,b,c,f,h,m,u,n){Z.Mf.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,
8211
+ Q,b>>2,c,Q,f>>2,Q,h>>2,Q,m>>2,Ta,u>>2,n);},Pa:function(a,b){3317==a&&(ud=b);Z.pixelStorei(a,b);},Rb:function(a,b){Z.ze.queryCounterEXT(pd[a],b);},Kc:function(a){Z.readBuffer(a);},Qa:function(a,b,c,f,h,m,u){if(2<=B.version)if(Z.zf)Z.readPixels(a,b,c,f,h,m,u);else {var n=Ud(m);Z.readPixels(a,b,c,f,h,m,n,u>>31-Math.clz32(n.BYTES_PER_ELEMENT));}else (u=Vd(m,h,c,f,u))?Z.readPixels(a,b,c,f,h,m,u):vd(1280);},tc:function(a,b,c,f){Z.renderbufferStorage(a,b,c,f);},pc:function(a,b,c,f,h){Z.renderbufferStorageMultisample(a,
8212
+ b,c,f,h);},fc:function(a,b,c){Z.samplerParameterf(qd[a],b,c);},gc:function(a,b,c){Z.samplerParameteri(qd[a],b,c);},hc:function(a,b,c){Z.samplerParameteri(qd[a],b,Q[c>>2]);},Ra:function(a,b,c,f){Z.scissor(a,b,c,f);},Sa:function(a,b,c,f){for(var h="",m=0;m<b;++m){var u=f?Q[f+4*m>>2]:-1,n=Q[c+4*m>>2];u=n?vb(J,n,0>u?void 0:u):"";h+=u;}Z.shaderSource(nd[a],h);},Ta:function(a,b,c){Z.stencilFunc(a,b,c);},Ua:function(a,b,c,f){Z.stencilFuncSeparate(a,b,c,f);},Va:function(a){Z.stencilMask(a);},Wa:function(a,b){Z.stencilMaskSeparate(a,
8213
+ b);},Xa:function(a,b,c){Z.stencilOp(a,b,c);},Ya:function(a,b,c,f){Z.stencilOpSeparate(a,b,c,f);},Za:function(a,b,c,f,h,m,u,n,p){if(2<=B.version)if(Z.We)Z.texImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Ud(n);Z.texImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texImage2D(a,b,c,f,h,m,u,n,null);else Z.texImage2D(a,b,c,f,h,m,u,n,p?Vd(n,u,f,h,p):null);},_a:function(a,b,c){Z.texParameterf(a,b,c);},$a:function(a,b,c){Z.texParameterf(a,b,R[c>>2]);},ab:function(a,b,c){Z.texParameteri(a,b,
8214
+ c);},bb:function(a,b,c){Z.texParameteri(a,b,Q[c>>2]);},Ec:function(a,b,c,f,h){Z.texStorage2D(a,b,c,f,h);},cb:function(a,b,c,f,h,m,u,n,p){if(2<=B.version)if(Z.We)Z.texSubImage2D(a,b,c,f,h,m,u,n,p);else if(p){var v=Ud(n);Z.texSubImage2D(a,b,c,f,h,m,u,n,v,p>>31-Math.clz32(v.BYTES_PER_ELEMENT));}else Z.texSubImage2D(a,b,c,f,h,m,u,n,null);else v=null,p&&(v=Vd(n,u,h,m,p)),Z.texSubImage2D(a,b,c,f,h,m,u,n,v);},db:function(a,b){Z.uniform1f(Wd(a),b);},eb:function(a,b,c){if(2<=B.version)b&&Z.uniform1fv(Wd(a),R,c>>
8215
+ 2,b);else {if(288>=b)for(var f=Xd[b-1],h=0;h<b;++h)f[h]=R[c+4*h>>2];else f=R.subarray(c>>2,c+4*b>>2);Z.uniform1fv(Wd(a),f);}},od:function(a,b){Z.uniform1i(Wd(a),b);},pd:function(a,b,c){if(2<=B.version)b&&Z.uniform1iv(Wd(a),Q,c>>2,b);else {if(288>=b)for(var f=Yd[b-1],h=0;h<b;++h)f[h]=Q[c+4*h>>2];else f=Q.subarray(c>>2,c+4*b>>2);Z.uniform1iv(Wd(a),f);}},qd:function(a,b,c){Z.uniform2f(Wd(a),b,c);},rd:function(a,b,c){if(2<=B.version)b&&Z.uniform2fv(Wd(a),R,c>>2,2*b);else {if(144>=b)for(var f=Xd[2*b-1],h=0;h<
8216
+ 2*b;h+=2)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2];else f=R.subarray(c>>2,c+8*b>>2);Z.uniform2fv(Wd(a),f);}},nd:function(a,b,c){Z.uniform2i(Wd(a),b,c);},md:function(a,b,c){if(2<=B.version)b&&Z.uniform2iv(Wd(a),Q,c>>2,2*b);else {if(144>=b)for(var f=Yd[2*b-1],h=0;h<2*b;h+=2)f[h]=Q[c+4*h>>2],f[h+1]=Q[c+(4*h+4)>>2];else f=Q.subarray(c>>2,c+8*b>>2);Z.uniform2iv(Wd(a),f);}},ld:function(a,b,c,f){Z.uniform3f(Wd(a),b,c,f);},kd:function(a,b,c){if(2<=B.version)b&&Z.uniform3fv(Wd(a),R,c>>2,3*b);else {if(96>=b)for(var f=
8217
+ Xd[3*b-1],h=0;h<3*b;h+=3)f[h]=R[c+4*h>>2],f[h+1]=R[c+(4*h+4)>>2],f[h+2]=R[c+(4*h+8)>>2];else f=R.subarray(c>>2,c+12*b>>2);Z.uniform3fv(Wd(a),f);}},jd:function(a,b,c,f){Z.uniform3i(Wd(a),b,c,f);},id:function(a,b,c){if(2<=B.version)b&&Z.uniform3iv(Wd(a),Q,c>>2,3*b);else {if(96>=b)for(var f=Yd[3*b-1],h=0;h<3*b;h+=3)f[h]=Q[c+4*h>>2],f[h+1]=Q[c+(4*h+4)>>2],f[h+2]=Q[c+(4*h+8)>>2];else f=Q.subarray(c>>2,c+12*b>>2);Z.uniform3iv(Wd(a),f);}},hd:function(a,b,c,f,h){Z.uniform4f(Wd(a),b,c,f,h);},gd:function(a,b,c){if(2<=
8218
+ B.version)b&&Z.uniform4fv(Wd(a),R,c>>2,4*b);else {if(72>=b){var f=Xd[4*b-1],h=R;c>>=2;for(var m=0;m<4*b;m+=4){var u=c+m;f[m]=h[u];f[m+1]=h[u+1];f[m+2]=h[u+2];f[m+3]=h[u+3];}}else f=R.subarray(c>>2,c+16*b>>2);Z.uniform4fv(Wd(a),f);}},Wc:function(a,b,c,f,h){Z.uniform4i(Wd(a),b,c,f,h);},Xc:function(a,b,c){if(2<=B.version)b&&Z.uniform4iv(Wd(a),Q,c>>2,4*b);else {if(72>=b)for(var f=Yd[4*b-1],h=0;h<4*b;h+=4)f[h]=Q[c+4*h>>2],f[h+1]=Q[c+(4*h+4)>>2],f[h+2]=Q[c+(4*h+8)>>2],f[h+3]=Q[c+(4*h+12)>>2];else f=Q.subarray(c>>
8219
+ 2,c+16*b>>2);Z.uniform4iv(Wd(a),f);}},Yc:function(a,b,c,f){if(2<=B.version)b&&Z.uniformMatrix2fv(Wd(a),!!c,R,f>>2,4*b);else {if(72>=b)for(var h=Xd[4*b-1],m=0;m<4*b;m+=4)h[m]=R[f+4*m>>2],h[m+1]=R[f+(4*m+4)>>2],h[m+2]=R[f+(4*m+8)>>2],h[m+3]=R[f+(4*m+12)>>2];else h=R.subarray(f>>2,f+16*b>>2);Z.uniformMatrix2fv(Wd(a),!!c,h);}},Zc:function(a,b,c,f){if(2<=B.version)b&&Z.uniformMatrix3fv(Wd(a),!!c,R,f>>2,9*b);else {if(32>=b)for(var h=Xd[9*b-1],m=0;m<9*b;m+=9)h[m]=R[f+4*m>>2],h[m+1]=R[f+(4*m+4)>>2],h[m+2]=R[f+
8220
+ (4*m+8)>>2],h[m+3]=R[f+(4*m+12)>>2],h[m+4]=R[f+(4*m+16)>>2],h[m+5]=R[f+(4*m+20)>>2],h[m+6]=R[f+(4*m+24)>>2],h[m+7]=R[f+(4*m+28)>>2],h[m+8]=R[f+(4*m+32)>>2];else h=R.subarray(f>>2,f+36*b>>2);Z.uniformMatrix3fv(Wd(a),!!c,h);}},_c:function(a,b,c,f){if(2<=B.version)b&&Z.uniformMatrix4fv(Wd(a),!!c,R,f>>2,16*b);else {if(18>=b){var h=Xd[16*b-1],m=R;f>>=2;for(var u=0;u<16*b;u+=16){var n=f+u;h[u]=m[n];h[u+1]=m[n+1];h[u+2]=m[n+2];h[u+3]=m[n+3];h[u+4]=m[n+4];h[u+5]=m[n+5];h[u+6]=m[n+6];h[u+7]=m[n+7];h[u+8]=m[n+
8221
+ 8];h[u+9]=m[n+9];h[u+10]=m[n+10];h[u+11]=m[n+11];h[u+12]=m[n+12];h[u+13]=m[n+13];h[u+14]=m[n+14];h[u+15]=m[n+15];}}else h=R.subarray(f>>2,f+64*b>>2);Z.uniformMatrix4fv(Wd(a),!!c,h);}},$c:function(a){a=kd[a];Z.useProgram(a);Z.bg=a;},ad:function(a,b){Z.vertexAttrib1f(a,b);},bd:function(a,b){Z.vertexAttrib2f(a,R[b>>2],R[b+4>>2]);},cd:function(a,b){Z.vertexAttrib3f(a,R[b>>2],R[b+4>>2],R[b+8>>2]);},dd:function(a,b){Z.vertexAttrib4f(a,R[b>>2],R[b+4>>2],R[b+8>>2],R[b+12>>2]);},Fc:function(a,b){Z.vertexAttribDivisor(a,
8222
+ b);},Gc:function(a,b,c,f,h){Z.vertexAttribIPointer(a,b,c,f,h);},ed:function(a,b,c,f,h,m){Z.vertexAttribPointer(a,b,c,!!f,h,m);},fd:function(a,b,c,f){Z.viewport(a,b,c,f);},kc:function(a,b,c,f){Z.waitSync(rd[a],b,(c>>>0)+4294967296*f);},qb:a=>{var b=J.length;a>>>=0;if(2147483648<a)return false;for(var c=1;4>=c;c*=2){var f=b*(1+.2/c);f=Math.min(f,a+100663296);var h=Math;f=Math.max(a,f);a:{h=h.min.call(h,2147483648,f+(65536-f%65536)%65536)-La.buffer.byteLength+65535>>>16;try{La.grow(h);Wa();var m=1;break a}catch(u){}m=
8223
+ void 0;}if(m)return true}return false},hb:function(){return B?B.handle:0},rb:(a,b)=>{var c=0;ae().forEach(function(f,h){var m=b+c;h=Ta[a+4*h>>2]=m;for(m=0;m<f.length;++m)Qa[h++>>0]=f.charCodeAt(m);Qa[h>>0]=0;c+=f.length+1;});return 0},sb:(a,b)=>{var c=ae();Ta[a>>2]=c.length;var f=0;c.forEach(function(h){f+=h.length+1;});Ta[b>>2]=f;return 0},Eb:a=>{va(a,new sb(a));},M:()=>52,jb:function(){return 52},xb:()=>52,mb:function(){return 70},Q:(a,b,c,f)=>{for(var h=0,
8224
+ m=0;m<c;m++){var u=Ta[b>>2],n=Ta[b+4>>2];b+=8;for(var p=0;p<n;p++){var v=J[u+p],E=be[a];0===v||10===v?((1===a?Ha:Ia)(vb(E,0)),E.length=0):E.push(v);}h+=n;}Ta[f>>2]=h;return 0},yd:zd,ib:Bd,xd:Cd,Kb:Dd,L:Nd,P:Rd,fb:Sd,Ib:me,j:ne,o:oe,k:pe,I:qe,Hb:re,Fb:se,W:te,V:ue,O:ve,i:we,w:xe,v:ye,s:ze,Gb:Ae,Jb:Be,Lb:Ce,ob:(a,b,c,f)=>ge(a,b,c,f)};
8225
+ (function(){function a(c){Ma=c=c.exports;La=Ma.zd;Wa();Xa=Ma.Cd;Za.unshift(Ma.Ad);eb--;w.monitorRunDependencies&&w.monitorRunDependencies(eb);if(0==eb&&(gb)){var f=gb;gb=null;f();}return c}var b={a:De};eb++;w.monitorRunDependencies&&w.monitorRunDependencies(eb);if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){Ia("Module.instantiateWasm callback failed with error: "+c),ca(c);}rb(b,function(c){a(c.instance);}).catch(ca);return {}})();
8226
+ var Pd=w._malloc=a=>(Pd=w._malloc=Ma.Bd)(a),xc=w._free=a=>(xc=w._free=Ma.Dd)(a),wc=a=>(wc=Ma.Ed)(a);w.__embind_initialize_bindings=()=>(w.__embind_initialize_bindings=Ma.Fd)();var Ee=(a,b)=>(Ee=Ma.Gd)(a,b),Fe=()=>(Fe=Ma.Hd)(),Ge=a=>(Ge=Ma.Id)(a);w.dynCall_viji=(a,b,c,f,h)=>(w.dynCall_viji=Ma.Jd)(a,b,c,f,h);w.dynCall_vijiii=(a,b,c,f,h,m,u)=>(w.dynCall_vijiii=Ma.Kd)(a,b,c,f,h,m,u);w.dynCall_viiiiij=(a,b,c,f,h,m,u,n)=>(w.dynCall_viiiiij=Ma.Ld)(a,b,c,f,h,m,u,n);
8227
+ w.dynCall_jii=(a,b,c)=>(w.dynCall_jii=Ma.Md)(a,b,c);w.dynCall_vij=(a,b,c,f)=>(w.dynCall_vij=Ma.Nd)(a,b,c,f);w.dynCall_jiiiiii=(a,b,c,f,h,m,u)=>(w.dynCall_jiiiiii=Ma.Od)(a,b,c,f,h,m,u);w.dynCall_jiiiiji=(a,b,c,f,h,m,u,n)=>(w.dynCall_jiiiiji=Ma.Pd)(a,b,c,f,h,m,u,n);w.dynCall_ji=(a,b)=>(w.dynCall_ji=Ma.Qd)(a,b);w.dynCall_iijj=(a,b,c,f,h,m)=>(w.dynCall_iijj=Ma.Rd)(a,b,c,f,h,m);w.dynCall_iiiji=(a,b,c,f,h,m)=>(w.dynCall_iiiji=Ma.Sd)(a,b,c,f,h,m);
8228
+ w.dynCall_iiji=(a,b,c,f,h)=>(w.dynCall_iiji=Ma.Td)(a,b,c,f,h);w.dynCall_iijjiii=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iijjiii=Ma.Ud)(a,b,c,f,h,m,u,n,p);w.dynCall_iij=(a,b,c,f)=>(w.dynCall_iij=Ma.Vd)(a,b,c,f);w.dynCall_vijjjii=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_vijjjii=Ma.Wd)(a,b,c,f,h,m,u,n,p,v);w.dynCall_jiji=(a,b,c,f,h)=>(w.dynCall_jiji=Ma.Xd)(a,b,c,f,h);w.dynCall_viijii=(a,b,c,f,h,m,u)=>(w.dynCall_viijii=Ma.Yd)(a,b,c,f,h,m,u);w.dynCall_iiiiij=(a,b,c,f,h,m,u)=>(w.dynCall_iiiiij=Ma.Zd)(a,b,c,f,h,m,u);
8229
+ w.dynCall_iiiiijj=(a,b,c,f,h,m,u,n,p)=>(w.dynCall_iiiiijj=Ma._d)(a,b,c,f,h,m,u,n,p);w.dynCall_iiiiiijj=(a,b,c,f,h,m,u,n,p,v)=>(w.dynCall_iiiiiijj=Ma.$d)(a,b,c,f,h,m,u,n,p,v);function pe(a,b,c,f){var h=Fe();try{return Xa.get(a)(b,c,f)}catch(m){Ge(h);if(m!==m+0)throw m;Ee(1,0);}}function Ce(a,b,c,f,h,m,u,n,p,v){var E=Fe();try{Xa.get(a)(b,c,f,h,m,u,n,p,v);}catch(G){Ge(E);if(G!==G+0)throw G;Ee(1,0);}}function ye(a,b,c,f){var h=Fe();try{Xa.get(a)(b,c,f);}catch(m){Ge(h);if(m!==m+0)throw m;Ee(1,0);}}
8230
+ function xe(a,b,c){var f=Fe();try{Xa.get(a)(b,c);}catch(h){Ge(f);if(h!==h+0)throw h;Ee(1,0);}}function ve(a){var b=Fe();try{Xa.get(a)();}catch(c){Ge(b);if(c!==c+0)throw c;Ee(1,0);}}function ne(a,b){var c=Fe();try{return Xa.get(a)(b)}catch(f){Ge(c);if(f!==f+0)throw f;Ee(1,0);}}function ze(a,b,c,f,h){var m=Fe();try{Xa.get(a)(b,c,f,h);}catch(u){Ge(m);if(u!==u+0)throw u;Ee(1,0);}}function we(a,b){var c=Fe();try{Xa.get(a)(b);}catch(f){Ge(c);if(f!==f+0)throw f;Ee(1,0);}}
8231
+ function oe(a,b,c){var f=Fe();try{return Xa.get(a)(b,c)}catch(h){Ge(f);if(h!==h+0)throw h;Ee(1,0);}}function Be(a,b,c,f,h,m,u){var n=Fe();try{Xa.get(a)(b,c,f,h,m,u);}catch(p){Ge(n);if(p!==p+0)throw p;Ee(1,0);}}function me(a){var b=Fe();try{return Xa.get(a)()}catch(c){Ge(b);if(c!==c+0)throw c;Ee(1,0);}}function re(a,b,c,f,h,m){var u=Fe();try{return Xa.get(a)(b,c,f,h,m)}catch(n){Ge(u);if(n!==n+0)throw n;Ee(1,0);}}
8232
+ function te(a,b,c,f,h,m,u,n){var p=Fe();try{return Xa.get(a)(b,c,f,h,m,u,n)}catch(v){Ge(p);if(v!==v+0)throw v;Ee(1,0);}}function Ae(a,b,c,f,h,m){var u=Fe();try{Xa.get(a)(b,c,f,h,m);}catch(n){Ge(u);if(n!==n+0)throw n;Ee(1,0);}}function qe(a,b,c,f,h){var m=Fe();try{return Xa.get(a)(b,c,f,h)}catch(u){Ge(m);if(u!==u+0)throw u;Ee(1,0);}}function ue(a,b,c,f,h,m,u,n,p,v){var E=Fe();try{return Xa.get(a)(b,c,f,h,m,u,n,p,v)}catch(G){Ge(E);if(G!==G+0)throw G;Ee(1,0);}}
8233
+ function se(a,b,c,f,h,m,u){var n=Fe();try{return Xa.get(a)(b,c,f,h,m,u)}catch(p){Ge(n);if(p!==p+0)throw p;Ee(1,0);}}var He;gb=function Ie(){He||Je();He||(gb=Ie);};
8234
+ function Je(){function a(){if(!He&&(He=true,w.calledRun=true,!Na)){tb(Za);aa(w);if(w.onRuntimeInitialized)w.onRuntimeInitialized();if(w.postRun)for("function"==typeof w.postRun&&(w.postRun=[w.postRun]);w.postRun.length;){var b=w.postRun.shift();$a.unshift(b);}tb($a);}}if(!(0<eb)){if(w.preRun)for("function"==typeof w.preRun&&(w.preRun=[w.preRun]);w.preRun.length;)ab();tb(Ya);0<eb||(w.setStatus?(w.setStatus("Running..."),setTimeout(function(){setTimeout(function(){w.setStatus("");},1);a();},1)):a());}}
8235
+ if(w.preInit)for("function"==typeof w.preInit&&(w.preInit=[w.preInit]);0<w.preInit.length;)w.preInit.pop()();Je();
7819
8236
 
7820
8237
 
7821
8238
  return moduleArg.ready
@@ -8008,7 +8425,7 @@ class SoundManager {
8008
8425
  get audioContext() {
8009
8426
  if (!this._audioContext) {
8010
8427
  if (!navigator.userActivation.hasBeenActive) {
8011
- throw new Error(
8428
+ throw new M2Error(
8012
8429
  "AudioContext cannot be created until user has interacted with the page"
8013
8430
  );
8014
8431
  }
@@ -8085,7 +8502,7 @@ class SoundManager {
8085
8502
  return fetch(m2Sound.url).then((response) => {
8086
8503
  if (!response.ok) {
8087
8504
  m2Sound.status = M2SoundStatus.Error;
8088
- throw new Error(
8505
+ throw new M2Error(
8089
8506
  `cannot fetch sound ${m2Sound.soundName} at url ${m2Sound.url}: ${response.statusText}`
8090
8507
  );
8091
8508
  }
@@ -8150,7 +8567,7 @@ class SoundManager {
8150
8567
  */
8151
8568
  async decodeSound(sound) {
8152
8569
  if (!sound.data) {
8153
- throw new Error(
8570
+ throw new M2Error(
8154
8571
  `data is undefined for sound ${sound.soundName} (url ${sound.url})`
8155
8572
  );
8156
8573
  }
@@ -8164,7 +8581,7 @@ class SoundManager {
8164
8581
  );
8165
8582
  } catch {
8166
8583
  sound.status = M2SoundStatus.Error;
8167
- throw new Error(
8584
+ throw new M2Error(
8168
8585
  `error decoding sound ${sound.soundName} (url: ${sound.url})`
8169
8586
  );
8170
8587
  }
@@ -8184,7 +8601,7 @@ class SoundManager {
8184
8601
  getSound(soundName) {
8185
8602
  const sound = this.sounds[soundName];
8186
8603
  if (!sound) {
8187
- throw new Error(`getSound(): sound ${soundName} not found`);
8604
+ throw new M2Error(`getSound(): sound ${soundName} not found`);
8188
8605
  }
8189
8606
  return sound;
8190
8607
  }
@@ -8310,7 +8727,7 @@ class EventMaterializer {
8310
8727
  if (node.type === M2NodeType.Composite) {
8311
8728
  node.handleCompositeEvent(event);
8312
8729
  } else {
8313
- throw new Error(
8730
+ throw new M2Error(
8314
8731
  `EventMaterializer: node was expected to be composite, but was of type ${node.type}`
8315
8732
  );
8316
8733
  }
@@ -8339,14 +8756,14 @@ class EventMaterializer {
8339
8756
  (n) => n.uuid === nodePropertyChangeEvent.uuid
8340
8757
  );
8341
8758
  if (!node) {
8342
- throw new Error(
8759
+ throw new M2Error(
8343
8760
  `EventMaterializer: node with uuid ${nodePropertyChangeEvent.uuid} not found`
8344
8761
  );
8345
8762
  }
8346
8763
  if (nodePropertyChangeEvent.property in node) {
8347
8764
  node[nodePropertyChangeEvent.property] = nodePropertyChangeEvent.value;
8348
8765
  } else {
8349
- throw new Error(
8766
+ throw new M2Error(
8350
8767
  `EventMaterializer: on node ${node.name}, type ${node.type}, nodePropertyChangeEvent tried to set unknown property ${nodePropertyChangeEvent.property} to value ${JSON.stringify(nodePropertyChangeEvent.value)}`
8351
8768
  );
8352
8769
  }
@@ -8356,7 +8773,7 @@ class EventMaterializer {
8356
8773
  (n) => n.uuid === nodeAddChildEvent.uuid
8357
8774
  );
8358
8775
  if (!parent) {
8359
- throw new Error(
8776
+ throw new M2Error(
8360
8777
  `EventMaterializer: parent node with uuid ${nodeAddChildEvent.uuid} not found`
8361
8778
  );
8362
8779
  }
@@ -8364,7 +8781,7 @@ class EventMaterializer {
8364
8781
  (n) => n.uuid === nodeAddChildEvent.childUuid
8365
8782
  );
8366
8783
  if (!child) {
8367
- throw new Error(
8784
+ throw new M2Error(
8368
8785
  `EventMaterializer: child node with uuid ${nodeAddChildEvent.childUuid} not found`
8369
8786
  );
8370
8787
  }
@@ -8375,7 +8792,7 @@ class EventMaterializer {
8375
8792
  (n) => n.uuid === nodeRemoveChildEvent.uuid
8376
8793
  );
8377
8794
  if (!parent) {
8378
- throw new Error(
8795
+ throw new M2Error(
8379
8796
  `EventMaterializer: parent node with uuid ${nodeRemoveChildEvent.uuid} not found`
8380
8797
  );
8381
8798
  }
@@ -8383,7 +8800,7 @@ class EventMaterializer {
8383
8800
  (n) => n.uuid === nodeRemoveChildEvent.childUuid
8384
8801
  );
8385
8802
  if (!child) {
8386
- throw new Error(
8803
+ throw new M2Error(
8387
8804
  `EventMaterializer: child node with uuid ${nodeRemoveChildEvent.childUuid} not found`
8388
8805
  );
8389
8806
  }
@@ -8443,17 +8860,17 @@ class EventMaterializer {
8443
8860
  let transition = Transition.none();
8444
8861
  if (scenePresentEvent.transitionType === TransitionType.Slide) {
8445
8862
  if (scenePresentEvent.direction === void 0) {
8446
- throw new Error(
8863
+ throw new M2Error(
8447
8864
  "EventMaterializer: ScenePresentEvent direction is undefined for slide transition"
8448
8865
  );
8449
8866
  }
8450
8867
  if (scenePresentEvent.duration === void 0) {
8451
- throw new Error(
8868
+ throw new M2Error(
8452
8869
  "EventMaterializer: ScenePresentEvent duration is undefined for slide transition"
8453
8870
  );
8454
8871
  }
8455
8872
  if (scenePresentEvent.easingType === void 0) {
8456
- throw new Error(
8873
+ throw new M2Error(
8457
8874
  "EventMaterializer: ScenePresentEvent easingType is undefined for slide transition"
8458
8875
  );
8459
8876
  }
@@ -8461,7 +8878,7 @@ class EventMaterializer {
8461
8878
  (s) => s.uuid === scenePresentEvent.uuid
8462
8879
  );
8463
8880
  if (!incomingScene) {
8464
- throw new Error(
8881
+ throw new M2Error(
8465
8882
  `EventMaterializer: Scene with uuid ${scenePresentEvent.uuid} not found`
8466
8883
  );
8467
8884
  }
@@ -8504,7 +8921,7 @@ class Game {
8504
8921
  this.sessionUuid = "";
8505
8922
  this.uuid = Uuid.generate();
8506
8923
  this.publishUuid = "";
8507
- this.canvasKitWasmVersion = "0.39.1";
8924
+ this.canvasKitWasmVersion = "0.40.0";
8508
8925
  this.beginTimestamp = NaN;
8509
8926
  this.beginIso8601Timestamp = "";
8510
8927
  this.eventListeners = new Array();
@@ -8520,7 +8937,8 @@ class Game {
8520
8937
  /** Nodes created during event replay */
8521
8938
  this.materializedNodes = new Array();
8522
8939
  this.data = {
8523
- trials: new Array()
8940
+ trials: new Array(),
8941
+ scoring: {}
8524
8942
  };
8525
8943
  /** The 0-based index of the current trial */
8526
8944
  this.trialIndex = 0;
@@ -8541,11 +8959,74 @@ class Game {
8541
8959
  });
8542
8960
  this.incomingSceneTransitions = new Array();
8543
8961
  this.replayEventsButtonEnabled = true;
8962
+ /**
8963
+ * The m2c2kit engine will automatically include these schema and their
8964
+ * values in the scoring data.
8965
+ */
8966
+ this.automaticScoringSchema = {
8967
+ data_type: {
8968
+ type: "string",
8969
+ description: "Type of data."
8970
+ },
8971
+ study_id: {
8972
+ type: ["string", "null"],
8973
+ description: "The short human-readable text ID of the study (protocol, experiment, or other aggregate) that contains the administration of this activity."
8974
+ },
8975
+ study_uuid: {
8976
+ type: ["string", "null"],
8977
+ format: "uuid",
8978
+ description: "Unique identifier of the study (protocol, experiment, or other aggregate) that contains the administration of this activity."
8979
+ },
8980
+ document_uuid: {
8981
+ type: "string",
8982
+ format: "uuid",
8983
+ description: "Unique identifier for this data document."
8984
+ },
8985
+ session_uuid: {
8986
+ type: "string",
8987
+ format: "uuid",
8988
+ description: "Unique identifier for all activities in this administration of the session. This identifier changes each time a new session starts."
8989
+ },
8990
+ activity_uuid: {
8991
+ type: "string",
8992
+ format: "uuid",
8993
+ description: "Unique identifier for all trials in this administration of the activity. This identifier changes each time the activity starts."
8994
+ },
8995
+ activity_id: {
8996
+ type: "string",
8997
+ description: "Human-readable identifier of the activity."
8998
+ },
8999
+ activity_publish_uuid: {
9000
+ type: "string",
9001
+ format: "uuid",
9002
+ description: "Persistent unique identifier of the activity. This identifier never changes. It can be used to identify the activity across different studies and sessions."
9003
+ },
9004
+ activity_version: {
9005
+ type: "string",
9006
+ description: "Version of the activity."
9007
+ },
9008
+ device_timezone: {
9009
+ type: "string",
9010
+ description: "Timezone of the device. Calculated from Intl.DateTimeFormat().resolvedOptions().timeZone."
9011
+ },
9012
+ device_timezone_offset_minutes: {
9013
+ type: "integer",
9014
+ description: "Difference in minutes between UTC and device timezone. Calculated from Date.getTimezoneOffset()."
9015
+ },
9016
+ locale: {
9017
+ type: ["string", "null"],
9018
+ description: "Locale of the trial. null if the activity does not support localization."
9019
+ }
9020
+ };
8544
9021
  /**
8545
9022
  * The m2c2kit engine will automatically include these schema and their
8546
9023
  * values in the trial data.
8547
9024
  */
8548
9025
  this.automaticTrialSchema = {
9026
+ data_type: {
9027
+ type: "string",
9028
+ description: "Type of data."
9029
+ },
8549
9030
  study_id: {
8550
9031
  type: ["string", "null"],
8551
9032
  description: "The short human-readable text ID of the study (protocol, experiment, or other aggregate) that contains the administration of this activity."
@@ -8598,7 +9079,7 @@ class Game {
8598
9079
  };
8599
9080
  this.snapshots = new Array();
8600
9081
  if (!options.id || options.id.trim() === "") {
8601
- throw new Error("id is required in GameOptions");
9082
+ throw new M2Error("id is required in GameOptions");
8602
9083
  }
8603
9084
  if (!Uuid.isValid(options.publishUuid)) {
8604
9085
  const providedPublishUuid = options.publishUuid ? `Provided publishUuid was ${options.publishUuid}. ` : "";
@@ -8633,6 +9114,9 @@ class Game {
8633
9114
  if (!this.options.trialSchema) {
8634
9115
  this.options.trialSchema = {};
8635
9116
  }
9117
+ if (!this.options.scoringSchema) {
9118
+ this.options.scoringSchema = {};
9119
+ }
8636
9120
  if (options.moduleMetadata) {
8637
9121
  this.moduleMetadata = options.moduleMetadata;
8638
9122
  } else {
@@ -8670,7 +9154,7 @@ class Game {
8670
9154
  const regex = new RegExp(`^.*${packageName}[^\\/]*`);
8671
9155
  const matches = moduleUrl.match(regex);
8672
9156
  if (!matches || matches.length === 0) {
8673
- throw new Error(
9157
+ throw new M2Error(
8674
9158
  `Could not calculate imported assessment package base URL. Package name: ${packageName}, module URL: ${moduleUrl}`
8675
9159
  );
8676
9160
  }
@@ -8730,7 +9214,7 @@ class Game {
8730
9214
  canvasKitWasmBaseUrl = game.getImportedModuleBaseUrl("@m2c2kit/core", coreModuleUrl) + "/assets";
8731
9215
  } catch {
8732
9216
  if (isImportedModule) {
8733
- throw new Error(
9217
+ throw new M2Error(
8734
9218
  `the package ${game.moduleMetadata.name} has been imported from a module URL (${moduleUrl}), but the @m2c2kit/core package module URL could not be determined.`
8735
9219
  );
8736
9220
  }
@@ -8743,7 +9227,7 @@ class Game {
8743
9227
  async configureI18n(localizationOptions) {
8744
9228
  this.i18n = new I18n(this, localizationOptions);
8745
9229
  if (!this.i18n) {
8746
- throw new Error("I18n object is undefined");
9230
+ throw new M2Error("I18n object is undefined");
8747
9231
  }
8748
9232
  await this.i18n.initialize();
8749
9233
  this.eventStore.addEvent({
@@ -8792,7 +9276,7 @@ class Game {
8792
9276
  try {
8793
9277
  this.canvasKit = await this.loadCanvasKit(manifestCanvasKitWasmUrl);
8794
9278
  } catch (err) {
8795
- throw new Error(
9279
+ throw new M2Error(
8796
9280
  `game ${this.id} could not load canvaskit wasm file from ${manifestCanvasKitWasmUrl}`
8797
9281
  );
8798
9282
  }
@@ -8836,24 +9320,24 @@ class Game {
8836
9320
  try {
8837
9321
  manifestResponse = await fetch(manifestJsonUrl);
8838
9322
  if (!manifestResponse.ok) {
8839
- throw new Error(
9323
+ throw new M2Error(
8840
9324
  `Error ${manifestResponse.status} on GET manifest.json from ${manifestJsonUrl}.`
8841
9325
  );
8842
9326
  }
8843
9327
  } catch {
8844
- throw new Error(
9328
+ throw new M2Error(
8845
9329
  `Network error on GET manifest.json from ${manifestJsonUrl}.`
8846
9330
  );
8847
9331
  }
8848
9332
  try {
8849
9333
  return await manifestResponse.json();
8850
9334
  } catch {
8851
- throw new Error(`Error parsing manifest.json from ${manifestJsonUrl}.`);
9335
+ throw new M2Error(`Error parsing manifest.json from ${manifestJsonUrl}.`);
8852
9336
  }
8853
9337
  }
8854
9338
  get fontManager() {
8855
9339
  if (!this._fontManager) {
8856
- throw new Error("fontManager is undefined");
9340
+ throw new M2Error("fontManager is undefined");
8857
9341
  }
8858
9342
  return this._fontManager;
8859
9343
  }
@@ -8862,7 +9346,7 @@ class Game {
8862
9346
  }
8863
9347
  get imageManager() {
8864
9348
  if (!this._imageManager) {
8865
- throw new Error("imageManager is undefined");
9349
+ throw new M2Error("imageManager is undefined");
8866
9350
  }
8867
9351
  return this._imageManager;
8868
9352
  }
@@ -8871,7 +9355,7 @@ class Game {
8871
9355
  }
8872
9356
  get soundManager() {
8873
9357
  if (!this._soundManager) {
8874
- throw new Error("soundManager is undefined");
9358
+ throw new M2Error("soundManager is undefined");
8875
9359
  }
8876
9360
  return this._soundManager;
8877
9361
  }
@@ -8880,7 +9364,7 @@ class Game {
8880
9364
  }
8881
9365
  get eventMaterializer() {
8882
9366
  if (!this._eventMaterializer) {
8883
- throw new Error("eventMaterializer is undefined");
9367
+ throw new M2Error("eventMaterializer is undefined");
8884
9368
  }
8885
9369
  return this._eventMaterializer;
8886
9370
  }
@@ -8905,7 +9389,7 @@ class Game {
8905
9389
  if (this.studyId && this.studyUuid) {
8906
9390
  k = this.studyId.concat(":", this.studyUuid, ":");
8907
9391
  } else if (this.studyId || this.studyUuid) {
8908
- throw new Error(
9392
+ throw new M2Error(
8909
9393
  `study_id and study_uuid must both be set or unset. Values are study_id: ${this.studyId}, study_uuid: ${this.studyUuid}`
8910
9394
  );
8911
9395
  }
@@ -9036,7 +9520,7 @@ class Game {
9036
9520
  }
9037
9521
  get dataStores() {
9038
9522
  if (!this._dataStores) {
9039
- throw new Error("dataStores is undefined");
9523
+ throw new M2Error("dataStores is undefined");
9040
9524
  }
9041
9525
  return this._dataStores;
9042
9526
  }
@@ -9069,7 +9553,7 @@ class Game {
9069
9553
  void 0
9070
9554
  );
9071
9555
  if (locale === "") {
9072
- throw new Error(
9556
+ throw new M2Error(
9073
9557
  "Empty string in locale. Leave locale undefined or null to prevent localization."
9074
9558
  );
9075
9559
  }
@@ -9085,6 +9569,9 @@ class Game {
9085
9569
  setParameters(additionalParameters) {
9086
9570
  const { parameters } = this.options;
9087
9571
  Object.keys(additionalParameters).forEach((key) => {
9572
+ if (key === "diagnostics") {
9573
+ return;
9574
+ }
9088
9575
  if (key === "eruda") {
9089
9576
  const erudaRequested = additionalParameters[key] === true;
9090
9577
  if (erudaRequested) {
@@ -9114,7 +9601,7 @@ class Game {
9114
9601
  this.options.parameters[key].type
9115
9602
  );
9116
9603
  } catch (e) {
9117
- throw new Error(
9604
+ throw new M2Error(
9118
9605
  "Error setting parameter " + key + ": " + e.message
9119
9606
  );
9120
9607
  }
@@ -9132,7 +9619,7 @@ class Game {
9132
9619
  }
9133
9620
  get canvasKit() {
9134
9621
  if (!this._canvasKit) {
9135
- throw new Error("canvaskit is undefined");
9622
+ throw new M2Error("canvaskit is undefined");
9136
9623
  }
9137
9624
  return this._canvasKit;
9138
9625
  }
@@ -9174,7 +9661,7 @@ class Game {
9174
9661
  if (typeof node === "string") {
9175
9662
  const child = this.freeNodesScene.children.filter((child2) => child2.name === node).find(Boolean);
9176
9663
  if (!child) {
9177
- throw new Error(
9664
+ throw new M2Error(
9178
9665
  `cannot remove free node named "${node}" because it is not currently part of the game's free nodes. `
9179
9666
  );
9180
9667
  }
@@ -9220,11 +9707,18 @@ class Game {
9220
9707
  /**
9221
9708
  * Adds a scene to the game.
9222
9709
  *
9223
- * @remarks A scene, and its children nodes, cannot be presented unless it has been added to the game object.
9710
+ * @remarks A scene, and its children nodes, cannot be presented unless it
9711
+ * has been added to the game object. A scene can be added to the game
9712
+ * only once.
9224
9713
  *
9225
9714
  * @param scene
9226
9715
  */
9227
9716
  addScene(scene) {
9717
+ if (this.scenes.includes(scene)) {
9718
+ console.warn(
9719
+ `Game.addScene(): scene ${scene.toString()} has already been added to the game. This will cause unpredictable behavior. This warning will become an error in a future release.`
9720
+ );
9721
+ }
9228
9722
  scene.game = this;
9229
9723
  scene.needsInitialization = true;
9230
9724
  this.scenes.push(scene);
@@ -9269,7 +9763,7 @@ class Game {
9269
9763
  if (this.scenes.includes(scene)) {
9270
9764
  this.scenes = this.scenes.filter((s) => s !== scene);
9271
9765
  } else {
9272
- throw new Error(
9766
+ throw new M2Error(
9273
9767
  `cannot remove scene ${scene} from game because the scene is not currently added to the game`
9274
9768
  );
9275
9769
  }
@@ -9277,7 +9771,7 @@ class Game {
9277
9771
  if (this.scenes.map((s) => s.name).includes(scene)) {
9278
9772
  this.scenes = this.scenes.filter((s) => s.name !== scene);
9279
9773
  } else {
9280
- throw new Error(
9774
+ throw new M2Error(
9281
9775
  `cannot remove scene named "${scene}" from game because the scene is not currently added to the game`
9282
9776
  );
9283
9777
  }
@@ -9297,11 +9791,11 @@ class Game {
9297
9791
  incomingScene = this.scenes.filter((scene_) => scene_.uuid === scene).find(Boolean);
9298
9792
  }
9299
9793
  if (incomingScene === void 0) {
9300
- throw new Error(`scene ${scene} not found`);
9794
+ throw new M2Error(`scene ${scene} not found`);
9301
9795
  }
9302
9796
  } else {
9303
9797
  if (!this.scenes.some((scene_) => scene_ === scene)) {
9304
- throw new Error(
9798
+ throw new M2Error(
9305
9799
  `scene ${scene} exists, but it has not been added to the game object`
9306
9800
  );
9307
9801
  }
@@ -9347,7 +9841,7 @@ class Game {
9347
9841
  if (this.options.parameters !== void 0 && Object.keys(this.options.parameters).includes(parameterName)) {
9348
9842
  return this.options.parameters[parameterName].default;
9349
9843
  } else {
9350
- throw new Error(`game parameter ${parameterName} not found`);
9844
+ throw new M2Error(`game parameter ${parameterName} not found`);
9351
9845
  }
9352
9846
  }
9353
9847
  /**
@@ -9424,13 +9918,13 @@ class Game {
9424
9918
  startingScene = this.scenes.find(Boolean);
9425
9919
  }
9426
9920
  if (startingScene === void 0) {
9427
- throw new Error(
9921
+ throw new M2Error(
9428
9922
  "cannot start game. entry scene has not been added to the game object."
9429
9923
  );
9430
9924
  }
9431
9925
  this.presentScene(startingScene);
9432
9926
  if (this.surface === void 0) {
9433
- throw new Error("CanvasKit surface is undefined");
9927
+ throw new M2Error("CanvasKit surface is undefined");
9434
9928
  }
9435
9929
  if (this.options.timeStepping) {
9436
9930
  this.addTimeSteppingControlsToDom();
@@ -9668,7 +10162,7 @@ class Game {
9668
10162
  );
9669
10163
  }
9670
10164
  if (!this.surface) {
9671
- throw new Error("surface is undefined");
10165
+ throw new M2Error("surface is undefined");
9672
10166
  }
9673
10167
  const surfaceWidth = this.surface.width();
9674
10168
  const surfaceHeight = this.surface.height();
@@ -9768,7 +10262,7 @@ class Game {
9768
10262
  if (images[imageName].status === M2ImageStatus.Ready) {
9769
10263
  const image = images[imageName].canvaskitImage;
9770
10264
  if (!image) {
9771
- throw new Error(`image ${imageName} is undefined`);
10265
+ throw new M2Error(`image ${imageName} is undefined`);
9772
10266
  }
9773
10267
  canvas.drawImage(image, 0, 0);
9774
10268
  }
@@ -9778,7 +10272,7 @@ class Game {
9778
10272
  const whitePaint = new this.canvasKit.Paint();
9779
10273
  whitePaint.setColor(this.canvasKit.Color(255, 255, 255, 1));
9780
10274
  if (!this.surface) {
9781
- throw new Error("surface is undefined");
10275
+ throw new M2Error("surface is undefined");
9782
10276
  }
9783
10277
  canvas.drawRect(
9784
10278
  [0, 0, this.surface.width(), this.surface.height()],
@@ -9806,13 +10300,19 @@ class Game {
9806
10300
  initData() {
9807
10301
  this.trialIndex = 0;
9808
10302
  this.data = {
9809
- trials: new Array()
10303
+ trials: new Array(),
10304
+ scoring: {}
9810
10305
  };
9811
10306
  const trialSchema = this.options.trialSchema ?? {};
9812
- const variables = Object.entries(trialSchema);
10307
+ const scoringSchema = this.options.scoringSchema ?? {};
10308
+ this.validateSchema(trialSchema);
10309
+ this.validateSchema(scoringSchema);
10310
+ }
10311
+ validateSchema(schema) {
10312
+ const variables = Object.entries(schema);
9813
10313
  for (const [variableName, propertySchema] of variables) {
9814
10314
  if (propertySchema.type !== void 0 && !this.propertySchemaDataTypeIsValid(propertySchema.type)) {
9815
- throw new Error(
10315
+ throw new M2Error(
9816
10316
  `invalid schema. variable ${variableName} is type ${propertySchema.type}. type must be number, string, boolean, object, or array`
9817
10317
  );
9818
10318
  }
@@ -9839,7 +10339,7 @@ class Game {
9839
10339
  }
9840
10340
  });
9841
10341
  } else {
9842
- throw new Error(`Invalid data type: ${propertySchemaType}`);
10342
+ throw new M2Error(`Invalid data type: ${propertySchemaType}`);
9843
10343
  }
9844
10344
  return dataTypeIsValid;
9845
10345
  }
@@ -9881,17 +10381,17 @@ class Game {
9881
10381
  /**
9882
10382
  * Adds data to the game's TrialData object.
9883
10383
  *
9884
- * @remarks The variableName must be previously defined in the trialSchema
9885
- * object passed in during game initialization through
9886
- * {@link GameInitOptions.trialSchema}. The type of the value must match
9887
- * what was defined in the trialSchema, otherwise an error is thrown.
10384
+ * @remarks `variableName` must be previously defined in the
10385
+ * {@link TrialSchema} object in {@link GameOptions}. The type of the value
10386
+ * must match what was defined in the trial schema, otherwise an error is
10387
+ * thrown.
9888
10388
  *
9889
10389
  * @param variableName - variable to be set
9890
10390
  * @param value - value of the variable to set
9891
10391
  */
9892
10392
  addTrialData(variableName, value) {
9893
10393
  if (!this.options.trialSchema) {
9894
- throw new Error(
10394
+ throw new M2Error(
9895
10395
  "no trial schema were provided in GameOptions. cannot add trial data"
9896
10396
  );
9897
10397
  }
@@ -9902,6 +10402,7 @@ class Game {
9902
10402
  emptyTrial[variableName2] = null;
9903
10403
  }
9904
10404
  this.data.trials.push({
10405
+ data_type: "trial",
9905
10406
  document_uuid: Uuid.generate(),
9906
10407
  study_id: this.studyId ?? null,
9907
10408
  study_uuid: this.studyUuid ?? null,
@@ -9918,7 +10419,7 @@ class Game {
9918
10419
  });
9919
10420
  }
9920
10421
  if (!(variableName in this.options.trialSchema)) {
9921
- throw new Error(`trial variable ${variableName} not defined in schema`);
10422
+ throw new M2Error(`trial variable ${variableName} not defined in schema`);
9922
10423
  }
9923
10424
  let expectedDataTypes;
9924
10425
  if (Array.isArray(this.options.trialSchema[variableName].type)) {
@@ -9938,12 +10439,120 @@ class Game {
9938
10439
  providedDataType = "null";
9939
10440
  }
9940
10441
  if (!expectedDataTypes.includes(providedDataType) && !(providedDataType === "number" && Number.isInteger(value) && expectedDataTypes.includes("integer"))) {
9941
- throw new Error(
10442
+ throw new M2Error(
9942
10443
  `type for variable ${variableName} (value: ${value}) is "${providedDataType}". Based on schema for this variable, expected type was "${expectedDataTypes}"`
9943
10444
  );
9944
10445
  }
9945
10446
  this.data.trials[this.trialIndex][variableName] = value;
9946
10447
  }
10448
+ /**
10449
+ * Adds data to the game's scoring data.
10450
+ *
10451
+ * @remarks The variable name (or object property names) must be previously
10452
+ * defined in the {@link ScoringSchema} object in {@link GameOptions}.
10453
+ * The type of the value must match what was defined in the scoring schema,
10454
+ * otherwise an error is thrown.
10455
+ *
10456
+ * @param variableNameOrObject - Either a variable name (string) or an object
10457
+ * containing multiple key-value pairs to add all at once.
10458
+ * @param value - Value of the variable to set (only used when
10459
+ * variableNameOrObject is a variable name string).
10460
+ */
10461
+ addScoringData(variableNameOrObject, value) {
10462
+ if (!this.options.scoringSchema) {
10463
+ throw new M2Error(
10464
+ "no scoring schema were provided in GameOptions. cannot add scoring data"
10465
+ );
10466
+ }
10467
+ if (Object.keys(this.data.scoring).length === 0) {
10468
+ const emptyScoring = {
10469
+ data_type: "scoring",
10470
+ document_uuid: Uuid.generate(),
10471
+ study_id: this.studyId ?? null,
10472
+ study_uuid: this.studyUuid ?? null,
10473
+ session_uuid: this.sessionUuid,
10474
+ activity_uuid: this.uuid,
10475
+ activity_id: this.options.id,
10476
+ activity_publish_uuid: this.options.publishUuid,
10477
+ activity_version: this.options.version,
10478
+ device_timezone: Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone ?? "",
10479
+ device_timezone_offset_minutes: (/* @__PURE__ */ new Date()).getTimezoneOffset(),
10480
+ locale: this.i18n?.locale ?? null,
10481
+ device_metadata: this.getDeviceMetadata()
10482
+ };
10483
+ const variables = Object.entries(this.options.scoringSchema);
10484
+ for (const [variableName2] of variables) {
10485
+ emptyScoring[variableName2] = null;
10486
+ }
10487
+ this.data.scoring = emptyScoring;
10488
+ }
10489
+ if (typeof variableNameOrObject === "object") {
10490
+ let scoringObject;
10491
+ if (Array.isArray(variableNameOrObject)) {
10492
+ if (variableNameOrObject.length !== 1) {
10493
+ console.warn(
10494
+ `Array of objects passed to addScoringData() is length ${variableNameOrObject.length}. This is likely an error in the assessment's code for calculateScores().`
10495
+ );
10496
+ }
10497
+ scoringObject = variableNameOrObject[0];
10498
+ } else {
10499
+ scoringObject = variableNameOrObject;
10500
+ }
10501
+ for (const [key, val] of Object.entries(scoringObject)) {
10502
+ this.validateAndSetScoringVariable(key, val);
10503
+ }
10504
+ return;
10505
+ }
10506
+ const variableName = variableNameOrObject;
10507
+ if (value === void 0) {
10508
+ throw new M2Error(
10509
+ "Value must be provided when adding a single scoring variable"
10510
+ );
10511
+ }
10512
+ this.validateAndSetScoringVariable(variableName, value);
10513
+ }
10514
+ /**
10515
+ * Helper method to validate and set a single scoring variable
10516
+ *
10517
+ * @param variableName - Name of the variable to set
10518
+ * @param value - Value to set
10519
+ * @private
10520
+ */
10521
+ validateAndSetScoringVariable(variableName, value) {
10522
+ if (!this.options.scoringSchema) {
10523
+ throw new M2Error(
10524
+ "no scoring schema were provided in GameOptions. cannot add scoring data"
10525
+ );
10526
+ }
10527
+ if (!(variableName in this.options.scoringSchema)) {
10528
+ throw new M2Error(
10529
+ `scoring variable ${variableName} not defined in schema`
10530
+ );
10531
+ }
10532
+ let expectedDataTypes;
10533
+ if (Array.isArray(this.options.scoringSchema[variableName].type)) {
10534
+ expectedDataTypes = this.options.scoringSchema[variableName].type;
10535
+ } else {
10536
+ expectedDataTypes = [
10537
+ this.options.scoringSchema[variableName].type
10538
+ ];
10539
+ }
10540
+ let providedDataType = typeof value;
10541
+ if (providedDataType === "object") {
10542
+ if (Object.prototype.toString.call(value) === "[object Array]") {
10543
+ providedDataType = "array";
10544
+ }
10545
+ }
10546
+ if (value === void 0 || value === null) {
10547
+ providedDataType = "null";
10548
+ }
10549
+ if (!expectedDataTypes.includes(providedDataType) && !(providedDataType === "number" && Number.isInteger(value) && expectedDataTypes.includes("integer"))) {
10550
+ throw new M2Error(
10551
+ `type for variable ${variableName} (value: ${value}) is "${providedDataType}". Based on schema for this variable, expected type was "${expectedDataTypes}"`
10552
+ );
10553
+ }
10554
+ this.data.scoring[variableName] = value;
10555
+ }
9947
10556
  /**
9948
10557
  * Adds custom trial schema to the game's trialSchema object.
9949
10558
  *
@@ -9958,7 +10567,7 @@ class Game {
9958
10567
  const keys = Object.keys(schema);
9959
10568
  keys.forEach((key) => {
9960
10569
  if (!this.options.trialSchema) {
9961
- throw new Error("trial schema is undefined");
10570
+ throw new M2Error("trial schema is undefined");
9962
10571
  }
9963
10572
  this.options.trialSchema[key] = schema[key];
9964
10573
  });
@@ -9990,10 +10599,10 @@ class Game {
9990
10599
  */
9991
10600
  addStaticTrialData(variableName, value) {
9992
10601
  if (!this.options.trialSchema) {
9993
- throw new Error("trial schema is undefined");
10602
+ throw new M2Error("trial schema is undefined");
9994
10603
  }
9995
10604
  if (this.options.trialSchema[variableName] === void 0) {
9996
- throw new Error(`trial variable ${variableName} not defined in schema`);
10605
+ throw new M2Error(`trial variable ${variableName} not defined in schema`);
9997
10606
  }
9998
10607
  this.staticTrialSchema[variableName] = value;
9999
10608
  }
@@ -10042,6 +10651,36 @@ class Game {
10042
10651
  };
10043
10652
  this.raiseActivityEventOnListeners(resultsEvent);
10044
10653
  }
10654
+ /**
10655
+ * Marks scoring as complete.
10656
+ *
10657
+ * @remarks This method must be called after the game has finished adding
10658
+ * scores using addScoringData(). Calling will trigger the onActivityResults
10659
+ * callback function, if one was provided in SessionOptions. This is how the
10660
+ * game communicates scoring data to the parent session, which can then save
10661
+ * or process the data. It is the responsibility of the the game programmer
10662
+ * to call this at the appropriate time. It is not triggered automatically.
10663
+ */
10664
+ scoringComplete() {
10665
+ const resultsEvent = {
10666
+ type: M2EventType.ActivityData,
10667
+ ...M2c2KitHelpers.createFrameUpdateTimestamps(),
10668
+ target: this,
10669
+ newData: this.data.scoring,
10670
+ newDataSchema: this.makeScoringDataSchema(),
10671
+ data: this.data.scoring,
10672
+ dataSchema: this.makeScoringDataSchema(),
10673
+ dataType: "Scoring",
10674
+ activityConfiguration: this.makeGameActivityConfiguration(
10675
+ this.options.parameters ?? {}
10676
+ ),
10677
+ activityConfigurationSchema: this.makeGameActivityConfigurationSchema(
10678
+ this.options.parameters ?? {}
10679
+ ),
10680
+ activityMetrics: this.gameMetrics
10681
+ };
10682
+ this.raiseActivityEventOnListeners(resultsEvent);
10683
+ }
10045
10684
  makeNewGameDataSchema() {
10046
10685
  const newDataSchema = {
10047
10686
  description: `A single trial and metadata from the assessment ${this.name}.`,
@@ -10144,6 +10783,20 @@ class Game {
10144
10783
  properties: result
10145
10784
  };
10146
10785
  }
10786
+ makeScoringDataSchema() {
10787
+ const scoringDataSchema = {
10788
+ description: `Scoring data and metadata from the assessment ${this.name}.`,
10789
+ $comment: `Activity identifier: ${this.options.id}, version: ${this.options.version}.`,
10790
+ $schema: "https://json-schema.org/draft/2019-09/schema",
10791
+ type: "object",
10792
+ properties: {
10793
+ ...this.automaticScoringSchema,
10794
+ ...this.options.scoringSchema,
10795
+ device_metadata: deviceMetadataSchema
10796
+ }
10797
+ };
10798
+ return scoringDataSchema;
10799
+ }
10147
10800
  /**
10148
10801
  * Should be called when current game has ended successfully.
10149
10802
  *
@@ -10217,7 +10870,7 @@ class Game {
10217
10870
  (canvas) => !canvas.id.startsWith("m2c2kit-scratch-canvas")
10218
10871
  );
10219
10872
  if (canvases.length === 0) {
10220
- throw new Error("no html canvas tag was found in the html");
10873
+ throw new M2Error("no html canvas tag was found in the html");
10221
10874
  }
10222
10875
  const m2c2kitCanvas = canvases.filter(
10223
10876
  (c) => c.id === "m2c2kit-canvas"
@@ -10236,7 +10889,7 @@ class Game {
10236
10889
  } else {
10237
10890
  htmlCanvas = document.getElementById(canvasId);
10238
10891
  if (htmlCanvas === void 0) {
10239
- throw new Error(
10892
+ throw new M2Error(
10240
10893
  `could not find canvas HTML element with id "${canvasId}"`
10241
10894
  );
10242
10895
  }
@@ -10262,7 +10915,7 @@ class Game {
10262
10915
  }
10263
10916
  setupCanvasKitSurface() {
10264
10917
  if (this.htmlCanvas === void 0) {
10265
- throw new Error("main html canvas is undefined");
10918
+ throw new M2Error("main html canvas is undefined");
10266
10919
  }
10267
10920
  window.logWebGl = this.options.logWebGl;
10268
10921
  this.interceptWebGlCalls();
@@ -10274,7 +10927,7 @@ class Game {
10274
10927
  }
10275
10928
  const surface = this.canvasKit.MakeWebGLCanvasSurface(this.htmlCanvas);
10276
10929
  if (surface === null) {
10277
- throw new Error(
10930
+ throw new M2Error(
10278
10931
  `could not make CanvasKit surface from canvas HTML element`
10279
10932
  );
10280
10933
  }
@@ -10332,7 +10985,7 @@ class Game {
10332
10985
  }
10333
10986
  setupCanvasDomEventHandlers() {
10334
10987
  if (this.htmlCanvas === void 0) {
10335
- throw new Error("main html canvas is undefined");
10988
+ throw new M2Error("main html canvas is undefined");
10336
10989
  }
10337
10990
  this.htmlCanvas.addEventListener(
10338
10991
  "pointerdown",
@@ -10361,7 +11014,7 @@ class Game {
10361
11014
  }
10362
11015
  loop(canvas) {
10363
11016
  if (!this.surface) {
10364
- throw new Error("surface is undefined");
11017
+ throw new M2Error("surface is undefined");
10365
11018
  }
10366
11019
  if (this.warmupFunctionQueue.length > 0) {
10367
11020
  const warmup = this.warmupFunctionQueue.shift();
@@ -10390,7 +11043,9 @@ class Game {
10390
11043
  this.animationFramesRequested++;
10391
11044
  if (!this.limitFps || this.animationFramesRequested % Math.round(60 / Constants.LIMITED_FPS_RATE) === 0) {
10392
11045
  if (this.currentScene === void 0 && this.incomingSceneTransitions.length === 0 && this.eventStore.mode !== EventStoreMode.Replay) {
10393
- throw new Error("Can not run game without a current or incoming scene");
11046
+ throw new M2Error(
11047
+ "Can not run game without a current or incoming scene"
11048
+ );
10394
11049
  }
10395
11050
  this.updateGameTime();
10396
11051
  if (this.eventStore.mode === EventStoreMode.Replay) {
@@ -10436,7 +11091,7 @@ class Game {
10436
11091
  if (this.snapshots.length > 0 || incomingSceneTransitions[0].transition.type === TransitionType.None) {
10437
11092
  const incomingSceneTransition = incomingSceneTransitions.shift();
10438
11093
  if (incomingSceneTransition === void 0) {
10439
- throw new Error("no incoming scene transition");
11094
+ throw new M2Error("no incoming scene transition");
10440
11095
  }
10441
11096
  const incomingScene = incomingSceneTransition.scene;
10442
11097
  const transition = incomingSceneTransition.transition;
@@ -10452,7 +11107,7 @@ class Game {
10452
11107
  }
10453
11108
  this.currentSceneSnapshot = this.snapshots.shift();
10454
11109
  if (!this.currentSceneSnapshot) {
10455
- throw new Error("No snapshot available for outgoing scene");
11110
+ throw new M2Error("No snapshot available for outgoing scene");
10456
11111
  }
10457
11112
  const outgoingScene = this.createOutgoingScene(this.currentSceneSnapshot);
10458
11113
  outgoingScene._active = true;
@@ -10508,12 +11163,12 @@ class Game {
10508
11163
  */
10509
11164
  async registerPlugin(plugin) {
10510
11165
  if (plugin.type !== ActivityType.Game) {
10511
- throw new Error(
11166
+ throw new M2Error(
10512
11167
  `registerPlugin(): plugin ${plugin.id} is not a game plugin. It is a ${plugin.type} plugin.`
10513
11168
  );
10514
11169
  }
10515
11170
  if (this.plugins.includes(plugin) || this.plugins.map((p) => p.id).includes(plugin.id)) {
10516
- throw new Error(
11171
+ throw new M2Error(
10517
11172
  `registerPlugin(): plugin ${plugin.id} already registered.`
10518
11173
  );
10519
11174
  }
@@ -10593,13 +11248,13 @@ class Game {
10593
11248
  }
10594
11249
  takeCurrentSceneSnapshot() {
10595
11250
  if (this.surface === void 0) {
10596
- throw new Error("CanvasKit surface is undefined");
11251
+ throw new M2Error("CanvasKit surface is undefined");
10597
11252
  }
10598
11253
  return this.surface.makeImageSnapshot();
10599
11254
  }
10600
11255
  handlePendingScreenshot(pendingScreenshot) {
10601
11256
  if (!this.surface) {
10602
- throw new Error("no surface");
11257
+ throw new M2Error("no surface");
10603
11258
  }
10604
11259
  let image;
10605
11260
  if (pendingScreenshot.rect.length == 4) {
@@ -10632,7 +11287,7 @@ class Game {
10632
11287
  */
10633
11288
  takeScreenshot(sx, sy, sw, sh) {
10634
11289
  if (!this.surface) {
10635
- throw new Error("no canvaskit surface. unable to take screenshot.");
11290
+ throw new M2Error("no canvaskit surface. unable to take screenshot.");
10636
11291
  }
10637
11292
  const missingParametersCount = [sx, sy, sw, sh].map((x) => x ? 0 : 1).reduce((a, b) => a + b);
10638
11293
  return new Promise((resolve, reject) => {
@@ -10836,12 +11491,12 @@ class Game {
10836
11491
  );
10837
11492
  break;
10838
11493
  default:
10839
- throw new Error("unknown transition direction");
11494
+ throw new M2Error("unknown transition direction");
10840
11495
  }
10841
11496
  break;
10842
11497
  }
10843
11498
  default:
10844
- throw new Error("unknown transition type");
11499
+ throw new M2Error("unknown transition type");
10845
11500
  }
10846
11501
  }
10847
11502
  drawFps(canvas) {
@@ -10849,7 +11504,7 @@ class Game {
10849
11504
  const drawScale = m2c2Globals.canvasScale;
10850
11505
  canvas.scale(1 / drawScale, 1 / drawScale);
10851
11506
  if (!this.fpsTextFont || !this.fpsTextPaint) {
10852
- throw new Error("fps font or paint is undefined");
11507
+ throw new M2Error("fps font or paint is undefined");
10853
11508
  }
10854
11509
  canvas.drawText(
10855
11510
  "FPS: " + this.fpsRate.toFixed(2),
@@ -10879,12 +11534,12 @@ class Game {
10879
11534
  }
10880
11535
  const node = nodes.filter((node2) => node2.name === nodeName).find(Boolean);
10881
11536
  if (node === void 0) {
10882
- throw new Error(
11537
+ throw new M2Error(
10883
11538
  `could not create event listener. node with name ${nodeName} could not be found in the game node tree`
10884
11539
  );
10885
11540
  }
10886
11541
  if (!Object.values(M2EventType).includes(type)) {
10887
- throw new Error(
11542
+ throw new M2Error(
10888
11543
  `game ${this.id}: could not create event listener. event type ${type} is not known`
10889
11544
  );
10890
11545
  }
@@ -10923,7 +11578,7 @@ class Game {
10923
11578
  return;
10924
11579
  }
10925
11580
  if (!this.htmlCanvas) {
10926
- throw new Error("main html canvas is undefined");
11581
+ throw new M2Error("main html canvas is undefined");
10927
11582
  }
10928
11583
  const domPointerDownEvent = {
10929
11584
  type: "DomPointerDown",
@@ -11608,7 +12263,7 @@ const _LegacyTimer = class _LegacyTimer {
11608
12263
  this._timers.push(timer);
11609
12264
  } else {
11610
12265
  if (timer.stopped == false) {
11611
- throw new Error(
12266
+ throw new M2Error(
11612
12267
  `can't start timer. timer with name ${name} is already started`
11613
12268
  );
11614
12269
  }
@@ -11630,12 +12285,12 @@ const _LegacyTimer = class _LegacyTimer {
11630
12285
  static stop(name) {
11631
12286
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11632
12287
  if (timer === void 0) {
11633
- throw new Error(
12288
+ throw new M2Error(
11634
12289
  `can't stop timer. timer with name ${name} does not exist`
11635
12290
  );
11636
12291
  }
11637
12292
  if (timer.stopped === true) {
11638
- throw new Error(
12293
+ throw new M2Error(
11639
12294
  `can't stop timer. timer with name ${name} is already stopped`
11640
12295
  );
11641
12296
  }
@@ -11658,7 +12313,7 @@ const _LegacyTimer = class _LegacyTimer {
11658
12313
  static restart(name) {
11659
12314
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11660
12315
  if (timer === void 0) {
11661
- throw new Error(
12316
+ throw new M2Error(
11662
12317
  `can't restart timer. timer with name ${name} does not exist`
11663
12318
  );
11664
12319
  }
@@ -11681,7 +12336,7 @@ const _LegacyTimer = class _LegacyTimer {
11681
12336
  static elapsed(name) {
11682
12337
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11683
12338
  if (timer === void 0) {
11684
- throw new Error(
12339
+ throw new M2Error(
11685
12340
  `can't get elapsed time. timer with name ${name} does not exist`
11686
12341
  );
11687
12342
  }
@@ -11705,7 +12360,7 @@ const _LegacyTimer = class _LegacyTimer {
11705
12360
  static remove(name) {
11706
12361
  const timer = this._timers.filter((t) => t.name === name).find(Boolean);
11707
12362
  if (timer === void 0) {
11708
- throw new Error(
12363
+ throw new M2Error(
11709
12364
  `can't remove timer. timer with name ${name} does not exist`
11710
12365
  );
11711
12366
  }
@@ -11765,7 +12420,7 @@ class RandomDraws {
11765
12420
  */
11766
12421
  static FromRangeWithoutReplacement(n, minimumInclusive, maximumInclusive) {
11767
12422
  if (n > maximumInclusive - minimumInclusive + 1) {
11768
- throw new Error(
12423
+ throw new M2Error(
11769
12424
  `number of requested draws (n = ${n}) is greater than number of integers in range [ ${minimumInclusive}, ${maximumInclusive}]`
11770
12425
  );
11771
12426
  }
@@ -11900,7 +12555,7 @@ class SoundPlayer extends M2Node {
11900
12555
  */
11901
12556
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
11902
12557
  duplicate(newName) {
11903
- throw new Error("Method not implemented.");
12558
+ throw new M2Error("Method not implemented.");
11904
12559
  }
11905
12560
  }
11906
12561
 
@@ -11958,7 +12613,7 @@ class SoundRecorder extends M2Node {
11958
12613
  */
11959
12614
  async start() {
11960
12615
  if (this.isRecording) {
11961
- throw new Error(
12616
+ throw new M2Error(
11962
12617
  "cannot start SoundRecorder because it is already started."
11963
12618
  );
11964
12619
  }
@@ -11966,7 +12621,7 @@ class SoundRecorder extends M2Node {
11966
12621
  this.endIso8601Timestamp = void 0;
11967
12622
  const supportedMimeTypes = this.getMediaRecorderSupportedAudioMimeTypes();
11968
12623
  if (supportedMimeTypes.length === 0) {
11969
- throw new Error(
12624
+ throw new M2Error(
11970
12625
  "SoundRecorder found no supported MIME types for MediaRecorder."
11971
12626
  );
11972
12627
  }
@@ -11980,10 +12635,10 @@ class SoundRecorder extends M2Node {
11980
12635
  audio: this.audioTrackConstraints ? this.audioTrackConstraints : true
11981
12636
  });
11982
12637
  } catch (error) {
11983
- throw new Error(`Error getting user media: ${error}.`);
12638
+ throw new M2Error(`Error getting user media: ${error}.`);
11984
12639
  }
11985
12640
  if (!stream) {
11986
- throw new Error("no stream.");
12641
+ throw new M2Error("no stream.");
11987
12642
  }
11988
12643
  const audioTracks = stream.getAudioTracks();
11989
12644
  this.mediaTrackSettings = audioTracks?.map((track) => track.getSettings());
@@ -11992,7 +12647,7 @@ class SoundRecorder extends M2Node {
11992
12647
  this.audioChunks.push(event.data);
11993
12648
  };
11994
12649
  this.mediaRecorder.onerror = (event) => {
11995
- throw new Error(
12650
+ throw new M2Error(
11996
12651
  `MediaRecorder error: ${event?.error?.message} ${event?.message}`
11997
12652
  );
11998
12653
  };
@@ -12015,15 +12670,17 @@ class SoundRecorder extends M2Node {
12015
12670
  */
12016
12671
  async stop() {
12017
12672
  if (!this.isRecording) {
12018
- throw new Error("cannot stop SoundRecorder because it has not started.");
12673
+ throw new M2Error(
12674
+ "cannot stop SoundRecorder because it has not started."
12675
+ );
12019
12676
  }
12020
12677
  return new Promise((resolve) => {
12021
12678
  if (!this.mediaRecorder) {
12022
- throw new Error("no media recorder");
12679
+ throw new M2Error("no media recorder");
12023
12680
  }
12024
12681
  this.mediaRecorder.onstop = async () => {
12025
12682
  if (!this.mimeType) {
12026
- throw new Error("no mimeType");
12683
+ throw new M2Error("no mimeType");
12027
12684
  }
12028
12685
  this._isRecording = false;
12029
12686
  this._isPaused = false;
@@ -12050,10 +12707,12 @@ class SoundRecorder extends M2Node {
12050
12707
  }
12051
12708
  pause() {
12052
12709
  if (!this.isRecording) {
12053
- throw new Error("cannot pause SoundRecorder because it is not started.");
12710
+ throw new M2Error(
12711
+ "cannot pause SoundRecorder because it is not started."
12712
+ );
12054
12713
  }
12055
12714
  if (this.isPaused) {
12056
- throw new Error(
12715
+ throw new M2Error(
12057
12716
  "cannot pause SoundRecorder because it is already paused."
12058
12717
  );
12059
12718
  }
@@ -12063,10 +12722,14 @@ class SoundRecorder extends M2Node {
12063
12722
  }
12064
12723
  resume() {
12065
12724
  if (!this.isRecording) {
12066
- throw new Error("cannot resume SoundRecorder because it is not started.");
12725
+ throw new M2Error(
12726
+ "cannot resume SoundRecorder because it is not started."
12727
+ );
12067
12728
  }
12068
12729
  if (!this.isPaused) {
12069
- throw new Error("cannot resume SoundRecorder because it is not paused.");
12730
+ throw new M2Error(
12731
+ "cannot resume SoundRecorder because it is not paused."
12732
+ );
12070
12733
  }
12071
12734
  this.mediaRecorder?.resume();
12072
12735
  this._isPaused = false;
@@ -12225,7 +12888,7 @@ class SoundRecorder extends M2Node {
12225
12888
  reader.onloadend = () => {
12226
12889
  const base64WithoutPrefix = reader.result?.toString().split(",").pop();
12227
12890
  if (base64WithoutPrefix === void 0) {
12228
- throw new Error("base64WithoutPrefix is undefined.");
12891
+ throw new M2Error("base64WithoutPrefix is undefined.");
12229
12892
  }
12230
12893
  resolve(base64WithoutPrefix);
12231
12894
  };
@@ -12259,7 +12922,7 @@ class SoundRecorder extends M2Node {
12259
12922
  * provided, name will be the new uuid
12260
12923
  */
12261
12924
  duplicate(newName) {
12262
- throw new Error(`Method not implemented. ${newName}`);
12925
+ throw new M2Error(`Method not implemented. ${newName}`);
12263
12926
  }
12264
12927
  }
12265
12928
 
@@ -12271,7 +12934,7 @@ class Story {
12271
12934
  }
12272
12935
  }
12273
12936
 
12274
- console.log("\u26AA @m2c2kit/core version 0.3.28 (622f7241)");
12937
+ console.log("\u26AA @m2c2kit/core version 0.3.30 (9f27c146)");
12275
12938
 
12276
- export { Action, ActivityType, CanvasKitHelpers, ColorfulMutablePath, Composite, Constants, ConstraintType, CustomAction, Dimensions, Easings, Equal, Equals, EventStore, EventStoreMode, FadeAlphaAction, FontManager, Game, GroupAction, I18n, ImageManager, Label, LabelHorizontalAlignmentMode, LayoutConstraint, LegacyTimer, M2EventType, M2ImageStatus, M2Node, M2NodeFactory, M2NodeType, M2SoundStatus, M2c2KitHelpers, MoveAction, MutablePath, NoneTransition, PlayAction, RandomDraws, RepeatAction, RepeatForeverAction, RotateAction, ScaleAction, Scene, SceneTransition, SequenceAction, Shape, ShapeType, SlideTransition, SoundManager, SoundPlayer, SoundRecorder, Sprite, Story, TextLine, Timer, Transition, TransitionDirection, TransitionType, Uuid, WaitAction, WebColors, WebGlInfo, handleInterfaceOptions };
12939
+ export { Action, ActivityType, CanvasKitHelpers, ColorfulMutablePath, Composite, Constants, ConstraintType, CustomAction, Dimensions, Easings, Equal, Equals, EventStore, EventStoreMode, FadeAlphaAction, FontManager, Game, GroupAction, I18n, ImageManager, Label, LabelHorizontalAlignmentMode, LayoutConstraint, LegacyTimer, M2Error, M2EventType, M2ImageStatus, M2Node, M2NodeFactory, M2NodeType, M2SoundStatus, M2c2KitHelpers, MoveAction, MutablePath, NoneTransition, PlayAction, RandomDraws, RepeatAction, RepeatForeverAction, RotateAction, ScaleAction, Scene, SceneTransition, SequenceAction, Shape, ShapeType, SlideTransition, SoundManager, SoundPlayer, SoundRecorder, Sprite, Story, TextLine, Timer, Transition, TransitionDirection, TransitionType, Uuid, WaitAction, WebColors, WebGlInfo, handleInterfaceOptions };
12277
12940
  //# sourceMappingURL=index.js.map