@esotericsoftware/spine-core 4.2.115 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/Animation.d.ts +426 -274
  2. package/dist/Animation.js +1174 -1210
  3. package/dist/AnimationState.d.ts +246 -201
  4. package/dist/AnimationState.js +508 -471
  5. package/dist/AnimationStateData.d.ts +12 -10
  6. package/dist/AnimationStateData.js +19 -20
  7. package/dist/AssetManagerBase.d.ts +29 -23
  8. package/dist/AssetManagerBase.js +67 -43
  9. package/dist/AtlasAttachmentLoader.d.ts +18 -12
  10. package/dist/AtlasAttachmentLoader.js +28 -39
  11. package/dist/Bone.d.ts +15 -109
  12. package/dist/Bone.js +22 -362
  13. package/dist/BoneData.d.ts +13 -28
  14. package/dist/BoneData.js +20 -29
  15. package/dist/BonePose.d.ts +130 -0
  16. package/dist/BonePose.js +426 -0
  17. package/dist/Constraint.d.ts +41 -0
  18. package/dist/Constraint.js +38 -0
  19. package/dist/ConstraintData.d.ts +7 -5
  20. package/dist/ConstraintData.js +5 -9
  21. package/dist/DrawOrder.d.ts +48 -0
  22. package/dist/DrawOrder.js +64 -0
  23. package/dist/Event.d.ts +11 -6
  24. package/dist/Event.js +10 -5
  25. package/dist/EventData.d.ts +10 -6
  26. package/dist/EventData.js +18 -7
  27. package/dist/IkConstraint.d.ts +22 -28
  28. package/dist/IkConstraint.js +115 -117
  29. package/dist/IkConstraintData.d.ts +23 -18
  30. package/dist/IkConstraintData.js +32 -22
  31. package/dist/IkConstraintPose.d.ts +49 -0
  32. package/dist/IkConstraintPose.js +55 -0
  33. package/dist/PathConstraint.d.ts +18 -22
  34. package/dist/PathConstraint.js +160 -136
  35. package/dist/PathConstraintData.d.ts +11 -14
  36. package/dist/PathConstraintData.js +14 -16
  37. package/dist/PathConstraintPose.d.ts +43 -0
  38. package/dist/PathConstraintPose.js +49 -0
  39. package/dist/Physics.d.ts +39 -0
  40. package/dist/Physics.js +41 -0
  41. package/dist/PhysicsConstraint.d.ts +26 -30
  42. package/dist/PhysicsConstraint.js +102 -94
  43. package/dist/PhysicsConstraintData.d.ts +22 -12
  44. package/dist/PhysicsConstraintData.js +23 -12
  45. package/dist/PhysicsConstraintPose.d.ts +47 -0
  46. package/dist/PhysicsConstraintPose.js +55 -0
  47. package/dist/Pose.d.ts +33 -0
  48. package/dist/Pose.js +30 -0
  49. package/dist/Posed.d.ts +58 -0
  50. package/dist/Posed.js +78 -0
  51. package/dist/PosedActive.d.ts +41 -0
  52. package/dist/{attachments/HasTextureRegion.js → PosedActive.js} +17 -2
  53. package/dist/PosedData.d.ts +40 -0
  54. package/dist/PosedData.js +45 -0
  55. package/dist/Skeleton.d.ts +110 -99
  56. package/dist/Skeleton.js +271 -449
  57. package/dist/SkeletonBinary.d.ts +2 -2
  58. package/dist/SkeletonBinary.js +644 -466
  59. package/dist/SkeletonBounds.d.ts +4 -4
  60. package/dist/SkeletonBounds.js +45 -46
  61. package/dist/SkeletonClipping.d.ts +26 -22
  62. package/dist/SkeletonClipping.js +654 -340
  63. package/dist/SkeletonData.d.ts +18 -35
  64. package/dist/SkeletonData.js +57 -97
  65. package/dist/SkeletonJson.d.ts +8 -6
  66. package/dist/SkeletonJson.js +892 -641
  67. package/dist/SkeletonRendererCore.d.ts +58 -0
  68. package/dist/SkeletonRendererCore.js +310 -0
  69. package/dist/Skin.d.ts +20 -16
  70. package/dist/Skin.js +58 -53
  71. package/dist/Slider.d.ts +46 -0
  72. package/dist/Slider.js +115 -0
  73. package/dist/SliderData.d.ts +58 -0
  74. package/dist/SliderData.js +59 -0
  75. package/dist/SliderPose.d.ts +37 -0
  76. package/dist/SliderPose.js +40 -0
  77. package/dist/Slot.d.ts +16 -38
  78. package/dist/Slot.js +37 -60
  79. package/dist/SlotData.d.ts +5 -12
  80. package/dist/SlotData.js +7 -15
  81. package/dist/SlotPose.d.ts +59 -0
  82. package/dist/SlotPose.js +81 -0
  83. package/dist/Texture.d.ts +1 -0
  84. package/dist/Texture.js +2 -1
  85. package/dist/TextureAtlas.d.ts +3 -3
  86. package/dist/TextureAtlas.js +49 -49
  87. package/dist/TransformConstraint.d.ts +16 -28
  88. package/dist/TransformConstraint.js +72 -209
  89. package/dist/TransformConstraintData.d.ts +108 -20
  90. package/dist/TransformConstraintData.js +274 -24
  91. package/dist/TransformConstraintPose.d.ts +45 -0
  92. package/dist/TransformConstraintPose.js +52 -0
  93. package/dist/Triangulator.d.ts +1 -1
  94. package/dist/Triangulator.js +91 -107
  95. package/dist/{Updatable.d.ts → Update.d.ts} +5 -12
  96. package/dist/Update.js +30 -0
  97. package/dist/Utils.d.ts +13 -4
  98. package/dist/Utils.js +78 -37
  99. package/dist/attachments/Attachment.d.ts +27 -19
  100. package/dist/attachments/Attachment.js +59 -35
  101. package/dist/attachments/AttachmentLoader.d.ts +14 -14
  102. package/dist/attachments/AttachmentLoader.js +1 -1
  103. package/dist/attachments/BoundingBoxAttachment.d.ts +1 -1
  104. package/dist/attachments/BoundingBoxAttachment.js +2 -2
  105. package/dist/attachments/ClippingAttachment.d.ts +10 -3
  106. package/dist/attachments/ClippingAttachment.js +12 -3
  107. package/dist/attachments/{HasTextureRegion.d.ts → HasSequence.d.ts} +11 -14
  108. package/dist/attachments/HasSequence.js +30 -0
  109. package/dist/attachments/MeshAttachment.d.ts +28 -35
  110. package/dist/attachments/MeshAttachment.js +85 -97
  111. package/dist/attachments/PathAttachment.d.ts +3 -3
  112. package/dist/attachments/PathAttachment.js +6 -6
  113. package/dist/attachments/PointAttachment.d.ts +11 -6
  114. package/dist/attachments/PointAttachment.js +8 -3
  115. package/dist/attachments/RegionAttachment.d.ts +25 -27
  116. package/dist/attachments/RegionAttachment.js +101 -113
  117. package/dist/attachments/Sequence.d.ts +31 -6
  118. package/dist/attachments/Sequence.js +79 -13
  119. package/dist/esm/spine-core.min.mjs +2 -2
  120. package/dist/esm/spine-core.mjs +7651 -6090
  121. package/dist/esm/spine-core.mjs.map +4 -4
  122. package/dist/iife/spine-core.js +7651 -6090
  123. package/dist/iife/spine-core.js.map +4 -4
  124. package/dist/iife/spine-core.min.js +2 -2
  125. package/dist/index.d.ts +32 -11
  126. package/dist/index.js +33 -12
  127. package/dist/polyfills.js +4 -5
  128. package/package.json +1 -1
  129. package/dist/Updatable.js +0 -30
@@ -27,43 +27,293 @@
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { ConstraintData } from "./ConstraintData.js";
30
+ import { TransformConstraint } from "./TransformConstraint.js";
31
+ import { TransformConstraintPose } from "./TransformConstraintPose.js";
32
+ import { MathUtils } from "./Utils.js";
30
33
  /** Stores the setup pose for a {@link TransformConstraint}.
31
34
  *
32
35
  * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */
33
36
  export class TransformConstraintData extends ConstraintData {
37
+ static ROTATION = 0;
38
+ static X = 1;
39
+ static Y = 2;
40
+ static SCALEX = 3;
41
+ static SCALEY = 4;
42
+ static SHEARY = 5;
34
43
  /** The bones that will be modified by this transform constraint. */
35
- bones = new Array();
36
- /** The target bone whose world transform will be copied to the constrained bones. */
37
- _target = null;
38
- set target(boneData) { this._target = boneData; }
39
- get target() {
40
- if (!this._target)
44
+ bones = [];
45
+ /** The bone whose world transform will be copied to the constrained bones. */
46
+ set source(source) { this._source = source; }
47
+ get source() {
48
+ if (!this._source)
41
49
  throw new Error("BoneData not set.");
42
50
  else
43
- return this._target;
44
- }
45
- mixRotate = 0;
46
- mixX = 0;
47
- mixY = 0;
48
- mixScaleX = 0;
49
- mixScaleY = 0;
50
- mixShearY = 0;
51
- /** An offset added to the constrained bone rotation. */
52
- offsetRotation = 0;
51
+ return this._source;
52
+ }
53
+ _source = null;
54
+ offsets = [0, 0, 0, 0, 0, 0];
53
55
  /** An offset added to the constrained bone X translation. */
54
56
  offsetX = 0;
55
57
  /** An offset added to the constrained bone Y translation. */
56
58
  offsetY = 0;
59
+ /** Reads the source bone's local transform instead of its world transform. */
60
+ localSource = false;
61
+ /** Sets the constrained bones' local transforms instead of their world transforms. */
62
+ localTarget = false;
63
+ /** Adds the source bone transform to the constrained bones instead of setting it absolutely. */
64
+ additive = false;
65
+ /** Prevents constrained bones from exceeding the ranged defined by {@link ToProperty.offset} and {@link ToProperty.max}. */
66
+ clamp = false;
67
+ /** The mapping of transform properties to other transform properties. */
68
+ properties = [];
69
+ constructor(name) {
70
+ super(name, new TransformConstraintPose());
71
+ }
72
+ create(skeleton) {
73
+ return new TransformConstraint(this, skeleton);
74
+ }
75
+ /** An offset added to the constrained bone rotation. */
76
+ getOffsetRotation() {
77
+ return this.offsets[TransformConstraintData.ROTATION];
78
+ }
79
+ setOffsetRotation(offsetRotation) {
80
+ this.offsets[TransformConstraintData.ROTATION] = offsetRotation;
81
+ }
82
+ /** An offset added to the constrained bone X translation. */
83
+ getOffsetX() {
84
+ return this.offsets[TransformConstraintData.X];
85
+ }
86
+ setOffsetX(offsetX) {
87
+ this.offsets[TransformConstraintData.X] = offsetX;
88
+ }
89
+ /** An offset added to the constrained bone Y translation. */
90
+ getOffsetY() {
91
+ return this.offsets[TransformConstraintData.Y];
92
+ }
93
+ setOffsetY(offsetY) {
94
+ this.offsets[TransformConstraintData.Y] = offsetY;
95
+ }
57
96
  /** An offset added to the constrained bone scaleX. */
58
- offsetScaleX = 0;
97
+ getOffsetScaleX() {
98
+ return this.offsets[TransformConstraintData.SCALEX];
99
+ }
100
+ setOffsetScaleX(offsetScaleX) {
101
+ this.offsets[TransformConstraintData.SCALEX] = offsetScaleX;
102
+ }
59
103
  /** An offset added to the constrained bone scaleY. */
60
- offsetScaleY = 0;
104
+ getOffsetScaleY() {
105
+ return this.offsets[TransformConstraintData.SCALEY];
106
+ }
107
+ setOffsetScaleY(offsetScaleY) {
108
+ this.offsets[TransformConstraintData.SCALEY] = offsetScaleY;
109
+ }
61
110
  /** An offset added to the constrained bone shearY. */
62
- offsetShearY = 0;
63
- relative = false;
64
- local = false;
65
- constructor(name) {
66
- super(name, 0, false);
111
+ getOffsetShearY() {
112
+ return this.offsets[TransformConstraintData.SHEARY];
113
+ }
114
+ setOffsetShearY(offsetShearY) {
115
+ this.offsets[TransformConstraintData.SHEARY] = offsetShearY;
116
+ }
117
+ }
118
+ /** Source property for a {@link TransformConstraint}. */
119
+ export class FromProperty {
120
+ /** The value of this property that corresponds to {@link ToProperty.offset}. */
121
+ offset = 0;
122
+ /** Constrained properties. */
123
+ to = [];
124
+ }
125
+ /** Constrained property for a {@link TransformConstraint}. */
126
+ export class ToProperty {
127
+ /** The value of this property that corresponds to {@link FromProperty.offset}. */
128
+ offset = 0;
129
+ /** The maximum value of this property when {@link TransformConstraintData.clamp clamped}. */
130
+ max = 0;
131
+ /** The scale of the {@link FromProperty} value in relation to this property. */
132
+ scale = 0;
133
+ }
134
+ export class FromRotate extends FromProperty {
135
+ value(skeleton, source, local, offsets) {
136
+ if (local)
137
+ return source.rotation + offsets[TransformConstraintData.ROTATION];
138
+ const sx = skeleton.scaleX, sy = skeleton.scaleY;
139
+ let value = Math.atan2(source.c / sy, source.a / sx) * MathUtils.radDeg
140
+ + ((source.a * source.d - source.b * source.c) * sx * sy > 0 ? offsets[TransformConstraintData.ROTATION] : -offsets[TransformConstraintData.ROTATION]);
141
+ if (value < 0)
142
+ value += 360;
143
+ return value;
144
+ }
145
+ }
146
+ export class ToRotate extends ToProperty {
147
+ mix(pose) {
148
+ return pose.mixRotate;
149
+ }
150
+ apply(skeleton, pose, bone, value, local, additive) {
151
+ if (local)
152
+ bone.rotation += (additive ? value : value - bone.rotation) * pose.mixRotate;
153
+ else {
154
+ const sx = skeleton.scaleX, sy = skeleton.scaleY, ix = 1 / sx, iy = 1 / sy;
155
+ const a = bone.a * ix, b = bone.b * ix, c = bone.c * iy, d = bone.d * iy;
156
+ value *= MathUtils.degRad;
157
+ if (!additive)
158
+ value -= Math.atan2(c, a);
159
+ if (value > MathUtils.PI)
160
+ value -= MathUtils.PI2;
161
+ else if (value < -MathUtils.PI) //
162
+ value += MathUtils.PI2;
163
+ value *= pose.mixRotate;
164
+ const cos = Math.cos(value), sin = Math.sin(value);
165
+ bone.a = (cos * a - sin * c) * sx;
166
+ bone.b = (cos * b - sin * d) * sx;
167
+ bone.c = (sin * a + cos * c) * sy;
168
+ bone.d = (sin * b + cos * d) * sy;
169
+ }
170
+ }
171
+ }
172
+ export class FromX extends FromProperty {
173
+ value(skeleton, source, local, offsets) {
174
+ return local
175
+ ? source.x + offsets[TransformConstraintData.X]
176
+ : (offsets[TransformConstraintData.X] * source.a + offsets[TransformConstraintData.Y] * source.b + source.worldX) / skeleton.scaleX;
177
+ }
178
+ }
179
+ export class ToX extends ToProperty {
180
+ mix(pose) {
181
+ return pose.mixX;
182
+ }
183
+ apply(skeleton, pose, bone, value, local, additive) {
184
+ if (local)
185
+ bone.x += (additive ? value : value - bone.x) * pose.mixX;
186
+ else {
187
+ if (!additive)
188
+ value -= bone.worldX / skeleton.scaleX;
189
+ bone.worldX += value * pose.mixX * skeleton.scaleX;
190
+ }
191
+ }
192
+ }
193
+ export class FromY extends FromProperty {
194
+ value(skeleton, source, local, offsets) {
195
+ return local
196
+ ? source.y + offsets[TransformConstraintData.Y]
197
+ : (offsets[TransformConstraintData.X] * source.c + offsets[TransformConstraintData.Y] * source.d + source.worldY) / skeleton.scaleY;
198
+ }
199
+ }
200
+ export class ToY extends ToProperty {
201
+ mix(pose) {
202
+ return pose.mixY;
203
+ }
204
+ apply(skeleton, pose, bone, value, local, additive) {
205
+ if (local)
206
+ bone.y += (additive ? value : value - bone.y) * pose.mixY;
207
+ else {
208
+ if (!additive)
209
+ value -= bone.worldY / skeleton.scaleY;
210
+ bone.worldY += value * pose.mixY * skeleton.scaleY;
211
+ }
212
+ }
213
+ }
214
+ export class FromScaleX extends FromProperty {
215
+ value(skeleton, source, local, offsets) {
216
+ if (local)
217
+ return source.scaleX + offsets[TransformConstraintData.SCALEX];
218
+ const a = source.a / skeleton.scaleX, c = source.c / skeleton.scaleY;
219
+ return Math.sqrt(a * a + c * c) + offsets[TransformConstraintData.SCALEX];
220
+ }
221
+ }
222
+ export class ToScaleX extends ToProperty {
223
+ mix(pose) {
224
+ return pose.mixScaleX;
225
+ }
226
+ apply(skeleton, pose, bone, value, local, additive) {
227
+ if (local) {
228
+ if (additive)
229
+ bone.scaleX *= 1 + (value - 1) * pose.mixScaleX;
230
+ else if (bone.scaleX !== 0) //
231
+ bone.scaleX += (value - bone.scaleX) * pose.mixScaleX;
232
+ }
233
+ else if (additive) {
234
+ const s = 1 + (value - 1) * pose.mixScaleX;
235
+ bone.a *= s;
236
+ bone.c *= s;
237
+ }
238
+ else {
239
+ let a = bone.a / skeleton.scaleX, c = bone.c / skeleton.scaleY, s = Math.sqrt(a * a + c * c);
240
+ if (s !== 0) {
241
+ s = 1 + (value - s) * pose.mixScaleX / s;
242
+ bone.a *= s;
243
+ bone.c *= s;
244
+ }
245
+ }
246
+ }
247
+ }
248
+ export class FromScaleY extends FromProperty {
249
+ value(skeleton, source, local, offsets) {
250
+ if (local)
251
+ return source.scaleY + offsets[TransformConstraintData.SCALEY];
252
+ const b = source.b / skeleton.scaleX, d = source.d / skeleton.scaleY;
253
+ return Math.sqrt(b * b + d * d) + offsets[TransformConstraintData.SCALEY];
254
+ }
255
+ }
256
+ export class ToScaleY extends ToProperty {
257
+ mix(pose) {
258
+ return pose.mixScaleY;
259
+ }
260
+ apply(skeleton, pose, bone, value, local, additive) {
261
+ if (local) {
262
+ if (additive)
263
+ bone.scaleY *= 1 + (value - 1) * pose.mixScaleY;
264
+ else if (bone.scaleY !== 0) //
265
+ bone.scaleY += (value - bone.scaleY) * pose.mixScaleY;
266
+ }
267
+ else if (additive) {
268
+ const s = 1 + (value - 1) * pose.mixScaleY;
269
+ bone.b *= s;
270
+ bone.d *= s;
271
+ }
272
+ else {
273
+ let b = bone.b / skeleton.scaleX, d = bone.d / skeleton.scaleY, s = Math.sqrt(b * b + d * d);
274
+ if (s !== 0) {
275
+ s = 1 + (value - s) * pose.mixScaleY / s;
276
+ bone.b *= s;
277
+ bone.d *= s;
278
+ }
279
+ }
280
+ }
281
+ }
282
+ export class FromShearY extends FromProperty {
283
+ value(skeleton, source, local, offsets) {
284
+ if (local)
285
+ return source.shearY + offsets[TransformConstraintData.SHEARY];
286
+ const ix = 1 / skeleton.scaleX, iy = 1 / skeleton.scaleY;
287
+ return (Math.atan2(source.d * iy, source.b * ix) - Math.atan2(source.c * iy, source.a * ix)) * MathUtils.radDeg - 90 + offsets[TransformConstraintData.SHEARY];
288
+ }
289
+ }
290
+ export class ToShearY extends ToProperty {
291
+ mix(pose) {
292
+ return pose.mixShearY;
293
+ }
294
+ apply(skeleton, pose, bone, value, local, additive) {
295
+ if (local) {
296
+ if (!additive)
297
+ value -= bone.shearY;
298
+ bone.shearY += value * pose.mixShearY;
299
+ }
300
+ else {
301
+ const sx = skeleton.scaleX, sy = skeleton.scaleY, b = bone.b / sx, d = bone.d / sy, by = Math.atan2(d, b);
302
+ value = (value + 90) * MathUtils.degRad;
303
+ if (additive)
304
+ value -= MathUtils.PI / 2;
305
+ else {
306
+ value -= by - Math.atan2(bone.c / sx, bone.a / sy);
307
+ if (value > MathUtils.PI)
308
+ value -= MathUtils.PI2;
309
+ else if (value < -MathUtils.PI)
310
+ value += MathUtils.PI2;
311
+ }
312
+ value = by + value * pose.mixShearY;
313
+ const s = Math.sqrt(b * b + d * d);
314
+ bone.b = Math.cos(value) * s * sy;
315
+ bone.d = Math.sin(value) * s * sx;
316
+ }
67
317
  }
68
318
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVHJhbnNmb3JtQ29uc3RyYWludERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRDs7bUhBRW1IO0FBQ25ILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxjQUFjO0lBRTFELG9FQUFvRTtJQUNwRSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztJQUU5QixxRkFBcUY7SUFDN0UsT0FBTyxHQUFvQixJQUFJLENBQUM7SUFDeEMsSUFBVyxNQUFNLENBQUUsUUFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBVyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTs7WUFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFZCx3REFBd0Q7SUFDeEQsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUVuQiw2REFBNkQ7SUFDN0QsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUVaLDZEQUE2RDtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBRVosc0RBQXNEO0lBQ3RELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsc0RBQXNEO0lBQ3RELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsc0RBQXNEO0lBQ3RELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgQm9uZURhdGEgfSBmcm9tIFwiLi9Cb25lRGF0YS5qc1wiO1xuXG4vKiogU3RvcmVzIHRoZSBzZXR1cCBwb3NlIGZvciBhIHtAbGluayBUcmFuc2Zvcm1Db25zdHJhaW50fS5cbiAqXG4gKiBTZWUgW1RyYW5zZm9ybSBjb25zdHJhaW50c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXRyYW5zZm9ybS1jb25zdHJhaW50cykgaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgVHJhbnNmb3JtQ29uc3RyYWludERhdGEgZXh0ZW5kcyBDb25zdHJhaW50RGF0YSB7XG5cblx0LyoqIFRoZSBib25lcyB0aGF0IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhpcyB0cmFuc2Zvcm0gY29uc3RyYWludC4gKi9cblx0Ym9uZXMgPSBuZXcgQXJyYXk8Qm9uZURhdGE+KCk7XG5cblx0LyoqIFRoZSB0YXJnZXQgYm9uZSB3aG9zZSB3b3JsZCB0cmFuc2Zvcm0gd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmVzLiAqL1xuXHRwcml2YXRlIF90YXJnZXQ6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBzZXQgdGFyZ2V0IChib25lRGF0YTogQm9uZURhdGEpIHsgdGhpcy5fdGFyZ2V0ID0gYm9uZURhdGE7IH1cblx0cHVibGljIGdldCB0YXJnZXQgKCkge1xuXHRcdGlmICghdGhpcy5fdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJCb25lRGF0YSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX3RhcmdldDtcblx0fVxuXG5cdG1peFJvdGF0ZSA9IDA7XG5cdG1peFggPSAwO1xuXHRtaXhZID0gMDtcblx0bWl4U2NhbGVYID0gMDtcblx0bWl4U2NhbGVZID0gMDtcblx0bWl4U2hlYXJZID0gMDtcblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIHJvdGF0aW9uLiAqL1xuXHRvZmZzZXRSb3RhdGlvbiA9IDA7XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBYIHRyYW5zbGF0aW9uLiAqL1xuXHRvZmZzZXRYID0gMDtcblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIFkgdHJhbnNsYXRpb24uICovXG5cdG9mZnNldFkgPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgc2NhbGVYLiAqL1xuXHRvZmZzZXRTY2FsZVggPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgc2NhbGVZLiAqL1xuXHRvZmZzZXRTY2FsZVkgPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgc2hlYXJZLiAqL1xuXHRvZmZzZXRTaGVhclkgPSAwO1xuXG5cdHJlbGF0aXZlID0gZmFsc2U7XG5cdGxvY2FsID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUsIDAsIGZhbHNlKTtcblx0fVxufVxuIl19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVHJhbnNmb3JtQ29uc3RyYWludERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXZDOzttSEFFbUg7QUFDbkgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQTREO0lBQ2pHLE1BQU0sQ0FBVSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sQ0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWxDLG9FQUFvRTtJQUNwRSxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztJQUV6Qiw4RUFBOEU7SUFDOUUsSUFBVyxNQUFNLENBQUUsTUFBZ0IsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBVyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTs7WUFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDTyxPQUFPLEdBQW9CLElBQUksQ0FBQztJQUV4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QUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxFQUFFO29CQUN2QixLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQztxQkFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDN0IsS0FBSyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEJvbmVEYXRhIH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQm9uZVBvc2UgfSBmcm9tIFwiLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50IH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29uc3RyYWludFBvc2UgfSBmcm9tIFwiLi9UcmFuc2Zvcm1Db25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHsgTWF0aFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBmb3IgYSB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludH0uXG4gKlxuICogU2VlIFtUcmFuc2Zvcm0gY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS10cmFuc2Zvcm0tY29uc3RyYWludHMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIGV4dGVuZHMgQ29uc3RyYWludERhdGE8VHJhbnNmb3JtQ29uc3RyYWludCwgVHJhbnNmb3JtQ29uc3RyYWludFBvc2U+IHtcblx0cHVibGljIHN0YXRpYyByZWFkb25seSBST1RBVElPTiA9IDA7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWCA9IDE7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWSA9IDI7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0NBTEVYID0gMztcblx0cHVibGljIHN0YXRpYyByZWFkb25seSBTQ0FMRVkgPSA0O1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIRUFSWSA9IDU7XG5cblx0LyoqIFRoZSBib25lcyB0aGF0IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhpcyB0cmFuc2Zvcm0gY29uc3RyYWludC4gKi9cblx0Ym9uZXMgPSBbXSBhcyBCb25lRGF0YVtdO1xuXG5cdC8qKiBUaGUgYm9uZSB3aG9zZSB3b3JsZCB0cmFuc2Zvcm0gd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmVzLiAqL1xuXHRwdWJsaWMgc2V0IHNvdXJjZSAoc291cmNlOiBCb25lRGF0YSkgeyB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7IH1cblx0cHVibGljIGdldCBzb3VyY2UgKCkge1xuXHRcdGlmICghdGhpcy5fc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJCb25lRGF0YSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX3NvdXJjZTtcblx0fVxuXHRwcml2YXRlIF9zb3VyY2U6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cblx0b2Zmc2V0cyA9IFswLCAwLCAwLCAwLCAwLCAwXTtcblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIFggdHJhbnNsYXRpb24uICovXG5cdG9mZnNldFggPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgWSB0cmFuc2xhdGlvbi4gKi9cblx0b2Zmc2V0WSA9IDA7XG5cblx0LyoqIFJlYWRzIHRoZSBzb3VyY2UgYm9uZSdzIGxvY2FsIHRyYW5zZm9ybSBpbnN0ZWFkIG9mIGl0cyB3b3JsZCB0cmFuc2Zvcm0uICovXG5cdGxvY2FsU291cmNlID0gZmFsc2U7XG5cblx0LyoqIFNldHMgdGhlIGNvbnN0cmFpbmVkIGJvbmVzJyBsb2NhbCB0cmFuc2Zvcm1zIGluc3RlYWQgb2YgdGhlaXIgd29ybGQgdHJhbnNmb3Jtcy4gKi9cblx0bG9jYWxUYXJnZXQgPSBmYWxzZTtcblxuXHQvKiogQWRkcyB0aGUgc291cmNlIGJvbmUgdHJhbnNmb3JtIHRvIHRoZSBjb25zdHJhaW5lZCBib25lcyBpbnN0ZWFkIG9mIHNldHRpbmcgaXQgYWJzb2x1dGVseS4gKi9cblx0YWRkaXRpdmUgPSBmYWxzZTtcblxuXHQvKiogUHJldmVudHMgY29uc3RyYWluZWQgYm9uZXMgZnJvbSBleGNlZWRpbmcgdGhlIHJhbmdlZCBkZWZpbmVkIGJ5IHtAbGluayBUb1Byb3BlcnR5Lm9mZnNldH0gYW5kIHtAbGluayBUb1Byb3BlcnR5Lm1heH0uICovXG5cdGNsYW1wID0gZmFsc2U7XG5cblx0LyoqIFRoZSBtYXBwaW5nIG9mIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIHRvIG90aGVyIHRyYW5zZm9ybSBwcm9wZXJ0aWVzLiAqL1xuXHRyZWFkb25seSBwcm9wZXJ0aWVzOiBBcnJheTxGcm9tUHJvcGVydHk+ID0gW107XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUsIG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSgpKTtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGUgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHJldHVybiBuZXcgVHJhbnNmb3JtQ29uc3RyYWludCh0aGlzLCBza2VsZXRvbik7XG5cdH1cblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIHJvdGF0aW9uLiAqL1xuXHRnZXRPZmZzZXRSb3RhdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl07XG5cdH1cblxuXHRzZXRPZmZzZXRSb3RhdGlvbiAob2Zmc2V0Um90YXRpb246IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gPSBvZmZzZXRSb3RhdGlvbjtcblx0fVxuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgWCB0cmFuc2xhdGlvbi4gKi9cblx0Z2V0T2Zmc2V0WCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXTtcblx0fVxuXG5cdHNldE9mZnNldFggKG9mZnNldFg6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSA9IG9mZnNldFg7XG5cdH1cblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIFkgdHJhbnNsYXRpb24uICovXG5cdGdldE9mZnNldFkgKCkge1xuXHRcdHJldHVybiB0aGlzLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV07XG5cdH1cblxuXHRzZXRPZmZzZXRZIChvZmZzZXRZOiBudW1iZXIpIHtcblx0XHR0aGlzLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV0gPSBvZmZzZXRZO1xuXHR9XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBzY2FsZVguICovXG5cdGdldE9mZnNldFNjYWxlWCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdO1xuXHR9XG5cblx0c2V0T2Zmc2V0U2NhbGVYIChvZmZzZXRTY2FsZVg6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdID0gb2Zmc2V0U2NhbGVYO1xuXHR9XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBzY2FsZVkuICovXG5cdGdldE9mZnNldFNjYWxlWSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVldO1xuXHR9XG5cblx0c2V0T2Zmc2V0U2NhbGVZIChvZmZzZXRTY2FsZVk6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVldID0gb2Zmc2V0U2NhbGVZO1xuXHR9XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBzaGVhclkuICovXG5cdGdldE9mZnNldFNoZWFyWSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldO1xuXHR9XG5cblx0c2V0T2Zmc2V0U2hlYXJZIChvZmZzZXRTaGVhclk6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldID0gb2Zmc2V0U2hlYXJZO1xuXHR9XG5cbn1cblxuLyoqIFNvdXJjZSBwcm9wZXJ0eSBmb3IgYSB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludH0uICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnJvbVByb3BlcnR5IHtcblx0LyoqIFRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IHRoYXQgY29ycmVzcG9uZHMgdG8ge0BsaW5rIFRvUHJvcGVydHkub2Zmc2V0fS4gKi9cblx0b2Zmc2V0ID0gMDtcblxuXHQvKiogQ29uc3RyYWluZWQgcHJvcGVydGllcy4gKi9cblx0cmVhZG9ubHkgdG86IEFycmF5PFRvUHJvcGVydHk+ID0gW107XG5cblx0LyoqIFJlYWRzIHRoaXMgcHJvcGVydHkgZnJvbSB0aGUgc3BlY2lmaWVkIGJvbmUuICovXG5cdGFic3RyYWN0IHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyO1xufVxuXG4vKiogQ29uc3RyYWluZWQgcHJvcGVydHkgZm9yIGEge0BsaW5rIFRyYW5zZm9ybUNvbnN0cmFpbnR9LiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRvUHJvcGVydHkge1xuXHQvKiogVGhlIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgdGhhdCBjb3JyZXNwb25kcyB0byB7QGxpbmsgRnJvbVByb3BlcnR5Lm9mZnNldH0uICovXG5cdG9mZnNldCA9IDA7XG5cblx0LyoqIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgd2hlbiB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludERhdGEuY2xhbXAgY2xhbXBlZH0uICovXG5cdG1heCA9IDA7XG5cblx0LyoqIFRoZSBzY2FsZSBvZiB0aGUge0BsaW5rIEZyb21Qcm9wZXJ0eX0gdmFsdWUgaW4gcmVsYXRpb24gdG8gdGhpcyBwcm9wZXJ0eS4gKi9cblx0c2NhbGUgPSAwO1xuXG5cdC8qKiBSZWFkcyB0aGUgbWl4IGZvciB0aGlzIHByb3BlcnR5IGZyb20gdGhlIHNwZWNpZmllZCBjb25zdHJhaW50LiAqL1xuXHRhYnN0cmFjdCBtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyO1xuXG5cdC8qKiBBcHBsaWVzIHRoZSB2YWx1ZSB0byB0aGlzIHByb3BlcnR5LiAqL1xuXHRhYnN0cmFjdCBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBwb3NlOiBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSwgYm9uZTogQm9uZVBvc2UsIHZhbHVlOiBudW1iZXIsIGxvY2FsOiBib29sZWFuLCBhZGRpdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBGcm9tUm90YXRlIGV4dGVuZHMgRnJvbVByb3BlcnR5IHtcblx0dmFsdWUgKHNrZWxldG9uOiBTa2VsZXRvbiwgc291cmNlOiBCb25lUG9zZSwgbG9jYWw6IGJvb2xlYW4sIG9mZnNldHM6IEFycmF5PG51bWJlcj4pOiBudW1iZXIge1xuXHRcdGlmIChsb2NhbCkgcmV0dXJuIHNvdXJjZS5yb3RhdGlvbiArIG9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuUk9UQVRJT05dO1xuXHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWTtcblx0XHRsZXQgdmFsdWUgPSBNYXRoLmF0YW4yKHNvdXJjZS5jIC8gc3ksIHNvdXJjZS5hIC8gc3gpICogTWF0aFV0aWxzLnJhZERlZ1xuXHRcdFx0KyAoKHNvdXJjZS5hICogc291cmNlLmQgLSBzb3VyY2UuYiAqIHNvdXJjZS5jKSAqIHN4ICogc3kgPiAwID8gb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gOiAtb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0pO1xuXHRcdGlmICh2YWx1ZSA8IDApIHZhbHVlICs9IDM2MDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvUm90YXRlIGV4dGVuZHMgVG9Qcm9wZXJ0eSB7XG5cdG1peCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpOiBudW1iZXIge1xuXHRcdHJldHVybiBwb3NlLm1peFJvdGF0ZTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlLCBib25lOiBCb25lUG9zZSwgdmFsdWU6IG51bWJlciwgbG9jYWw6IGJvb2xlYW4sIGFkZGl0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGxvY2FsKVxuXHRcdFx0Ym9uZS5yb3RhdGlvbiArPSAoYWRkaXRpdmUgPyB2YWx1ZSA6IHZhbHVlIC0gYm9uZS5yb3RhdGlvbikgKiBwb3NlLm1peFJvdGF0ZTtcblx0XHRlbHNlIHtcblx0XHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWSwgaXggPSAxIC8gc3gsIGl5ID0gMSAvIHN5O1xuXHRcdFx0Y29uc3QgYSA9IGJvbmUuYSAqIGl4LCBiID0gYm9uZS5iICogaXgsIGMgPSBib25lLmMgKiBpeSwgZCA9IGJvbmUuZCAqIGl5O1xuXHRcdFx0dmFsdWUgKj0gTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdGlmICghYWRkaXRpdmUpIHZhbHVlIC09IE1hdGguYXRhbjIoYywgYSk7XG5cdFx0XHRpZiAodmFsdWUgPiBNYXRoVXRpbHMuUEkpXG5cdFx0XHRcdHZhbHVlIC09IE1hdGhVdGlscy5QSTI7XG5cdFx0XHRlbHNlIGlmICh2YWx1ZSA8IC1NYXRoVXRpbHMuUEkpIC8vXG5cdFx0XHRcdHZhbHVlICs9IE1hdGhVdGlscy5QSTI7XG5cdFx0XHR2YWx1ZSAqPSBwb3NlLm1peFJvdGF0ZTtcblx0XHRcdGNvbnN0IGNvcyA9IE1hdGguY29zKHZhbHVlKSwgc2luID0gTWF0aC5zaW4odmFsdWUpO1xuXHRcdFx0Ym9uZS5hID0gKGNvcyAqIGEgLSBzaW4gKiBjKSAqIHN4O1xuXHRcdFx0Ym9uZS5iID0gKGNvcyAqIGIgLSBzaW4gKiBkKSAqIHN4O1xuXHRcdFx0Ym9uZS5jID0gKHNpbiAqIGEgKyBjb3MgKiBjKSAqIHN5O1xuXHRcdFx0Ym9uZS5kID0gKHNpbiAqIGIgKyBjb3MgKiBkKSAqIHN5O1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVggZXh0ZW5kcyBGcm9tUHJvcGVydHkge1xuXHR2YWx1ZSAoc2tlbGV0b246IFNrZWxldG9uLCBzb3VyY2U6IEJvbmVQb3NlLCBsb2NhbDogYm9vbGVhbiwgb2Zmc2V0czogQXJyYXk8bnVtYmVyPik6IG51bWJlciB7XG5cdFx0cmV0dXJuIGxvY2FsXG5cdFx0XHQ/IHNvdXJjZS54ICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXVxuXHRcdFx0OiAob2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSAqIHNvdXJjZS5hICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ZXSAqIHNvdXJjZS5iICsgc291cmNlLndvcmxkWCkgLyBza2VsZXRvbi5zY2FsZVg7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvWCBleHRlbmRzIFRvUHJvcGVydHkge1xuXHRtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gcG9zZS5taXhYO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgcG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UsIGJvbmU6IEJvbmVQb3NlLCB2YWx1ZTogbnVtYmVyLCBsb2NhbDogYm9vbGVhbiwgYWRkaXRpdmU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAobG9jYWwpXG5cdFx0XHRib25lLnggKz0gKGFkZGl0aXZlID8gdmFsdWUgOiB2YWx1ZSAtIGJvbmUueCkgKiBwb3NlLm1peFg7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZiAoIWFkZGl0aXZlKSB2YWx1ZSAtPSBib25lLndvcmxkWCAvIHNrZWxldG9uLnNjYWxlWDtcblx0XHRcdGJvbmUud29ybGRYICs9IHZhbHVlICogcG9zZS5taXhYICogc2tlbGV0b24uc2NhbGVYO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVkgZXh0ZW5kcyBGcm9tUHJvcGVydHkge1xuXHR2YWx1ZSAoc2tlbGV0b246IFNrZWxldG9uLCBzb3VyY2U6IEJvbmVQb3NlLCBsb2NhbDogYm9vbGVhbiwgb2Zmc2V0czogQXJyYXk8bnVtYmVyPik6IG51bWJlciB7XG5cdFx0cmV0dXJuIGxvY2FsXG5cdFx0XHQ/IHNvdXJjZS55ICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ZXVxuXHRcdFx0OiAob2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSAqIHNvdXJjZS5jICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ZXSAqIHNvdXJjZS5kICsgc291cmNlLndvcmxkWSkgLyBza2VsZXRvbi5zY2FsZVk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvWSBleHRlbmRzIFRvUHJvcGVydHkge1xuXHRtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gcG9zZS5taXhZO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgcG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UsIGJvbmU6IEJvbmVQb3NlLCB2YWx1ZTogbnVtYmVyLCBsb2NhbDogYm9vbGVhbiwgYWRkaXRpdmU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAobG9jYWwpXG5cdFx0XHRib25lLnkgKz0gKGFkZGl0aXZlID8gdmFsdWUgOiB2YWx1ZSAtIGJvbmUueSkgKiBwb3NlLm1peFk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZiAoIWFkZGl0aXZlKSB2YWx1ZSAtPSBib25lLndvcmxkWSAvIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdGJvbmUud29ybGRZICs9IHZhbHVlICogcG9zZS5taXhZICogc2tlbGV0b24uc2NhbGVZO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVNjYWxlWCBleHRlbmRzIEZyb21Qcm9wZXJ0eSB7XG5cdHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyIHtcblx0XHRpZiAobG9jYWwpIHJldHVybiBzb3VyY2Uuc2NhbGVYICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdO1xuXHRcdGNvbnN0IGEgPSBzb3VyY2UuYSAvIHNrZWxldG9uLnNjYWxlWCwgYyA9IHNvdXJjZS5jIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdHJldHVybiBNYXRoLnNxcnQoYSAqIGEgKyBjICogYykgKyBvZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWF07XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvU2NhbGVYIGV4dGVuZHMgVG9Qcm9wZXJ0eSB7XG5cdG1peCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpOiBudW1iZXIge1xuXHRcdHJldHVybiBwb3NlLm1peFNjYWxlWDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlLCBib25lOiBCb25lUG9zZSwgdmFsdWU6IG51bWJlciwgbG9jYWw6IGJvb2xlYW4sIGFkZGl0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGxvY2FsKSB7XG5cdFx0XHRpZiAoYWRkaXRpdmUpXG5cdFx0XHRcdGJvbmUuc2NhbGVYICo9IDEgKyAodmFsdWUgLSAxKSAqIHBvc2UubWl4U2NhbGVYO1xuXHRcdFx0ZWxzZSBpZiAoYm9uZS5zY2FsZVggIT09IDApIC8vXG5cdFx0XHRcdGJvbmUuc2NhbGVYICs9ICh2YWx1ZSAtIGJvbmUuc2NhbGVYKSAqIHBvc2UubWl4U2NhbGVYO1xuXHRcdH0gZWxzZSBpZiAoYWRkaXRpdmUpIHtcblx0XHRcdGNvbnN0IHMgPSAxICsgKHZhbHVlIC0gMSkgKiBwb3NlLm1peFNjYWxlWDtcblx0XHRcdGJvbmUuYSAqPSBzO1xuXHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBhID0gYm9uZS5hIC8gc2tlbGV0b24uc2NhbGVYLCBjID0gYm9uZS5jIC8gc2tlbGV0b24uc2NhbGVZLCBzID0gTWF0aC5zcXJ0KGEgKiBhICsgYyAqIGMpO1xuXHRcdFx0aWYgKHMgIT09IDApIHtcblx0XHRcdFx0cyA9IDEgKyAodmFsdWUgLSBzKSAqIHBvc2UubWl4U2NhbGVYIC8gcztcblx0XHRcdFx0Ym9uZS5hICo9IHM7XG5cdFx0XHRcdGJvbmUuYyAqPSBzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVNjYWxlWSBleHRlbmRzIEZyb21Qcm9wZXJ0eSB7XG5cdHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyIHtcblx0XHRpZiAobG9jYWwpIHJldHVybiBzb3VyY2Uuc2NhbGVZICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVldO1xuXHRcdGNvbnN0IGIgPSBzb3VyY2UuYiAvIHNrZWxldG9uLnNjYWxlWCwgZCA9IHNvdXJjZS5kIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdHJldHVybiBNYXRoLnNxcnQoYiAqIGIgKyBkICogZCkgKyBvZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWV07XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvU2NhbGVZIGV4dGVuZHMgVG9Qcm9wZXJ0eSB7XG5cdG1peCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpOiBudW1iZXIge1xuXHRcdHJldHVybiBwb3NlLm1peFNjYWxlWTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlLCBib25lOiBCb25lUG9zZSwgdmFsdWU6IG51bWJlciwgbG9jYWw6IGJvb2xlYW4sIGFkZGl0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGxvY2FsKSB7XG5cdFx0XHRpZiAoYWRkaXRpdmUpXG5cdFx0XHRcdGJvbmUuc2NhbGVZICo9IDEgKyAodmFsdWUgLSAxKSAqIHBvc2UubWl4U2NhbGVZO1xuXHRcdFx0ZWxzZSBpZiAoYm9uZS5zY2FsZVkgIT09IDApIC8vXG5cdFx0XHRcdGJvbmUuc2NhbGVZICs9ICh2YWx1ZSAtIGJvbmUuc2NhbGVZKSAqIHBvc2UubWl4U2NhbGVZO1xuXHRcdH0gZWxzZSBpZiAoYWRkaXRpdmUpIHtcblx0XHRcdGNvbnN0IHMgPSAxICsgKHZhbHVlIC0gMSkgKiBwb3NlLm1peFNjYWxlWTtcblx0XHRcdGJvbmUuYiAqPSBzO1xuXHRcdFx0Ym9uZS5kICo9IHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBiID0gYm9uZS5iIC8gc2tlbGV0b24uc2NhbGVYLCBkID0gYm9uZS5kIC8gc2tlbGV0b24uc2NhbGVZLCBzID0gTWF0aC5zcXJ0KGIgKiBiICsgZCAqIGQpO1xuXHRcdFx0aWYgKHMgIT09IDApIHtcblx0XHRcdFx0cyA9IDEgKyAodmFsdWUgLSBzKSAqIHBvc2UubWl4U2NhbGVZIC8gcztcblx0XHRcdFx0Ym9uZS5iICo9IHM7XG5cdFx0XHRcdGJvbmUuZCAqPSBzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVNoZWFyWSBleHRlbmRzIEZyb21Qcm9wZXJ0eSB7XG5cdHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyIHtcblx0XHRpZiAobG9jYWwpIHJldHVybiBzb3VyY2Uuc2hlYXJZICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldO1xuXHRcdGNvbnN0IGl4ID0gMSAvIHNrZWxldG9uLnNjYWxlWCwgaXkgPSAxIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdHJldHVybiAoTWF0aC5hdGFuMihzb3VyY2UuZCAqIGl5LCBzb3VyY2UuYiAqIGl4KSAtIE1hdGguYXRhbjIoc291cmNlLmMgKiBpeSwgc291cmNlLmEgKiBpeCkpICogTWF0aFV0aWxzLnJhZERlZyAtIDkwICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBUb1NoZWFyWSBleHRlbmRzIFRvUHJvcGVydHkge1xuXHRtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gcG9zZS5taXhTaGVhclk7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBwb3NlOiBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSwgYm9uZTogQm9uZVBvc2UsIHZhbHVlOiBudW1iZXIsIGxvY2FsOiBib29sZWFuLCBhZGRpdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmIChsb2NhbCkge1xuXHRcdFx0aWYgKCFhZGRpdGl2ZSkgdmFsdWUgLT0gYm9uZS5zaGVhclk7XG5cdFx0XHRib25lLnNoZWFyWSArPSB2YWx1ZSAqIHBvc2UubWl4U2hlYXJZO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBzeCA9IHNrZWxldG9uLnNjYWxlWCwgc3kgPSBza2VsZXRvbi5zY2FsZVksIGIgPSBib25lLmIgLyBzeCwgZCA9IGJvbmUuZCAvIHN5LCBieSA9IE1hdGguYXRhbjIoZCwgYik7XG5cdFx0XHR2YWx1ZSA9ICh2YWx1ZSArIDkwKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRpZiAoYWRkaXRpdmUpXG5cdFx0XHRcdHZhbHVlIC09IE1hdGhVdGlscy5QSSAvIDI7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dmFsdWUgLT0gYnkgLSBNYXRoLmF0YW4yKGJvbmUuYyAvIHN4LCBib25lLmEgLyBzeSk7XG5cdFx0XHRcdGlmICh2YWx1ZSA+IE1hdGhVdGlscy5QSSlcblx0XHRcdFx0XHR2YWx1ZSAtPSBNYXRoVXRpbHMuUEkyO1xuXHRcdFx0XHRlbHNlIGlmICh2YWx1ZSA8IC1NYXRoVXRpbHMuUEkpXG5cdFx0XHRcdFx0dmFsdWUgKz0gTWF0aFV0aWxzLlBJMjtcblx0XHRcdH1cblx0XHRcdHZhbHVlID0gYnkgKyB2YWx1ZSAqIHBvc2UubWl4U2hlYXJZO1xuXHRcdFx0Y29uc3QgcyA9IE1hdGguc3FydChiICogYiArIGQgKiBkKTtcblx0XHRcdGJvbmUuYiA9IE1hdGguY29zKHZhbHVlKSAqIHMgKiBzeTtcblx0XHRcdGJvbmUuZCA9IE1hdGguc2luKHZhbHVlKSAqIHMgKiBzeDtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ /******************************************************************************
2
+ * Spine Runtimes License Agreement
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
+ *
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
+ *
7
+ * Integration of the Spine Runtimes into software or otherwise creating
8
+ * derivative works of the Spine Runtimes is permitted under the terms and
9
+ * conditions of Section 2 of the Spine Editor License Agreement:
10
+ * http://esotericsoftware.com/spine-editor-license
11
+ *
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
+ * "Products"), provided that each user of the Products must obtain their own
15
+ * Spine Editor license and redistribution of the Products in any form must
16
+ * include this license and copyright notice.
17
+ *
18
+ * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
19
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
22
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
+ * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ *****************************************************************************/
29
+ import type { Pose } from "./Pose.js";
30
+ /** Stores a pose for a transform constraint. */
31
+ export declare class TransformConstraintPose implements Pose<TransformConstraintPose> {
32
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained rotation. */
33
+ mixRotate: number;
34
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation X. */
35
+ mixX: number;
36
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation Y. */
37
+ mixY: number;
38
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale X. */
39
+ mixScaleX: number;
40
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale Y. */
41
+ mixScaleY: number;
42
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained shear Y. */
43
+ mixShearY: number;
44
+ set(pose: TransformConstraintPose): void;
45
+ }
@@ -0,0 +1,52 @@
1
+ /******************************************************************************
2
+ * Spine Runtimes License Agreement
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
+ *
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
+ *
7
+ * Integration of the Spine Runtimes into software or otherwise creating
8
+ * derivative works of the Spine Runtimes is permitted under the terms and
9
+ * conditions of Section 2 of the Spine Editor License Agreement:
10
+ * http://esotericsoftware.com/spine-editor-license
11
+ *
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
+ * "Products"), provided that each user of the Products must obtain their own
15
+ * Spine Editor license and redistribution of the Products in any form must
16
+ * include this license and copyright notice.
17
+ *
18
+ * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
19
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
22
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
+ * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ *****************************************************************************/
29
+ /** Stores a pose for a transform constraint. */
30
+ export class TransformConstraintPose {
31
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained rotation. */
32
+ mixRotate = 0;
33
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation X. */
34
+ mixX = 0;
35
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation Y. */
36
+ mixY = 0;
37
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale X. */
38
+ mixScaleX = 0;
39
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale Y. */
40
+ mixScaleY = 0;
41
+ /** A percentage (unbounded) that controls the mix between the constrained and unconstrained shear Y. */
42
+ mixShearY = 0;
43
+ set(pose) {
44
+ this.mixRotate = pose.mixRotate;
45
+ this.mixX = pose.mixX;
46
+ this.mixY = pose.mixY;
47
+ this.mixScaleX = pose.mixScaleX;
48
+ this.mixScaleY = pose.mixScaleY;
49
+ this.mixShearY = pose.mixShearY;
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludFBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVHJhbnNmb3JtQ29uc3RyYWludFBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLGdEQUFnRDtBQUNoRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ25DLHlHQUF5RztJQUN6RyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWQsOEdBQThHO0lBQzlHLElBQUksR0FBRyxDQUFDLENBQUM7SUFFVCw4R0FBOEc7SUFDOUcsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUVULHdHQUF3RztJQUN4RyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWQsd0dBQXdHO0lBQ3hHLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFZCx3R0FBd0c7SUFDeEcsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVQLEdBQUcsQ0FBRSxJQUE2QjtRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgUG9zZSB9IGZyb20gXCIuL1Bvc2UuanNcIlxuXG4vKiogU3RvcmVzIGEgcG9zZSBmb3IgYSB0cmFuc2Zvcm0gY29uc3RyYWludC4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSBpbXBsZW1lbnRzIFBvc2U8VHJhbnNmb3JtQ29uc3RyYWludFBvc2U+IHtcblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgcm90YXRpb24uICovXG5cdG1peFJvdGF0ZSA9IDA7XG5cblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgdHJhbnNsYXRpb24gWC4gKi9cblx0bWl4WCA9IDA7XG5cblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgdHJhbnNsYXRpb24gWS4gKi9cblx0bWl4WSA9IDA7XG5cblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgc2NhbGUgWC4gKi9cblx0bWl4U2NhbGVYID0gMDtcblxuXHQvKiogQSBwZXJjZW50YWdlICh1bmJvdW5kZWQpIHRoYXQgY29udHJvbHMgdGhlIG1peCBiZXR3ZWVuIHRoZSBjb25zdHJhaW5lZCBhbmQgdW5jb25zdHJhaW5lZCBzY2FsZSBZLiAqL1xuXHRtaXhTY2FsZVkgPSAwO1xuXG5cdC8qKiBBIHBlcmNlbnRhZ2UgKHVuYm91bmRlZCkgdGhhdCBjb250cm9scyB0aGUgbWl4IGJldHdlZW4gdGhlIGNvbnN0cmFpbmVkIGFuZCB1bmNvbnN0cmFpbmVkIHNoZWFyIFkuICovXG5cdG1peFNoZWFyWSA9IDA7XG5cblx0cHVibGljIHNldCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpIHtcblx0XHR0aGlzLm1peFJvdGF0ZSA9IHBvc2UubWl4Um90YXRlO1xuXHRcdHRoaXMubWl4WCA9IHBvc2UubWl4WDtcblx0XHR0aGlzLm1peFkgPSBwb3NlLm1peFk7XG5cdFx0dGhpcy5taXhTY2FsZVggPSBwb3NlLm1peFNjYWxlWDtcblx0XHR0aGlzLm1peFNjYWxlWSA9IHBvc2UubWl4U2NhbGVZO1xuXHRcdHRoaXMubWl4U2hlYXJZID0gcG9zZS5taXhTaGVhclk7XG5cdH1cbn1cbiJdfQ==
@@ -26,7 +26,7 @@
26
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
- import { NumberArrayLike } from "./Utils.js";
29
+ import { type NumberArrayLike } from "./Utils.js";
30
30
  export declare class Triangulator {
31
31
  private convexPolygons;
32
32
  private convexPolygonsIndices;